6 typedef unsigned long int ulint_smartpt;
15 SmartPtrBase_sidtt(T* buffer, ulint_smartpt bufferLen,
bool bufOwner =
false) : dummy(0)
20 pBufCurrent = ( bufBegin = buffer );
21 bufEnd = bufBegin + bufferLen;
27 pBufCurrent = ( bufBegin = ( bufEnd = 0 ));
37 if ( doFree && (bufBegin != 0) )
39 #ifndef SID_HAVE_BAD_COMPILER
42 delete[] (
void*)bufBegin;
49 virtual T* tellBegin() {
return bufBegin; }
50 virtual ulint_smartpt tellLength() {
return bufLen; }
51 virtual ulint_smartpt tellPos() {
return (ulint_smartpt)(pBufCurrent-bufBegin); }
53 virtual bool checkIndex(ulint_smartpt index)
55 return ((pBufCurrent+index)<bufEnd);
62 pBufCurrent = bufBegin;
63 return (status =
true);
67 return (status =
false);
73 return (pBufCurrent<bufEnd);
78 return (pBufCurrent==bufEnd);
81 virtual void operator ++()
93 virtual void operator ++(
int)
105 virtual void operator --()
117 virtual void operator --(
int)
129 virtual void operator +=(ulint_smartpt offset)
131 if (checkIndex(offset))
133 pBufCurrent += offset;
141 virtual void operator -=(ulint_smartpt offset)
143 if ((pBufCurrent-offset) >= bufBegin)
145 pBufCurrent -= offset;
153 virtual T operator*()
166 virtual T& operator [](ulint_smartpt index)
168 if (checkIndex(index))
170 return pBufCurrent[index];
179 virtual operator bool() {
return status; }
186 ulint_smartpt bufLen;
200 SmartPtr_sidtt(T* buffer, ulint_smartpt bufferLen,
bool bufOwner =
false)
210 void setBuffer(T* buffer, ulint_smartpt bufferLen)
212 if ( bufferLen >= 1 )
214 this->pBufCurrent = ( this->bufBegin = buffer );
215 this->bufEnd = buffer + bufferLen;
216 this->bufLen = bufferLen;
221 this->pBufCurrent = this->bufBegin = this->bufEnd = 0;
223 this->status =
false;