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;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 |