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: