Fix FullScreen crash in Webapp
[platform/framework/web/chromium-efl.git] / base / version.h
1 // Copyright 2012 The Chromium Authors
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 BASE_VERSION_H_
6 #define BASE_VERSION_H_
7
8 #include <stdint.h>
9
10 #include <iosfwd>
11 #include <string>
12 #include <vector>
13
14 #include "base/base_export.h"
15 #include "base/strings/string_piece.h"
16
17 namespace base {
18
19 // Version represents a dotted version number, like "1.2.3.4", supporting
20 // parsing and comparison.
21 class BASE_EXPORT Version {
22  public:
23   // The only thing you can legally do to a default constructed
24   // Version object is assign to it.
25   Version();
26
27   Version(const Version& other);
28
29   // Initializes from a decimal dotted version number, like "0.1.1".
30   // Each component is limited to a uint32_t. Call IsValid() to learn
31   // the outcome.
32   explicit Version(StringPiece version_str);
33
34   // Initializes from a vector of components, like {1, 2, 3, 4}. Call IsValid()
35   // to learn the outcome.
36   explicit Version(std::vector<uint32_t> components);
37
38   ~Version();
39
40   // Returns true if the object contains a valid version number.
41   bool IsValid() const;
42
43   // Returns true if the version wildcard string is valid. The version wildcard
44   // string may end with ".*" (e.g. 1.2.*, 1.*). Any other arrangement with "*"
45   // is invalid (e.g. 1.*.3 or 1.2.3*). This functions defaults to standard
46   // Version behavior (IsValid) if no wildcard is present.
47   static bool IsValidWildcardString(StringPiece wildcard_string);
48
49   // Returns -1, 0, 1 for <, ==, >. `this` and `other` must both be valid.
50   int CompareTo(const Version& other) const;
51
52   // Given a valid version object, compare if a |wildcard_string| results in a
53   // newer version. This function will default to CompareTo if the string does
54   // not end in wildcard sequence ".*". IsValidWildcard(wildcard_string) must be
55   // true before using this function.
56   int CompareToWildcardString(StringPiece wildcard_string) const;
57
58   // Return the string representation of this version.
59   std::string GetString() const;
60
61   const std::vector<uint32_t>& components() const { return components_; }
62
63  private:
64   std::vector<uint32_t> components_;
65 };
66
67 BASE_EXPORT bool operator==(const Version& v1, const Version& v2);
68 BASE_EXPORT bool operator!=(const Version& v1, const Version& v2);
69 BASE_EXPORT bool operator<(const Version& v1, const Version& v2);
70 BASE_EXPORT bool operator<=(const Version& v1, const Version& v2);
71 BASE_EXPORT bool operator>(const Version& v1, const Version& v2);
72 BASE_EXPORT bool operator>=(const Version& v1, const Version& v2);
73 BASE_EXPORT std::ostream& operator<<(std::ostream& stream, const Version& v);
74
75 }  // namespace base
76
77 #endif  // BASE_VERSION_H_