6 typedef unsigned long int ulint_smartpt;
14 SmartPtrBase_sidtt(T* buffer, ulint_smartpt bufferLen,
bool bufOwner =
false) : dummy(0)
21 bufEnd = bufBegin + bufferLen;
39 if ( doFree && bufBegin )
41 #ifndef SID_HAVE_BAD_COMPILER
44 delete[] (
void*)bufBegin;
51 virtual T* tellBegin()
const {
return bufBegin; }
52 virtual ulint_smartpt tellLength()
const {
return bufLen; }
53 virtual ulint_smartpt tellPos()
const {
return (ulint_smartpt)(pBufCurrent-bufBegin); }
55 virtual bool checkIndex(ulint_smartpt index)
57 return ((pBufCurrent+index)<bufEnd);
64 pBufCurrent = bufBegin;
65 return (status =
true);
69 return (status =
false);
75 return (pBufCurrent<bufEnd);
80 return (pBufCurrent==bufEnd);
83 virtual void operator ++()
95 virtual void operator ++(
int)
107 virtual void operator --()
119 virtual void operator --(
int)
131 virtual void operator +=(ulint_smartpt offset)
133 if (checkIndex(offset))
135 pBufCurrent += offset;
143 virtual void operator -=(ulint_smartpt offset)
145 if ((pBufCurrent-offset) >= bufBegin)
147 pBufCurrent -= offset;
155 virtual T operator*()
168 virtual T& operator [](ulint_smartpt index)
170 if (checkIndex(index))
172 return pBufCurrent[index];
181 virtual operator bool() {
return status; }
187 ulint_smartpt bufLen;
200 SmartPtr_sidtt(T* buffer, ulint_smartpt bufferLen,
bool bufOwner =
false)
210 void setBuffer(T* buffer, ulint_smartpt bufferLen)
214 this->bufBegin = buffer;
215 this->pBufCurrent = buffer;
216 this->bufEnd = buffer + bufferLen;
217 this->bufLen = bufferLen;
223 this->pBufCurrent = 0;
226 this->status =
false;