6 changed files with 97 additions and 10 deletions
@ -0,0 +1,14 @@ |
|||||
|
//
|
||||
|
// AvnString.h
|
||||
|
// Avalonia.Native.OSX
|
||||
|
//
|
||||
|
// Created by Dan Walmsley on 07/11/2018.
|
||||
|
// Copyright © 2018 Avalonia. All rights reserved.
|
||||
|
//
|
||||
|
|
||||
|
#ifndef AvnString_h |
||||
|
#define AvnString_h |
||||
|
|
||||
|
extern IAvnString* CreateAvnString(NSString* string); |
||||
|
|
||||
|
#endif /* AvnString_h */ |
||||
@ -0,0 +1,55 @@ |
|||||
|
// |
||||
|
// AvnString.m |
||||
|
// Avalonia.Native.OSX |
||||
|
// |
||||
|
// Created by Dan Walmsley on 07/11/2018. |
||||
|
// Copyright © 2018 Avalonia. All rights reserved. |
||||
|
// |
||||
|
|
||||
|
#include "common.h" |
||||
|
|
||||
|
class AvnStringImpl : public virtual ComSingleObject<IAvnString, &IID_IAvnString> |
||||
|
{ |
||||
|
private: |
||||
|
NSString* _string; |
||||
|
|
||||
|
public: |
||||
|
FORWARD_IUNKNOWN() |
||||
|
|
||||
|
AvnStringImpl(NSString* string) |
||||
|
{ |
||||
|
_string = string; |
||||
|
} |
||||
|
|
||||
|
virtual HRESULT GetPointer(void**retOut) override |
||||
|
{ |
||||
|
@autoreleasepool |
||||
|
{ |
||||
|
if(retOut == nullptr) |
||||
|
{ |
||||
|
return E_POINTER; |
||||
|
} |
||||
|
|
||||
|
*retOut = (void*)_string.UTF8String; |
||||
|
|
||||
|
return S_OK; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
virtual HRESULT GetLength(int*retOut) override |
||||
|
{ |
||||
|
if(retOut == nullptr) |
||||
|
{ |
||||
|
return E_POINTER; |
||||
|
} |
||||
|
|
||||
|
*retOut = (int)_string.length; |
||||
|
|
||||
|
return S_OK; |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
IAvnString* CreateAvnString(NSString* string) |
||||
|
{ |
||||
|
return new AvnStringImpl(string); |
||||
|
} |
||||
Loading…
Reference in new issue