void METH(spacecraft,addPassenger)(starwars_Character newPassenger){ int i; for ( i =0 ; i<GET_COLLECTION_SIZE(passengers); i++) { if (!IS_BOUND(passengers[i])) { BIND_MY_INTERFACE(passengers[i],newPassenger); printf("\n%s is getting in the %s.",CALL(passengers[i],getName)(), ATTR(name)); return; } } }
starwars_Character METH(spacecraft,removePassenger)(void){ starwars_Character passenger = 0; int i; for ( i =0 ; i<GET_COLLECTION_SIZE(passengers); i++) { if (IS_BOUND(passengers[i])) { passenger = GET_MY_INTERFACE(passengers[i]); printf("\n%s is getting out the %s.\n",CALL(passengers[i],getName)(), ATTR(name)); BIND_MY_INTERFACE(passengers[i],0); return passenger; } } return passenger; }
// int main(int argc, string[] argv) int METH(main, main) (int argc, char *argv[]) { int i = 0; for (i = 0; i < GET_COLLECTION_SIZE(s); i++) { if (IS_BOUND(s[i])) { CALL(s[i], print)("hello world !"); CALL(s[i], println)("goodbye world"); } } // reset counters PRIVATE.count = 0; i = 0; for (i = 0; i < GET_COLLECTION_SIZE(s); i++) { if (IS_BOUND_COLLECTION(s, i)) { CALL(s[i], print)("hello world !"); CALL(s[i], println)("goodbye world"); } } return 0; }