CountryCode.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00012 #ifndef ZYPP_COUNTRYCODE_H
00013 #define ZYPP_COUNTRYCODE_H
00014
00015 #include <iosfwd>
00016 #include <string>
00017
00018 #include "zypp/base/PtrTypes.h"
00019
00021 namespace zypp
00022 {
00023
00024 class CountryCode;
00025 inline bool operator==( const CountryCode & lhs, const CountryCode & rhs );
00026 inline bool operator!=( const CountryCode & lhs, const CountryCode & rhs );
00027
00029
00030
00031
00037 class CountryCode
00038 {
00039 friend std::ostream & operator<<( std::ostream & str, const CountryCode & obj );
00040
00041 public:
00043 class Impl;
00044
00045 public:
00047 CountryCode();
00048
00050 explicit
00051 CountryCode( const std::string & code_r );
00052
00054 ~CountryCode();
00055
00056 public:
00057
00061 static const CountryCode noCode;
00063
00064 public:
00066 std::string code() const;
00067
00069 std::string name() const;
00070
00072 bool hasCode() const
00073 { return *this != noCode; }
00074
00075 private:
00077 RW_pointer<Impl> _pimpl;
00078 };
00080
00082 inline std::ostream & operator<<( std::ostream & str, const CountryCode & obj )
00083 { return str << obj.code(); }
00084
00088 inline bool operator==( const CountryCode & lhs, const CountryCode & rhs ) {
00089 return( lhs.code() == rhs.code() );
00090 }
00092 inline bool operator==( const std::string & lhs, const CountryCode & rhs ) {
00093 return( lhs == rhs.code() );
00094 }
00096 inline bool operator==( const CountryCode & lhs, const std::string & rhs ) {
00097 return( lhs.code() == rhs );
00098 }
00099
00101 inline bool operator!=( const CountryCode & lhs, const CountryCode & rhs ) {
00102 return( ! operator==( lhs, rhs ) );
00103 }
00105 inline bool operator!=( const std::string & lhs, const CountryCode & rhs ) {
00106 return( ! operator==( lhs, rhs ) );
00107 }
00109 inline bool operator!=( const CountryCode & lhs, const std::string & rhs ) {
00110 return( ! operator==( lhs, rhs ) );
00111 }
00113
00115 }
00117
00119 namespace std
00120 {
00121
00122 template<>
00123 inline bool less<zypp::CountryCode>::operator()( const zypp::CountryCode & lhs, const zypp::CountryCode & rhs ) const
00124 { return lhs.code() < rhs.code(); }
00126 }
00128 #endif // ZYPP_COUNTRYCODE_H