mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
use obj_newObjInPackge instead of newMateObj directly
This commit is contained in:
parent
94ed084723
commit
6d9afa296e
@ -336,14 +336,29 @@ PikaObj* removeMethodInfo(PikaObj* thisClass) {
|
||||
return thisClass;
|
||||
}
|
||||
|
||||
PikaObj* newObjFromFun(NewFun newObjFun) {
|
||||
PikaObj* thisClass = obj_getClassObjByNewFun(NULL, "", newObjFun);
|
||||
return removeMethodInfo(thisClass);
|
||||
}
|
||||
|
||||
extern PikaObj* __pikaMain;
|
||||
PikaObj* newRootObj(char* name, NewFun newObjFun) {
|
||||
PikaObj* thisClass = obj_getClassObjByNewFun(NULL, name, newObjFun);
|
||||
PikaObj* newObj = removeMethodInfo(thisClass);
|
||||
PikaObj* newObj = newObjFromFun(newObjFun);
|
||||
__pikaMain = newObj;
|
||||
return newObj;
|
||||
}
|
||||
|
||||
Arg* newFreeObjArg(NewFun newObjFun) {
|
||||
PikaObj* newObj = newObjFromFun(newObjFun);
|
||||
Arg* objArg = arg_setPtr(NULL, "", ARG_TYPE_FREE_OBJECT, newObj);
|
||||
return objArg;
|
||||
}
|
||||
|
||||
Arg* obj_newObjInPackage(NewFun newObjFun) {
|
||||
return arg_setMetaObj("", "", newObjFun);
|
||||
// return newFreeObjArg(newObjFun);
|
||||
}
|
||||
|
||||
static PikaObj* __initObj(PikaObj* obj, char* name) {
|
||||
PikaObj* res = NULL;
|
||||
NewFun newObjFun = (NewFun)getNewClassObjFunByName(obj, name);
|
||||
|
@ -220,9 +220,11 @@ void obj_shellLineProcess(PikaObj* self,
|
||||
int pikaCompile(char* output_file_name, char* py_lines);
|
||||
Method obj_getNativeMethod(PikaObj* self, char* method_name);
|
||||
void obj_runNativeMethod(PikaObj* self, char* method_name, Args* args);
|
||||
Arg* newFreeObjArg(NewFun newObjFun);
|
||||
Arg* obj_newObjInPackage(NewFun newObjFun);
|
||||
|
||||
#define PIKA_PYTHON_BEGIN
|
||||
#define PIKA_PYTHON(x)
|
||||
#define PIKA_PYTHON(x)
|
||||
#define PIKA_PYTHON_END
|
||||
|
||||
#endif
|
||||
|
@ -31,12 +31,13 @@ fn main() {
|
||||
as the top packages.
|
||||
*/
|
||||
for package in &version_info.package_list {
|
||||
if (package.0 == "pikascript-core") {
|
||||
if package.0 == "pikascript-core" {
|
||||
continue;
|
||||
}
|
||||
compiler = Compiler::analyze_file(compiler, String::from(package.0), true);
|
||||
}
|
||||
|
||||
/* Compile packages in PikaStdLib */
|
||||
compiler = Compiler::analyze_file(compiler, String::from("PikaStdTask"), true);
|
||||
compiler = Compiler::analyze_file(compiler, String::from("PikaStdData"), true);
|
||||
compiler = Compiler::analyze_file(compiler, String::from("PikaDebug"), true);
|
||||
@ -48,6 +49,7 @@ fn main() {
|
||||
File::create(format!("{}compiler-info.txt", compiler.dist_path)).unwrap();
|
||||
let compiler_info = format!("{:?}", compiler);
|
||||
compiler_info_file.write(compiler_info.as_bytes()).unwrap();
|
||||
|
||||
/* make the -api.c file for each python class */
|
||||
for (_, class_info) in compiler.class_list.iter() {
|
||||
let api_file_path = format!("{}{}-api.c", compiler.dist_path, class_info.this_class_name);
|
||||
@ -70,17 +72,12 @@ fn main() {
|
||||
let name = String::from(class_info.this_class_name.to_string());
|
||||
f.write(format!("Arg *{}(PikaObj *self){{\n", &name).as_bytes())
|
||||
.unwrap();
|
||||
f.write(
|
||||
format!(
|
||||
" return arg_setMetaObj(\"\", \"{}\", New_{});\n",
|
||||
&name, &name
|
||||
)
|
||||
.as_bytes(),
|
||||
)
|
||||
.unwrap();
|
||||
f.write(format!(" return obj_newObjInPackage(New_{});\n", &name).as_bytes())
|
||||
.unwrap();
|
||||
f.write("}\n".as_bytes()).unwrap();
|
||||
}
|
||||
}
|
||||
|
||||
/* make the .h file for each python class */
|
||||
for (_, class_info) in compiler.class_list.iter() {
|
||||
let api_file_path = format!("{}{}.h", compiler.dist_path, class_info.this_class_name);
|
||||
|
Loading…
x
Reference in New Issue
Block a user