[haXe] Canonical example
blackdog
blackdog at ipowerhouse.com
Wed Aug 1 16:11:34 CEST 2007
Hi Nicolas, sorry to be a PITA but I can't get this to work, can you
give me a canonical example of how I call method testing from neko FFI
once its been initialised as a module from neko, i.e. main() has been
called, so utils static should exist.
class HxDevUtils {
public static var utils:HxDevUtils;
public static function main() {
trace("initialised utils");
utils = new HxDevUtils();
}
public function new() {
}
public function testing():String {
return "boo";
}
}
my effort so far is this but it segfaults on the call after I've
checked everything is ok.
// printf("got something here %d",cl);
val_check(hxLocalData.utilModule,object);
val_iter_fields( hxLocalData.utilModule,check, val_null);
field classes =
val_field(hxLocalData.utilModule,val_id("__classes")) ;
printf("_classes-----\n"); val_iter_fields( classes,check, val_null);
if (classes == val_null) {
printf("can't find function\n");
return val_false;
}
field hxdev = val_field(classes,val_id("HxDevUtils")) ;
printf("HXDevUtils-----\n");
val_iter_fields( hxdev,check, val_null);
field utils = val_field(hxdev,val_id("utils"));
printf("calling \n");
if (utils == val_null) {
printf("mmm, utils is null\n");
return val_false;
}
if (!val_is_object (utils)) {
printf("utils is not object\n");
return val_false;
}
printf("utils-----\n");
val_iter_fields( utils,check, val_null);
field process = val_field(utils,val_id("testing"));
if (process == val_null || !val_is_function(process)) {
printf("testing is not a function\n");
return val_false;
}
if (!val_is_object(utils)) {
printf("aha util is not an object\n");
return val_false;
}
value r;
if (utils != val_null){
printf("call the function\n");
r = val_ocall0(utils,process);
printf("got! %s\n",val_string(r));
}
return val_true;
Thanks
bd
--
http://www.blackdog-haxe.com/
"It is no measure of health to be well adjusted to a profoundly sick
society." --Jiddu Krishnamurti
More information about the Haxe
mailing list