1 /*---------------------------------------------------------------------\
3 | |__ / \ / / . \ . \ |
8 \---------------------------------------------------------------------*/
9 /** \file zypp/CountryCode.h
12 #ifndef ZYPP_COUNTRYCODE_H
13 #define ZYPP_COUNTRYCODE_H
18 #include "zypp/base/PtrTypes.h"
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.
39 friend std::ostream & operator<<( std::ostream & str, const CountryCode & obj );
49 /** Ctor taking a string. */
51 CountryCode( const std::string & code_r );
58 /** \name CountryCode constants. */
60 /** No or empty code. */
61 static const CountryCode noCode;
65 /** Return the country code. */
66 std::string code() const;
68 /** Return the country name; if not available the country code. */
69 std::string name() const;
71 /** <tt>*this != noCode</tt>. */
73 { return *this != noCode; }
76 /** Pointer to implementation */
77 RW_pointer<Impl> _pimpl;
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 /////////////////////////////////////////////////////////////////
116 ///////////////////////////////////////////////////////////////////
118 ///////////////////////////////////////////////////////////////////
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 ///////////////////////////////////////////////////////////////////
128 #endif // ZYPP_COUNTRYCODE_H