|  | // Copyright 2009 the V8 project authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef V8_UTILS_VERSION_H_ | 
|  | #define V8_UTILS_VERSION_H_ | 
|  |  | 
|  | #include <cstdint> | 
|  |  | 
|  | #include "src/base/functional.h" | 
|  |  | 
|  | namespace v8 { | 
|  | namespace internal { | 
|  |  | 
|  | template <typename T> | 
|  | class Vector; | 
|  |  | 
|  | class V8_EXPORT Version { | 
|  | public: | 
|  | // Return the various version components. | 
|  | static int GetMajor() { return major_; } | 
|  | static int GetMinor() { return minor_; } | 
|  | static int GetBuild() { return build_; } | 
|  | static int GetPatch() { return patch_; } | 
|  | static const char* GetEmbedder() { return embedder_; } | 
|  | static bool IsCandidate() { return candidate_; } | 
|  | static uint32_t Hash() { | 
|  | return static_cast<uint32_t>( | 
|  | base::hash_combine(major_, minor_, build_, patch_)); | 
|  | } | 
|  |  | 
|  | // Calculate the V8 version string. | 
|  | static void GetString(Vector<char> str); | 
|  |  | 
|  | // Calculate the SONAME for the V8 shared library. | 
|  | static void GetSONAME(Vector<char> str); | 
|  |  | 
|  | static const char* GetVersion() { return version_string_; } | 
|  |  | 
|  | private: | 
|  | // NOTE: can't make these really const because of test-version.cc. | 
|  | static int major_; | 
|  | static int minor_; | 
|  | static int build_; | 
|  | static int patch_; | 
|  | static const char* embedder_; | 
|  | static bool candidate_; | 
|  | static const char* soname_; | 
|  | static const char* version_string_; | 
|  |  | 
|  | // In test-version.cc. | 
|  | friend void SetVersion(int major, int minor, int build, int patch, | 
|  | const char* embedder, bool candidate, | 
|  | const char* soname); | 
|  | }; | 
|  |  | 
|  | }  // namespace internal | 
|  | }  // namespace v8 | 
|  |  | 
|  | #endif  // V8_UTILS_VERSION_H_ |