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 8958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier#include "src/base/functional.h" 9014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch#include "src/vector.h" 10958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier 11a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blocknamespace v8 { 12a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blocknamespace internal { 13a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 14a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockclass Version { 15a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block public: 16a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // Return the various version components. 17a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static int GetMajor() { return major_; } 18a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static int GetMinor() { return minor_; } 19a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static int GetBuild() { return build_; } 20a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static int GetPatch() { return patch_; } 21a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static bool IsCandidate() { return candidate_; } 22958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier static uint32_t Hash() { 23958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier return static_cast<uint32_t>( 24958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier base::hash_combine(major_, minor_, build_, patch_)); 25958fae7ec3f466955f8e5b50fa5b8d38b9e91675Emily Bernier } 26a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 27a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // Calculate the V8 version string. 28a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static void GetString(Vector<char> str); 29a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 30a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // Calculate the SONAME for the V8 shared library. 31a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static void GetSONAME(Vector<char> str); 32a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 3344f0eee88ff00398ff7f715fab053374d808c90dSteve Block static const char* GetVersion() { return version_string_; } 3444f0eee88ff00398ff7f715fab053374d808c90dSteve Block 35a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block private: 3644f0eee88ff00398ff7f715fab053374d808c90dSteve Block // NOTE: can't make these really const because of test-version.cc. 37a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static int major_; 38a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static int minor_; 39a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static int build_; 40a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static int patch_; 41a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static bool candidate_; 42a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block static const char* soname_; 4344f0eee88ff00398ff7f715fab053374d808c90dSteve Block static const char* version_string_; 44a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 45a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block // In test-version.cc. 46a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block friend void SetVersion(int major, int minor, int build, int patch, 47a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block bool candidate, const char* soname); 48a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block}; 49a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 50014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} // namespace internal 51014dc512cdd3e367bee49a713fdc5ed92584a3e5Ben Murdoch} // namespace v8 52a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 53a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#endif // V8_VERSION_H_ 54