Преглед изворни кода

feat: 设置了ellipsis的__init__函数

SongZihuan пре 4 година
родитељ
комит
9a96e7f87e
1 измењених фајлова са 19 додато и 0 уклоњено
  1. 19 0
      ofunc/src/pass.c

+ 19 - 0
ofunc/src/pass.c

@@ -1,9 +1,28 @@
 #include "__ofunc.h"
 
+ResultType pass_init(OFFICAL_FUNCTIONSIG){
+    ArgumentParser ap[] = {{.type=only_value, .must=1, .long_arg=false},
+                           {.must=-1}};
+    LinkValue *base;
+    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;
+    base->value->type = pass_;
+    setResult(result, inter, belong);
+    return result->type;
+}
+
 void registeredEllipisis(REGISTERED_FUNCTIONSIG){
     LinkValue *object = makeLinkValue(inter->data.pass_, inter->base_father, inter);
+    NameFunc tmp[] = {{inter->data.object_init, pass_init, object_free_},
+                      {NULL, NULL}};
     gc_addTmpLink(&object->gc_status);
     addStrVar("ellipsis", false, true, object, belong, CALL_INTER_FUNCTIONSIG_CORE(inter->var_list));
+    iterClassFunc(tmp, object, CALL_INTER_FUNCTIONSIG_CORE(inter->var_list));
     gc_freeTmpLink(&object->gc_status);
 }