libzypp  11.13.5
Map.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
11 #ifndef ZYPP_SAT_MAP_H
12 #define ZYPP_SAT_MAP_H
13 
14 extern "C"
15 {
16  struct _Map;
17 }
18 #include <iosfwd>
19 #include <string>
20 
21 #include "zypp/base/PtrTypes.h"
22 
24 namespace zypp
25 {
27  namespace sat
28  {
36  class Map
37  {
38  public:
39  typedef unsigned long size_type;
40 
41  public:
43  Map();
44 
46  explicit Map( size_type size_r );
47 
49  ~Map();
50 
51  public:
53  bool empty() const;
54 
56  size_type size() const;
57 
59  void grow( size_type size_r );
60 
61  public:
63  void setAll();
64 
66  void clearAll();
67 
69  void assignAll( bool val_r );
70 
72  void set( size_type idx_r );
73 
75  void clear( size_type idx_r );
76 
78  void assign( size_type idx_r, bool val_r );
79 
80  public:
82  bool test( size_type idx_r ) const;
83 
85  bool operator[]( size_type idx_r ) const
86  { return test( idx_r ); }
87 
88  public:
90  std::string asString( const char on_r = '1', const char off_r = '0' ) const;
91 
92  public:
93  operator struct ::_Map *();
94  operator const struct ::_Map *() const
95  { return _pimpl.get(); }
96  private:
98  };
99 
101  inline std::ostream & operator<<( std::ostream & str, const Map & obj )
102  { return str << obj.asString(); }
103 
105  bool operator==( const Map & lhs, const Map & rhs );
106 
108  inline bool operator!=( const Map & lhs, const Map & rhs )
109  { return !( lhs == rhs ); }
110 
111  } // namespace sat
113 
115  template<> struct ::_Map * rwcowClone<struct ::_Map>( const struct ::_Map * rhs );
116 
117 } // namespace zypp
119 #endif // ZYPP_SAT_MAP_H