1:
2:
3: /*************
4: * *
5: * SENTINEL *
6: * *
7: *************/
8:
9:
10: #ifndef WWWI_MIND_LABELLIST_H
11: #define WWWI_MIND_LABELLIST_H
12:
13:
14: /**********************
15: * *
16: * COMPILER INCLUDES *
17: * *
18: **********************/
19:
20:
21: #include <vector>
22:
23:
24: /*********************
25: * *
26: * PROJECT INCLUDES *
27: * *
28: *********************/
29:
30:
31: #include "mind.h"
32: #include "label.h"
33:
34:
35: using std::vector;
36:
37:
38: /********************
39: * *
40: * CLASS LABELLIST *
41: * *
42: ********************/
43:
44:
45: /*
46: * This is used to represent the disassembled components of a name
47: * composed of various labels.
48: */
49:
50: typedef vector<Label> LabelListParent;
51:
52: class LabelList : public LabelListParent {
53: public:
54: LabelList(void);
55: explicit LabelList(const char *i_strName);
56: explicit LabelList(const unsigned char *ci_ucpLabels);
57: LabelList(const LabelList &ci_llr);
58: unsigned short GetRDLength(void) const;
59: unsigned short ToRaw(unsigned char *o_strOut) const;
60: char *ToString(void) const;
61: void ToString(char *o_strOut, size_t i_szOut) const;
62: ~LabelList(void);
63:
64: };
65: DECL_POINTER_TYPES(LabelList)
66:
67:
68: /************************
69: * *
70: * FUNCTION PROTOTYPES *
71: * *
72: ************************/
73:
74:
75: ostream& operator<<(ostream& io_smr, const LabelList &i_llr);
76: ostream& operator<<(ostream& io_smr, LabelListConstPtr i_llp);
77:
78:
79: /*********************
80: * *
81: * INLINE FUNCTIONS *
82: * *
83: *********************/
84:
85:
86: #include "labellist.i"
87:
88:
89: /************
90: * *
91: * THE END *
92: * *
93: ************/
94:
95:
96: #endif
97:
98:
99: