1 #ifndef VMAILMGR__VPWTABLE__H__ 2 #define VMAILMGR__VPWTABLE__H__ 3 4 #include "mystring/mystring.h" 5 #include "misc/strlist.h" 6 #include "vpwentry/vpwentry.h" 7 8 class vdomain; 9 10 class vpwtable_reader 11 { 12 public: 13 virtual ~vpwtable_reader(); 14 virtual bool operator!() const = 0; 15 virtual vpwentry* get() = 0; 16 virtual bool rewind() = 0; 17 virtual bool end() = 0; 18 }; 19 20 class vpwtable_writer 21 { 22 public: 23 virtual ~vpwtable_writer(); 24 virtual bool operator!() const = 0; 25 virtual bool put(const vpwentry& vpw) = 0; 26 virtual bool end() = 0; 27 virtual bool abort() = 0; 28 }; 29 30 class vpwtable 31 { 32 private: 33 const mystring filename; 34 vpwtable(); // Unimplemented on purpose 35 public: 36 vpwtable(const vdomain*); 37 vpwtable(const vpwtable&); 38 ~vpwtable(); 39 40 vpwtable_reader* start_read() const; 41 vpwtable_writer* start_write() const; 42 43 vpwentry* getbyname(const mystring& name) const; 44 bool exists(const mystring& name) const; 45 46 bool put(const vpwentry* vpw, bool onlyadd) const; 47 48 bool del(const mystring& name) const; set(const vpwentry * vpw)49 inline bool set(const vpwentry* vpw) const 50 { 51 return put(vpw, false); 52 } add(const vpwentry * vpw)53 inline bool add(const vpwentry* vpw) const 54 { 55 return put(vpw, true); 56 } 57 }; 58 59 #endif 60