1a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block// Copyright 2009 the V8 project authors. All rights reserved.
2b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// found in the LICENSE file.
4a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
5a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#ifndef V8_VERSION_H_
6a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#define V8_VERSION_H_
7a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
8a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blocknamespace v8 {
9a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blocknamespace internal {
10a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
11a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockclass Version {
12a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block public:
13a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  // Return the various version components.
14a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  static int GetMajor() { return major_; }
15a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  static int GetMinor() { return minor_; }
16a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  static int GetBuild() { return build_; }
17a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  static int GetPatch() { return patch_; }
18a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  static bool IsCandidate() { return candidate_; }
19b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  static int Hash() { return (major_ << 20) ^ (minor_ << 10) ^ patch_; }
20a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
21a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  // Calculate the V8 version string.
22a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  static void GetString(Vector<char> str);
23a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
24a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  // Calculate the SONAME for the V8 shared library.
25a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  static void GetSONAME(Vector<char> str);
26a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
2744f0eee88ff00398ff7f715fab053374d808c90dSteve Block  static const char* GetVersion() { return version_string_; }
2844f0eee88ff00398ff7f715fab053374d808c90dSteve Block
29a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block private:
3044f0eee88ff00398ff7f715fab053374d808c90dSteve Block  // NOTE: can't make these really const because of test-version.cc.
31a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  static int major_;
32a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  static int minor_;
33a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  static int build_;
34a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  static int patch_;
35a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  static bool candidate_;
36a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  static const char* soname_;
3744f0eee88ff00398ff7f715fab053374d808c90dSteve Block  static const char* version_string_;
38a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
39a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  // In test-version.cc.
40a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block  friend void SetVersion(int major, int minor, int build, int patch,
41a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block                         bool candidate, const char* soname);
42a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block};
43a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
44a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block} }  // namespace v8::internal
45a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block
46a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#endif  // V8_VERSION_H_
47