libzypp  15.28.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 #include <iosfwd>
15 #include <string>
16 
17 #include "zypp/base/PtrTypes.h"
19 
21 namespace zypp
22 {
24  namespace sat
25  {
33  class Map
34  {
35  public:
36  typedef unsigned long size_type;
37 
39  struct PoolSizeType {};
41  static constexpr PoolSizeType poolSize = PoolSizeType();
42 
43  public:
45  Map();
46 
48  explicit Map( size_type size_r );
49 
51  Map( PoolSizeType );
52 
54  ~Map();
55 
56  public:
58  bool empty() const;
59 
61  size_type size() const;
62 
64  void grow( size_type size_r );
65 
66  public:
68  void setAll();
69 
71  void clearAll();
72 
74  void assignAll( bool val_r );
75 
79  void set( size_type idx_r );
80 
84  void clear( size_type idx_r );
85 
89  void assign( size_type idx_r, bool val_r );
90 
91  public:
95  bool test( size_type idx_r ) const;
96 
100  bool operator[]( size_type idx_r ) const
101  { return test( idx_r ); }
102 
103  public:
105  std::string asString( const char on_r = '1', const char off_r = '0' ) const;
106 
107  public:
108  operator detail::CMap *();
109  operator const detail::CMap *() const
110  { return _pimpl.get(); }
111  private:
113  };
114 
116  inline std::ostream & operator<<( std::ostream & str, const Map & obj )
117  { return str << obj.asString(); }
118 
120  bool operator==( const Map & lhs, const Map & rhs );
121 
123  inline bool operator!=( const Map & lhs, const Map & rhs )
124  { return !( lhs == rhs ); }
125 
126  } // namespace sat
128 
130  template<> sat::detail::CMap * rwcowClone<sat::detail::CMap>( const sat::detail::CMap * rhs );
131 
132  typedef sat::Map Bitmap;
133 
134 } // namespace zypp
136 #endif // ZYPP_SAT_MAP_H
Type to indicate the bitmap should match the current pools capacity.
Definition: Map.h:39
void clear(size_type idx_r)
Clear bit idx_r.
Definition: Map.cc:85
bool operator!=(const Map &lhs, const Map &rhs)
Definition: Map.h:123
size_type size() const
Size of the Map.
Definition: Map.cc:59
bool operator==(const Map &lhs, const Map &rhs)
Definition: Map.cc:123
std::ostream & operator<<(std::ostream &str, const Map &obj)
Definition: Map.h:116
void set(size_type idx_r)
Set bit idx_r.
Definition: Map.cc:79
bool test(size_type idx_r) const
Test bit idx_r.
Definition: Map.cc:100
bool operator[](size_type idx_r) const
Test bit idx_r.
Definition: Map.h:100
Map()
Default ctor: empty Map.
Definition: Map.cc:41
::_Map CMap
Wrapped libsolv C data type exposed as backdoor.
Definition: PoolMember.h:85
void clearAll()
Clear all bits.
Definition: Map.cc:68
sat::Map Bitmap
Definition: Bitmap.h:19
~Map()
Dtor.
Definition: Map.cc:53
RWCOW_pointer< detail::CMap > _pimpl
Pointer to implementation.
Definition: Map.h:112
void setAll()
Set all bits.
Definition: Map.cc:65
unsigned long size_type
Definition: Map.h:36
static constexpr PoolSizeType poolSize
An object indicating the bitmap should match the current pools capacity.
Definition: Map.h:41
void assign(size_type idx_r, bool val_r)
Assign val_r to bit idx_r.
Definition: Map.cc:91
std::string asString(const char on_r= '1', const char off_r= '0') const
String representation.
Definition: Map.cc:106
const D * get() const
Definition: PtrTypes.h:503
void grow(size_type size_r)
Grow the Map if necessary.
Definition: Map.cc:62
bool empty() const
Whether Map is empty.
Definition: Map.cc:56
Libsolv (bit)Map wrapper.
Definition: Map.h:33
void assignAll(bool val_r)
Assign val_r to all bits.
Definition: Map.cc:71