15ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// Copyright 2009 the V8 project authors. All rights reserved. 25ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// Redistribution and use in source and binary forms, with or without 35ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// modification, are permitted provided that the following conditions are 45ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// met: 55ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// 65ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// * Redistributions of source code must retain the above copyright 75ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// notice, this list of conditions and the following disclaimer. 85ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// * Redistributions in binary form must reproduce the above 95ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// copyright notice, this list of conditions and the following 105ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// disclaimer in the documentation and/or other materials provided 115ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// with the distribution. 125ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// * Neither the name of Google Inc. nor the names of its 135ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// contributors may be used to endorse or promote products derived 145ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// from this software without specific prior written permission. 155ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// 165ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 175ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 185ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 195ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 205ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 215ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 225ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 235ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 245ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 255ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 265ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 275ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 285ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org#ifndef V8_VERSION_H_ 295ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org#define V8_VERSION_H_ 305ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 3171affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.orgnamespace v8 { 3271affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.orgnamespace internal { 335ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 345ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.orgclass Version { 355ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org public: 365ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org // Return the various version components. 375ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org static int GetMajor() { return major_; } 385ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org static int GetMinor() { return minor_; } 395ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org static int GetBuild() { return build_; } 405ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org static int GetPatch() { return patch_; } 415ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org static bool IsCandidate() { return candidate_; } 425ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 435ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org // Calculate the V8 version string. 445ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org static void GetString(Vector<char> str); 455ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 465ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org // Calculate the SONAME for the V8 shared library. 475ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org static void GetSONAME(Vector<char> str); 485ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 49ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org static const char* GetVersion() { return version_string_; } 50ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org 515ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org private: 52ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org // NOTE: can't make these really const because of test-version.cc. 535ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org static int major_; 545ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org static int minor_; 555ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org static int build_; 565ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org static int patch_; 575ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org static bool candidate_; 585ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org static const char* soname_; 59ea88ce93dcb41a9200ec8747ae7642a5db1f4ce7sgjesse@chromium.org static const char* version_string_; 605ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 615ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org // In test-version.cc. 625ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org friend void SetVersion(int major, int minor, int build, int patch, 635ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org bool candidate, const char* soname); 645ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org}; 655ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 665ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org} } // namespace v8::internal 675ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org 685ec4892aef9cca42940d7d92302abf674365f6b7ager@chromium.org#endif // V8_VERSION_H_ 69