forked from LeenkxTeam/LNXSDK
		
	
		
			
				
	
	
		
			223 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			223 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
#ifndef HX_OBJC_HELPERS_INCLUDED
 | 
						|
#define HX_OBJC_HELPERS_INCLUDED
 | 
						|
 | 
						|
 | 
						|
 | 
						|
@interface NSHaxeWrapperClass : NSObject {
 | 
						|
  @public hx::Object *haxeObject;
 | 
						|
}
 | 
						|
- (id)init:(hx::Object *) inHaxe;
 | 
						|
- (void)dealloc;
 | 
						|
@end
 | 
						|
 | 
						|
 | 
						|
NSDictionary<NSString *, id> *_hx_obj_to_nsdictionary(Dynamic d);
 | 
						|
 | 
						|
id _hx_value_to_objc(Dynamic d);
 | 
						|
 | 
						|
 | 
						|
Dynamic _hx_nsdictionary_to_obj(NSDictionary<NSString *, id> *inDictionary);
 | 
						|
 | 
						|
Dynamic _hx_objc_to_dynamic(id inValue);
 | 
						|
 | 
						|
Array<unsigned char> _hx_objc_to_bytes(id value);
 | 
						|
 | 
						|
 | 
						|
namespace hx
 | 
						|
{
 | 
						|
 | 
						|
 | 
						|
// 0 args
 | 
						|
struct TObjcBlockVoidVoid
 | 
						|
{
 | 
						|
   typedef void (^t)();
 | 
						|
 | 
						|
   static t create(Dynamic func)
 | 
						|
   {
 | 
						|
      NSHaxeWrapperClass *wrapper = [[NSHaxeWrapperClass alloc] init:func.mPtr];
 | 
						|
      t wrap = ^ {
 | 
						|
         wrapper->haxeObject->__run();
 | 
						|
      };
 | 
						|
      return wrap;
 | 
						|
   }
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
template<typename Ret>
 | 
						|
struct TObjcBlockRetVoid
 | 
						|
{
 | 
						|
   typedef Ret (^t)();
 | 
						|
 | 
						|
   static t create(Dynamic func)
 | 
						|
   {
 | 
						|
      NSHaxeWrapperClass *wrapper = [[NSHaxeWrapperClass alloc] init:func.mPtr];
 | 
						|
      t wrap = ^() {
 | 
						|
         return (Ret) wrapper->haxeObject->__run();
 | 
						|
      };
 | 
						|
      return wrap;
 | 
						|
   }
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
// 1 arg
 | 
						|
template<typename Arg0>
 | 
						|
struct TObjcBlockVoidArgs1
 | 
						|
{
 | 
						|
   typedef void (^t)(Arg0 a);
 | 
						|
 | 
						|
   static t create(Dynamic func)
 | 
						|
   {
 | 
						|
      NSHaxeWrapperClass *wrapper = [[NSHaxeWrapperClass alloc] init:func.mPtr];
 | 
						|
      t wrap = ^(Arg0 a0) {
 | 
						|
         wrapper->haxeObject->__run(a0);
 | 
						|
      };
 | 
						|
      return wrap;
 | 
						|
   }
 | 
						|
};
 | 
						|
 | 
						|
template<typename Ret, typename Arg0>
 | 
						|
struct TObjcBlockRetArgs1
 | 
						|
{
 | 
						|
   typedef Ret (^t)(Arg0 a);
 | 
						|
   inline static t create(Dynamic func)
 | 
						|
   {
 | 
						|
      NSHaxeWrapperClass *wrapper = [[NSHaxeWrapperClass alloc] init:func.mPtr];
 | 
						|
      t wrap = ^(Arg0 a0) {
 | 
						|
         return (Ret) wrapper->haxeObject->__run(a0);
 | 
						|
      } ;
 | 
						|
   }
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
 | 
						|
// 2 arg
 | 
						|
template<typename Arg0, typename Arg1>
 | 
						|
struct TObjcBlockVoidArgs2
 | 
						|
{
 | 
						|
   typedef void (^t)(Arg0 a0, Arg1 a1);
 | 
						|
 | 
						|
   static t create(Dynamic func)
 | 
						|
   {
 | 
						|
      NSHaxeWrapperClass *wrapper = [[NSHaxeWrapperClass alloc] init:func.mPtr];
 | 
						|
      t wrap = ^(Arg0 a0, Arg1 a1) {
 | 
						|
         wrapper->haxeObject->__run(a0,a1);
 | 
						|
      };
 | 
						|
      return wrap;
 | 
						|
   }
 | 
						|
};
 | 
						|
 | 
						|
template<typename Ret, typename Arg0, typename Arg1>
 | 
						|
struct TObjcBlockRetArgs2
 | 
						|
{
 | 
						|
   typedef Ret (^t)(Arg0 a0, Arg1 a1);
 | 
						|
   inline static t create(Dynamic func)
 | 
						|
   {
 | 
						|
      NSHaxeWrapperClass *wrapper = [[NSHaxeWrapperClass alloc] init:func.mPtr];
 | 
						|
      t wrap = ^(Arg0 a0, Arg1 a1) {
 | 
						|
         return (Ret) wrapper->haxeObject->__run(a0,a1);
 | 
						|
      } ;
 | 
						|
   }
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
// 3 arg
 | 
						|
template<typename Arg0, typename Arg1, typename Arg2>
 | 
						|
struct TObjcBlockVoidArgs3
 | 
						|
{
 | 
						|
   typedef void (^t)(Arg0 a0, Arg1 a1, Arg2 a2);
 | 
						|
 | 
						|
   static t create(Dynamic func)
 | 
						|
   {
 | 
						|
      NSHaxeWrapperClass *wrapper = [[NSHaxeWrapperClass alloc] init:func.mPtr];
 | 
						|
      t wrap = ^(Arg0 a0, Arg1 a1, Arg2 a2) {
 | 
						|
         wrapper->haxeObject->__run(a0,a1,a2);
 | 
						|
      };
 | 
						|
      return wrap;
 | 
						|
   }
 | 
						|
};
 | 
						|
 | 
						|
template<typename Ret, typename Arg0, typename Arg1, typename Arg2>
 | 
						|
struct TObjcBlockRetArgs3
 | 
						|
{
 | 
						|
   typedef Ret (^t)(Arg0 a0, Arg1 a1, Arg2 a2);
 | 
						|
   inline static t create(Dynamic func)
 | 
						|
   {
 | 
						|
      NSHaxeWrapperClass *wrapper = [[NSHaxeWrapperClass alloc] init:func.mPtr];
 | 
						|
      t wrap = ^(Arg0 a0, Arg1 a1, Arg2 a2) {
 | 
						|
         return (Ret) wrapper->haxeObject->__run(a0,a1,a2);
 | 
						|
      } ;
 | 
						|
   }
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
// 4 arg
 | 
						|
template<typename Arg0, typename Arg1, typename Arg2, typename Arg3>
 | 
						|
struct TObjcBlockVoidArgs4
 | 
						|
{
 | 
						|
   typedef void (^t)(Arg0 a0, Arg1 a1, Arg2 a2, Arg3 a3);
 | 
						|
 | 
						|
   static t create(Dynamic func)
 | 
						|
   {
 | 
						|
      NSHaxeWrapperClass *wrapper = [[NSHaxeWrapperClass alloc] init:func.mPtr];
 | 
						|
      t wrap = ^(Arg0 a0, Arg1 a1, Arg2 a2, Arg3 a3) {
 | 
						|
         wrapper->haxeObject->__run(a0,a1,a2,a3);
 | 
						|
      };
 | 
						|
      return wrap;
 | 
						|
   }
 | 
						|
};
 | 
						|
 | 
						|
template<typename Ret, typename Arg0, typename Arg1, typename Arg2, typename Arg3>
 | 
						|
struct TObjcBlockRetArgs4
 | 
						|
{
 | 
						|
   typedef Ret (^t)(Arg0 a0, Arg1 a1, Arg2 a2, Arg3 a3);
 | 
						|
   inline static t create(Dynamic func)
 | 
						|
   {
 | 
						|
      NSHaxeWrapperClass *wrapper = [[NSHaxeWrapperClass alloc] init:func.mPtr];
 | 
						|
      t wrap = ^(Arg0 a0, Arg1 a1, Arg2 a2, Arg3 a3) {
 | 
						|
         return (Ret) wrapper->haxeObject->__run(a0,a1,a2,a3);
 | 
						|
      } ;
 | 
						|
   }
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
// 5 arg
 | 
						|
template<typename Arg0, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
 | 
						|
struct TObjcBlockVoidArgs5
 | 
						|
{
 | 
						|
   typedef void (^t)(Arg0 a0, Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4);
 | 
						|
 | 
						|
   static t create(Dynamic func)
 | 
						|
   {
 | 
						|
      NSHaxeWrapperClass *wrapper = [[NSHaxeWrapperClass alloc] init:func.mPtr];
 | 
						|
      t wrap = ^(Arg0 a0, Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) {
 | 
						|
         wrapper->haxeObject->__run(a0,a1,a2,a3,a4);
 | 
						|
      };
 | 
						|
      return wrap;
 | 
						|
   }
 | 
						|
};
 | 
						|
 | 
						|
template<typename Ret, typename Arg0, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
 | 
						|
struct TObjcBlockRetArgs5
 | 
						|
{
 | 
						|
   typedef Ret (^t)(Arg0 a0, Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4);
 | 
						|
   inline static t create(Dynamic func)
 | 
						|
   {
 | 
						|
      NSHaxeWrapperClass *wrapper = [[NSHaxeWrapperClass alloc] init:func.mPtr];
 | 
						|
      t wrap = ^(Arg0 a0, Arg1 a1, Arg2 a2, Arg3 a3, Arg4 a4) {
 | 
						|
         return (Ret) wrapper->haxeObject->__run(a0,a1,a2,a3,a4);
 | 
						|
      } ;
 | 
						|
   }
 | 
						|
};
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
#endif
 | 
						|
 |