|
@@ -1,11 +1,33 @@
|
|
|
#include "__ofunc.h"
|
|
|
|
|
|
+ResultType function_init(OFFICAL_FUNCTIONSIG){
|
|
|
+ ArgumentParser ap[] = {{.type=only_value, .must=1, .long_arg=false},
|
|
|
+ {.type=only_value, .must=0, .long_arg=false},
|
|
|
+ {.must=-1}};
|
|
|
+ LinkValue *base;
|
|
|
+ LinkValue *func_return;
|
|
|
+ setResultCore(result);
|
|
|
+ parserArgumentUnion(ap, arg, CALL_INTER_FUNCTIONSIG_NOT_ST(var_list, result, belong));
|
|
|
+ if (!CHECK_RESULT(result))
|
|
|
+ return result->type;
|
|
|
+ freeResult(result);
|
|
|
+
|
|
|
+ base = ap[0].value;
|
|
|
+ func_return = ap[1].value;
|
|
|
+ if (func_return == NULL)
|
|
|
+ func_return = makeLinkValue(makeNoneValue(inter), belong, inter);
|
|
|
+ makeVMFunctionFromValue(base->value, func_return, 0, "sys", inter);
|
|
|
+ setResult(result, inter, belong);
|
|
|
+ return result->type;
|
|
|
+}
|
|
|
+
|
|
|
void registeredFunction(REGISTERED_FUNCTIONSIG){
|
|
|
LinkValue *object = makeLinkValue(inter->data.function, inter->base_father, inter);
|
|
|
-// NameFunc tmp[] = {{NULL, NULL}};
|
|
|
+ NameFunc tmp[] = {{inter->data.object_init, function_init, object_free_},
|
|
|
+ {NULL, NULL}};
|
|
|
gc_addTmpLink(&object->gc_status);
|
|
|
addStrVar("function", false, true, object, belong, CALL_INTER_FUNCTIONSIG_CORE(inter->var_list));
|
|
|
-// iterClassFunc(tmp, object, CALL_INTER_FUNCTIONSIG_CORE(inter->var_list));
|
|
|
+ iterClassFunc(tmp, object, CALL_INTER_FUNCTIONSIG_CORE(inter->var_list));
|
|
|
gc_freeTmpLink(&object->gc_status);
|
|
|
}
|
|
|
|