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