Home | History | Annotate | Download | only in src
      1 // Copyright 2009 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef V8_VERSION_H_
      6 #define V8_VERSION_H_
      7 
      8 #include "src/base/functional.h"
      9 #include "src/vector.h"
     10 
     11 namespace v8 {
     12 namespace internal {
     13 
     14 class Version {
     15  public:
     16   // Return the various version components.
     17   static int GetMajor() { return major_; }
     18   static int GetMinor() { return minor_; }
     19   static int GetBuild() { return build_; }
     20   static int GetPatch() { return patch_; }
     21   static bool IsCandidate() { return candidate_; }
     22   static uint32_t Hash() {
     23     return static_cast<uint32_t>(
     24         base::hash_combine(major_, minor_, build_, patch_));
     25   }
     26 
     27   // Calculate the V8 version string.
     28   static void GetString(Vector<char> str);
     29 
     30   // Calculate the SONAME for the V8 shared library.
     31   static void GetSONAME(Vector<char> str);
     32 
     33   static const char* GetVersion() { return version_string_; }
     34 
     35  private:
     36   // NOTE: can't make these really const because of test-version.cc.
     37   static int major_;
     38   static int minor_;
     39   static int build_;
     40   static int patch_;
     41   static bool candidate_;
     42   static const char* soname_;
     43   static const char* version_string_;
     44 
     45   // In test-version.cc.
     46   friend void SetVersion(int major, int minor, int build, int patch,
     47                          bool candidate, const char* soname);
     48 };
     49 
     50 }  // namespace internal
     51 }  // namespace v8
     52 
     53 #endif  // V8_VERSION_H_
     54