LibPkg
binary_control_table.h
Go to the documentation of this file.
1 // This file is part of LibPkg.
2 // Copyright © 2003-2005 Graham Shaw.
3 // Distribution and use are subject to the GNU Lesser General Public License,
4 // a copy of which may be found in the file !LibPkg.Copyright.
5 
6 #ifndef LIBPKG_BINARY_CONTROL_TABLE
7 #define LIBPKG_BINARY_CONTROL_TABLE
8 
9 #include <map>
10 #include <string>
11 
12 #include "libpkg/version.h"
13 #include "libpkg/binary_control.h"
14 #include "libpkg/table.h"
15 
16 namespace pkg {
17 
18 using std::string;
19 
22  public table
23 {
24 public:
26  class key_type
27  {
28  public:
30  string pkgname;
34  key_type();
39  key_type(const string& _pkgname,const version& _pkgvrsn);
40  };
42  typedef std::map<key_type,mapped_type>::const_iterator const_iterator;
43  class commit_error;
44 private:
46  string _pathname;
47 
49  std::map<key_type,mapped_type> _data;
50 public:
54  binary_control_table(const string& pathname);
55 
57  virtual ~binary_control_table();
58 
63  const mapped_type& operator[](const key_type& key) const;
64 
69  const mapped_type& operator[](const string& pkgname) const;
70 
75  { return _data.begin(); }
76 
81  { return _data.end(); }
82 
88  void insert(const mapped_type& ctrl);
89 
95  void commit();
96 
98  void update();
99 };
100 
106 bool operator<(const binary_control_table::key_type& lhs,
107  const binary_control_table::key_type& rhs);
108 
111  public std::runtime_error
112 {
113 public:
115  commit_error();
116 };
117 
118 }; /* namespace pkg */
119 
120 #endif
char * _data
Definition: zipfile.cc:68
void update()
Re-read the underlying package index file.
Definition: binary_control_table.cc:51
const_iterator end() const
Get const iterator for end of table.
Definition: binary_control_table.h:80
A class for specifying the name and version of a package.
Definition: binary_control_table.h:26
void commit()
Commit changes.
Definition: binary_control_table.cc:70
std::map< key_type, mapped_type >::const_iterator const_iterator
Definition: binary_control_table.h:42
bool operator<(const binary_control_table::key_type &lhs, const binary_control_table::key_type &rhs)
Compare two binary control table keys.
Definition: binary_control_table.cc:119
key_type()
Construct default key type.
Definition: binary_control_table.cc:110
commit_error()
Construct commit error.
Definition: binary_control_table.cc:128
const mapped_type & operator[](const key_type &key) const
Get control record for package given package name and version.
Definition: binary_control_table.cc:23
const_iterator begin() const
Get const iterator for start of table.
Definition: binary_control_table.h:74
version pkgvrsn
The package version.
Definition: binary_control_table.h:32
virtual ~binary_control_table()
Destroy binary control table.
Definition: binary_control_table.cc:19
binary_control_table(const string &pathname)
Construct binary control table.
Definition: binary_control_table.cc:13
A class for mapping package name and version to binary control record.
Definition: binary_control_table.h:21
A class to represent a package version.
Definition: version.h:21
binary_control mapped_type
Definition: binary_control_table.h:41
string pkgname
The package name.
Definition: binary_control_table.h:30
void insert(const mapped_type &ctrl)
Insert control record into table.
Definition: binary_control_table.cc:44
A class to represent the content of a RiscPkg binary control file.
Definition: binary_control.h:22
A base class to represent a data table.
Definition: table.h:18
An exception class for reporting failure to commit table.
Definition: binary_control_table.h:110

Reference Manual LibPkg Version 0.6.1 (28 Jan 2015)