Guitar
GitHash.h
Go to the documentation of this file.
1 #ifndef GITHASH_H
2 #define GITHASH_H
3 
4 #include <stdint.h>
5 #include <string>
6 
7 static constexpr int GIT_ID_LENGTH = 40;
8 
9 class GitHash {
10 private:
11  bool valid_ = false;
12  uint8_t id_[GIT_ID_LENGTH / 2];
13  template <typename VIEW> void _assign(VIEW const &id);
14 public:
15  GitHash();
16  explicit GitHash(std::string_view const &id);
17  explicit GitHash(char const *id);
18  void assign(std::string_view const &id);
19  std::string toString(int maxlen = -1) const;
20  bool isValid() const;
21  int compare(GitHash const &other) const;
22  explicit operator bool () const;
23  operator std::string() const
24  {
25  return toString();
26  }
27  size_t _std_hash() const;
28 
29  static bool isValidID(std::string const &id);
30 
31  static bool isValidID(GitHash const &id)
32  {
33  return id.isValid();
34  }
35 };
36 
37 static inline bool operator == (GitHash const &l, GitHash const &r)
38 {
39  return l.compare(r) == 0;
40 }
41 
42 static inline bool operator != (GitHash const &l, GitHash const &r)
43 {
44  return l.compare(r) != 0;
45 }
46 
47 static inline bool operator < (GitHash const &l, GitHash const &r)
48 {
49  return l.compare(r) < 0;
50 }
51 
52 #endif // GITHASH_H
static bool operator==(GitHash const &l, GitHash const &r)
Definition: GitHash.h:37
static bool operator!=(GitHash const &l, GitHash const &r)
Definition: GitHash.h:42
static bool operator<(GitHash const &l, GitHash const &r)
Definition: GitHash.h:47
static constexpr int GIT_ID_LENGTH
Definition: GitHash.h:7
Definition: GitHash.h:9
void _assign(VIEW const &id)
Definition: GitTypes.cpp:57
size_t _std_hash() const
Definition: GitTypes.cpp:128
bool valid_
Definition: GitHash.h:11
uint8_t id_[GIT_ID_LENGTH/2]
Definition: GitHash.h:12
void assign(std::string_view const &id)
Definition: GitTypes.cpp:84
static bool isValidID(std::string const &id)
Definition: GitTypes.cpp:133
GitHash()
Definition: GitTypes.cpp:43
bool isValid() const
Definition: GitTypes.cpp:105
int compare(GitHash const &other) const
Definition: GitTypes.cpp:115
std::string toString(int maxlen=-1) const
Definition: GitTypes.cpp:89
static bool isValidID(GitHash const &id)
Definition: GitHash.h:31