mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
54 lines
1.4 KiB
C
54 lines
1.4 KiB
C
/*
|
|
Author: lyon
|
|
Tencent QQ: 645275593
|
|
*/
|
|
|
|
#include "BaseObj.h"
|
|
#include "PikaObj.h"
|
|
#include "TinyObj.h"
|
|
#include "dataMemory.h"
|
|
#include "dataString.h"
|
|
#include "dataStrs.h"
|
|
|
|
static void* getClassPtr(PikaObj* classObj, char* classPath) {
|
|
char* ptrPath = classPath;
|
|
return obj_getPtr(classObj, ptrPath);
|
|
}
|
|
|
|
Arg* arg_setMetaObj(char* objName, char* className, NewFun objPtr) {
|
|
Args* buffs = New_strBuff();
|
|
char* typeWithClass = strsAppend(buffs, "_class-[mate]", className);
|
|
Arg* argNew = New_arg(NULL);
|
|
argNew = arg_setPtr(argNew, objName, typeWithClass, objPtr);
|
|
args_deinit(buffs);
|
|
return argNew;
|
|
}
|
|
|
|
int32_t obj_newObj(PikaObj* self,
|
|
char* objName,
|
|
char* className,
|
|
NewFun newFunPtr) {
|
|
/* add mate Obj, no inited */
|
|
Arg* mateObj = arg_setMetaObj(objName, className, newFunPtr);
|
|
args_setArg(self->attributeList, mateObj);
|
|
return 0;
|
|
}
|
|
|
|
static void print(PikaObj* self, Args* args) {
|
|
obj_setErrorCode(self, 0);
|
|
char* res = args_print(args, "val");
|
|
if (NULL == res) {
|
|
obj_setSysOut(self, "[error] print: can not print val");
|
|
obj_setErrorCode(self, 1);
|
|
return;
|
|
}
|
|
/* not empty */
|
|
obj_setSysOut(self, res);
|
|
}
|
|
|
|
PikaObj* New_BaseObj(Args* args) {
|
|
PikaObj* self = New_TinyObj(args);
|
|
class_defineMethod(self, "print(val:any)", print);
|
|
return self;
|
|
}
|