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
8namespace v8 {
9namespace internal {
10
11class Version {
12 public:
13  // Return the various version components.
14  static int GetMajor() { return major_; }
15  static int GetMinor() { return minor_; }
16  static int GetBuild() { return build_; }
17  static int GetPatch() { return patch_; }
18  static bool IsCandidate() { return candidate_; }
19  static int Hash() { return (major_ << 20) ^ (minor_ << 10) ^ patch_; }
20
21  // Calculate the V8 version string.
22  static void GetString(Vector<char> str);
23
24  // Calculate the SONAME for the V8 shared library.
25  static void GetSONAME(Vector<char> str);
26
27  static const char* GetVersion() { return version_string_; }
28
29 private:
30  // NOTE: can't make these really const because of test-version.cc.
31  static int major_;
32  static int minor_;
33  static int build_;
34  static int patch_;
35  static bool candidate_;
36  static const char* soname_;
37  static const char* version_string_;
38
39  // In test-version.cc.
40  friend void SetVersion(int major, int minor, int build, int patch,
41                         bool candidate, const char* soname);
42};
43
44} }  // namespace v8::internal
45
46#endif  // V8_VERSION_H_
47