|
|
|
@ -11,14 +11,26 @@ |
|
|
|
class AvnStringImpl : public virtual ComSingleObject<IAvnString, &IID_IAvnString> |
|
|
|
{ |
|
|
|
private: |
|
|
|
NSString* _string; |
|
|
|
int _length; |
|
|
|
const char* _cstring; |
|
|
|
|
|
|
|
public: |
|
|
|
FORWARD_IUNKNOWN() |
|
|
|
|
|
|
|
AvnStringImpl(NSString* string) |
|
|
|
{ |
|
|
|
auto cstring = [string cStringUsingEncoding:NSUTF8StringEncoding]; |
|
|
|
_length = (int)[string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; |
|
|
|
|
|
|
|
_cstring = (const char*)malloc(_length + 5); |
|
|
|
|
|
|
|
memset((void*)_cstring, 0, _length + 5); |
|
|
|
memcpy((void*)_cstring, (void*)cstring, _length); |
|
|
|
} |
|
|
|
|
|
|
|
virtual ~AvnStringImpl() |
|
|
|
{ |
|
|
|
_string = string; |
|
|
|
free((void*)_cstring); |
|
|
|
} |
|
|
|
|
|
|
|
virtual HRESULT Pointer(void**retOut) override |
|
|
|
@ -30,7 +42,7 @@ public: |
|
|
|
return E_POINTER; |
|
|
|
} |
|
|
|
|
|
|
|
*retOut = (void*)_string.UTF8String; |
|
|
|
*retOut = (void*)_cstring; |
|
|
|
|
|
|
|
return S_OK; |
|
|
|
} |
|
|
|
@ -43,7 +55,7 @@ public: |
|
|
|
return E_POINTER; |
|
|
|
} |
|
|
|
|
|
|
|
*retOut = (int)_string.length; |
|
|
|
*retOut = _length; |
|
|
|
|
|
|
|
return S_OK; |
|
|
|
} |
|
|
|
|