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