/*
 * taglist.h
 *
 *  Created on: 4 Jun 2013
 *      Author: john
 */

#ifndef TAGLIST_H_
#define TAGLIST_H_

#include <kmsg.h>
#include <list>

class cTagList
{
public:
   cTagList();
   ~cTagList();
   void add(KTag *);
   void add(int tag_id);
   void add(int tag_id,const char *str);
   void add(int tag_id,uint32_t val);
   void add(int tag_id,uint16_t val);
   void add(int tag_id,uint8_t val);
   void add(int tag_id,uint8_t buff[],int len);
   void add(int tag_id,float val);

   KTag * get();

   static char * getString(KTag *tag,char *,int len);
   static uint32_t getUInt32(KTag *tag);
   static uint16_t getUInt16(KTag *tag);
   static uint8_t getUInt8(KTag *tag);
   static uint8_t * getBytes(KTag *tag,uint8_t buff[],int &len);
   static float getFloat(KTag *tag);

private:
   std::list<KTag *> mList;
   static KTag::KTagType lookup_tag_type(int tag_id);
};


#endif /* TAGLIST_H_ */
