[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