tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

version.h (2684B)


      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_