Add Bitmap type (aka sat::Map)
authorMichael Andres <ma@suse.de>
Fri, 13 Dec 2013 18:26:53 +0000 (19:26 +0100)
committerMichael Andres <ma@suse.de>
Fri, 13 Dec 2013 18:30:40 +0000 (19:30 +0100)
zypp/Bitmap.h [new file with mode: 0644]
zypp/CMakeLists.txt
zypp/sat/Map.cc
zypp/sat/Map.h

diff --git a/zypp/Bitmap.h b/zypp/Bitmap.h
new file mode 100644 (file)
index 0000000..3dddd1f
--- /dev/null
@@ -0,0 +1,22 @@
+/*---------------------------------------------------------------------\
+|                          ____ _   __ __ ___                          |
+|                         |__  / \ / / . \ . \                         |
+|                           / / \ V /|  _/  _/                         |
+|                          / /__ | | | | | |                           |
+|                         /_____||_| |_| |_|                           |
+|                                                                      |
+\---------------------------------------------------------------------*/
+/** \file zypp/Bitmap.h
+ *
+*/
+#ifndef ZYPP_BITMAP_H
+#define ZYPP_BITMAP_H
+
+#include "zypp/sat/Map.h"
+///////////////////////////////////////////////////////////////////
+namespace zypp
+{
+  typedef sat::Map Bitmap;
+} // namespace zypp
+///////////////////////////////////////////////////////////////////
+#endif // ZYPP_BITMAP_H
index a52ea30..3c18bb9 100644 (file)
@@ -92,6 +92,7 @@ SET( zypp_HEADERS
   Arch.h
   AutoDispose.h
   Bit.h
+  Bitmap.h
   ByteCount.h
   Callback.h
   Capabilities.h
index 964e29a..66afad2 100644 (file)
@@ -18,6 +18,7 @@ extern "C"
 #include "zypp/base/String.h"
 
 #include "zypp/sat/Map.h"
+#include "zypp/sat/Pool.h"
 
 using std::endl;
 
@@ -45,6 +46,10 @@ namespace zypp
       : _pimpl( new ::_Map )
     { ::map_init( _pimpl.get(), size_r ); }
 
+    Map::Map( PoolSizeType )
+      : _pimpl( new ::_Map )
+    { ::map_init( _pimpl.get(), Pool::instance().capacity() ); }
+
     Map::~Map()
     { ::map_free( _pimpl.get() ); }
 
index ddf587e..8b4c243 100644 (file)
@@ -38,6 +38,11 @@ namespace zypp
     public:
       typedef unsigned long size_type;
 
+      /** Type to indicate the bitmap should match the current pools capacity. */
+      struct PoolSizeType {};
+      /** An object indicating the bitmap should match the current pools capacity. */
+      static constexpr PoolSizeType poolSize = PoolSizeType();
+
     public:
       /** Default ctor: empty Map */
       Map();
@@ -45,6 +50,9 @@ namespace zypp
       /** Ctor taking the Map size */
       explicit Map( size_type size_r );
 
+      /** Ctor creating a Map matching the current pools capacity */
+      Map( PoolSizeType );
+
       /** Dtor */
       ~Map();
 
@@ -114,6 +122,8 @@ namespace zypp
   /** \relates Map Clone function for RWCOW_pointer */
   template<> struct ::_Map * rwcowClone<struct ::_Map>( const struct ::_Map * rhs );
 
+  typedef sat::Map Bitmap;
+
 } // namespace zypp
 ///////////////////////////////////////////////////////////////////
 #endif // ZYPP_SAT_MAP_H