libzypp  11.13.5
CountryCode.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_COUNTRYCODE_H
13 #define ZYPP_COUNTRYCODE_H
14 
15 #include <iosfwd>
16 #include <string>
17 
18 #include "zypp/base/PtrTypes.h"
19 
21 namespace zypp
22 {
23 
24  class CountryCode;
25  inline bool operator==( const CountryCode & lhs, const CountryCode & rhs );
26  inline bool operator!=( const CountryCode & lhs, const CountryCode & rhs );
27 
29  //
30  // CLASS NAME : CountryCode
31  //
38  {
39  friend std::ostream & operator<<( std::ostream & str, const CountryCode & obj );
40 
41  public:
43  class Impl;
44 
45  public:
47  CountryCode();
48 
50  explicit
51  CountryCode( const std::string & code_r );
52 
54  ~CountryCode();
55 
56  public:
57 
61  static const CountryCode noCode;
63 
64  public:
66  std::string code() const;
67 
69  std::string name() const;
70 
72  bool hasCode() const
73  { return *this != noCode; }
74 
75  private:
78  };
80 
82  inline std::ostream & operator<<( std::ostream & str, const CountryCode & obj )
83  { return str << obj.code(); }
84 
88  inline bool operator==( const CountryCode & lhs, const CountryCode & rhs ) {
89  return( lhs.code() == rhs.code() );
90  }
92  inline bool operator==( const std::string & lhs, const CountryCode & rhs ) {
93  return( lhs == rhs.code() );
94  }
96  inline bool operator==( const CountryCode & lhs, const std::string & rhs ) {
97  return( lhs.code() == rhs );
98  }
99 
101  inline bool operator!=( const CountryCode & lhs, const CountryCode & rhs ) {
102  return( ! operator==( lhs, rhs ) );
103  }
105  inline bool operator!=( const std::string & lhs, const CountryCode & rhs ) {
106  return( ! operator==( lhs, rhs ) );
107  }
109  inline bool operator!=( const CountryCode & lhs, const std::string & rhs ) {
110  return( ! operator==( lhs, rhs ) );
111  }
113 
115 } // namespace zypp
117 
119 namespace std
120 {
121 
122  template<>
123  inline bool less<zypp::CountryCode>::operator()( const zypp::CountryCode & lhs, const zypp::CountryCode & rhs ) const
124  { return lhs.code() < rhs.code(); }
126 } // namespace std
128 #endif // ZYPP_COUNTRYCODE_H