~thopiekar/zypper/libzypp-manual-import

« back to all changes in this revision

Viewing changes to zypp/CountryCode.h

  • Committer: Thomas-Karl Pietrowski
  • Date: 2015-08-15 15:59:50 UTC
  • Revision ID: thopiekar@googlemail.com-20150815155950-j66qn38efmvn289t
syncing with "changes 15.13.0 (11)"  #9a0aca7e3a21d768491b141a8ae86ef0c3fbc227
* https://github.com/openSUSE/libzypp/commit/9a0aca7e3a21d768491b141a8ae86ef0c3fbc227

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
#include <iosfwd>
16
16
#include <string>
17
17
 
18
 
#include "zypp/base/PtrTypes.h"
 
18
#include "zypp/IdStringType.h"
19
19
 
20
20
///////////////////////////////////////////////////////////////////
21
21
namespace zypp
22
 
{ /////////////////////////////////////////////////////////////////
23
 
 
24
 
  class CountryCode;
25
 
  inline bool operator==( const CountryCode & lhs, const CountryCode & rhs );
26
 
  inline bool operator!=( const CountryCode & lhs, const CountryCode & rhs );
27
 
 
28
 
  ///////////////////////////////////////////////////////////////////
29
 
  //
30
 
  //    CLASS NAME : CountryCode
31
 
  //
32
 
  /** Country codes (iso3166-1-alpha-2).
33
 
   *
34
 
   * In fact the class will not prevent to use a non iso country code.
35
 
   * Just a warning will appear in the log.
36
 
  */
37
 
  class CountryCode
 
22
{
 
23
  ///////////////////////////////////////////////////////////////////
 
24
  /// \class CountryCode
 
25
  /// \brief Country codes (iso3166-1-alpha-2).
 
26
  ///
 
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>
38
31
  {
39
 
    friend std::ostream & operator<<( std::ostream & str, const CountryCode & obj );
40
 
 
41
 
  public:
42
 
    /** Implementation  */
43
 
    class Impl;
44
 
 
45
 
  public:
46
 
    /** Default ctor */
 
32
  public:
 
33
    /** Default Ctor: \ref noCode */
47
34
    CountryCode();
48
35
 
49
 
    /** Ctor taking a string. */
50
 
    explicit
51
 
    CountryCode( const std::string & code_r );
 
36
    /** Ctor from string. */
 
37
    explicit CountryCode( IdString str_r );
 
38
 
 
39
    /** Ctor from string. */
 
40
    explicit CountryCode( const std::string & str_r );
 
41
 
 
42
    /** Ctor from string. */
 
43
    explicit CountryCode( const char * str_r );
52
44
 
53
45
    /** Dtor */
54
46
    ~CountryCode();
57
49
 
58
50
    /** \name CountryCode constants. */
59
51
    //@{
60
 
    /** No or empty code. */
 
52
    /** Empty code. */
61
53
    static const CountryCode noCode;
62
54
    //@}
63
55
 
64
56
  public:
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); }
67
60
 
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;
70
63
 
71
 
    /** <tt>*this != noCode</tt>. */
72
 
    bool hasCode() const
73
 
    { return *this != noCode; }
74
 
 
75
64
  private:
76
 
    /** Pointer to implementation */
77
 
    RW_pointer<Impl> _pimpl;
 
65
    friend class IdStringType<CountryCode>;
 
66
    IdString _str;
78
67
  };
79
 
  ///////////////////////////////////////////////////////////////////
80
 
 
81
 
  /** \relates CountryCode Stream output */
82
 
  inline std::ostream & operator<<( std::ostream & str, const CountryCode & obj )
83
 
  { return str << obj.code(); }
84
 
 
85
 
  /** Comparison based on string value. */
86
 
  //@{
87
 
  /** \relates CountryCode */
88
 
  inline bool operator==( const CountryCode & lhs, const CountryCode & rhs ) {
89
 
    return( lhs.code() == rhs.code() );
90
 
  }
91
 
  /** \relates CountryCode */
92
 
  inline bool operator==( const std::string & lhs, const CountryCode & rhs ) {
93
 
    return( lhs == rhs.code() );
94
 
  }
95
 
  /** \relates CountryCode */
96
 
  inline bool operator==( const CountryCode & lhs, const std::string & rhs ) {
97
 
    return( lhs.code() == rhs );
98
 
  }
99
 
 
100
 
  /** \relates CountryCode */
101
 
  inline bool operator!=( const CountryCode & lhs, const CountryCode & rhs ) {
102
 
    return( ! operator==( lhs, rhs ) );
103
 
  }
104
 
  /** \relates CountryCode */
105
 
  inline bool operator!=( const std::string & lhs, const CountryCode & rhs ) {
106
 
    return( ! operator==( lhs, rhs ) );
107
 
  }
108
 
  /** \relates CountryCode */
109
 
  inline bool operator!=( const CountryCode & lhs, const std::string & rhs ) {
110
 
    return( ! operator==( lhs, rhs ) );
111
 
  }
112
 
  //@}
113
 
 
114
 
  /////////////////////////////////////////////////////////////////
115
68
} // namespace zypp
116
69
///////////////////////////////////////////////////////////////////
117
70
 
118
71
///////////////////////////////////////////////////////////////////
119
 
namespace std
120
 
{ /////////////////////////////////////////////////////////////////
121
 
  /** \relates zypp::CountryCode Default order for std::container based on code string value.*/
122
 
  template<>
123
 
    inline bool less<zypp::CountryCode>::operator()( const zypp::CountryCode & lhs, const zypp::CountryCode & rhs ) const
124
 
    { return lhs.code() < rhs.code(); }
125
 
  /////////////////////////////////////////////////////////////////
126
 
} // namespace std
127
 
///////////////////////////////////////////////////////////////////
 
72
 
 
73
ZYPP_DEFINE_ID_HASHABLE( ::zypp::CountryCode );
 
74
 
128
75
#endif // ZYPP_COUNTRYCODE_H