00001 #ifndef DEBTAGS_PACKAGE_H
00002 #define DEBTAGS_PACKAGE_H
00003
00004 #pragma interface
00005
00006 #include "PackageDB.h"
00007
00008 #include <string>
00009
00010 namespace Tagcoll
00011 {
00012 class Tag;
00013 class TagSet;
00014 };
00015
00016 namespace Debtags
00017 {
00018 using namespace Tagcoll;
00019
00020 class AvailableReader;
00021 class StandardEnvironment;
00022 class PackageImpl;
00023 class PackageSet;
00024 class Maintainer;
00025
00026 class Package
00027 {
00028 protected:
00029 PackageImpl* impl;
00030
00031 explicit Package(PackageImpl* existing_impl) throw ();
00032
00033 public:
00034 Package() throw ();
00035 explicit Package(const std::string& name) throw ();
00036 Package(const Package& f) throw ();
00037 ~Package() throw ();
00038 Package& operator=(const Package& f) throw ();
00039
00040 bool operator==(const Package& f) const throw ();
00041 bool operator<(const Package& f) const throw ();
00042
00043 operator bool() const throw ();
00044
00045 const std::string& name() const throw ();
00046
00047 const std::string& sdesc() const throw ();
00048 const std::string& ldesc() const throw ();
00049 const Maintainer& maint() const throw ();
00050 int state() const throw (PackageDBException);
00051
00052 const std::string& sdesc(const std::string& sdesc) throw ();
00053 const std::string& ldesc(const std::string& ldesc) throw ();
00054 const Maintainer& maint(const Maintainer& maint) throw ();
00055 const std::string& fulldata(const std::string& fulldata) throw ();
00056
00057 const TagSet tags() const throw ();
00058 const std::string& fulldata() const throw ();
00059
00060 friend class PackageSet;
00061 friend class PackageImpl;
00062 friend class AvailableReader;
00063 friend class StandardEnvironment;
00064 };
00065
00066 };
00067
00068
00069 #endif