libzypp  12.16.5
LanguageCode.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_LANGUAGECODE_H
13 #define ZYPP_LANGUAGECODE_H
14 
15 #include <iosfwd>
16 #include <string>
17 
18 #include "zypp/base/PtrTypes.h"
19 
21 namespace zypp
22 {
23 
24  class LanguageCode;
25  inline bool operator==( const LanguageCode & lhs, const LanguageCode & rhs );
26  inline bool operator!=( const LanguageCode & lhs, const LanguageCode & rhs );
27 
29  //
30  // CLASS NAME : LanguageCode
31  //
38  {
39  friend std::ostream & operator<<( std::ostream & str, const LanguageCode & obj );
40 
41  public:
43  class Impl;
44 
45  public:
47  LanguageCode();
48 
50  explicit
51  LanguageCode( const std::string & code_r );
52 
54  ~LanguageCode();
55 
56  public:
60  static const LanguageCode noCode;
62 
63  public:
65  std::string code() const;
66 
68  std::string name() const;
69 
71  inline bool hasCode() const
72  { return *this != noCode; }
73 
74  private:
77  };
79 
81  inline std::ostream & operator<<( std::ostream & str, const LanguageCode & obj )
82  { return str << obj.code(); }
83 
87  inline bool operator==( const LanguageCode & lhs, const LanguageCode & rhs ) {
88  return( lhs.code() == rhs.code() );
89  }
91  inline bool operator==( const std::string & lhs, const LanguageCode & rhs ) {
92  return( lhs == rhs.code() );
93  }
95  inline bool operator==( const LanguageCode & lhs, const std::string & rhs ) {
96  return( lhs.code() == rhs );
97  }
98 
100  inline bool operator!=( const LanguageCode & lhs, const LanguageCode & rhs ) {
101  return( ! operator==( lhs, rhs ) );
102  }
104  inline bool operator!=( const std::string & lhs, const LanguageCode & rhs ) {
105  return( ! operator==( lhs, rhs ) );
106  }
108  inline bool operator!=( const LanguageCode & lhs, const std::string & rhs ) {
109  return( ! operator==( lhs, rhs ) );
110  }
112 
114 } // namespace zypp
116 
118 namespace std
119 {
120 
121  template<>
122  inline bool less<zypp::LanguageCode>::operator()( const zypp::LanguageCode & lhs, const zypp::LanguageCode & rhs ) const
123  { return lhs.code() < rhs.code(); }
125 } // namespace std
127 #endif // ZYPP_LANGUAGECODE_H