18
#include "zypp/base/PtrTypes.h"
18
#include "zypp/IdStringType.h"
20
20
///////////////////////////////////////////////////////////////////
22
{ /////////////////////////////////////////////////////////////////
25
inline bool operator==( const CountryCode & lhs, const CountryCode & rhs );
26
inline bool operator!=( const CountryCode & lhs, const CountryCode & rhs );
28
///////////////////////////////////////////////////////////////////
30
// CLASS NAME : CountryCode
32
/** Country codes (iso3166-1-alpha-2).
34
* In fact the class will not prevent to use a non iso country code.
35
* Just a warning will appear in the log.
23
///////////////////////////////////////////////////////////////////
24
/// \class CountryCode
25
/// \brief Country codes (iso3166-1-alpha-2).
27
/// In fact the class will not prevent to use a non iso country code.
28
/// Just a warning will appear in the log.
29
///////////////////////////////////////////////////////////////////
30
class CountryCode : public IdStringType<CountryCode>
39
friend std::ostream & operator<<( std::ostream & str, const CountryCode & obj );
33
/** Default Ctor: \ref noCode */
49
/** Ctor taking a string. */
51
CountryCode( const std::string & code_r );
36
/** Ctor from string. */
37
explicit CountryCode( IdString str_r );
39
/** Ctor from string. */
40
explicit CountryCode( const std::string & str_r );
42
/** Ctor from string. */
43
explicit CountryCode( const char * str_r );
58
50
/** \name CountryCode constants. */
60
/** No or empty code. */
61
53
static const CountryCode noCode;
65
/** Return the country code. */
66
std::string code() const;
57
/** Return the country code asString. */
58
std::string code() const
59
{ return std::string(_str); }
68
/** Return the country name; if not available the country code. */
61
/** Return the translated country name; if unknown the country code. */
69
62
std::string name() const;
71
/** <tt>*this != noCode</tt>. */
73
{ return *this != noCode; }
76
/** Pointer to implementation */
77
RW_pointer<Impl> _pimpl;
65
friend class IdStringType<CountryCode>;
79
///////////////////////////////////////////////////////////////////
81
/** \relates CountryCode Stream output */
82
inline std::ostream & operator<<( std::ostream & str, const CountryCode & obj )
83
{ return str << obj.code(); }
85
/** Comparison based on string value. */
87
/** \relates CountryCode */
88
inline bool operator==( const CountryCode & lhs, const CountryCode & rhs ) {
89
return( lhs.code() == rhs.code() );
91
/** \relates CountryCode */
92
inline bool operator==( const std::string & lhs, const CountryCode & rhs ) {
93
return( lhs == rhs.code() );
95
/** \relates CountryCode */
96
inline bool operator==( const CountryCode & lhs, const std::string & rhs ) {
97
return( lhs.code() == rhs );
100
/** \relates CountryCode */
101
inline bool operator!=( const CountryCode & lhs, const CountryCode & rhs ) {
102
return( ! operator==( lhs, rhs ) );
104
/** \relates CountryCode */
105
inline bool operator!=( const std::string & lhs, const CountryCode & rhs ) {
106
return( ! operator==( lhs, rhs ) );
108
/** \relates CountryCode */
109
inline bool operator!=( const CountryCode & lhs, const std::string & rhs ) {
110
return( ! operator==( lhs, rhs ) );
114
/////////////////////////////////////////////////////////////////
115
68
} // namespace zypp
116
69
///////////////////////////////////////////////////////////////////
118
71
///////////////////////////////////////////////////////////////////
120
{ /////////////////////////////////////////////////////////////////
121
/** \relates zypp::CountryCode Default order for std::container based on code string value.*/
123
inline bool less<zypp::CountryCode>::operator()( const zypp::CountryCode & lhs, const zypp::CountryCode & rhs ) const
124
{ return lhs.code() < rhs.code(); }
125
/////////////////////////////////////////////////////////////////
127
///////////////////////////////////////////////////////////////////
73
ZYPP_DEFINE_ID_HASHABLE( ::zypp::CountryCode );
128
75
#endif // ZYPP_COUNTRYCODE_H