11 typedef unsigned long int ulint_smartpt;
26 if ((buffer !=
nullptr) && (bufferLen != 0))
30 bufEnd = bufBegin + bufferLen;
38 if (doFree && (bufBegin !=
nullptr))
46 virtual T* tellBegin()
const {
return bufBegin; }
47 virtual ulint_smartpt tellLength()
const {
return bufLen; }
48 virtual ulint_smartpt tellPos()
const {
return static_cast<ulint_smartpt
>(pBufCurrent - bufBegin); }
50 virtual bool checkIndex(ulint_smartpt index)
const
52 return (pBufCurrent + index) < bufEnd;
59 pBufCurrent = bufBegin;
69 virtual bool good()
const
71 return pBufCurrent < bufEnd;
74 virtual bool fail()
const
76 return pBufCurrent == bufEnd;
79 virtual void operator ++()
91 virtual void operator ++(
int)
103 virtual void operator --()
115 virtual void operator --(
int)
127 virtual void operator +=(ulint_smartpt offset)
129 if (checkIndex(offset))
131 pBufCurrent += offset;
139 virtual void operator -=(ulint_smartpt offset)
141 if ((pBufCurrent-offset) >= bufBegin)
143 pBufCurrent -= offset;
151 virtual T operator*()
164 virtual T& operator [](ulint_smartpt index)
166 if (checkIndex(index))
168 return pBufCurrent[index];
177 virtual operator bool() {
return status; }
183 ulint_smartpt bufLen;
195 SmartPtr_sidtt(T* buffer, ulint_smartpt bufferLen,
bool bufOwner =
false) :
200 SmartPtrBase_sidtt<T>(0, 0)
203 void setBuffer(T* buffer, ulint_smartpt bufferLen)
205 if ((buffer !=
nullptr) && (bufferLen != 0))
207 this->bufBegin = buffer;
208 this->pBufCurrent = buffer;
209 this->bufEnd = buffer + bufferLen;
210 this->bufLen = bufferLen;
215 this->bufBegin =
nullptr;
216 this->pBufCurrent =
nullptr;
217 this->bufEnd =
nullptr;
219 this->status =
false;