| // 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_VERSION_H_ | 
 | #define V8_VERSION_H_ | 
 |  | 
 | #include <cstdint> | 
 |  | 
 | #include "src/base/functional.h" | 
 |  | 
 | namespace v8 { | 
 | namespace internal { | 
 |  | 
 | template <typename T> | 
 | class Vector; | 
 |  | 
 | class 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_VERSION_H_ |