49 // is written to file, they are changed into their marks' current |
47 // is written to file, they are changed into their marks' current |
50 // positions. Marks themselves are never written to files, only refs are |
48 // positions. Marks themselves are never written to files, only refs are |
51 // |
49 // |
52 class DataBuffer |
50 class DataBuffer |
53 { |
51 { |
54 PROPERTY (private, char*, Buffer, NO_OPS, STOCK_WRITE) |
52 PROPERTY (private, char*, Buffer, SetBuffer, STOCK_WRITE) |
55 PROPERTY (private, int, AllocatedSize, NUM_OPS, STOCK_WRITE) |
53 PROPERTY (private, int, AllocatedSize, SetAllocatedSize, STOCK_WRITE) |
56 PROPERTY (private, char*, Position, NO_OPS, STOCK_WRITE) |
54 PROPERTY (private, char*, Position, SetPosition, STOCK_WRITE) |
57 PROPERTY (private, List<ByteMark*>, Marks, LIST_OPS, STOCK_WRITE) |
55 PROPERTY (private, List<ByteMark*>, Marks, SetMarks, STOCK_WRITE) |
58 PROPERTY (private, List<MarkReference*>, References, LIST_OPS, STOCK_WRITE) |
56 PROPERTY (private, List<MarkReference*>, References, SetReferences, STOCK_WRITE) |
59 |
57 |
60 public: |
58 public: |
61 DataBuffer (int size = 128); |
59 DataBuffer (int size = 128); |
62 ~DataBuffer(); |
60 ~DataBuffer(); |
63 |
61 |
81 void WriteByte (int8_t data); |
79 void WriteByte (int8_t data); |
82 void WriteWord (int16_t data); |
80 void WriteWord (int16_t data); |
83 void WriteDWord (int32_t data); |
81 void WriteDWord (int32_t data); |
84 void CopyBuffer (const DataBuffer* buf); |
82 void CopyBuffer (const DataBuffer* buf); |
85 |
83 |
86 inline int GetWrittenSize() const |
84 inline int WrittenSize() const |
87 { |
85 { |
88 return GetPosition() - GetBuffer(); |
86 return Position() - Buffer(); |
89 } |
87 } |
90 }; |
88 }; |
91 |
89 |
92 #endif // BOTC_DATABUFFER_H |
90 #endif // BOTC_DATABUFFER_H |