libzypp  13.10.6
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
RWCOW_pointer< struct::_Map > _pimpl
Pointer to implementation.
Definition: Map.h:97
void clear(size_type idx_r)
Clear bit idx_r.
Definition: Map.cc:80
bool operator!=(const Map &lhs, const Map &rhs)
Definition: Map.h:108
size_type size() const
Size of the Map.
Definition: Map.cc:54
bool operator==(const Map &lhs, const Map &rhs)
Definition: Map.cc:118
std::ostream & operator<<(std::ostream &str, const Map &obj)
Definition: Map.h:101
void set(size_type idx_r)
Set bit idx_r.
Definition: Map.cc:74
bool test(size_type idx_r) const
Test bit idx_r.
Definition: Map.cc:95
bool operator[](size_type idx_r) const
Test bit idx_r.
Definition: Map.h:85
Map()
Default ctor: empty Map.
Definition: Map.cc:40
const _D * get() const
Definition: PtrTypes.h:483
void clearAll()
Clear all bits.
Definition: Map.cc:63
~Map()
Dtor.
Definition: Map.cc:48
void setAll()
Set all bits.
Definition: Map.cc:60
unsigned long size_type
Definition: Map.h:39
void assign(size_type idx_r, bool val_r)
Assign val_r to bit idx_r.
Definition: Map.cc:86
std::string asString(const char on_r= '1', const char off_r= '0') const
String representation.
Definition: Map.cc:101
void grow(size_type size_r)
Grow the Map if necessary.
Definition: Map.cc:57
bool empty() const
Whether Map is empty.
Definition: Map.cc:51
Libsolv (bit)Map wrapper.
Definition: Map.h:36
void assignAll(bool val_r)
Assign val_r to all bits.
Definition: Map.cc:66