| // 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_ |