00001
00012 #if !defined(_AJA_OUTPUTBUFFER_H_)
00013 #define _AJA_OUTPUTBUFFER_H_
00014
00015 #include "aja.h"
00016
00017 #define BUFBLOCK_SIZE 512
00018
00019 namespace aja
00020 {
00021
00030 class basicHelper
00031 {
00032 public:
00033 const void* mPtr;
00034 unsigned int mSize;
00035 };
00036
00037
00038
00046 class memHelper : public basicHelper
00047 {
00048 public:
00049 memHelper(const void* data, unsigned int size)
00050 {
00051 mPtr = data;
00052 mSize = size;
00053 }
00054 };
00055
00056
00057
00061 class typeHelper : public basicHelper
00062 {
00063 public:
00064 byte_t mType;
00065
00066 typeHelper(byte_t itmType, byte_t itmSubType)
00067 {
00068 mType = 0;
00069 mType = mType | ( itmType << 4);
00070 mType = mType | itmSubType;
00071 mPtr = &mType;
00072 mSize = sizeof(byte_t);
00073 }
00074 };
00075
00076
00077
00081 class elmIdHelper : public basicHelper
00082 {
00083 public:
00084 byte_t mNum[3];
00085
00086 elmIdHelper(number_t id)
00087 {
00088 id = id & NUMBER24_MAX;
00089 mNum[0] = (byte_t)((id >> 16)& 0x000000FF);
00090 mNum[1] = (byte_t)((id >> 8) & 0x000000FF);
00091 mNum[2] = (byte_t)(id & 0x000000FF);
00092 mPtr = &mNum;
00093 mSize = 3 * sizeof(byte_t);
00094 }
00095 };
00096
00097
00098
00099
00105 class OutputBuffer
00106 {
00107 public:
00108 OutputBuffer();
00109 virtual ~OutputBuffer();
00110
00112
00114 public:
00115 void* getBuffer();
00116 unsigned int getBufferSize();
00117 void erase();
00118 bool pushBack(const void* data, unsigned int size);
00119
00120 protected:
00121 bool resize(unsigned int new_size);
00122
00124
00126 protected:
00127 unsigned int mRealSize;
00128 unsigned int mDataSize;
00129 byte_t* mBuffer;
00130
00132
00134 friend OutputBuffer& operator << (OutputBuffer& o, const basicHelper& data);
00135 friend OutputBuffer& operator << (OutputBuffer& o, const byte_t data);
00136 friend OutputBuffer& operator << (OutputBuffer& o, const char* data);
00137 friend OutputBuffer& operator << (OutputBuffer& o, const dbyte_t data);
00138 friend OutputBuffer& operator << (OutputBuffer& o, const number_t data);
00139 friend OutputBuffer& operator << (OutputBuffer& o, const std::string data);
00140 friend OutputBuffer& operator << (OutputBuffer& o, const OutputBuffer& i);
00141 };
00142
00143 }
00144
00145 #endif