Updated init script.
[dtbartle/bnbt.git] / atom.h
1 //\r
2 // Copyright (C) 2003-2004 Trevor Hogan\r
3 //\r
4 \r
5 #ifndef ATOM_H\r
6  #define ATOM_H\r
7 \r
8 class CAtom\r
9 {\r
10 public:\r
11         virtual ~CAtom( ) { }\r
12 \r
13         virtual bool isLong( )          { return false; }\r
14         virtual bool isList( )          { return false; }\r
15         virtual bool isDicti( )         { return false; }\r
16 \r
17         virtual int EncodedLength( ) = 0;\r
18         virtual int Length( ) = 0;\r
19         virtual string toString( ) = 0;\r
20 };\r
21 \r
22 class CAtomInt : public CAtom\r
23 {\r
24 public:\r
25         CAtomInt( );\r
26         CAtomInt( int iInt );\r
27         CAtomInt( const CAtomInt &c );\r
28         virtual ~CAtomInt( );\r
29 \r
30         virtual int EncodedLength( );\r
31         virtual int Length( );\r
32         virtual string toString( );\r
33 \r
34         int getValue( ) const;\r
35         void setValue( int iInt );\r
36 \r
37 private:\r
38         int m_iInt;\r
39 };\r
40 \r
41 class CAtomLong : public CAtom\r
42 {\r
43 public:\r
44         CAtomLong( );\r
45         CAtomLong( int64 iLong );\r
46         CAtomLong( const CAtomLong &c );\r
47         virtual ~CAtomLong( );\r
48 \r
49         virtual bool isLong( )          { return true; }\r
50 \r
51         virtual int EncodedLength( );\r
52         virtual int Length( );\r
53         virtual string toString( );\r
54 \r
55         int64 getValue( ) const;\r
56         void setValue( int64 iLong );\r
57 \r
58 private:\r
59         int64 m_iLong;\r
60 };\r
61 \r
62 class CAtomString : public CAtom\r
63 {\r
64 public:\r
65         CAtomString( );\r
66         CAtomString( string strString );\r
67         CAtomString( const CAtomString &c );\r
68         virtual ~CAtomString( );\r
69 \r
70         virtual int EncodedLength( );\r
71         virtual int Length( );\r
72         virtual string toString( );\r
73 \r
74         string getValue( ) const;\r
75         void setValue( string strString );\r
76 \r
77 private:\r
78         string m_strString;\r
79 };\r
80 \r
81 class CAtomList : public CAtom\r
82 {\r
83 public:\r
84         CAtomList( );\r
85         CAtomList( vector<CAtom *> vecList );\r
86         CAtomList( const CAtomList &c );\r
87         virtual ~CAtomList( );\r
88 \r
89         virtual bool isList( )          { return true; }\r
90 \r
91         virtual int EncodedLength( );\r
92         virtual int Length( );\r
93         virtual string toString( );\r
94 \r
95         virtual bool isEmpty( );\r
96         virtual void clear( );\r
97 \r
98         virtual void Randomize( );\r
99 \r
100         vector<CAtom *> getValue( ) const;\r
101         vector<CAtom *> *getValuePtr( ) const;\r
102         void setValue( vector<CAtom *> vecList );\r
103 \r
104         void delItem( CAtom *atmItem );\r
105         void addItem( CAtom *atmItem );\r
106 \r
107 private:\r
108         vector<CAtom *> m_vecList;\r
109 };\r
110 \r
111 class CAtomDicti : public CAtom\r
112 {\r
113 public:\r
114         CAtomDicti( );\r
115         CAtomDicti( const CAtomDicti &c );\r
116         virtual ~CAtomDicti( );\r
117 \r
118         virtual bool isDicti( )         { return true; }\r
119 \r
120         virtual int EncodedLength( );\r
121         virtual int Length( );\r
122         virtual string toString( );\r
123 \r
124         virtual bool isEmpty( );\r
125         virtual void clear( );\r
126 \r
127         map<string, CAtom *> *getValuePtr( ) const;\r
128         void setValue( map<string, CAtom *> mapDicti );\r
129 \r
130         void delItem( string strKey );\r
131         CAtom *getItem( string strKey );\r
132         CAtom *getItem( string strKey, CAtom *pReturn );\r
133         void setItem( string strKey, CAtom *pValue );\r
134 \r
135 private:\r
136         map<string, CAtom *> m_mapDicti;\r
137 };\r
138 \r
139 #endif\r