Go to the documentation of this file.00001
00002 #ifndef EPT_APT_APT_H
00003 #define EPT_APT_APT_H
00004
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <wibble/exception.h>
00028 #include <ept/apt/version.h>
00029 #include <ept/core/apt.h>
00030
00031 #include <iterator>
00032
00033 namespace ept {
00034 namespace apt {
00035
00036 class Exception : public wibble::exception::Generic
00037 {
00038 protected:
00039 std::string m_message;
00040
00041 public:
00042 Exception(const std::string& context) throw ();
00043 ~Exception() throw () {}
00044
00045 virtual const char* type() const throw () { return "Apt"; }
00046 virtual std::string desc() const throw () { return m_message; }
00047 };
00048
00049 class Apt;
00050 class AptImplementation;
00051 class RecordIteratorImpl;
00052 using core::PackageState;
00053
00060 class Apt
00061 {
00062 protected:
00063 AptImplementation* impl;
00064
00065 public:
00066
00067 class Iterator : public std::iterator<std::input_iterator_tag, std::string, void, void, void>
00068 {
00069 void* cur;
00070
00071 protected:
00072
00073 Iterator(void* cur) : cur(cur) {}
00074
00075
00076 Iterator() : cur(0) {}
00077
00078 public:
00079
00080 Iterator(const Iterator&);
00081 ~Iterator();
00082 std::string operator*();
00083 Iterator& operator++();
00084 Iterator& operator=(const Iterator&);
00085 bool operator==(const Iterator&) const;
00086 bool operator!=(const Iterator&) const;
00087
00088
00089
00090
00091 friend class Apt;
00092 };
00093
00094
00095 class RecordIterator : public std::iterator<std::input_iterator_tag, std::string, void, void, void>
00096 {
00097 RecordIteratorImpl* impl;
00098 size_t pos;
00099 std::string cur;
00100 size_t cur_pos;
00101
00102 protected:
00103
00104 RecordIterator(RecordIteratorImpl* cur, size_t pos = 0);
00105
00106
00107 RecordIterator() : impl(0), pos(0), cur_pos(0) {}
00108
00109 public:
00110
00111 RecordIterator(const RecordIterator& r);
00112
00113 ~RecordIterator();
00114 std::string operator*();
00115 std::string* operator->();
00116 RecordIterator& operator++();
00117 RecordIterator& operator=(const RecordIterator& r);
00118 bool operator==(const RecordIterator&) const;
00119 bool operator!=(const RecordIterator&) const;
00120
00121
00122
00123
00124 friend class Apt;
00125 };
00126
00127 typedef Iterator iterator;
00128 typedef RecordIterator record_iterator;
00129
00133 Apt();
00134 ~Apt();
00135
00136 iterator begin() const;
00137 iterator end() const;
00138
00139 record_iterator recordBegin() const;
00140 record_iterator recordEnd() const;
00141
00142
00144 size_t size() const;
00145
00150 bool isValid(const std::string& pkg) const;
00151
00154 std::string validate(const std::string& pkg) const
00155 {
00156 if (isValid(pkg))
00157 return pkg;
00158 return std::string();
00159 }
00160
00163 Version validate(const Version& ver) const;
00164
00166 Version installedVersion(const std::string& pkg) const;
00167
00169 Version candidateVersion(const std::string& pkg) const;
00170
00175 Version anyVersion(const std::string& pkg) const;
00176
00178 PackageState state(const std::string& pkg) const;
00179
00186
00187
00188
00190 std::string rawRecord(const std::string& pkg) const;
00191
00193 std::string rawRecord(const Version& ver) const;
00194
00196 time_t timestamp();
00197
00204 void checkCacheUpdates();
00205
00212 void invalidateTimestamp();
00213 };
00214
00215 }
00216 }
00217
00218
00219 #endif