libzypp 17.31.23
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
21namespace 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
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
131
132 typedef sat::Map Bitmap;
133
134} // namespace zypp
136#endif // ZYPP_SAT_MAP_H
Libsolv (bit)Map wrapper.
Definition: Map.h:34
std::string asString(const char on_r='1', const char off_r='0') const
String representation.
Definition: Map.cc:108
void clear(size_type idx_r)
Clear bit idx_r.
Definition: Map.cc:87
size_type size() const
Size of the Map.
Definition: Map.cc:61
void grow(size_type size_r)
Grow the Map if necessary.
Definition: Map.cc:64
bool operator[](size_type idx_r) const
Test bit idx_r.
Definition: Map.h:100
void assign(size_type idx_r, bool val_r)
Assign val_r to bit idx_r.
Definition: Map.cc:93
unsigned long size_type
Definition: Map.h:36
void clearAll()
Clear all bits.
Definition: Map.cc:70
static constexpr PoolSizeType poolSize
An object indicating the bitmap should match the current pools capacity.
Definition: Map.h:41
std::ostream & operator<<(std::ostream &str, const Map &obj)
Stream output.
Definition: Map.h:116
Map()
Default ctor: empty Map.
Definition: Map.cc:43
bool test(size_type idx_r) const
Test bit idx_r.
Definition: Map.cc:102
void set(size_type idx_r)
Set bit idx_r.
Definition: Map.cc:81
RWCOW_pointer< detail::CMap > _pimpl
Pointer to implementation.
Definition: Map.h:112
void assignAll(bool val_r)
Assign val_r to all bits.
Definition: Map.cc:73
bool empty() const
Whether Map is empty.
Definition: Map.cc:58
~Map()
Dtor.
Definition: Map.cc:55
bool operator!=(const Map &lhs, const Map &rhs)
Definition: Map.h:123
void setAll()
Set all bits.
Definition: Map.cc:67
String related utilities and Regular expression matching.
::s_Map CMap
Wrapped libsolv C data type exposed as backdoor.
Definition: PoolMember.h:60
bool operator==(const Map &lhs, const Map &rhs)
Definition: Map.cc:125
Easy-to use interface to the ZYPP dependency resolver.
Definition: CodePitfalls.doc:2
sat::detail::CMap * rwcowClone< sat::detail::CMap >(const sat::detail::CMap *rhs)
Definition: Map.cc:30
sat::Map Bitmap
Definition: Bitmap.h:19
RW_pointer supporting 'copy on write' functionality.
Definition: PtrTypes.h:459
const D * get() const
Definition: PtrTypes.h:503
Type to indicate the bitmap should match the current pools capacity.
Definition: Map.h:39