libzypp  17.32.4
IdString.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_SAT_IDSTR_H
13 #define ZYPP_SAT_IDSTR_H
14 
15 #include <iosfwd>
16 #include <string>
17 #include <string_view>
18 
19 #include <boost/utility/string_ref_fwd.hpp>
20 
22 
24 namespace zypp
25 {
26 
27  class IdString;
28  using IdStringSet = std::unordered_set<IdString>;
29 
31  //
32  // CLASS NAME : IdString
33  //
43  {
44  public:
46 
47  public:
49  constexpr IdString() : _id( sat::detail::emptyId ) {}
50 
52  constexpr explicit IdString( IdType id_r ) : _id( id_r ) {}
53 
55  explicit IdString( const char * str_r );
56 
58  IdString( const char * str_r, unsigned len_r );
59 
61  explicit IdString( const std::string & str_r );
62 
64  explicit IdString( boost::string_ref str_r );
65 
66 #ifdef __cpp_lib_string_view
67  explicit IdString( std::string_view str_r )
68  : IdString( str_r.data(), str_r.size() )
69  {}
70 #endif
71 
72  public:
74  static const IdString Null;
75 
77  static const IdString Empty;
78 
79  public:
81  constexpr explicit operator bool() const
82  { return _id; }
83 
87  constexpr bool empty() const
88  { return( _id == sat::detail::emptyId || _id == sat::detail::noId ); }
89 
91  unsigned size() const;
92 
93  public:
95  const char * c_str() const;
96 
98  std::string asString() const
99  { return c_str(); }
100 
102  explicit operator std::string() const
103  { return asString(); }
104 
105 #ifdef __cpp_lib_string_view
106 
107  std::string_view asStringView() const
108  { return { c_str(), size() }; }
109 
111  explicit operator std::string_view() const
112  { return asStringView(); }
113 #endif
114 
115  public:
117  bool compareEQ( const IdString & rhs ) const
118  { return( _id == rhs.id() ); }
119 
121  int compare( const IdString & rhs ) const;
122 
124  int compare( const char * rhs ) const;
125 
127  int compare( const std::string & rhs ) const
128  { return compare( rhs.c_str() ); }
129 
130  public:
132  IdType id() const
133  { return _id; }
134 
135  private:
137  };
139 
141  std::ostream & operator<<( std::ostream & str, const IdString & obj );
142 
144  std::ostream & dumpOn( std::ostream & str, const IdString & obj );
145 
147  inline bool operator==( const IdString & lhs, const IdString & rhs )
148  { return lhs.compareEQ( rhs ); }
150  inline bool operator==( const IdString & lhs, const char * rhs )
151  { return lhs.compare( rhs ) == 0; }
153  inline bool operator==( const IdString & lhs, const std::string & rhs )
154  { return lhs.compare( rhs ) == 0; }
156  inline bool operator==( const char * lhs, const IdString & rhs )
157  { return rhs.compare( lhs ) == 0; }
159  inline bool operator==( const std::string & lhs, const IdString & rhs )
160  { return rhs.compare( lhs ) == 0; }
161 
163  inline bool operator!=( const IdString & lhs, const IdString & rhs )
164  { return ! lhs.compareEQ( rhs ); }
166  inline bool operator!=( const IdString & lhs, const char * rhs )
167  { return lhs.compare( rhs ) != 0; }
169  inline bool operator!=( const IdString & lhs, const std::string & rhs )
170  { return lhs.compare( rhs ) != 0; }
172  inline bool operator!=( const char * lhs, const IdString & rhs )
173  { return rhs.compare( lhs ) != 0; }
175  inline bool operator!=( const std::string & lhs, const IdString & rhs )
176  { return rhs.compare( lhs ) != 0; }
177 
179  inline bool operator<( const IdString & lhs, const IdString & rhs )
180  { return lhs.compare( rhs ) < 0; }
182  inline bool operator<( const IdString & lhs, const char * rhs )
183  { return lhs.compare( rhs ) < 0; }
185  inline bool operator<( const IdString & lhs, const std::string & rhs )
186  { return lhs.compare( rhs ) < 0; }
188  inline bool operator<( const char * lhs, const IdString & rhs )
189  { return rhs.compare( lhs ) >= 0; }
191  inline bool operator<( const std::string & lhs, const IdString & rhs )
192  { return rhs.compare( lhs ) >= 0; }
193 
195  inline bool operator<=( const IdString & lhs, const IdString & rhs )
196  { return lhs.compare( rhs ) <= 0; }
198  inline bool operator<=( const IdString & lhs, const char * rhs )
199  { return lhs.compare( rhs ) <= 0; }
201  inline bool operator<=( const IdString & lhs, const std::string & rhs )
202  { return lhs.compare( rhs ) <= 0; }
204  inline bool operator<=( const char * lhs, const IdString & rhs )
205  { return rhs.compare( lhs ) > 0; }
207  inline bool operator<=( const std::string & lhs, const IdString & rhs )
208  { return rhs.compare( lhs ) > 0; }
209 
211  inline bool operator>( const IdString & lhs, const IdString & rhs )
212  { return lhs.compare( rhs ) > 0; }
214  inline bool operator>( const IdString & lhs, const char * rhs )
215  { return lhs.compare( rhs ) > 0; }
217  inline bool operator>( const IdString & lhs, const std::string & rhs )
218  { return lhs.compare( rhs ) > 0; }
220  inline bool operator>( const char * lhs, const IdString & rhs )
221  { return rhs.compare( lhs ) <= 0; }
223  inline bool operator>( const std::string & lhs, const IdString & rhs )
224  { return rhs.compare( lhs ) <= 0; }
225 
227  inline bool operator>=( const IdString & lhs, const IdString & rhs )
228  { return lhs.compare( rhs ) >= 0; }
230  inline bool operator>=( const IdString & lhs, const char * rhs )
231  { return lhs.compare( rhs ) >= 0; }
233  inline bool operator>=( const IdString & lhs, const std::string & rhs )
234  { return lhs.compare( rhs ) >= 0; }
236  inline bool operator>=( const char * lhs, const IdString & rhs )
237  { return rhs.compare( lhs ) < 0; }
239  inline bool operator>=( const std::string & lhs, const IdString & rhs )
240  { return rhs.compare( lhs ) < 0; }
241 
243 } // namespace zypp
245 
247 
248 #endif // ZYPP_SAT_IDSTR_H
int compare(const IdString &rhs) const
Compare IdString returning -1,0,1.
Definition: IdString.cc:53
int compare(const std::string &rhs) const
Definition: IdString.h:127
bool compareEQ(const IdString &rhs) const
Fast compare equal.
Definition: IdString.h:117
IdType id() const
Expert backdoor.
Definition: IdString.h:132
IdType _id
Definition: IdString.h:136
String related utilities and Regular expression matching.
std::ostream & operator<<(std::ostream &str, const SerialNumber &obj)
Definition: SerialNumber.cc:52
int IdType
Generic Id type.
Definition: PoolMember.h:104
Access to the sat-pools string space.
Definition: IdString.h:42
bool operator==(const SetRelation::Enum &lhs, const SetCompare &rhs)
sat::detail::IdType IdType
Definition: IdString.h:45
constexpr IdString()
Default ctor, empty string.
Definition: IdString.h:49
constexpr bool empty() const
Whether the string is empty.
Definition: IdString.h:87
std::unordered_set< IdString > IdStringSet
Definition: IdString.h:28
static const IdString Empty
Empty string.
Definition: IdString.h:77
Backlink to the associated PoolImpl.
Definition: PoolMember.h:88
static const IdType emptyId(1)
bool operator==(const IdString &lhs, const IdString &rhs)
Definition: IdString.h:147
bool operator>=(const IdString &lhs, const IdString &rhs)
Definition: IdString.h:227
ZYPP_DEFINE_ID_HASHABLE(::zypp::IdString)
bool operator>(const IdString &lhs, const IdString &rhs)
Definition: IdString.h:211
bool operator<(const IdString &lhs, const IdString &rhs)
Definition: IdString.h:179
bool operator>=(const IdString &lhs, const char *rhs)
Definition: IdString.h:230
std::ostream & dumpOn(std::ostream &str, const Capability &obj)
Definition: Capability.cc:580
unsigned size() const
The strings size.
Definition: IdString.cc:47
const char * c_str() const
Conversion to const char *
Definition: IdString.cc:50
bool operator>(const IdString &lhs, const char *rhs)
Definition: IdString.h:214
bool operator!=(const IdString &lhs, const IdString &rhs)
Definition: IdString.h:163
bool operator!=(const SetRelation::Enum &lhs, const SetCompare &rhs)
static const IdString Null
No or Null string ( Id 0 ).
Definition: IdString.h:74
static const IdType noId(0)
std::string asString() const
Conversion to std::string
Definition: IdString.h:98
constexpr IdString(IdType id_r)
Ctor from id.
Definition: IdString.h:52
bool operator<(const StrMatcher &lhs, const StrMatcher &rhs)
Definition: StrMatcher.cc:340
Easy-to use interface to the ZYPP dependency resolver.
Definition: Application.cc:19
bool operator<=(const IdString &lhs, const IdString &rhs)
Definition: IdString.h:195
bool operator<=(const IdString &lhs, const char *rhs)
Definition: IdString.h:198