31 #ifndef __DATAWRAPPER__ 32 #define __DATAWRAPPER__ 34 #include "VOSObject.h" 35 #include "WideString.h" 44 template <
class DataT>
51 {
if (fBlock) fBlock->
AddRef(); }
54 {
if (fBlock) fBlock->
AddRef(); }
59 {
if (fBlock) fBlock->
Release(); }
65 operator const DataT* ()
const 72 const DataT*
get()
const 91 DataWrapper() :fBlock(nil), fData(nil), fCharOffset(0)
94 :fBlock(block), fData(str), fCharOffset(charOffset)
95 {
if (fBlock) fBlock->
AddRef(); }
98 :fBlock(copy.fBlock), fData(copy.fData), fCharOffset(copy.fCharOffset)
99 {
if (fBlock) fBlock->
AddRef(); }
104 {
if (fBlock) fBlock->
Release(); }
109 operator const textchar*()
110 {
return fData ? fData->GrabUTF16Buffer(nil) + fData->CodePointIndexToUTF16Index(fCharOffset) : nil; }
129 int32 CharOffsetToUTF16Offset(int32 charOffset)
const;
133 bool16 HasSurrogates()
const 134 {
return fData->HasMultiWordUnicode(); }