1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #pragma once
- namespace ECOM::Utility::IOBuffer
- {
- class InBuffer;
- class OutBuffer;
- //-----------------------------------------------------------------------------
- // BufferItem
- //-----------------------------------------------------------------------------
- class BufferItem
- {
- friend class InBuffer;
- friend class OutBuffer;
- public:
- int Index;
- int BufferSize;
- BYTE * Data;
- private:
- bool AutoDelete;
- public:
- inline BufferItem (int Alloc)
- {
- if (Alloc > 0)
- Data = new BYTE [Alloc];
- else
- Data = nullptr;
- AutoDelete = true;
- Index = 0;
- BufferSize = Alloc;
- }
- inline BufferItem ()
- {
- Data = nullptr;
- AutoDelete = false;
- Index = 0;
- BufferSize = 0;
- }
- inline void Clear ()
- {
- if (AutoDelete)
- delete Data;
- Data = nullptr;
- }
- inline ~BufferItem ()
- {
- Clear ();
- }
- inline int GetCount () const
- {
- return BufferSize;
- }
- public:
- static BufferItem * BorrowFrom (void * Where, int Length)
- {
- BufferItem * BS = new BufferItem;
- BS->AutoDelete = false;
- BS->Data = (BYTE *) Where;
- BS->BufferSize = Length;
- return BS;
- }
- // all same except const
- static BufferItem * BorrowFrom (const void * Where, int Length)
- {
- BufferItem * BS = new BufferItem;
- BS->AutoDelete = false;
- BS->Data = (BYTE *) Where;
- BS->BufferSize = Length;
- return BS;
- }
- };
- }
|