forked from LeenkxTeam/LNXSDK
		
	
		
			
	
	
		
			74 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
		
		
			
		
	
	
			74 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
|  | #include <stdio.h>
 | ||
|  | 
 | ||
|  | #include <hx/Native.h>
 | ||
|  | #include <api/HaxeObject.h>
 | ||
|  | #include <api/HaxeApi.h>
 | ||
|  | 
 | ||
|  | 
 | ||
|  | struct MyStruct | ||
|  | { | ||
|  |    hx::Ref<api::HaxeObject *> haxeRef; | ||
|  | }; | ||
|  | 
 | ||
|  | extern void __hxcpp_collect(bool inMajor); | ||
|  | 
 | ||
|  | int main(int argc, char **argv) | ||
|  | { | ||
|  |    MyStruct *myStruct = new MyStruct(); | ||
|  | 
 | ||
|  | 
 | ||
|  |    const char *err = hx::Init(); | ||
|  |    if (err) | ||
|  |    { | ||
|  |       printf("Could not initialize library: %s\n", err); | ||
|  |       return -1; | ||
|  |    } | ||
|  |    else | ||
|  |    { | ||
|  |       hx::NativeAttach autoAttach; | ||
|  | 
 | ||
|  |       api::HaxeObject *obj = api::HaxeApi::createBase(); | ||
|  |       obj->setName("child"); | ||
|  | 
 | ||
|  |       myStruct->haxeRef = obj; | ||
|  |       obj->setName("Name"); | ||
|  | 
 | ||
|  |       api::HaxeObject *child = obj->createChild(); | ||
|  |    } | ||
|  | 
 | ||
|  |    { | ||
|  |       hx::NativeAttach autoAttach; | ||
|  |       __hxcpp_collect(true); | ||
|  |    } | ||
|  | 
 | ||
|  |    { | ||
|  |       hx::NativeAttach autoAttach; | ||
|  |       if (myStruct->haxeRef->getName()!="Name") | ||
|  |       { | ||
|  |          printf("Could not get value back (%s)\n", myStruct->haxeRef->getName().c_str() ); | ||
|  |          return -1; | ||
|  |       } | ||
|  |    } | ||
|  | 
 | ||
|  |    { | ||
|  |       hx::NativeAttach autoAttach0; | ||
|  |       hx::NativeAttach autoAttach1; | ||
|  |       hx::NativeAttach autoAttach2; | ||
|  |       hx::NativeAttach autoAttach3; | ||
|  |       if (hx::GcGetThreadAttachedCount()!=4) | ||
|  |       { | ||
|  |          printf("Bad attach count\n"); | ||
|  |          return -1; | ||
|  |       } | ||
|  |    } | ||
|  |    if (hx::GcGetThreadAttachedCount()!=0) | ||
|  |    { | ||
|  |       printf("Bad clear attach count\n"); | ||
|  |       return -1; | ||
|  |    } | ||
|  | 
 | ||
|  |    printf("all good\n"); | ||
|  |    return 0; | ||
|  | } | ||
|  | 
 |