LanguageCode.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00012 #ifndef ZYPP_LANGUAGECODE_H
00013 #define ZYPP_LANGUAGECODE_H
00014
00015 #include <iosfwd>
00016 #include <string>
00017
00018 #include "zypp/base/PtrTypes.h"
00019
00021 namespace zypp
00022 {
00023
00024 class LanguageCode;
00025 inline bool operator==( const LanguageCode & lhs, const LanguageCode & rhs );
00026 inline bool operator!=( const LanguageCode & lhs, const LanguageCode & rhs );
00027
00029
00030
00031
00037 class LanguageCode
00038 {
00039 friend std::ostream & operator<<( std::ostream & str, const LanguageCode & obj );
00040
00041 public:
00043 class Impl;
00044
00045 public:
00047 LanguageCode();
00048
00050 explicit
00051 LanguageCode( const std::string & code_r );
00052
00054 ~LanguageCode();
00055
00056 public:
00060 static const LanguageCode noCode;
00062
00063 public:
00065 std::string code() const;
00066
00068 std::string name() const;
00069
00071 inline bool hasCode() const
00072 { return *this != noCode; }
00073
00074 private:
00076 RW_pointer<Impl> _pimpl;
00077 };
00079
00081 inline std::ostream & operator<<( std::ostream & str, const LanguageCode & obj )
00082 { return str << obj.code(); }
00083
00087 inline bool operator==( const LanguageCode & lhs, const LanguageCode & rhs ) {
00088 return( lhs.code() == rhs.code() );
00089 }
00091 inline bool operator==( const std::string & lhs, const LanguageCode & rhs ) {
00092 return( lhs == rhs.code() );
00093 }
00095 inline bool operator==( const LanguageCode & lhs, const std::string & rhs ) {
00096 return( lhs.code() == rhs );
00097 }
00098
00100 inline bool operator!=( const LanguageCode & lhs, const LanguageCode & rhs ) {
00101 return( ! operator==( lhs, rhs ) );
00102 }
00104 inline bool operator!=( const std::string & lhs, const LanguageCode & rhs ) {
00105 return( ! operator==( lhs, rhs ) );
00106 }
00108 inline bool operator!=( const LanguageCode & lhs, const std::string & rhs ) {
00109 return( ! operator==( lhs, rhs ) );
00110 }
00112
00114 }
00116
00118 namespace std
00119 {
00120
00121 template<>
00122 inline bool less<zypp::LanguageCode>::operator()( const zypp::LanguageCode & lhs, const zypp::LanguageCode & rhs ) const
00123 { return lhs.code() < rhs.code(); }
00125 }
00127 #endif // ZYPP_LANGUAGECODE_H