Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

Bkmks.h

Go to the documentation of this file.
00001 #ifndef __Bkmks_h
00002 #define __Bkmks_h
00003 
00004 #include "config.h"
00005 #include "Filedata.h"
00006 #include <stdio.h>
00007 
00008 template<class T>
00009 class CList;
00010 
00011 class Bkmk
00012 {
00013     friend class BkmkFile;
00014     unsigned char* m_name;
00015     unsigned short m_namelen;
00016     unsigned char* m_anno;
00017     unsigned short m_annolen;
00018     unsigned int m_position;
00019     unsigned int m_position2;
00020     unsigned char m_red,m_green,m_blue, m_level;
00021     void init(const void*, unsigned short, const void*, unsigned short, unsigned int);
00022  public:
00023     Bkmk() : m_name(NULL), m_namelen(0), m_anno(NULL), m_annolen(0), m_position(0) {};
00024     Bkmk(const unsigned char* _nm, unsigned short _nmlen, const unsigned char* _anno, unsigned short _annolen, unsigned int _p);
00025     Bkmk(const tchar* _nm, const unsigned char* _anno, unsigned short _annolen, unsigned int _p);
00026     Bkmk(const tchar* _nm, const tchar* _anno, unsigned int _p);
00027     Bkmk(const tchar* _nm, const tchar* _anno, unsigned int _p, unsigned int _p2);
00028     Bkmk(const Bkmk& rhs) : m_name(NULL), m_anno(NULL)
00029         {
00030             *this = rhs;
00031         }
00032     ~Bkmk();
00033     unsigned int value() const { return m_position; }
00034     void value(unsigned int _v) { m_position = _v; }
00035     unsigned int value2() const { return m_position2; }
00036     void value2(unsigned int _v) { m_position2 = _v; }
00037     unsigned char red() { return m_red; }
00038     unsigned char green() { return m_green; }
00039     unsigned char blue() { return m_blue; }
00040     void red(unsigned char _v) { m_red = _v; }
00041     void green(unsigned char _v) { m_green = _v; }
00042     void blue(unsigned char _v) { m_blue = _v; }
00043     unsigned char level() { return m_level; }
00044     void level(unsigned char _v) { m_level = _v; }
00045     tchar *name() const { return (tchar*)m_name; }
00046     tchar *anno() const { return (tchar*)m_anno; }
00047     bool operator<(const Bkmk& rhs) { return (m_position < rhs.m_position); }
00048     Bkmk& operator=(const Bkmk& rhs);
00049     bool operator==(const Bkmk& rhs);
00050     void setAnno(tchar* t);
00051     void setAnno(unsigned char* t, unsigned short len);
00052     unsigned char* filedata()
00053         {
00054             CFiledata fd(anno());
00055             return m_anno+fd.length();
00056         }
00057     unsigned short filedatalen()
00058         {
00059             CFiledata fd(anno());
00060             return m_annolen - fd.length();
00061         }
00062 };
00063 
00064 class BkmkFile
00065 {
00066     FILE* f;
00067     bool wt;
00068     bool isUpgraded, m_extras;
00069     static const unsigned long magic;
00070  private:
00071     static Bkmk* read07(BkmkFile*, FILE*);
00072     static Bkmk* read06(BkmkFile*, FILE*);
00073     static Bkmk* read05(BkmkFile*, FILE*);
00074     static Bkmk* read03(BkmkFile*, FILE*);
00075     CList<Bkmk>* readall00(Bkmk*(*fn)(BkmkFile*, FILE*));
00076     void write(const Bkmk& b);
00077  public:
00078     bool upgraded() { return isUpgraded; }
00079     BkmkFile(const char *fnm, bool w, bool _x);
00080     ~BkmkFile();
00081     void write(CList<Bkmk>& bl);
00082     CList<Bkmk>* readall();
00083 };
00084 #endif

Generated on Sat Nov 5 16:16:53 2005 for OPIE by  doxygen 1.4.2