diff --git a/port/cmsis-pack/pikascript/PikaDebug.pyi b/port/cmsis-pack/pikascript/PikaDebug.pyi
index dc1db98f7..6aeedde0f 100644
--- a/port/cmsis-pack/pikascript/PikaDebug.pyi
+++ b/port/cmsis-pack/pikascript/PikaDebug.pyi
@@ -1,7 +1,4 @@
-#api
-from PikaObj import *
-
-class Debuger(TinyObj):
+class Debuger:
def __init__(self):
pass
diff --git a/port/cmsis-pack/pikascript/PikaStdData.pyi b/port/cmsis-pack/pikascript/PikaStdData.pyi
index 28c07f867..362491070 100644
--- a/port/cmsis-pack/pikascript/PikaStdData.pyi
+++ b/port/cmsis-pack/pikascript/PikaStdData.pyi
@@ -1,28 +1,32 @@
-from PikaObj import *
-
-
-class List(TinyObj):
+class Tuple:
def __init__(self): ...
- # add an arg after the end of list
- def append(self, arg: any): ...
# get an arg by the index
def get(self, i: int) -> any: ...
- # set an arg by the index
- def set(self, i: int, arg: any): ...
# get the length of list
def len(self) -> int: ...
# support for loop
def __iter__(self) -> any: ...
# support for loop
def __next__(self) -> any: ...
- # support list[] = val
- def __setitem__(self, __key: any, __val: any): ...
# support val = list[]
def __getitem__(self, __key: any) -> any: ...
def __del__(self): ...
+ def __str__(self) -> str: ...
+ def __len__(self) -> int: ...
-class Dict(TinyObj):
+class List(Tuple):
+ def __init__(self): ...
+ # add an arg after the end of list
+ def append(self, arg: any): ...
+ # set an arg by the index
+ def set(self, i: int, arg: any): ...
+ # support list[] = val
+ def __setitem__(self, __key: any, __val: any): ...
+ def __str__(self) -> str: ...
+
+
+class Dict:
def __init__(self): ...
# get an arg by the key
def get(self, key: str) -> any: ...
@@ -37,9 +41,19 @@ class Dict(TinyObj):
# support val = dict[]
def __getitem__(self, __key: any) -> any: ...
def __del__(self): ...
+ def __str__(self) -> str: ...
+ def keys(self) -> dict_keys: ...
+ def __len__(self) -> int: ...
-class String(TinyObj):
+class dict_keys:
+ def __iter__(self) -> any: ...
+ def __next__(self) -> any: ...
+ def __str__(self) -> str: ...
+ def __len__(self) -> int: ...
+
+
+class String:
def __init__(self, s: str): ...
def set(self, s: str): ...
def get(self) -> str: ...
@@ -51,6 +65,8 @@ class String(TinyObj):
def __getitem__(self, __key: any) -> any: ...
# support str()
def __str__(self) -> str: ...
+ def __len__(self) -> int: ...
+ def encode(self) -> bytes: ...
def startwith(self, prefix: str) -> int: ...
def endwith(self, suffix: str) -> int: ...
@@ -59,13 +75,37 @@ class String(TinyObj):
def isalnum(self) -> int: ...
def isalpha(self) -> int: ...
def isspace(self) -> int: ...
+ def split(self, s: str) -> List: ...
+ def replace(self, old: str, new: str) -> str: ...
+ def strip(self) -> str: ...
-class ByteArray(List):
+class ByteArray:
# convert a string to ByteArray
- def fromString(self, s: str): ...
+ def __init__(self, bytes: any): ...
+ # support for loop
+ def __iter__(self) -> any: ...
+ # support for loop
+ def __next__(self) -> any: ...
+ # support [] index
+ def __getitem__(self, __key: int) -> int: ...
+ def __setitem__(self, __key: int, __val: int): ...
+ def __str__(self) -> str: ...
+ def decode(self) -> str: ...
-class Utils(TinyObj):
+class FILEIO:
+ def init(self, path: str, mode: str): ...
+ def read(self, size: int) -> any: ...
+ def write(self, s: any) -> int: ...
+ def close(self): ...
+ def seek(self, offset: int, *fromwhere) -> int: ...
+ def tell(self) -> int: ...
+ def readline(self) -> str: ...
+ def readlines(self) -> List: ...
+ def writelines(self, lines: List): ...
+
+
+class Utils:
# convert a int to bytes
def int_to_bytes(self, val: int) -> bytes: ...
diff --git a/port/cmsis-pack/pikascript/PikaStdLib.pyi b/port/cmsis-pack/pikascript/PikaStdLib.pyi
index 9a81c7f9a..20c981bdf 100644
--- a/port/cmsis-pack/pikascript/PikaStdLib.pyi
+++ b/port/cmsis-pack/pikascript/PikaStdLib.pyi
@@ -1,7 +1,4 @@
-from PikaObj import *
-
-
-class MemChecker(TinyObj):
+class MemChecker:
def max(self): ...
def now(self): ...
def getMax(self) -> float: ...
@@ -9,37 +6,60 @@ class MemChecker(TinyObj):
def resetMax(self): ...
-class SysObj(BaseObj):
- def type(self, arg: any): ...
- def remove(self, argPath: str): ...
- def int(self, arg: any) -> int: ...
- def float(self, arg: any) -> float: ...
- def str(self, arg: any) -> str: ...
- def iter(self, arg: any) -> any: ...
- def range(self, a1: int, a2: int) -> any: ...
- def print(self, *val): ...
- def printNoEnd(self, val: any): ...
- def __setitem__(self, obj: any, key: any, val: any, obj_str: str): ...
- def __getitem__(self, obj: any, key: any) -> any: ...
- def __slice__(self, obj: any, start: any, end: any, step: int) -> any: ...
- def len(self, arg: any) -> int: ...
- def list(self) -> any: ...
- def dict(self) -> any: ...
- def hex(self, val: int) -> str: ...
- def ord(self, val: str) -> int: ...
- def chr(self, val: int) -> str: ...
- def bytes(self, val: any) -> bytes: ...
- def cformat(self, fmt: str, *var) -> str: ...
- def id(self, obj: any) -> int: ...
+class SysObj:
+ @staticmethod
+ def type(arg: any) -> any: ...
+ @staticmethod
+ def remove(argPath: str): ...
+ @staticmethod
+ def int(arg: any) -> int: ...
+ @staticmethod
+ def float(arg: any) -> float: ...
+ @staticmethod
+ def str(arg: any) -> str: ...
+ @staticmethod
+ def iter(arg: any) -> any: ...
+ @staticmethod
+ def range(a1: int, a2: int) -> any: ...
+ @staticmethod
+ def print(*val): ...
+ @staticmethod
+ def printNoEnd(val: any): ...
+ @staticmethod
+ def __setitem__(obj: any, key: any, val: any) -> any: ...
+ @staticmethod
+ def __getitem__(obj: any, key: any) -> any: ...
+ @staticmethod
+ def __slice__(obj: any, start: any, end: any, step: int) -> any: ...
+ @staticmethod
+ def len(arg: any) -> int: ...
+ @staticmethod
+ def list() -> any: ...
+ @staticmethod
+ def dict() -> any: ...
+ @staticmethod
+ def hex(val: int) -> str: ...
+ @staticmethod
+ def ord(val: str) -> int: ...
+ @staticmethod
+ def chr(val: int) -> str: ...
+ @staticmethod
+ def bytes(val: any) -> bytes: ...
+ @staticmethod
+ def cformat(fmt: str, *var) -> str: ...
+ @staticmethod
+ def id(obj: any) -> int: ...
+ @staticmethod
+ def open(path: str, mode: str) -> object: ...
-class RangeObj(TinyObj):
+class RangeObj:
def __next__(self) -> any: ...
-class StringObj(TinyObj):
+class StringObj:
def __next__(self) -> any: ...
-class PikaObj(TinyObj):
+class PikaObj:
...
diff --git a/port/cmsis-pack/pikascript/PikaStdTask.pyi b/port/cmsis-pack/pikascript/PikaStdTask.pyi
index 1d2ee16dc..e262d60ee 100644
--- a/port/cmsis-pack/pikascript/PikaStdTask.pyi
+++ b/port/cmsis-pack/pikascript/PikaStdTask.pyi
@@ -1,9 +1,8 @@
-#api
-from PikaObj import *
import PikaStdData
+import PikaStdLib
-class Task(TinyObj):
+class Task(PikaStdLib.SysObj):
calls = PikaStdData.List()
def __init__(self):
diff --git a/port/cmsis-pack/pikascript/PikaTech.PikaScript.pdsc b/port/cmsis-pack/pikascript/PikaTech.PikaScript.pdsc
index b84adc7e4..8312e596e 100644
--- a/port/cmsis-pack/pikascript/PikaTech.PikaScript.pdsc
+++ b/port/cmsis-pack/pikascript/PikaTech.PikaScript.pdsc
@@ -12,14 +12,14 @@
-->
-
+
https://github.com/pikasTech/pikascript.git
-
+
-
- - PikaScript v1.8.7
+
+ - PikaScript v1.10.0
-
+
@@ -27,84 +27,84 @@
Python
MCU
-
-
-
- Arm Compiler 5 (armcc) or Arm Compiler 6 (armclang).
-
-
-
-
-
- GNU Tools for Arm Embedded Processors.
-
-
-
- Support All Cortex-M based processors
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Require CMSIS-CORE Support
-
-
-
-
- Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.
-
-
-
-
- Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.
-
-
-
-
-
- Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.
-
-
-
-
-
- Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.
-
-
-
-
-
-
- The Kernel of the PikaScript
-
-
-
-
- The Kernel of the PikaScript
-
-
-
-
- The Kernel of the PikaScript
-
-
-
-
+
+
+
+ Arm Compiler 5 (armcc) or Arm Compiler 6 (armclang).
+
+
+
+
+
+ GNU Tools for Arm Embedded Processors.
+
+
+
+ Support All Cortex-M based processors
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Require CMSIS-CORE Support
+
+
+
+
+ Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.
+
+
+
+
+ Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.
+
+
+
+
+
+ Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.
+
+
+
+
+
+ Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.
+
+
+
+
+
+
+ The Kernel of the PikaScript
+
+
+
+
+ The Kernel of the PikaScript
+
+
+
+
+ The Kernel of the PikaScript
+
+
+
+
-
+
-
-
- an ultra-lightweight Python engine
- https://pikadoc.readthedocs.io/en/latest/index.html
+
+
+ an ultra-lightweight Python engine
+ https://pikadoc.readthedocs.io/en/latest/index.html
-
- PikaScript Kernel
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ PikaScript Kernel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
#define RTE_Script_PikaScript
-
-
-
- The standard library for PikaScript
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ The standard library for PikaScript
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/port/cmsis-pack/pikascript/makepdsc.py b/port/cmsis-pack/pikascript/makepdsc.py
new file mode 100644
index 000000000..2d5b237b4
--- /dev/null
+++ b/port/cmsis-pack/pikascript/makepdsc.py
@@ -0,0 +1,56 @@
+import os
+from xmlrpc.server import list_public_methods
+
+
+class Group:
+ path: str
+ files: list
+ subfix = ".c"
+ name: str
+
+ def __init__(self, name: str, path: str, subfix: str, format=''):
+ self.path = path
+ self.files = []
+ self.subfix = subfix
+ self.format = format
+ self.name = name
+ self.update()
+
+ def setformat(self, format: str):
+ self.format = format
+
+ def update(self):
+ files = os.listdir(self.path)
+ self.files = [file for file in files if file.endswith(self.subfix)]
+
+ def __str__(self):
+ res = ""
+ for file in self.files:
+ res += self.format % (self.path + '/' + file) + '\n'
+ return res
+
+ def write(self):
+ with open(self.name + ".xml", 'w') as f:
+ f.write(str(self))
+
+
+def collect(name, groupList: list[Group]):
+ with open(name + ".xml", 'w') as f:
+ for group in groupList:
+ print(group)
+ f.write(str(group))
+
+
+kernal_c = Group("kernalH", "pikascript-core", ".c")
+kernal_h = Group("kernalC", "pikascript-core", ".h",
+ format='')
+kernal_cfg = Group("kernalCfg", "pikascript-core", ".cfg",
+ format='')
+lib_c = Group("libC", "pikascript-lib/PikaStdLib", ".c")
+lib_h = Group("libH", "pikascript-lib/PikaStdLib", ".h")
+
+api_c = Group("apiC", "pikascript-api", ".c")
+api_h = Group("apiH", "pikascript-api", ".h")
+
+collect("kernal", [kernal_c, kernal_h, kernal_cfg])
+collect("lib", [lib_c, lib_h, api_c, api_h])
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData-api.c b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData-api.c
index 25ee3bb0c..9c319e1a7 100644
--- a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData-api.c
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData-api.c
@@ -17,6 +17,11 @@ void PikaStdData_DictMethod(PikaObj *self, Args *args){
method_returnArg(args, res);
}
+void PikaStdData_FILEIOMethod(PikaObj *self, Args *args){
+ Arg* res = PikaStdData_FILEIO(self);
+ method_returnArg(args, res);
+}
+
void PikaStdData_ListMethod(PikaObj *self, Args *args){
Arg* res = PikaStdData_List(self);
method_returnArg(args, res);
@@ -27,18 +32,31 @@ void PikaStdData_StringMethod(PikaObj *self, Args *args){
method_returnArg(args, res);
}
+void PikaStdData_TupleMethod(PikaObj *self, Args *args){
+ Arg* res = PikaStdData_Tuple(self);
+ method_returnArg(args, res);
+}
+
void PikaStdData_UtilsMethod(PikaObj *self, Args *args){
Arg* res = PikaStdData_Utils(self);
method_returnArg(args, res);
}
+void PikaStdData_dict_keysMethod(PikaObj *self, Args *args){
+ Arg* res = PikaStdData_dict_keys(self);
+ method_returnArg(args, res);
+}
+
PikaObj *New_PikaStdData(Args *args){
PikaObj *self = New_TinyObj(args);
class_defineConstructor(self, "ByteArray()->any", PikaStdData_ByteArrayMethod);
class_defineConstructor(self, "Dict()->any", PikaStdData_DictMethod);
+ class_defineConstructor(self, "FILEIO()->any", PikaStdData_FILEIOMethod);
class_defineConstructor(self, "List()->any", PikaStdData_ListMethod);
class_defineConstructor(self, "String()->any", PikaStdData_StringMethod);
+ class_defineConstructor(self, "Tuple()->any", PikaStdData_TupleMethod);
class_defineConstructor(self, "Utils()->any", PikaStdData_UtilsMethod);
+ class_defineConstructor(self, "dict_keys()->any", PikaStdData_dict_keysMethod);
return self;
}
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData.h b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData.h
index 207fe9976..18dd45094 100644
--- a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData.h
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData.h
@@ -11,8 +11,11 @@ PikaObj *New_PikaStdData(Args *args);
Arg* PikaStdData_ByteArray(PikaObj *self);
Arg* PikaStdData_Dict(PikaObj *self);
+Arg* PikaStdData_FILEIO(PikaObj *self);
Arg* PikaStdData_List(PikaObj *self);
Arg* PikaStdData_String(PikaObj *self);
+Arg* PikaStdData_Tuple(PikaObj *self);
Arg* PikaStdData_Utils(PikaObj *self);
+Arg* PikaStdData_dict_keys(PikaObj *self);
#endif
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_ByteArray-api.c b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_ByteArray-api.c
index ce6bb8cda..f3843a2b2 100644
--- a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_ByteArray-api.c
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_ByteArray-api.c
@@ -2,19 +2,57 @@
/* Warning! Don't modify this file! */
/* ******************************** */
#include "PikaStdData_ByteArray.h"
-#include "PikaStdData_List.h"
+#include "TinyObj.h"
#include
#include
#include "BaseObj.h"
-void PikaStdData_ByteArray_fromStringMethod(PikaObj *self, Args *args){
- char* s = args_getStr(args, "s");
- PikaStdData_ByteArray_fromString(self, s);
+void PikaStdData_ByteArray___getitem__Method(PikaObj *self, Args *args){
+ int __key = args_getInt(args, "__key");
+ int res = PikaStdData_ByteArray___getitem__(self, __key);
+ method_returnInt(args, res);
+}
+
+void PikaStdData_ByteArray___init__Method(PikaObj *self, Args *args){
+ Arg* bytes = args_getArg(args, "bytes");
+ PikaStdData_ByteArray___init__(self, bytes);
+}
+
+void PikaStdData_ByteArray___iter__Method(PikaObj *self, Args *args){
+ Arg* res = PikaStdData_ByteArray___iter__(self);
+ method_returnArg(args, res);
+}
+
+void PikaStdData_ByteArray___next__Method(PikaObj *self, Args *args){
+ Arg* res = PikaStdData_ByteArray___next__(self);
+ method_returnArg(args, res);
+}
+
+void PikaStdData_ByteArray___setitem__Method(PikaObj *self, Args *args){
+ int __key = args_getInt(args, "__key");
+ int __val = args_getInt(args, "__val");
+ PikaStdData_ByteArray___setitem__(self, __key, __val);
+}
+
+void PikaStdData_ByteArray___str__Method(PikaObj *self, Args *args){
+ char* res = PikaStdData_ByteArray___str__(self);
+ method_returnStr(args, res);
+}
+
+void PikaStdData_ByteArray_decodeMethod(PikaObj *self, Args *args){
+ char* res = PikaStdData_ByteArray_decode(self);
+ method_returnStr(args, res);
}
PikaObj *New_PikaStdData_ByteArray(Args *args){
- PikaObj *self = New_PikaStdData_List(args);
- class_defineMethod(self, "fromString(s:str)", PikaStdData_ByteArray_fromStringMethod);
+ PikaObj *self = New_TinyObj(args);
+ class_defineMethod(self, "__getitem__(__key:int)->int", PikaStdData_ByteArray___getitem__Method);
+ class_defineMethod(self, "__init__(bytes:any)", PikaStdData_ByteArray___init__Method);
+ class_defineMethod(self, "__iter__()->any", PikaStdData_ByteArray___iter__Method);
+ class_defineMethod(self, "__next__()->any", PikaStdData_ByteArray___next__Method);
+ class_defineMethod(self, "__setitem__(__key:int,__val:int)", PikaStdData_ByteArray___setitem__Method);
+ class_defineMethod(self, "__str__()->str", PikaStdData_ByteArray___str__Method);
+ class_defineMethod(self, "decode()->str", PikaStdData_ByteArray_decodeMethod);
return self;
}
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_ByteArray.h b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_ByteArray.h
index 3e1f968e2..a975059b2 100644
--- a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_ByteArray.h
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_ByteArray.h
@@ -9,6 +9,12 @@
PikaObj *New_PikaStdData_ByteArray(Args *args);
-void PikaStdData_ByteArray_fromString(PikaObj *self, char* s);
+int PikaStdData_ByteArray___getitem__(PikaObj *self, int __key);
+void PikaStdData_ByteArray___init__(PikaObj *self, Arg* bytes);
+Arg* PikaStdData_ByteArray___iter__(PikaObj *self);
+Arg* PikaStdData_ByteArray___next__(PikaObj *self);
+void PikaStdData_ByteArray___setitem__(PikaObj *self, int __key, int __val);
+char* PikaStdData_ByteArray___str__(PikaObj *self);
+char* PikaStdData_ByteArray_decode(PikaObj *self);
#endif
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_Dict-api.c b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_Dict-api.c
index 677e6856c..650718fa2 100644
--- a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_Dict-api.c
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_Dict-api.c
@@ -26,6 +26,11 @@ void PikaStdData_Dict___iter__Method(PikaObj *self, Args *args){
method_returnArg(args, res);
}
+void PikaStdData_Dict___len__Method(PikaObj *self, Args *args){
+ int res = PikaStdData_Dict___len__(self);
+ method_returnInt(args, res);
+}
+
void PikaStdData_Dict___next__Method(PikaObj *self, Args *args){
Arg* res = PikaStdData_Dict___next__(self);
method_returnArg(args, res);
@@ -37,21 +42,31 @@ void PikaStdData_Dict___setitem__Method(PikaObj *self, Args *args){
PikaStdData_Dict___setitem__(self, __key, __val);
}
+void PikaStdData_Dict___str__Method(PikaObj *self, Args *args){
+ char* res = PikaStdData_Dict___str__(self);
+ method_returnStr(args, res);
+}
+
void PikaStdData_Dict_getMethod(PikaObj *self, Args *args){
char* key = args_getStr(args, "key");
Arg* res = PikaStdData_Dict_get(self, key);
method_returnArg(args, res);
}
+void PikaStdData_Dict_keysMethod(PikaObj *self, Args *args){
+ PikaObj* res = PikaStdData_Dict_keys(self);
+ method_returnObj(args, res);
+}
+
void PikaStdData_Dict_removeMethod(PikaObj *self, Args *args){
char* key = args_getStr(args, "key");
PikaStdData_Dict_remove(self, key);
}
void PikaStdData_Dict_setMethod(PikaObj *self, Args *args){
- Arg* arg = args_getArg(args, "arg");
char* key = args_getStr(args, "key");
- PikaStdData_Dict_set(self, arg, key);
+ Arg* arg = args_getArg(args, "arg");
+ PikaStdData_Dict_set(self, key, arg);
}
PikaObj *New_PikaStdData_Dict(Args *args){
@@ -60,9 +75,12 @@ PikaObj *New_PikaStdData_Dict(Args *args){
class_defineMethod(self, "__getitem__(__key:any)->any", PikaStdData_Dict___getitem__Method);
class_defineMethod(self, "__init__()", PikaStdData_Dict___init__Method);
class_defineMethod(self, "__iter__()->any", PikaStdData_Dict___iter__Method);
+ class_defineMethod(self, "__len__()->int", PikaStdData_Dict___len__Method);
class_defineMethod(self, "__next__()->any", PikaStdData_Dict___next__Method);
class_defineMethod(self, "__setitem__(__key:any,__val:any)", PikaStdData_Dict___setitem__Method);
+ class_defineMethod(self, "__str__()->str", PikaStdData_Dict___str__Method);
class_defineMethod(self, "get(key:str)->any", PikaStdData_Dict_getMethod);
+ class_defineMethod(self, "keys()->dict_keys", PikaStdData_Dict_keysMethod);
class_defineMethod(self, "remove(key:str)", PikaStdData_Dict_removeMethod);
class_defineMethod(self, "set(key:str,arg:any)", PikaStdData_Dict_setMethod);
return self;
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_Dict.h b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_Dict.h
index 1da0813ec..aab9367f0 100644
--- a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_Dict.h
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_Dict.h
@@ -13,10 +13,13 @@ void PikaStdData_Dict___del__(PikaObj *self);
Arg* PikaStdData_Dict___getitem__(PikaObj *self, Arg* __key);
void PikaStdData_Dict___init__(PikaObj *self);
Arg* PikaStdData_Dict___iter__(PikaObj *self);
+int PikaStdData_Dict___len__(PikaObj *self);
Arg* PikaStdData_Dict___next__(PikaObj *self);
void PikaStdData_Dict___setitem__(PikaObj *self, Arg* __key, Arg* __val);
+char* PikaStdData_Dict___str__(PikaObj *self);
Arg* PikaStdData_Dict_get(PikaObj *self, char* key);
+PikaObj* PikaStdData_Dict_keys(PikaObj *self);
void PikaStdData_Dict_remove(PikaObj *self, char* key);
-void PikaStdData_Dict_set(PikaObj *self, Arg* arg, char* key);
+void PikaStdData_Dict_set(PikaObj *self, char* key, Arg* arg);
#endif
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_FILEIO-api.c b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_FILEIO-api.c
new file mode 100644
index 000000000..439b3fbc1
--- /dev/null
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_FILEIO-api.c
@@ -0,0 +1,75 @@
+/* ******************************** */
+/* Warning! Don't modify this file! */
+/* ******************************** */
+#include "PikaStdData_FILEIO.h"
+#include "TinyObj.h"
+#include
+#include
+#include "BaseObj.h"
+
+void PikaStdData_FILEIO_closeMethod(PikaObj *self, Args *args){
+ PikaStdData_FILEIO_close(self);
+}
+
+void PikaStdData_FILEIO_initMethod(PikaObj *self, Args *args){
+ char* path = args_getStr(args, "path");
+ char* mode = args_getStr(args, "mode");
+ PikaStdData_FILEIO_init(self, path, mode);
+}
+
+void PikaStdData_FILEIO_readMethod(PikaObj *self, Args *args){
+ int size = args_getInt(args, "size");
+ Arg* res = PikaStdData_FILEIO_read(self, size);
+ method_returnArg(args, res);
+}
+
+void PikaStdData_FILEIO_readlineMethod(PikaObj *self, Args *args){
+ char* res = PikaStdData_FILEIO_readline(self);
+ method_returnStr(args, res);
+}
+
+void PikaStdData_FILEIO_readlinesMethod(PikaObj *self, Args *args){
+ PikaObj* res = PikaStdData_FILEIO_readlines(self);
+ method_returnObj(args, res);
+}
+
+void PikaStdData_FILEIO_seekMethod(PikaObj *self, Args *args){
+ int offset = args_getInt(args, "offset");
+ PikaTuple* fromwhere = args_getPtr(args, "fromwhere");
+ int res = PikaStdData_FILEIO_seek(self, offset, fromwhere);
+ method_returnInt(args, res);
+}
+
+void PikaStdData_FILEIO_tellMethod(PikaObj *self, Args *args){
+ int res = PikaStdData_FILEIO_tell(self);
+ method_returnInt(args, res);
+}
+
+void PikaStdData_FILEIO_writeMethod(PikaObj *self, Args *args){
+ Arg* s = args_getArg(args, "s");
+ int res = PikaStdData_FILEIO_write(self, s);
+ method_returnInt(args, res);
+}
+
+void PikaStdData_FILEIO_writelinesMethod(PikaObj *self, Args *args){
+ PikaObj* lines = args_getPtr(args, "lines");
+ PikaStdData_FILEIO_writelines(self, lines);
+}
+
+PikaObj *New_PikaStdData_FILEIO(Args *args){
+ PikaObj *self = New_TinyObj(args);
+ class_defineMethod(self, "close()", PikaStdData_FILEIO_closeMethod);
+ class_defineMethod(self, "init(path:str,mode:str)", PikaStdData_FILEIO_initMethod);
+ class_defineMethod(self, "read(size:int)->any", PikaStdData_FILEIO_readMethod);
+ class_defineMethod(self, "readline()->str", PikaStdData_FILEIO_readlineMethod);
+ class_defineMethod(self, "readlines()->List", PikaStdData_FILEIO_readlinesMethod);
+ class_defineMethod(self, "seek(offset:int,*fromwhere)->int", PikaStdData_FILEIO_seekMethod);
+ class_defineMethod(self, "tell()->int", PikaStdData_FILEIO_tellMethod);
+ class_defineMethod(self, "write(s:any)->int", PikaStdData_FILEIO_writeMethod);
+ class_defineMethod(self, "writelines(lines:List)", PikaStdData_FILEIO_writelinesMethod);
+ return self;
+}
+
+Arg *PikaStdData_FILEIO(PikaObj *self){
+ return obj_newObjInPackage(New_PikaStdData_FILEIO);
+}
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_FILEIO.h b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_FILEIO.h
new file mode 100644
index 000000000..f3e46c732
--- /dev/null
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_FILEIO.h
@@ -0,0 +1,22 @@
+/* ******************************** */
+/* Warning! Don't modify this file! */
+/* ******************************** */
+#ifndef __PikaStdData_FILEIO__H
+#define __PikaStdData_FILEIO__H
+#include
+#include
+#include "PikaObj.h"
+
+PikaObj *New_PikaStdData_FILEIO(Args *args);
+
+void PikaStdData_FILEIO_close(PikaObj *self);
+void PikaStdData_FILEIO_init(PikaObj *self, char* path, char* mode);
+Arg* PikaStdData_FILEIO_read(PikaObj *self, int size);
+char* PikaStdData_FILEIO_readline(PikaObj *self);
+PikaObj* PikaStdData_FILEIO_readlines(PikaObj *self);
+int PikaStdData_FILEIO_seek(PikaObj *self, int offset, PikaTuple* fromwhere);
+int PikaStdData_FILEIO_tell(PikaObj *self);
+int PikaStdData_FILEIO_write(PikaObj *self, Arg* s);
+void PikaStdData_FILEIO_writelines(PikaObj *self, PikaObj* lines);
+
+#endif
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_List-api.c b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_List-api.c
index 3e6bb9b10..6b95bacb1 100644
--- a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_List-api.c
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_List-api.c
@@ -2,74 +2,43 @@
/* Warning! Don't modify this file! */
/* ******************************** */
#include "PikaStdData_List.h"
-#include "TinyObj.h"
+#include "PikaStdData_Tuple.h"
#include
#include
#include "BaseObj.h"
-void PikaStdData_List___del__Method(PikaObj *self, Args *args){
- PikaStdData_List___del__(self);
-}
-
-void PikaStdData_List___getitem__Method(PikaObj *self, Args *args){
- Arg* __key = args_getArg(args, "__key");
- Arg* res = PikaStdData_List___getitem__(self, __key);
- method_returnArg(args, res);
-}
-
void PikaStdData_List___init__Method(PikaObj *self, Args *args){
PikaStdData_List___init__(self);
}
-void PikaStdData_List___iter__Method(PikaObj *self, Args *args){
- Arg* res = PikaStdData_List___iter__(self);
- method_returnArg(args, res);
-}
-
-void PikaStdData_List___next__Method(PikaObj *self, Args *args){
- Arg* res = PikaStdData_List___next__(self);
- method_returnArg(args, res);
-}
-
void PikaStdData_List___setitem__Method(PikaObj *self, Args *args){
Arg* __key = args_getArg(args, "__key");
Arg* __val = args_getArg(args, "__val");
PikaStdData_List___setitem__(self, __key, __val);
}
+void PikaStdData_List___str__Method(PikaObj *self, Args *args){
+ char* res = PikaStdData_List___str__(self);
+ method_returnStr(args, res);
+}
+
void PikaStdData_List_appendMethod(PikaObj *self, Args *args){
Arg* arg = args_getArg(args, "arg");
PikaStdData_List_append(self, arg);
}
-void PikaStdData_List_getMethod(PikaObj *self, Args *args){
- int i = args_getInt(args, "i");
- Arg* res = PikaStdData_List_get(self, i);
- method_returnArg(args, res);
-}
-
-void PikaStdData_List_lenMethod(PikaObj *self, Args *args){
- int res = PikaStdData_List_len(self);
- method_returnInt(args, res);
-}
-
void PikaStdData_List_setMethod(PikaObj *self, Args *args){
- Arg* arg = args_getArg(args, "arg");
int i = args_getInt(args, "i");
- PikaStdData_List_set(self, arg, i);
+ Arg* arg = args_getArg(args, "arg");
+ PikaStdData_List_set(self, i, arg);
}
PikaObj *New_PikaStdData_List(Args *args){
- PikaObj *self = New_TinyObj(args);
- class_defineMethod(self, "__del__()", PikaStdData_List___del__Method);
- class_defineMethod(self, "__getitem__(__key:any)->any", PikaStdData_List___getitem__Method);
+ PikaObj *self = New_PikaStdData_Tuple(args);
class_defineMethod(self, "__init__()", PikaStdData_List___init__Method);
- class_defineMethod(self, "__iter__()->any", PikaStdData_List___iter__Method);
- class_defineMethod(self, "__next__()->any", PikaStdData_List___next__Method);
class_defineMethod(self, "__setitem__(__key:any,__val:any)", PikaStdData_List___setitem__Method);
+ class_defineMethod(self, "__str__()->str", PikaStdData_List___str__Method);
class_defineMethod(self, "append(arg:any)", PikaStdData_List_appendMethod);
- class_defineMethod(self, "get(i:int)->any", PikaStdData_List_getMethod);
- class_defineMethod(self, "len()->int", PikaStdData_List_lenMethod);
class_defineMethod(self, "set(i:int,arg:any)", PikaStdData_List_setMethod);
return self;
}
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_List.h b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_List.h
index 6575e3bb6..1ce72ca44 100644
--- a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_List.h
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_List.h
@@ -9,15 +9,10 @@
PikaObj *New_PikaStdData_List(Args *args);
-void PikaStdData_List___del__(PikaObj *self);
-Arg* PikaStdData_List___getitem__(PikaObj *self, Arg* __key);
void PikaStdData_List___init__(PikaObj *self);
-Arg* PikaStdData_List___iter__(PikaObj *self);
-Arg* PikaStdData_List___next__(PikaObj *self);
void PikaStdData_List___setitem__(PikaObj *self, Arg* __key, Arg* __val);
+char* PikaStdData_List___str__(PikaObj *self);
void PikaStdData_List_append(PikaObj *self, Arg* arg);
-Arg* PikaStdData_List_get(PikaObj *self, int i);
-int PikaStdData_List_len(PikaObj *self);
-void PikaStdData_List_set(PikaObj *self, Arg* arg, int i);
+void PikaStdData_List_set(PikaObj *self, int i, Arg* arg);
#endif
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_String-api.c b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_String-api.c
index da157d8ed..e102253f9 100644
--- a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_String-api.c
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_String-api.c
@@ -23,6 +23,11 @@ void PikaStdData_String___iter__Method(PikaObj *self, Args *args){
method_returnArg(args, res);
}
+void PikaStdData_String___len__Method(PikaObj *self, Args *args){
+ int res = PikaStdData_String___len__(self);
+ method_returnInt(args, res);
+}
+
void PikaStdData_String___next__Method(PikaObj *self, Args *args){
Arg* res = PikaStdData_String___next__(self);
method_returnArg(args, res);
@@ -39,6 +44,11 @@ void PikaStdData_String___str__Method(PikaObj *self, Args *args){
method_returnStr(args, res);
}
+void PikaStdData_String_encodeMethod(PikaObj *self, Args *args){
+ Arg* res = PikaStdData_String_encode(self);
+ method_returnArg(args, res);
+}
+
void PikaStdData_String_endwithMethod(PikaObj *self, Args *args){
char* suffix = args_getStr(args, "suffix");
int res = PikaStdData_String_endwith(self, suffix);
@@ -75,25 +85,45 @@ void PikaStdData_String_isspaceMethod(PikaObj *self, Args *args){
method_returnInt(args, res);
}
+void PikaStdData_String_replaceMethod(PikaObj *self, Args *args){
+ char* old = args_getStr(args, "old");
+ char* new = args_getStr(args, "new");
+ char* res = PikaStdData_String_replace(self, old, new);
+ method_returnStr(args, res);
+}
+
void PikaStdData_String_setMethod(PikaObj *self, Args *args){
char* s = args_getStr(args, "s");
PikaStdData_String_set(self, s);
}
+void PikaStdData_String_splitMethod(PikaObj *self, Args *args){
+ char* s = args_getStr(args, "s");
+ PikaObj* res = PikaStdData_String_split(self, s);
+ method_returnObj(args, res);
+}
+
void PikaStdData_String_startwithMethod(PikaObj *self, Args *args){
char* prefix = args_getStr(args, "prefix");
int res = PikaStdData_String_startwith(self, prefix);
method_returnInt(args, res);
}
+void PikaStdData_String_stripMethod(PikaObj *self, Args *args){
+ char* res = PikaStdData_String_strip(self);
+ method_returnStr(args, res);
+}
+
PikaObj *New_PikaStdData_String(Args *args){
PikaObj *self = New_TinyObj(args);
class_defineMethod(self, "__getitem__(__key:any)->any", PikaStdData_String___getitem__Method);
class_defineMethod(self, "__init__(s:str)", PikaStdData_String___init__Method);
class_defineMethod(self, "__iter__()->any", PikaStdData_String___iter__Method);
+ class_defineMethod(self, "__len__()->int", PikaStdData_String___len__Method);
class_defineMethod(self, "__next__()->any", PikaStdData_String___next__Method);
class_defineMethod(self, "__setitem__(__key:any,__val:any)", PikaStdData_String___setitem__Method);
class_defineMethod(self, "__str__()->str", PikaStdData_String___str__Method);
+ class_defineMethod(self, "encode()->bytes", PikaStdData_String_encodeMethod);
class_defineMethod(self, "endwith(suffix:str)->int", PikaStdData_String_endwithMethod);
class_defineMethod(self, "get()->str", PikaStdData_String_getMethod);
class_defineMethod(self, "isalnum()->int", PikaStdData_String_isalnumMethod);
@@ -101,8 +131,11 @@ PikaObj *New_PikaStdData_String(Args *args){
class_defineMethod(self, "isdigit()->int", PikaStdData_String_isdigitMethod);
class_defineMethod(self, "islower()->int", PikaStdData_String_islowerMethod);
class_defineMethod(self, "isspace()->int", PikaStdData_String_isspaceMethod);
+ class_defineMethod(self, "replace(old:str,new:str)->str", PikaStdData_String_replaceMethod);
class_defineMethod(self, "set(s:str)", PikaStdData_String_setMethod);
+ class_defineMethod(self, "split(s:str)->List", PikaStdData_String_splitMethod);
class_defineMethod(self, "startwith(prefix:str)->int", PikaStdData_String_startwithMethod);
+ class_defineMethod(self, "strip()->str", PikaStdData_String_stripMethod);
return self;
}
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_String.h b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_String.h
index 2812d83b3..4a2a4e73a 100644
--- a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_String.h
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_String.h
@@ -12,9 +12,11 @@ PikaObj *New_PikaStdData_String(Args *args);
Arg* PikaStdData_String___getitem__(PikaObj *self, Arg* __key);
void PikaStdData_String___init__(PikaObj *self, char* s);
Arg* PikaStdData_String___iter__(PikaObj *self);
+int PikaStdData_String___len__(PikaObj *self);
Arg* PikaStdData_String___next__(PikaObj *self);
void PikaStdData_String___setitem__(PikaObj *self, Arg* __key, Arg* __val);
char* PikaStdData_String___str__(PikaObj *self);
+Arg* PikaStdData_String_encode(PikaObj *self);
int PikaStdData_String_endwith(PikaObj *self, char* suffix);
char* PikaStdData_String_get(PikaObj *self);
int PikaStdData_String_isalnum(PikaObj *self);
@@ -22,7 +24,10 @@ int PikaStdData_String_isalpha(PikaObj *self);
int PikaStdData_String_isdigit(PikaObj *self);
int PikaStdData_String_islower(PikaObj *self);
int PikaStdData_String_isspace(PikaObj *self);
+char* PikaStdData_String_replace(PikaObj *self, char* old, char* new);
void PikaStdData_String_set(PikaObj *self, char* s);
+PikaObj* PikaStdData_String_split(PikaObj *self, char* s);
int PikaStdData_String_startwith(PikaObj *self, char* prefix);
+char* PikaStdData_String_strip(PikaObj *self);
#endif
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_Tuple-api.c b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_Tuple-api.c
new file mode 100644
index 000000000..11e99ed08
--- /dev/null
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_Tuple-api.c
@@ -0,0 +1,71 @@
+/* ******************************** */
+/* Warning! Don't modify this file! */
+/* ******************************** */
+#include "PikaStdData_Tuple.h"
+#include "TinyObj.h"
+#include
+#include
+#include "BaseObj.h"
+
+void PikaStdData_Tuple___del__Method(PikaObj *self, Args *args){
+ PikaStdData_Tuple___del__(self);
+}
+
+void PikaStdData_Tuple___getitem__Method(PikaObj *self, Args *args){
+ Arg* __key = args_getArg(args, "__key");
+ Arg* res = PikaStdData_Tuple___getitem__(self, __key);
+ method_returnArg(args, res);
+}
+
+void PikaStdData_Tuple___init__Method(PikaObj *self, Args *args){
+ PikaStdData_Tuple___init__(self);
+}
+
+void PikaStdData_Tuple___iter__Method(PikaObj *self, Args *args){
+ Arg* res = PikaStdData_Tuple___iter__(self);
+ method_returnArg(args, res);
+}
+
+void PikaStdData_Tuple___len__Method(PikaObj *self, Args *args){
+ int res = PikaStdData_Tuple___len__(self);
+ method_returnInt(args, res);
+}
+
+void PikaStdData_Tuple___next__Method(PikaObj *self, Args *args){
+ Arg* res = PikaStdData_Tuple___next__(self);
+ method_returnArg(args, res);
+}
+
+void PikaStdData_Tuple___str__Method(PikaObj *self, Args *args){
+ char* res = PikaStdData_Tuple___str__(self);
+ method_returnStr(args, res);
+}
+
+void PikaStdData_Tuple_getMethod(PikaObj *self, Args *args){
+ int i = args_getInt(args, "i");
+ Arg* res = PikaStdData_Tuple_get(self, i);
+ method_returnArg(args, res);
+}
+
+void PikaStdData_Tuple_lenMethod(PikaObj *self, Args *args){
+ int res = PikaStdData_Tuple_len(self);
+ method_returnInt(args, res);
+}
+
+PikaObj *New_PikaStdData_Tuple(Args *args){
+ PikaObj *self = New_TinyObj(args);
+ class_defineMethod(self, "__del__()", PikaStdData_Tuple___del__Method);
+ class_defineMethod(self, "__getitem__(__key:any)->any", PikaStdData_Tuple___getitem__Method);
+ class_defineMethod(self, "__init__()", PikaStdData_Tuple___init__Method);
+ class_defineMethod(self, "__iter__()->any", PikaStdData_Tuple___iter__Method);
+ class_defineMethod(self, "__len__()->int", PikaStdData_Tuple___len__Method);
+ class_defineMethod(self, "__next__()->any", PikaStdData_Tuple___next__Method);
+ class_defineMethod(self, "__str__()->str", PikaStdData_Tuple___str__Method);
+ class_defineMethod(self, "get(i:int)->any", PikaStdData_Tuple_getMethod);
+ class_defineMethod(self, "len()->int", PikaStdData_Tuple_lenMethod);
+ return self;
+}
+
+Arg *PikaStdData_Tuple(PikaObj *self){
+ return obj_newObjInPackage(New_PikaStdData_Tuple);
+}
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_Tuple.h b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_Tuple.h
new file mode 100644
index 000000000..93e5ecc2d
--- /dev/null
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_Tuple.h
@@ -0,0 +1,22 @@
+/* ******************************** */
+/* Warning! Don't modify this file! */
+/* ******************************** */
+#ifndef __PikaStdData_Tuple__H
+#define __PikaStdData_Tuple__H
+#include
+#include
+#include "PikaObj.h"
+
+PikaObj *New_PikaStdData_Tuple(Args *args);
+
+void PikaStdData_Tuple___del__(PikaObj *self);
+Arg* PikaStdData_Tuple___getitem__(PikaObj *self, Arg* __key);
+void PikaStdData_Tuple___init__(PikaObj *self);
+Arg* PikaStdData_Tuple___iter__(PikaObj *self);
+int PikaStdData_Tuple___len__(PikaObj *self);
+Arg* PikaStdData_Tuple___next__(PikaObj *self);
+char* PikaStdData_Tuple___str__(PikaObj *self);
+Arg* PikaStdData_Tuple_get(PikaObj *self, int i);
+int PikaStdData_Tuple_len(PikaObj *self);
+
+#endif
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_dict_keys-api.c b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_dict_keys-api.c
new file mode 100644
index 000000000..4199d88b3
--- /dev/null
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_dict_keys-api.c
@@ -0,0 +1,41 @@
+/* ******************************** */
+/* Warning! Don't modify this file! */
+/* ******************************** */
+#include "PikaStdData_dict_keys.h"
+#include "TinyObj.h"
+#include
+#include
+#include "BaseObj.h"
+
+void PikaStdData_dict_keys___iter__Method(PikaObj *self, Args *args){
+ Arg* res = PikaStdData_dict_keys___iter__(self);
+ method_returnArg(args, res);
+}
+
+void PikaStdData_dict_keys___len__Method(PikaObj *self, Args *args){
+ int res = PikaStdData_dict_keys___len__(self);
+ method_returnInt(args, res);
+}
+
+void PikaStdData_dict_keys___next__Method(PikaObj *self, Args *args){
+ Arg* res = PikaStdData_dict_keys___next__(self);
+ method_returnArg(args, res);
+}
+
+void PikaStdData_dict_keys___str__Method(PikaObj *self, Args *args){
+ char* res = PikaStdData_dict_keys___str__(self);
+ method_returnStr(args, res);
+}
+
+PikaObj *New_PikaStdData_dict_keys(Args *args){
+ PikaObj *self = New_TinyObj(args);
+ class_defineMethod(self, "__iter__()->any", PikaStdData_dict_keys___iter__Method);
+ class_defineMethod(self, "__len__()->int", PikaStdData_dict_keys___len__Method);
+ class_defineMethod(self, "__next__()->any", PikaStdData_dict_keys___next__Method);
+ class_defineMethod(self, "__str__()->str", PikaStdData_dict_keys___str__Method);
+ return self;
+}
+
+Arg *PikaStdData_dict_keys(PikaObj *self){
+ return obj_newObjInPackage(New_PikaStdData_dict_keys);
+}
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_dict_keys.h b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_dict_keys.h
new file mode 100644
index 000000000..ca415ed99
--- /dev/null
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdData_dict_keys.h
@@ -0,0 +1,17 @@
+/* ******************************** */
+/* Warning! Don't modify this file! */
+/* ******************************** */
+#ifndef __PikaStdData_dict_keys__H
+#define __PikaStdData_dict_keys__H
+#include
+#include
+#include "PikaObj.h"
+
+PikaObj *New_PikaStdData_dict_keys(Args *args);
+
+Arg* PikaStdData_dict_keys___iter__(PikaObj *self);
+int PikaStdData_dict_keys___len__(PikaObj *self);
+Arg* PikaStdData_dict_keys___next__(PikaObj *self);
+char* PikaStdData_dict_keys___str__(PikaObj *self);
+
+#endif
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdLib_SysObj-api.c b/port/cmsis-pack/pikascript/pikascript-api/PikaStdLib_SysObj-api.c
index 46fa3e695..4017d6ca9 100644
--- a/port/cmsis-pack/pikascript/pikascript-api/PikaStdLib_SysObj-api.c
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdLib_SysObj-api.c
@@ -2,32 +2,32 @@
/* Warning! Don't modify this file! */
/* ******************************** */
#include "PikaStdLib_SysObj.h"
-#include "BaseObj.h"
+#include "TinyObj.h"
#include
#include
#include "BaseObj.h"
void PikaStdLib_SysObj___getitem__Method(PikaObj *self, Args *args){
- Arg* key = args_getArg(args, "key");
Arg* obj = args_getArg(args, "obj");
- Arg* res = PikaStdLib_SysObj___getitem__(self, key, obj);
+ Arg* key = args_getArg(args, "key");
+ Arg* res = PikaStdLib_SysObj___getitem__(self, obj, key);
method_returnArg(args, res);
}
void PikaStdLib_SysObj___setitem__Method(PikaObj *self, Args *args){
- Arg* key = args_getArg(args, "key");
Arg* obj = args_getArg(args, "obj");
- char* obj_str = args_getStr(args, "obj_str");
+ Arg* key = args_getArg(args, "key");
Arg* val = args_getArg(args, "val");
- PikaStdLib_SysObj___setitem__(self, key, obj, obj_str, val);
+ Arg* res = PikaStdLib_SysObj___setitem__(self, obj, key, val);
+ method_returnArg(args, res);
}
void PikaStdLib_SysObj___slice__Method(PikaObj *self, Args *args){
- Arg* end = args_getArg(args, "end");
Arg* obj = args_getArg(args, "obj");
Arg* start = args_getArg(args, "start");
+ Arg* end = args_getArg(args, "end");
int step = args_getInt(args, "step");
- Arg* res = PikaStdLib_SysObj___slice__(self, end, obj, start, step);
+ Arg* res = PikaStdLib_SysObj___slice__(self, obj, start, end, step);
method_returnArg(args, res);
}
@@ -96,6 +96,13 @@ void PikaStdLib_SysObj_listMethod(PikaObj *self, Args *args){
method_returnArg(args, res);
}
+void PikaStdLib_SysObj_openMethod(PikaObj *self, Args *args){
+ char* path = args_getStr(args, "path");
+ char* mode = args_getStr(args, "mode");
+ PikaObj* res = PikaStdLib_SysObj_open(self, path, mode);
+ method_returnObj(args, res);
+}
+
void PikaStdLib_SysObj_ordMethod(PikaObj *self, Args *args){
char* val = args_getStr(args, "val");
int res = PikaStdLib_SysObj_ord(self, val);
@@ -132,13 +139,14 @@ void PikaStdLib_SysObj_strMethod(PikaObj *self, Args *args){
void PikaStdLib_SysObj_typeMethod(PikaObj *self, Args *args){
Arg* arg = args_getArg(args, "arg");
- PikaStdLib_SysObj_type(self, arg);
+ Arg* res = PikaStdLib_SysObj_type(self, arg);
+ method_returnArg(args, res);
}
PikaObj *New_PikaStdLib_SysObj(Args *args){
- PikaObj *self = New_BaseObj(args);
+ PikaObj *self = New_TinyObj(args);
class_defineMethod(self, "__getitem__(obj:any,key:any)->any", PikaStdLib_SysObj___getitem__Method);
- class_defineMethod(self, "__setitem__(obj:any,key:any,val:any,obj_str:str)", PikaStdLib_SysObj___setitem__Method);
+ class_defineMethod(self, "__setitem__(obj:any,key:any,val:any)->any", PikaStdLib_SysObj___setitem__Method);
class_defineMethod(self, "__slice__(obj:any,start:any,end:any,step:int)->any", PikaStdLib_SysObj___slice__Method);
class_defineMethod(self, "bytes(val:any)->bytes", PikaStdLib_SysObj_bytesMethod);
class_defineMethod(self, "cformat(fmt:str,*var)->str", PikaStdLib_SysObj_cformatMethod);
@@ -151,13 +159,14 @@ PikaObj *New_PikaStdLib_SysObj(Args *args){
class_defineMethod(self, "iter(arg:any)->any", PikaStdLib_SysObj_iterMethod);
class_defineMethod(self, "len(arg:any)->int", PikaStdLib_SysObj_lenMethod);
class_defineMethod(self, "list()->any", PikaStdLib_SysObj_listMethod);
+ class_defineMethod(self, "open(path:str,mode:str)->object", PikaStdLib_SysObj_openMethod);
class_defineMethod(self, "ord(val:str)->int", PikaStdLib_SysObj_ordMethod);
class_defineMethod(self, "print(*val)", PikaStdLib_SysObj_printMethod);
class_defineMethod(self, "printNoEnd(val:any)", PikaStdLib_SysObj_printNoEndMethod);
class_defineMethod(self, "range(a1:int,a2:int)->any", PikaStdLib_SysObj_rangeMethod);
class_defineMethod(self, "remove(argPath:str)", PikaStdLib_SysObj_removeMethod);
class_defineMethod(self, "str(arg:any)->str", PikaStdLib_SysObj_strMethod);
- class_defineMethod(self, "type(arg:any)", PikaStdLib_SysObj_typeMethod);
+ class_defineMethod(self, "type(arg:any)->any", PikaStdLib_SysObj_typeMethod);
return self;
}
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdLib_SysObj.h b/port/cmsis-pack/pikascript/pikascript-api/PikaStdLib_SysObj.h
index e393e1d58..e29ded624 100644
--- a/port/cmsis-pack/pikascript/pikascript-api/PikaStdLib_SysObj.h
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdLib_SysObj.h
@@ -9,9 +9,9 @@
PikaObj *New_PikaStdLib_SysObj(Args *args);
-Arg* PikaStdLib_SysObj___getitem__(PikaObj *self, Arg* key, Arg* obj);
-void PikaStdLib_SysObj___setitem__(PikaObj *self, Arg* key, Arg* obj, char* obj_str, Arg* val);
-Arg* PikaStdLib_SysObj___slice__(PikaObj *self, Arg* end, Arg* obj, Arg* start, int step);
+Arg* PikaStdLib_SysObj___getitem__(PikaObj *self, Arg* obj, Arg* key);
+Arg* PikaStdLib_SysObj___setitem__(PikaObj *self, Arg* obj, Arg* key, Arg* val);
+Arg* PikaStdLib_SysObj___slice__(PikaObj *self, Arg* obj, Arg* start, Arg* end, int step);
Arg* PikaStdLib_SysObj_bytes(PikaObj *self, Arg* val);
char* PikaStdLib_SysObj_cformat(PikaObj *self, char* fmt, PikaTuple* var);
char* PikaStdLib_SysObj_chr(PikaObj *self, int val);
@@ -23,12 +23,13 @@ int PikaStdLib_SysObj_int(PikaObj *self, Arg* arg);
Arg* PikaStdLib_SysObj_iter(PikaObj *self, Arg* arg);
int PikaStdLib_SysObj_len(PikaObj *self, Arg* arg);
Arg* PikaStdLib_SysObj_list(PikaObj *self);
+PikaObj* PikaStdLib_SysObj_open(PikaObj *self, char* path, char* mode);
int PikaStdLib_SysObj_ord(PikaObj *self, char* val);
void PikaStdLib_SysObj_print(PikaObj *self, PikaTuple* val);
void PikaStdLib_SysObj_printNoEnd(PikaObj *self, Arg* val);
Arg* PikaStdLib_SysObj_range(PikaObj *self, int a1, int a2);
void PikaStdLib_SysObj_remove(PikaObj *self, char* argPath);
char* PikaStdLib_SysObj_str(PikaObj *self, Arg* arg);
-void PikaStdLib_SysObj_type(PikaObj *self, Arg* arg);
+Arg* PikaStdLib_SysObj_type(PikaObj *self, Arg* arg);
#endif
diff --git a/port/cmsis-pack/pikascript/pikascript-api/PikaStdTask_Task-api.c b/port/cmsis-pack/pikascript/pikascript-api/PikaStdTask_Task-api.c
index b0f530d71..0adabe3e3 100644
--- a/port/cmsis-pack/pikascript/pikascript-api/PikaStdTask_Task-api.c
+++ b/port/cmsis-pack/pikascript/pikascript-api/PikaStdTask_Task-api.c
@@ -2,7 +2,7 @@
/* Warning! Don't modify this file! */
/* ******************************** */
#include "PikaStdTask_Task.h"
-#include "TinyObj.h"
+#include "PikaStdLib_SysObj.h"
#include "PikaStdData_List.h"
#include
#include
@@ -47,7 +47,7 @@ void PikaStdTask_Task_run_until_msMethod(PikaObj *self, Args *args){
}
PikaObj *New_PikaStdTask_Task(Args *args){
- PikaObj *self = New_TinyObj(args);
+ PikaObj *self = New_PikaStdLib_SysObj(args);
obj_newObj(self, "calls", "PikaStdData_List", New_PikaStdData_List);
class_defineMethod(self, "__init__()", PikaStdTask_Task___init__Method);
class_defineMethod(self, "call_always(fun_todo:any)", PikaStdTask_Task_call_alwaysMethod);
diff --git a/port/cmsis-pack/pikascript/pikascript-api/compiler-info.txt b/port/cmsis-pack/pikascript/pikascript-api/compiler-info.txt
index 33f64f707..f16f03323 100644
--- a/port/cmsis-pack/pikascript/pikascript-api/compiler-info.txt
+++ b/port/cmsis-pack/pikascript/pikascript-api/compiler-info.txt
@@ -1 +1 @@
-Compiler { dist_path: "pikascript-api/", source_path: "", class_list: {"PikaDebug": ClassInfo { this_class_name: "PikaDebug", this_class_name_without_file: "PikaDebug", super_class_name: "TinyObj", method_list: {"Debuger": MethodInfo { class_name: "PikaDebug", name: "Debuger", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: true }, "PikaDebug_Debuger": ClassInfo { this_class_name: "PikaDebug_Debuger", this_class_name_without_file: "Debuger", super_class_name: "TinyObj", method_list: {"__init__": MethodInfo { class_name: "PikaDebug_Debuger", name: "__init__", arg_list: None, return_type: None, is_constructor: false }, "set_trace": MethodInfo { class_name: "PikaDebug_Debuger", name: "set_trace", arg_list: None, return_type: None, is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaMain": ClassInfo { this_class_name: "PikaMain", this_class_name_without_file: "PikaMain", super_class_name: "PikaStdLib_SysObj", method_list: {}, object_list: {"PikaStdLib": ObjectInfo { class_name: "PikaMain", name: "PikaStdLib", import_class_name: "PikaStdLib" }}, import_list: {}, script_list: Script { content: "@BEGIN@import PikaStdLib@END@@BEGIN@@END@@BEGIN@print('hello PikaScript!')@END@@BEGIN@@END@@BEGIN@mem = PikaStdLib.MemChecker()@END@@BEGIN@print('mem used max:')@END@@BEGIN@mem.max()@END@@BEGIN@@END@" }, is_package: false }, "PikaStdData": ClassInfo { this_class_name: "PikaStdData", this_class_name_without_file: "PikaStdData", super_class_name: "TinyObj", method_list: {"ByteArray": MethodInfo { class_name: "PikaStdData", name: "ByteArray", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "Dict": MethodInfo { class_name: "PikaStdData", name: "Dict", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "List": MethodInfo { class_name: "PikaStdData", name: "List", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "String": MethodInfo { class_name: "PikaStdData", name: "String", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "Utils": MethodInfo { class_name: "PikaStdData", name: "Utils", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: true }, "PikaStdData_ByteArray": ClassInfo { this_class_name: "PikaStdData_ByteArray", this_class_name_without_file: "ByteArray", super_class_name: "PikaStdData_List", method_list: {"fromString": MethodInfo { class_name: "PikaStdData_ByteArray", name: "fromString", arg_list: Some(ArgList { py_arg_list: "s:str", list: {"s": PyArg { py_type: PyType { type_name: "str" }, name: "s" }} }), return_type: None, is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdData_Dict": ClassInfo { this_class_name: "PikaStdData_Dict", this_class_name_without_file: "Dict", super_class_name: "TinyObj", method_list: {"__del__": MethodInfo { class_name: "PikaStdData_Dict", name: "__del__", arg_list: None, return_type: None, is_constructor: false }, "__getitem__": MethodInfo { class_name: "PikaStdData_Dict", name: "__getitem__", arg_list: Some(ArgList { py_arg_list: "__key:any", list: {"__key": PyArg { py_type: PyType { type_name: "any" }, name: "__key" }} }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__init__": MethodInfo { class_name: "PikaStdData_Dict", name: "__init__", arg_list: None, return_type: None, is_constructor: false }, "__iter__": MethodInfo { class_name: "PikaStdData_Dict", name: "__iter__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__next__": MethodInfo { class_name: "PikaStdData_Dict", name: "__next__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__setitem__": MethodInfo { class_name: "PikaStdData_Dict", name: "__setitem__", arg_list: Some(ArgList { py_arg_list: "__key:any,__val:any", list: {"__key": PyArg { py_type: PyType { type_name: "any" }, name: "__key" }, "__val": PyArg { py_type: PyType { type_name: "any" }, name: "__val" }} }), return_type: None, is_constructor: false }, "get": MethodInfo { class_name: "PikaStdData_Dict", name: "get", arg_list: Some(ArgList { py_arg_list: "key:str", list: {"key": PyArg { py_type: PyType { type_name: "str" }, name: "key" }} }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "remove": MethodInfo { class_name: "PikaStdData_Dict", name: "remove", arg_list: Some(ArgList { py_arg_list: "key:str", list: {"key": PyArg { py_type: PyType { type_name: "str" }, name: "key" }} }), return_type: None, is_constructor: false }, "set": MethodInfo { class_name: "PikaStdData_Dict", name: "set", arg_list: Some(ArgList { py_arg_list: "key:str,arg:any", list: {"arg": PyArg { py_type: PyType { type_name: "any" }, name: "arg" }, "key": PyArg { py_type: PyType { type_name: "str" }, name: "key" }} }), return_type: None, is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdData_List": ClassInfo { this_class_name: "PikaStdData_List", this_class_name_without_file: "List", super_class_name: "TinyObj", method_list: {"__del__": MethodInfo { class_name: "PikaStdData_List", name: "__del__", arg_list: None, return_type: None, is_constructor: false }, "__getitem__": MethodInfo { class_name: "PikaStdData_List", name: "__getitem__", arg_list: Some(ArgList { py_arg_list: "__key:any", list: {"__key": PyArg { py_type: PyType { type_name: "any" }, name: "__key" }} }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__init__": MethodInfo { class_name: "PikaStdData_List", name: "__init__", arg_list: None, return_type: None, is_constructor: false }, "__iter__": MethodInfo { class_name: "PikaStdData_List", name: "__iter__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__next__": MethodInfo { class_name: "PikaStdData_List", name: "__next__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__setitem__": MethodInfo { class_name: "PikaStdData_List", name: "__setitem__", arg_list: Some(ArgList { py_arg_list: "__key:any,__val:any", list: {"__key": PyArg { py_type: PyType { type_name: "any" }, name: "__key" }, "__val": PyArg { py_type: PyType { type_name: "any" }, name: "__val" }} }), return_type: None, is_constructor: false }, "append": MethodInfo { class_name: "PikaStdData_List", name: "append", arg_list: Some(ArgList { py_arg_list: "arg:any", list: {"arg": PyArg { py_type: PyType { type_name: "any" }, name: "arg" }} }), return_type: None, is_constructor: false }, "get": MethodInfo { class_name: "PikaStdData_List", name: "get", arg_list: Some(ArgList { py_arg_list: "i:int", list: {"i": PyArg { py_type: PyType { type_name: "int" }, name: "i" }} }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "len": MethodInfo { class_name: "PikaStdData_List", name: "len", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "set": MethodInfo { class_name: "PikaStdData_List", name: "set", arg_list: Some(ArgList { py_arg_list: "i:int,arg:any", list: {"arg": PyArg { py_type: PyType { type_name: "any" }, name: "arg" }, "i": PyArg { py_type: PyType { type_name: "int" }, name: "i" }} }), return_type: None, is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdData_String": ClassInfo { this_class_name: "PikaStdData_String", this_class_name_without_file: "String", super_class_name: "TinyObj", method_list: {"__getitem__": MethodInfo { class_name: "PikaStdData_String", name: "__getitem__", arg_list: Some(ArgList { py_arg_list: "__key:any", list: {"__key": PyArg { py_type: PyType { type_name: "any" }, name: "__key" }} }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__init__": MethodInfo { class_name: "PikaStdData_String", name: "__init__", arg_list: Some(ArgList { py_arg_list: "s:str", list: {"s": PyArg { py_type: PyType { type_name: "str" }, name: "s" }} }), return_type: None, is_constructor: false }, "__iter__": MethodInfo { class_name: "PikaStdData_String", name: "__iter__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__next__": MethodInfo { class_name: "PikaStdData_String", name: "__next__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__setitem__": MethodInfo { class_name: "PikaStdData_String", name: "__setitem__", arg_list: Some(ArgList { py_arg_list: "__key:any,__val:any", list: {"__key": PyArg { py_type: PyType { type_name: "any" }, name: "__key" }, "__val": PyArg { py_type: PyType { type_name: "any" }, name: "__val" }} }), return_type: None, is_constructor: false }, "__str__": MethodInfo { class_name: "PikaStdData_String", name: "__str__", arg_list: None, return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "endwith": MethodInfo { class_name: "PikaStdData_String", name: "endwith", arg_list: Some(ArgList { py_arg_list: "suffix:str", list: {"suffix": PyArg { py_type: PyType { type_name: "str" }, name: "suffix" }} }), return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "get": MethodInfo { class_name: "PikaStdData_String", name: "get", arg_list: None, return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "isalnum": MethodInfo { class_name: "PikaStdData_String", name: "isalnum", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "isalpha": MethodInfo { class_name: "PikaStdData_String", name: "isalpha", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "isdigit": MethodInfo { class_name: "PikaStdData_String", name: "isdigit", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "islower": MethodInfo { class_name: "PikaStdData_String", name: "islower", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "isspace": MethodInfo { class_name: "PikaStdData_String", name: "isspace", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "set": MethodInfo { class_name: "PikaStdData_String", name: "set", arg_list: Some(ArgList { py_arg_list: "s:str", list: {"s": PyArg { py_type: PyType { type_name: "str" }, name: "s" }} }), return_type: None, is_constructor: false }, "startwith": MethodInfo { class_name: "PikaStdData_String", name: "startwith", arg_list: Some(ArgList { py_arg_list: "prefix:str", list: {"prefix": PyArg { py_type: PyType { type_name: "str" }, name: "prefix" }} }), return_type: Some(PyType { type_name: "int" }), is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdData_Utils": ClassInfo { this_class_name: "PikaStdData_Utils", this_class_name_without_file: "Utils", super_class_name: "TinyObj", method_list: {"int_to_bytes": MethodInfo { class_name: "PikaStdData_Utils", name: "int_to_bytes", arg_list: Some(ArgList { py_arg_list: "val:int", list: {"val": PyArg { py_type: PyType { type_name: "int" }, name: "val" }} }), return_type: Some(PyType { type_name: "bytes" }), is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdLib": ClassInfo { this_class_name: "PikaStdLib", this_class_name_without_file: "PikaStdLib", super_class_name: "TinyObj", method_list: {"MemChecker": MethodInfo { class_name: "PikaStdLib", name: "MemChecker", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "PikaObj": MethodInfo { class_name: "PikaStdLib", name: "PikaObj", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "RangeObj": MethodInfo { class_name: "PikaStdLib", name: "RangeObj", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "StringObj": MethodInfo { class_name: "PikaStdLib", name: "StringObj", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "SysObj": MethodInfo { class_name: "PikaStdLib", name: "SysObj", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: true }, "PikaStdLib_MemChecker": ClassInfo { this_class_name: "PikaStdLib_MemChecker", this_class_name_without_file: "MemChecker", super_class_name: "TinyObj", method_list: {"getMax": MethodInfo { class_name: "PikaStdLib_MemChecker", name: "getMax", arg_list: None, return_type: Some(PyType { type_name: "float" }), is_constructor: false }, "getNow": MethodInfo { class_name: "PikaStdLib_MemChecker", name: "getNow", arg_list: None, return_type: Some(PyType { type_name: "float" }), is_constructor: false }, "max": MethodInfo { class_name: "PikaStdLib_MemChecker", name: "max", arg_list: None, return_type: None, is_constructor: false }, "now": MethodInfo { class_name: "PikaStdLib_MemChecker", name: "now", arg_list: None, return_type: None, is_constructor: false }, "resetMax": MethodInfo { class_name: "PikaStdLib_MemChecker", name: "resetMax", arg_list: None, return_type: None, is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdLib_PikaObj": ClassInfo { this_class_name: "PikaStdLib_PikaObj", this_class_name_without_file: "PikaObj", super_class_name: "TinyObj", method_list: {}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdLib_RangeObj": ClassInfo { this_class_name: "PikaStdLib_RangeObj", this_class_name_without_file: "RangeObj", super_class_name: "TinyObj", method_list: {"__next__": MethodInfo { class_name: "PikaStdLib_RangeObj", name: "__next__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdLib_StringObj": ClassInfo { this_class_name: "PikaStdLib_StringObj", this_class_name_without_file: "StringObj", super_class_name: "TinyObj", method_list: {"__next__": MethodInfo { class_name: "PikaStdLib_StringObj", name: "__next__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdLib_SysObj": ClassInfo { this_class_name: "PikaStdLib_SysObj", this_class_name_without_file: "SysObj", super_class_name: "BaseObj", method_list: {"__getitem__": MethodInfo { class_name: "PikaStdLib_SysObj", name: "__getitem__", arg_list: Some(ArgList { py_arg_list: "obj:any,key:any", list: {"key": PyArg { py_type: PyType { type_name: "any" }, name: "key" }, "obj": PyArg { py_type: PyType { type_name: "any" }, name: "obj" }} }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__setitem__": MethodInfo { class_name: "PikaStdLib_SysObj", name: "__setitem__", arg_list: Some(ArgList { py_arg_list: "obj:any,key:any,val:any,obj_str:str", list: {"key": PyArg { py_type: PyType { type_name: "any" }, name: "key" }, "obj": PyArg { py_type: PyType { type_name: "any" }, name: "obj" }, "obj_str": PyArg { py_type: PyType { type_name: "str" }, name: "obj_str" }, "val": PyArg { py_type: PyType { type_name: "any" }, name: "val" }} }), return_type: None, is_constructor: false }, "__slice__": MethodInfo { class_name: "PikaStdLib_SysObj", name: "__slice__", arg_list: Some(ArgList { py_arg_list: "obj:any,start:any,end:any,step:int", list: {"end": PyArg { py_type: PyType { type_name: "any" }, name: "end" }, "obj": PyArg { py_type: PyType { type_name: "any" }, name: "obj" }, "start": PyArg { py_type: PyType { type_name: "any" }, name: "start" }, "step": PyArg { py_type: PyType { type_name: "int" }, name: "step" }} }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "bytes": MethodInfo { class_name: "PikaStdLib_SysObj", name: "bytes", arg_list: Some(ArgList { py_arg_list: "val:any", list: {"val": PyArg { py_type: PyType { type_name: "any" }, name: "val" }} }), return_type: Some(PyType { type_name: "bytes" }), is_constructor: false }, "cformat": MethodInfo { class_name: "PikaStdLib_SysObj", name: "cformat", arg_list: Some(ArgList { py_arg_list: "fmt:str,*var", list: {"fmt": PyArg { py_type: PyType { type_name: "str" }, name: "fmt" }, "var": PyArg { py_type: PyType { type_name: "@tupleVarPar" }, name: "var" }} }), return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "chr": MethodInfo { class_name: "PikaStdLib_SysObj", name: "chr", arg_list: Some(ArgList { py_arg_list: "val:int", list: {"val": PyArg { py_type: PyType { type_name: "int" }, name: "val" }} }), return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "dict": MethodInfo { class_name: "PikaStdLib_SysObj", name: "dict", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "float": MethodInfo { class_name: "PikaStdLib_SysObj", name: "float", arg_list: Some(ArgList { py_arg_list: "arg:any", list: {"arg": PyArg { py_type: PyType { type_name: "any" }, name: "arg" }} }), return_type: Some(PyType { type_name: "float" }), is_constructor: false }, "hex": MethodInfo { class_name: "PikaStdLib_SysObj", name: "hex", arg_list: Some(ArgList { py_arg_list: "val:int", list: {"val": PyArg { py_type: PyType { type_name: "int" }, name: "val" }} }), return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "id": MethodInfo { class_name: "PikaStdLib_SysObj", name: "id", arg_list: Some(ArgList { py_arg_list: "obj:any", list: {"obj": PyArg { py_type: PyType { type_name: "any" }, name: "obj" }} }), return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "int": MethodInfo { class_name: "PikaStdLib_SysObj", name: "int", arg_list: Some(ArgList { py_arg_list: "arg:any", list: {"arg": PyArg { py_type: PyType { type_name: "any" }, name: "arg" }} }), return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "iter": MethodInfo { class_name: "PikaStdLib_SysObj", name: "iter", arg_list: Some(ArgList { py_arg_list: "arg:any", list: {"arg": PyArg { py_type: PyType { type_name: "any" }, name: "arg" }} }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "len": MethodInfo { class_name: "PikaStdLib_SysObj", name: "len", arg_list: Some(ArgList { py_arg_list: "arg:any", list: {"arg": PyArg { py_type: PyType { type_name: "any" }, name: "arg" }} }), return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "list": MethodInfo { class_name: "PikaStdLib_SysObj", name: "list", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "ord": MethodInfo { class_name: "PikaStdLib_SysObj", name: "ord", arg_list: Some(ArgList { py_arg_list: "val:str", list: {"val": PyArg { py_type: PyType { type_name: "str" }, name: "val" }} }), return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "print": MethodInfo { class_name: "PikaStdLib_SysObj", name: "print", arg_list: Some(ArgList { py_arg_list: "*val", list: {"val": PyArg { py_type: PyType { type_name: "@tupleVarPar" }, name: "val" }} }), return_type: None, is_constructor: false }, "printNoEnd": MethodInfo { class_name: "PikaStdLib_SysObj", name: "printNoEnd", arg_list: Some(ArgList { py_arg_list: "val:any", list: {"val": PyArg { py_type: PyType { type_name: "any" }, name: "val" }} }), return_type: None, is_constructor: false }, "range": MethodInfo { class_name: "PikaStdLib_SysObj", name: "range", arg_list: Some(ArgList { py_arg_list: "a1:int,a2:int", list: {"a1": PyArg { py_type: PyType { type_name: "int" }, name: "a1" }, "a2": PyArg { py_type: PyType { type_name: "int" }, name: "a2" }} }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "remove": MethodInfo { class_name: "PikaStdLib_SysObj", name: "remove", arg_list: Some(ArgList { py_arg_list: "argPath:str", list: {"argPath": PyArg { py_type: PyType { type_name: "str" }, name: "argPath" }} }), return_type: None, is_constructor: false }, "str": MethodInfo { class_name: "PikaStdLib_SysObj", name: "str", arg_list: Some(ArgList { py_arg_list: "arg:any", list: {"arg": PyArg { py_type: PyType { type_name: "any" }, name: "arg" }} }), return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "type": MethodInfo { class_name: "PikaStdLib_SysObj", name: "type", arg_list: Some(ArgList { py_arg_list: "arg:any", list: {"arg": PyArg { py_type: PyType { type_name: "any" }, name: "arg" }} }), return_type: None, is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdTask": ClassInfo { this_class_name: "PikaStdTask", this_class_name_without_file: "PikaStdTask", super_class_name: "TinyObj", method_list: {"Task": MethodInfo { class_name: "PikaStdTask", name: "Task", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: true }, "PikaStdTask_Task": ClassInfo { this_class_name: "PikaStdTask_Task", this_class_name_without_file: "Task", super_class_name: "TinyObj", method_list: {"__init__": MethodInfo { class_name: "PikaStdTask_Task", name: "__init__", arg_list: None, return_type: None, is_constructor: false }, "call_always": MethodInfo { class_name: "PikaStdTask_Task", name: "call_always", arg_list: Some(ArgList { py_arg_list: "fun_todo:any", list: {"fun_todo": PyArg { py_type: PyType { type_name: "any" }, name: "fun_todo" }} }), return_type: None, is_constructor: false }, "call_period_ms": MethodInfo { class_name: "PikaStdTask_Task", name: "call_period_ms", arg_list: Some(ArgList { py_arg_list: "fun_todo:any,period_ms:int", list: {"fun_todo": PyArg { py_type: PyType { type_name: "any" }, name: "fun_todo" }, "period_ms": PyArg { py_type: PyType { type_name: "int" }, name: "period_ms" }} }), return_type: None, is_constructor: false }, "call_when": MethodInfo { class_name: "PikaStdTask_Task", name: "call_when", arg_list: Some(ArgList { py_arg_list: "fun_todo:any,fun_when:any", list: {"fun_todo": PyArg { py_type: PyType { type_name: "any" }, name: "fun_todo" }, "fun_when": PyArg { py_type: PyType { type_name: "any" }, name: "fun_when" }} }), return_type: None, is_constructor: false }, "platformGetTick": MethodInfo { class_name: "PikaStdTask_Task", name: "platformGetTick", arg_list: None, return_type: None, is_constructor: false }, "run_forever": MethodInfo { class_name: "PikaStdTask_Task", name: "run_forever", arg_list: None, return_type: None, is_constructor: false }, "run_once": MethodInfo { class_name: "PikaStdTask_Task", name: "run_once", arg_list: None, return_type: None, is_constructor: false }, "run_until_ms": MethodInfo { class_name: "PikaStdTask_Task", name: "run_until_ms", arg_list: Some(ArgList { py_arg_list: "until_ms:int", list: {"until_ms": PyArg { py_type: PyType { type_name: "int" }, name: "until_ms" }} }), return_type: None, is_constructor: false }}, object_list: {"calls": ObjectInfo { class_name: "PikaStdTask_Task", name: "calls", import_class_name: "PikaStdData_List" }}, import_list: {}, script_list: Script { content: "" }, is_package: false }}, class_now_name: Some("PikaDebug_Debuger"), package_now_name: Some("PikaDebug"), compiled_list: ["main", "PikaStdLib", "PikaStdLib", "PikaStdTask", "PikaStdData", "PikaStdData", "PikaDebug"] }
\ No newline at end of file
+Compiler { dist_path: "pikascript-api/", source_path: "", class_list: {"PikaDebug": ClassInfo { this_class_name: "PikaDebug", this_class_name_without_file: "PikaDebug", super_class_name: "TinyObj", method_list: {"Debuger": MethodInfo { class_name: "PikaDebug", name: "Debuger", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: true }, "PikaDebug_Debuger": ClassInfo { this_class_name: "PikaDebug_Debuger", this_class_name_without_file: "Debuger", super_class_name: "TinyObj", method_list: {"__init__": MethodInfo { class_name: "PikaDebug_Debuger", name: "__init__", arg_list: None, return_type: None, is_constructor: false }, "set_trace": MethodInfo { class_name: "PikaDebug_Debuger", name: "set_trace", arg_list: None, return_type: None, is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaMain": ClassInfo { this_class_name: "PikaMain", this_class_name_without_file: "PikaMain", super_class_name: "PikaStdLib_SysObj", method_list: {}, object_list: {"PikaStdLib": ObjectInfo { class_name: "PikaMain", name: "PikaStdLib", import_class_name: "PikaStdLib" }}, import_list: {}, script_list: Script { content: "@BEGIN@import PikaStdLib@END@@BEGIN@@END@@BEGIN@print('hello PikaScript!')@END@@BEGIN@@END@@BEGIN@mem = PikaStdLib.MemChecker()@END@@BEGIN@print('mem used max:')@END@@BEGIN@mem.max()@END@@BEGIN@@END@" }, is_package: false }, "PikaStdData": ClassInfo { this_class_name: "PikaStdData", this_class_name_without_file: "PikaStdData", super_class_name: "TinyObj", method_list: {"ByteArray": MethodInfo { class_name: "PikaStdData", name: "ByteArray", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "Dict": MethodInfo { class_name: "PikaStdData", name: "Dict", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "FILEIO": MethodInfo { class_name: "PikaStdData", name: "FILEIO", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "List": MethodInfo { class_name: "PikaStdData", name: "List", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "String": MethodInfo { class_name: "PikaStdData", name: "String", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "Tuple": MethodInfo { class_name: "PikaStdData", name: "Tuple", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "Utils": MethodInfo { class_name: "PikaStdData", name: "Utils", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "dict_keys": MethodInfo { class_name: "PikaStdData", name: "dict_keys", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: true }, "PikaStdData_ByteArray": ClassInfo { this_class_name: "PikaStdData_ByteArray", this_class_name_without_file: "ByteArray", super_class_name: "TinyObj", method_list: {"__getitem__": MethodInfo { class_name: "PikaStdData_ByteArray", name: "__getitem__", arg_list: Some(ArgList { py_arg_list: "__key:int", list: [PyArg { py_type: PyType { type_name: "int" }, name: "__key" }] }), return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "__init__": MethodInfo { class_name: "PikaStdData_ByteArray", name: "__init__", arg_list: Some(ArgList { py_arg_list: "bytes:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "bytes" }] }), return_type: None, is_constructor: false }, "__iter__": MethodInfo { class_name: "PikaStdData_ByteArray", name: "__iter__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__next__": MethodInfo { class_name: "PikaStdData_ByteArray", name: "__next__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__setitem__": MethodInfo { class_name: "PikaStdData_ByteArray", name: "__setitem__", arg_list: Some(ArgList { py_arg_list: "__key:int,__val:int", list: [PyArg { py_type: PyType { type_name: "int" }, name: "__key" }, PyArg { py_type: PyType { type_name: "int" }, name: "__val" }] }), return_type: None, is_constructor: false }, "__str__": MethodInfo { class_name: "PikaStdData_ByteArray", name: "__str__", arg_list: None, return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "decode": MethodInfo { class_name: "PikaStdData_ByteArray", name: "decode", arg_list: None, return_type: Some(PyType { type_name: "str" }), is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdData_Dict": ClassInfo { this_class_name: "PikaStdData_Dict", this_class_name_without_file: "Dict", super_class_name: "TinyObj", method_list: {"__del__": MethodInfo { class_name: "PikaStdData_Dict", name: "__del__", arg_list: None, return_type: None, is_constructor: false }, "__getitem__": MethodInfo { class_name: "PikaStdData_Dict", name: "__getitem__", arg_list: Some(ArgList { py_arg_list: "__key:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "__key" }] }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__init__": MethodInfo { class_name: "PikaStdData_Dict", name: "__init__", arg_list: None, return_type: None, is_constructor: false }, "__iter__": MethodInfo { class_name: "PikaStdData_Dict", name: "__iter__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__len__": MethodInfo { class_name: "PikaStdData_Dict", name: "__len__", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "__next__": MethodInfo { class_name: "PikaStdData_Dict", name: "__next__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__setitem__": MethodInfo { class_name: "PikaStdData_Dict", name: "__setitem__", arg_list: Some(ArgList { py_arg_list: "__key:any,__val:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "__key" }, PyArg { py_type: PyType { type_name: "any" }, name: "__val" }] }), return_type: None, is_constructor: false }, "__str__": MethodInfo { class_name: "PikaStdData_Dict", name: "__str__", arg_list: None, return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "get": MethodInfo { class_name: "PikaStdData_Dict", name: "get", arg_list: Some(ArgList { py_arg_list: "key:str", list: [PyArg { py_type: PyType { type_name: "str" }, name: "key" }] }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "keys": MethodInfo { class_name: "PikaStdData_Dict", name: "keys", arg_list: None, return_type: Some(PyType { type_name: "dict_keys" }), is_constructor: false }, "remove": MethodInfo { class_name: "PikaStdData_Dict", name: "remove", arg_list: Some(ArgList { py_arg_list: "key:str", list: [PyArg { py_type: PyType { type_name: "str" }, name: "key" }] }), return_type: None, is_constructor: false }, "set": MethodInfo { class_name: "PikaStdData_Dict", name: "set", arg_list: Some(ArgList { py_arg_list: "key:str,arg:any", list: [PyArg { py_type: PyType { type_name: "str" }, name: "key" }, PyArg { py_type: PyType { type_name: "any" }, name: "arg" }] }), return_type: None, is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdData_FILEIO": ClassInfo { this_class_name: "PikaStdData_FILEIO", this_class_name_without_file: "FILEIO", super_class_name: "TinyObj", method_list: {"close": MethodInfo { class_name: "PikaStdData_FILEIO", name: "close", arg_list: None, return_type: None, is_constructor: false }, "init": MethodInfo { class_name: "PikaStdData_FILEIO", name: "init", arg_list: Some(ArgList { py_arg_list: "path:str,mode:str", list: [PyArg { py_type: PyType { type_name: "str" }, name: "path" }, PyArg { py_type: PyType { type_name: "str" }, name: "mode" }] }), return_type: None, is_constructor: false }, "read": MethodInfo { class_name: "PikaStdData_FILEIO", name: "read", arg_list: Some(ArgList { py_arg_list: "size:int", list: [PyArg { py_type: PyType { type_name: "int" }, name: "size" }] }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "readline": MethodInfo { class_name: "PikaStdData_FILEIO", name: "readline", arg_list: None, return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "readlines": MethodInfo { class_name: "PikaStdData_FILEIO", name: "readlines", arg_list: None, return_type: Some(PyType { type_name: "List" }), is_constructor: false }, "seek": MethodInfo { class_name: "PikaStdData_FILEIO", name: "seek", arg_list: Some(ArgList { py_arg_list: "offset:int,*fromwhere", list: [PyArg { py_type: PyType { type_name: "int" }, name: "offset" }, PyArg { py_type: PyType { type_name: "@tupleVarPar" }, name: "fromwhere" }] }), return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "tell": MethodInfo { class_name: "PikaStdData_FILEIO", name: "tell", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "write": MethodInfo { class_name: "PikaStdData_FILEIO", name: "write", arg_list: Some(ArgList { py_arg_list: "s:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "s" }] }), return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "writelines": MethodInfo { class_name: "PikaStdData_FILEIO", name: "writelines", arg_list: Some(ArgList { py_arg_list: "lines:List", list: [PyArg { py_type: PyType { type_name: "List" }, name: "lines" }] }), return_type: None, is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdData_List": ClassInfo { this_class_name: "PikaStdData_List", this_class_name_without_file: "List", super_class_name: "PikaStdData_Tuple", method_list: {"__init__": MethodInfo { class_name: "PikaStdData_List", name: "__init__", arg_list: None, return_type: None, is_constructor: false }, "__setitem__": MethodInfo { class_name: "PikaStdData_List", name: "__setitem__", arg_list: Some(ArgList { py_arg_list: "__key:any,__val:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "__key" }, PyArg { py_type: PyType { type_name: "any" }, name: "__val" }] }), return_type: None, is_constructor: false }, "__str__": MethodInfo { class_name: "PikaStdData_List", name: "__str__", arg_list: None, return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "append": MethodInfo { class_name: "PikaStdData_List", name: "append", arg_list: Some(ArgList { py_arg_list: "arg:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "arg" }] }), return_type: None, is_constructor: false }, "set": MethodInfo { class_name: "PikaStdData_List", name: "set", arg_list: Some(ArgList { py_arg_list: "i:int,arg:any", list: [PyArg { py_type: PyType { type_name: "int" }, name: "i" }, PyArg { py_type: PyType { type_name: "any" }, name: "arg" }] }), return_type: None, is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdData_String": ClassInfo { this_class_name: "PikaStdData_String", this_class_name_without_file: "String", super_class_name: "TinyObj", method_list: {"__getitem__": MethodInfo { class_name: "PikaStdData_String", name: "__getitem__", arg_list: Some(ArgList { py_arg_list: "__key:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "__key" }] }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__init__": MethodInfo { class_name: "PikaStdData_String", name: "__init__", arg_list: Some(ArgList { py_arg_list: "s:str", list: [PyArg { py_type: PyType { type_name: "str" }, name: "s" }] }), return_type: None, is_constructor: false }, "__iter__": MethodInfo { class_name: "PikaStdData_String", name: "__iter__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__len__": MethodInfo { class_name: "PikaStdData_String", name: "__len__", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "__next__": MethodInfo { class_name: "PikaStdData_String", name: "__next__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__setitem__": MethodInfo { class_name: "PikaStdData_String", name: "__setitem__", arg_list: Some(ArgList { py_arg_list: "__key:any,__val:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "__key" }, PyArg { py_type: PyType { type_name: "any" }, name: "__val" }] }), return_type: None, is_constructor: false }, "__str__": MethodInfo { class_name: "PikaStdData_String", name: "__str__", arg_list: None, return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "encode": MethodInfo { class_name: "PikaStdData_String", name: "encode", arg_list: None, return_type: Some(PyType { type_name: "bytes" }), is_constructor: false }, "endwith": MethodInfo { class_name: "PikaStdData_String", name: "endwith", arg_list: Some(ArgList { py_arg_list: "suffix:str", list: [PyArg { py_type: PyType { type_name: "str" }, name: "suffix" }] }), return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "get": MethodInfo { class_name: "PikaStdData_String", name: "get", arg_list: None, return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "isalnum": MethodInfo { class_name: "PikaStdData_String", name: "isalnum", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "isalpha": MethodInfo { class_name: "PikaStdData_String", name: "isalpha", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "isdigit": MethodInfo { class_name: "PikaStdData_String", name: "isdigit", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "islower": MethodInfo { class_name: "PikaStdData_String", name: "islower", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "isspace": MethodInfo { class_name: "PikaStdData_String", name: "isspace", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "replace": MethodInfo { class_name: "PikaStdData_String", name: "replace", arg_list: Some(ArgList { py_arg_list: "old:str,new:str", list: [PyArg { py_type: PyType { type_name: "str" }, name: "old" }, PyArg { py_type: PyType { type_name: "str" }, name: "new" }] }), return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "set": MethodInfo { class_name: "PikaStdData_String", name: "set", arg_list: Some(ArgList { py_arg_list: "s:str", list: [PyArg { py_type: PyType { type_name: "str" }, name: "s" }] }), return_type: None, is_constructor: false }, "split": MethodInfo { class_name: "PikaStdData_String", name: "split", arg_list: Some(ArgList { py_arg_list: "s:str", list: [PyArg { py_type: PyType { type_name: "str" }, name: "s" }] }), return_type: Some(PyType { type_name: "List" }), is_constructor: false }, "startwith": MethodInfo { class_name: "PikaStdData_String", name: "startwith", arg_list: Some(ArgList { py_arg_list: "prefix:str", list: [PyArg { py_type: PyType { type_name: "str" }, name: "prefix" }] }), return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "strip": MethodInfo { class_name: "PikaStdData_String", name: "strip", arg_list: None, return_type: Some(PyType { type_name: "str" }), is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdData_Tuple": ClassInfo { this_class_name: "PikaStdData_Tuple", this_class_name_without_file: "Tuple", super_class_name: "TinyObj", method_list: {"__del__": MethodInfo { class_name: "PikaStdData_Tuple", name: "__del__", arg_list: None, return_type: None, is_constructor: false }, "__getitem__": MethodInfo { class_name: "PikaStdData_Tuple", name: "__getitem__", arg_list: Some(ArgList { py_arg_list: "__key:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "__key" }] }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__init__": MethodInfo { class_name: "PikaStdData_Tuple", name: "__init__", arg_list: None, return_type: None, is_constructor: false }, "__iter__": MethodInfo { class_name: "PikaStdData_Tuple", name: "__iter__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__len__": MethodInfo { class_name: "PikaStdData_Tuple", name: "__len__", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "__next__": MethodInfo { class_name: "PikaStdData_Tuple", name: "__next__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__str__": MethodInfo { class_name: "PikaStdData_Tuple", name: "__str__", arg_list: None, return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "get": MethodInfo { class_name: "PikaStdData_Tuple", name: "get", arg_list: Some(ArgList { py_arg_list: "i:int", list: [PyArg { py_type: PyType { type_name: "int" }, name: "i" }] }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "len": MethodInfo { class_name: "PikaStdData_Tuple", name: "len", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdData_Utils": ClassInfo { this_class_name: "PikaStdData_Utils", this_class_name_without_file: "Utils", super_class_name: "TinyObj", method_list: {"int_to_bytes": MethodInfo { class_name: "PikaStdData_Utils", name: "int_to_bytes", arg_list: Some(ArgList { py_arg_list: "val:int", list: [PyArg { py_type: PyType { type_name: "int" }, name: "val" }] }), return_type: Some(PyType { type_name: "bytes" }), is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdData_dict_keys": ClassInfo { this_class_name: "PikaStdData_dict_keys", this_class_name_without_file: "dict_keys", super_class_name: "TinyObj", method_list: {"__iter__": MethodInfo { class_name: "PikaStdData_dict_keys", name: "__iter__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__len__": MethodInfo { class_name: "PikaStdData_dict_keys", name: "__len__", arg_list: None, return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "__next__": MethodInfo { class_name: "PikaStdData_dict_keys", name: "__next__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__str__": MethodInfo { class_name: "PikaStdData_dict_keys", name: "__str__", arg_list: None, return_type: Some(PyType { type_name: "str" }), is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdLib": ClassInfo { this_class_name: "PikaStdLib", this_class_name_without_file: "PikaStdLib", super_class_name: "TinyObj", method_list: {"MemChecker": MethodInfo { class_name: "PikaStdLib", name: "MemChecker", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "PikaObj": MethodInfo { class_name: "PikaStdLib", name: "PikaObj", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "RangeObj": MethodInfo { class_name: "PikaStdLib", name: "RangeObj", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "StringObj": MethodInfo { class_name: "PikaStdLib", name: "StringObj", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }, "SysObj": MethodInfo { class_name: "PikaStdLib", name: "SysObj", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: true }, "PikaStdLib_MemChecker": ClassInfo { this_class_name: "PikaStdLib_MemChecker", this_class_name_without_file: "MemChecker", super_class_name: "TinyObj", method_list: {"getMax": MethodInfo { class_name: "PikaStdLib_MemChecker", name: "getMax", arg_list: None, return_type: Some(PyType { type_name: "float" }), is_constructor: false }, "getNow": MethodInfo { class_name: "PikaStdLib_MemChecker", name: "getNow", arg_list: None, return_type: Some(PyType { type_name: "float" }), is_constructor: false }, "max": MethodInfo { class_name: "PikaStdLib_MemChecker", name: "max", arg_list: None, return_type: None, is_constructor: false }, "now": MethodInfo { class_name: "PikaStdLib_MemChecker", name: "now", arg_list: None, return_type: None, is_constructor: false }, "resetMax": MethodInfo { class_name: "PikaStdLib_MemChecker", name: "resetMax", arg_list: None, return_type: None, is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdLib_PikaObj": ClassInfo { this_class_name: "PikaStdLib_PikaObj", this_class_name_without_file: "PikaObj", super_class_name: "TinyObj", method_list: {}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdLib_RangeObj": ClassInfo { this_class_name: "PikaStdLib_RangeObj", this_class_name_without_file: "RangeObj", super_class_name: "TinyObj", method_list: {"__next__": MethodInfo { class_name: "PikaStdLib_RangeObj", name: "__next__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdLib_StringObj": ClassInfo { this_class_name: "PikaStdLib_StringObj", this_class_name_without_file: "StringObj", super_class_name: "TinyObj", method_list: {"__next__": MethodInfo { class_name: "PikaStdLib_StringObj", name: "__next__", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdLib_SysObj": ClassInfo { this_class_name: "PikaStdLib_SysObj", this_class_name_without_file: "SysObj", super_class_name: "TinyObj", method_list: {"__getitem__": MethodInfo { class_name: "PikaStdLib_SysObj", name: "__getitem__", arg_list: Some(ArgList { py_arg_list: "obj:any,key:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "obj" }, PyArg { py_type: PyType { type_name: "any" }, name: "key" }] }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__setitem__": MethodInfo { class_name: "PikaStdLib_SysObj", name: "__setitem__", arg_list: Some(ArgList { py_arg_list: "obj:any,key:any,val:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "obj" }, PyArg { py_type: PyType { type_name: "any" }, name: "key" }, PyArg { py_type: PyType { type_name: "any" }, name: "val" }] }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "__slice__": MethodInfo { class_name: "PikaStdLib_SysObj", name: "__slice__", arg_list: Some(ArgList { py_arg_list: "obj:any,start:any,end:any,step:int", list: [PyArg { py_type: PyType { type_name: "any" }, name: "obj" }, PyArg { py_type: PyType { type_name: "any" }, name: "start" }, PyArg { py_type: PyType { type_name: "any" }, name: "end" }, PyArg { py_type: PyType { type_name: "int" }, name: "step" }] }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "bytes": MethodInfo { class_name: "PikaStdLib_SysObj", name: "bytes", arg_list: Some(ArgList { py_arg_list: "val:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "val" }] }), return_type: Some(PyType { type_name: "bytes" }), is_constructor: false }, "cformat": MethodInfo { class_name: "PikaStdLib_SysObj", name: "cformat", arg_list: Some(ArgList { py_arg_list: "fmt:str,*var", list: [PyArg { py_type: PyType { type_name: "str" }, name: "fmt" }, PyArg { py_type: PyType { type_name: "@tupleVarPar" }, name: "var" }] }), return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "chr": MethodInfo { class_name: "PikaStdLib_SysObj", name: "chr", arg_list: Some(ArgList { py_arg_list: "val:int", list: [PyArg { py_type: PyType { type_name: "int" }, name: "val" }] }), return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "dict": MethodInfo { class_name: "PikaStdLib_SysObj", name: "dict", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "float": MethodInfo { class_name: "PikaStdLib_SysObj", name: "float", arg_list: Some(ArgList { py_arg_list: "arg:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "arg" }] }), return_type: Some(PyType { type_name: "float" }), is_constructor: false }, "hex": MethodInfo { class_name: "PikaStdLib_SysObj", name: "hex", arg_list: Some(ArgList { py_arg_list: "val:int", list: [PyArg { py_type: PyType { type_name: "int" }, name: "val" }] }), return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "id": MethodInfo { class_name: "PikaStdLib_SysObj", name: "id", arg_list: Some(ArgList { py_arg_list: "obj:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "obj" }] }), return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "int": MethodInfo { class_name: "PikaStdLib_SysObj", name: "int", arg_list: Some(ArgList { py_arg_list: "arg:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "arg" }] }), return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "iter": MethodInfo { class_name: "PikaStdLib_SysObj", name: "iter", arg_list: Some(ArgList { py_arg_list: "arg:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "arg" }] }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "len": MethodInfo { class_name: "PikaStdLib_SysObj", name: "len", arg_list: Some(ArgList { py_arg_list: "arg:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "arg" }] }), return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "list": MethodInfo { class_name: "PikaStdLib_SysObj", name: "list", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "open": MethodInfo { class_name: "PikaStdLib_SysObj", name: "open", arg_list: Some(ArgList { py_arg_list: "path:str,mode:str", list: [PyArg { py_type: PyType { type_name: "str" }, name: "path" }, PyArg { py_type: PyType { type_name: "str" }, name: "mode" }] }), return_type: Some(PyType { type_name: "object" }), is_constructor: false }, "ord": MethodInfo { class_name: "PikaStdLib_SysObj", name: "ord", arg_list: Some(ArgList { py_arg_list: "val:str", list: [PyArg { py_type: PyType { type_name: "str" }, name: "val" }] }), return_type: Some(PyType { type_name: "int" }), is_constructor: false }, "print": MethodInfo { class_name: "PikaStdLib_SysObj", name: "print", arg_list: Some(ArgList { py_arg_list: "*val", list: [PyArg { py_type: PyType { type_name: "@tupleVarPar" }, name: "val" }] }), return_type: None, is_constructor: false }, "printNoEnd": MethodInfo { class_name: "PikaStdLib_SysObj", name: "printNoEnd", arg_list: Some(ArgList { py_arg_list: "val:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "val" }] }), return_type: None, is_constructor: false }, "range": MethodInfo { class_name: "PikaStdLib_SysObj", name: "range", arg_list: Some(ArgList { py_arg_list: "a1:int,a2:int", list: [PyArg { py_type: PyType { type_name: "int" }, name: "a1" }, PyArg { py_type: PyType { type_name: "int" }, name: "a2" }] }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }, "remove": MethodInfo { class_name: "PikaStdLib_SysObj", name: "remove", arg_list: Some(ArgList { py_arg_list: "argPath:str", list: [PyArg { py_type: PyType { type_name: "str" }, name: "argPath" }] }), return_type: None, is_constructor: false }, "str": MethodInfo { class_name: "PikaStdLib_SysObj", name: "str", arg_list: Some(ArgList { py_arg_list: "arg:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "arg" }] }), return_type: Some(PyType { type_name: "str" }), is_constructor: false }, "type": MethodInfo { class_name: "PikaStdLib_SysObj", name: "type", arg_list: Some(ArgList { py_arg_list: "arg:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "arg" }] }), return_type: Some(PyType { type_name: "any" }), is_constructor: false }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: false }, "PikaStdTask": ClassInfo { this_class_name: "PikaStdTask", this_class_name_without_file: "PikaStdTask", super_class_name: "TinyObj", method_list: {"Task": MethodInfo { class_name: "PikaStdTask", name: "Task", arg_list: None, return_type: Some(PyType { type_name: "any" }), is_constructor: true }}, object_list: {}, import_list: {}, script_list: Script { content: "" }, is_package: true }, "PikaStdTask_Task": ClassInfo { this_class_name: "PikaStdTask_Task", this_class_name_without_file: "Task", super_class_name: "PikaStdLib_SysObj", method_list: {"__init__": MethodInfo { class_name: "PikaStdTask_Task", name: "__init__", arg_list: None, return_type: None, is_constructor: false }, "call_always": MethodInfo { class_name: "PikaStdTask_Task", name: "call_always", arg_list: Some(ArgList { py_arg_list: "fun_todo:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "fun_todo" }] }), return_type: None, is_constructor: false }, "call_period_ms": MethodInfo { class_name: "PikaStdTask_Task", name: "call_period_ms", arg_list: Some(ArgList { py_arg_list: "fun_todo:any,period_ms:int", list: [PyArg { py_type: PyType { type_name: "any" }, name: "fun_todo" }, PyArg { py_type: PyType { type_name: "int" }, name: "period_ms" }] }), return_type: None, is_constructor: false }, "call_when": MethodInfo { class_name: "PikaStdTask_Task", name: "call_when", arg_list: Some(ArgList { py_arg_list: "fun_todo:any,fun_when:any", list: [PyArg { py_type: PyType { type_name: "any" }, name: "fun_todo" }, PyArg { py_type: PyType { type_name: "any" }, name: "fun_when" }] }), return_type: None, is_constructor: false }, "platformGetTick": MethodInfo { class_name: "PikaStdTask_Task", name: "platformGetTick", arg_list: None, return_type: None, is_constructor: false }, "run_forever": MethodInfo { class_name: "PikaStdTask_Task", name: "run_forever", arg_list: None, return_type: None, is_constructor: false }, "run_once": MethodInfo { class_name: "PikaStdTask_Task", name: "run_once", arg_list: None, return_type: None, is_constructor: false }, "run_until_ms": MethodInfo { class_name: "PikaStdTask_Task", name: "run_until_ms", arg_list: Some(ArgList { py_arg_list: "until_ms:int", list: [PyArg { py_type: PyType { type_name: "int" }, name: "until_ms" }] }), return_type: None, is_constructor: false }}, object_list: {"calls": ObjectInfo { class_name: "PikaStdTask_Task", name: "calls", import_class_name: "PikaStdData_List" }}, import_list: {}, script_list: Script { content: "" }, is_package: false }}, class_now_name: Some("PikaDebug_Debuger"), package_now_name: Some("PikaDebug"), compiled_list: ["main", "PikaStdLib", "PikaStdLib", "PikaStdTask", "PikaStdData", "PikaStdLib", "PikaStdData", "PikaDebug"] }
\ No newline at end of file
diff --git a/port/cmsis-pack/pikascript/pikascript-api/pikaScript.c b/port/cmsis-pack/pikascript/pikascript-api/pikaScript.c
index 39b2f594b..64a6bdee2 100644
--- a/port/cmsis-pack/pikascript/pikascript-api/pikaScript.c
+++ b/port/cmsis-pack/pikascript/pikascript-api/pikaScript.c
@@ -8,8 +8,8 @@
PikaObj *__pikaMain;
PikaObj *pikaScriptInit(void){
__platform_printf("======[pikascript packages installed]======\r\n");
- __platform_printf("PikaStdLib==v1.8.7\r\n");
- __platform_printf("pikascript-core==v1.8.7\r\n");
+ pks_printVersion();
+ __platform_printf("PikaStdLib==v1.10.0\r\n");
__platform_printf("===========================================\r\n");
__pikaMain = newRootObj("pikaMain", New_PikaMain);
extern unsigned char pikaModules_py_a[];
diff --git a/port/cmsis-pack/pikascript/pikascript-core/PikaCompiler.c b/port/cmsis-pack/pikascript/pikascript-core/PikaCompiler.c
index e38157984..071d29a6f 100644
--- a/port/cmsis-pack/pikascript/pikascript-core/PikaCompiler.c
+++ b/port/cmsis-pack/pikascript/pikascript-core/PikaCompiler.c
@@ -371,7 +371,7 @@ int Lib_loadLibraryFileToArray(char* origin_file_name, char* out_folder) {
FILE* fp = __platform_fopen(output_file_path, "wb+");
char* array_name = strsGetLastToken(&buffs, origin_file_name, '/');
array_name = strsReplace(&buffs, array_name, ".", "_");
- __platform_printf(" loading %s[]...\n", array_name);
+ __platform_printf(" loading %s[]...\n", array_name);
pika_fputs("#include \"PikaPlatform.h\"\n", fp);
pika_fputs("/* warning: auto generated file, please do not modify */\n",
fp);
@@ -404,7 +404,7 @@ static void __Maker_compileModuleWithInfo(PikaMaker* self, char* module_name) {
char* input_file_name = strsAppend(&buffs, module_name, ".py");
char* input_file_path =
strsAppend(&buffs, obj_getStr(self, "pwd"), input_file_name);
- __platform_printf(" compiling %s...\r\n", input_file_name);
+ __platform_printf(" compiling %s...\r\n", input_file_name);
char* output_file_name = strsAppend(&buffs, module_name, ".py.o");
char* output_file_path = NULL;
output_file_path =
@@ -587,20 +587,30 @@ int32_t __foreach_handler_linkCompiledModules(Arg* argEach, Args* context) {
return 0;
}
-void pikaMaker_linkCompiledModules(PikaMaker* self, char* lib_name) {
+void pikaMaker_linkCompiledModulesFullPath(PikaMaker* self, char* lib_path) {
Args context = {0};
LibObj* lib = New_LibObj(NULL);
Args buffs = {0};
- __platform_printf(" linking %s...\n", lib_name);
+ __platform_printf(" linking %s...\n", lib_path);
args_setPtr(&context, "__lib", lib);
args_setPtr(&context, "__maker", self);
args_foreach(self->list, __foreach_handler_linkCompiledModules, &context);
args_deinit_stack(&context);
char* pwd = obj_getStr(self, "pwd");
- char* folder_path = strsAppend(&buffs, pwd, "pikascript-api/");
- char* lib_file_path = strsAppend(&buffs, folder_path, lib_name);
+ char* lib_path_folder = strsCopy(&buffs, lib_path);
+ strPopLastToken(lib_path_folder, '/');
+ char* folder_path = strsAppend(&buffs, pwd, lib_path_folder);
+ folder_path = strsAppend(&buffs, folder_path, "/");
+ char* lib_file_path = strsAppend(&buffs, pwd, lib_path);
LibObj_saveLibraryFile(lib, lib_file_path);
Lib_loadLibraryFileToArray(lib_file_path, folder_path);
LibObj_deinit(lib);
strsDeinit(&buffs);
}
+
+void pikaMaker_linkCompiledModules(PikaMaker* self, char* lib_name) {
+ Args buffs = {0};
+ char* lib_file_path = strsAppend(&buffs, "pikascript-api/", lib_name);
+ pikaMaker_linkCompiledModulesFullPath(self, lib_file_path);
+ strsDeinit(&buffs);
+}
diff --git a/port/cmsis-pack/pikascript/pikascript-core/PikaCompiler.h b/port/cmsis-pack/pikascript/pikascript-core/PikaCompiler.h
index c51d99f21..09e8794a9 100644
--- a/port/cmsis-pack/pikascript/pikascript-core/PikaCompiler.h
+++ b/port/cmsis-pack/pikascript/pikascript-core/PikaCompiler.h
@@ -29,6 +29,7 @@ char* pikaMaker_getFirstNocompiled(PikaMaker* self);
void pikaMaker_compileModuleWithDepends(PikaMaker* self, char* module_name);
void pikaMaker_linkCompiledModules(PikaMaker* self, char* lib_name);
int LibObj_loadLibrary(LibObj* self, uint8_t* library_bytes);
+void pikaMaker_linkCompiledModulesFullPath(PikaMaker* self, char* lib_path);
#define LIB_VERSION_NUMBER 1
#define LIB_INFO_BLOCK_SIZE 32
diff --git a/port/cmsis-pack/pikascript/pikascript-core/PikaObj.c b/port/cmsis-pack/pikascript/pikascript-core/PikaObj.c
index 47cbac0bf..ebdc3a621 100644
--- a/port/cmsis-pack/pikascript/pikascript-core/PikaObj.c
+++ b/port/cmsis-pack/pikascript/pikascript-core/PikaObj.c
@@ -122,75 +122,68 @@ int32_t obj_deinit(PikaObj* self) {
return obj_deinit_no_del(self);
}
-int32_t obj_enable(PikaObj* self) {
- obj_setInt(self, "isEnable", 1);
- return 0;
-}
-
-int32_t obj_disable(PikaObj* self) {
- obj_setInt(self, "isEnable", 0);
- return 0;
-}
-
-int32_t obj_setInt(PikaObj* self, char* argPath, int64_t val) {
+PIKA_RES obj_setInt(PikaObj* self, char* argPath, int64_t val) {
PikaObj* obj = obj_getHostObj(self, argPath);
if (NULL == obj) {
/* [error] object no found */
- return 1;
+ return PIKA_RES_ERR_ARG_NO_FOUND;
}
char* name = strPointToLastToken(argPath, '.');
args_setInt(obj->list, name, val);
- return 0;
+ return PIKA_RES_OK;
}
-int32_t obj_setPtr(PikaObj* self, char* argPath, void* pointer) {
+PIKA_RES obj_setPtr(PikaObj* self, char* argPath, void* pointer) {
PikaObj* obj = obj_getHostObj(self, argPath);
if (NULL == obj) {
- return 1;
+ /* [error] object no found */
+ return PIKA_RES_ERR_ARG_NO_FOUND;
}
char* name = strPointToLastToken(argPath, '.');
args_setPtr(obj->list, name, pointer);
- return 0;
+ return PIKA_RES_OK;
}
-int32_t obj_setRef(PikaObj* self, char* argPath, void* pointer) {
+PIKA_RES obj_setRef(PikaObj* self, char* argPath, void* pointer) {
PikaObj* obj = obj_getHostObj(self, argPath);
if (NULL == obj) {
- return 1;
+ /* [error] object no found */
+ return PIKA_RES_ERR_ARG_NO_FOUND;
}
char* name = strPointToLastToken(argPath, '.');
args_setRef(obj->list, name, pointer);
- return 0;
+ return PIKA_RES_OK;
}
-int32_t obj_setFloat(PikaObj* self, char* argPath, double value) {
+PIKA_RES obj_setFloat(PikaObj* self, char* argPath, double value) {
PikaObj* obj = obj_getHostObj(self, argPath);
if (NULL == obj) {
- return 1;
+ /* [error] object no found */
+ return PIKA_RES_ERR_ARG_NO_FOUND;
}
char* name = strPointToLastToken(argPath, '.');
args_setFloat(obj->list, name, value);
- return 0;
+ return PIKA_RES_OK;
}
-int32_t obj_setStr(PikaObj* self, char* argPath, char* str) {
+PIKA_RES obj_setStr(PikaObj* self, char* argPath, char* str) {
PikaObj* obj = obj_getHostObj(self, argPath);
if (NULL == obj) {
- return 1;
+ return PIKA_RES_ERR_ARG_NO_FOUND;
}
char* name = strPointToLastToken(argPath, '.');
args_setStr(obj->list, name, str);
- return 0;
+ return PIKA_RES_OK;
}
-int32_t obj_setBytes(PikaObj* self, char* argPath, uint8_t* src, size_t size) {
+PIKA_RES obj_setBytes(PikaObj* self, char* argPath, uint8_t* src, size_t size) {
PikaObj* obj = obj_getHostObj(self, argPath);
if (NULL == obj) {
- return 1;
+ return PIKA_RES_ERR_ARG_NO_FOUND;
}
char* name = strPointToLastToken(argPath, '.');
args_setBytes(obj->list, name, src, size);
- return 0;
+ return PIKA_RES_OK;
}
int64_t obj_getInt(PikaObj* self, char* argPath) {
@@ -204,12 +197,18 @@ int64_t obj_getInt(PikaObj* self, char* argPath) {
}
Arg* obj_getArg(PikaObj* self, char* argPath) {
- PikaObj* obj = obj_getHostObj(self, argPath);
+ PIKA_BOOL isClass = PIKA_FALSE;
+ PikaObj* obj = obj_getHostObjWithIsClass(self, argPath, &isClass);
if (NULL == obj) {
return NULL;
}
char* argName = strPointToLastToken(argPath, '.');
Arg* res = args_getArg(obj->list, argName);
+ if (isClass) {
+ obj_setArg(self, "_buf", res);
+ res = obj_getArg(self, "_buf");
+ obj_deinit(obj);
+ }
return res;
}
@@ -244,7 +243,7 @@ size_t obj_loadBytes(PikaObj* self, char* argPath, uint8_t* out_buff) {
return size_mem;
}
-static int32_t __obj_setArg(PikaObj* self,
+static PIKA_RES __obj_setArg(PikaObj* self,
char* argPath,
Arg* arg,
uint8_t is_copy) {
@@ -252,7 +251,7 @@ static int32_t __obj_setArg(PikaObj* self,
PikaObj* obj = obj_getHostObj(self, argPath);
if (NULL == obj) {
/* object no found */
- return 1;
+ return PIKA_RES_ERR_ARG_NO_FOUND;
}
char* argName = strPointToLastToken(argPath, '.');
Arg* newArg;
@@ -263,14 +262,14 @@ static int32_t __obj_setArg(PikaObj* self,
}
newArg = arg_setName(newArg, argName);
args_setArg(obj->list, newArg);
- return 0;
+ return PIKA_RES_OK;
}
-int32_t obj_setArg(PikaObj* self, char* argPath, Arg* arg) {
+PIKA_RES obj_setArg(PikaObj* self, char* argPath, Arg* arg) {
return __obj_setArg(self, argPath, arg, 1);
};
-int32_t obj_setArg_noCopy(PikaObj* self, char* argPath, Arg* arg) {
+PIKA_RES obj_setArg_noCopy(PikaObj* self, char* argPath, Arg* arg) {
return __obj_setArg(self, argPath, arg, 0);
}
@@ -304,42 +303,24 @@ char* obj_getStr(PikaObj* self, char* argPath) {
return res;
}
-int32_t obj_load(PikaObj* self, Args* args, char* name) {
- args_copyArgByName(args, name, self->list);
- return 0;
-}
-
-int32_t obj_freeObj(PikaObj* self, char* objPath) {
- PikaObj* obj = obj_getPtr(self, objPath);
- obj_deinit(obj);
- return 0;
-}
-
-char* obj_print(PikaObj* self, char* name) {
- if (NULL == self) {
- return NULL;
- }
- return args_print(self->list, name);
-}
-
PikaObj* obj_getClassObjByNewFun(PikaObj* context,
char* name,
NewFun newClassFun) {
Args* initArgs = New_args(NULL);
PikaObj* thisClass = newClassFun(initArgs);
- obj_setPtr(thisClass, "_clsptr", (void*)newClassFun);
- obj_setInt(thisClass, "_refcnt", 0);
+ thisClass->constructor = newClassFun;
+ thisClass->refcnt = 0;
args_deinit(initArgs);
return thisClass;
}
-Arg* obj_getMethodArg(PikaObj* obj, char* methodPath) {
+Arg* _obj_getMethodArg(PikaObj* obj, char* methodPath, Arg* arg_reg) {
Arg* method = NULL;
char* methodName = strPointToLastToken(methodPath, '.');
method = obj_getArg(obj, methodName);
PikaObj* methodHostClass;
if (NULL != method) {
- method = arg_copy(method);
+ method = arg_copy_noalloc(method, arg_reg);
goto exit;
}
methodHostClass = obj_getClassObj(obj);
@@ -347,14 +328,26 @@ Arg* obj_getMethodArg(PikaObj* obj, char* methodPath) {
method = NULL;
goto exit;
}
- method = arg_copy(obj_getArg(methodHostClass, methodName));
+ method = arg_copy_noalloc(obj_getArg(methodHostClass, methodName), arg_reg);
obj_deinit_no_del(methodHostClass);
exit:
return method;
}
+Arg* obj_getMethodArg(PikaObj* obj, char* methodPath) {
+ return _obj_getMethodArg(obj, methodPath, NULL);
+}
+
+Arg* obj_getMethodArg_noalloc(PikaObj* obj, char* methodPath, Arg* arg_reg) {
+ return _obj_getMethodArg(obj, methodPath, arg_reg);
+}
+
+NewFun obj_getClass(PikaObj* obj) {
+ return (NewFun)obj->constructor;
+}
+
PikaObj* obj_getClassObj(PikaObj* obj) {
- NewFun classPtr = (NewFun)obj_getPtr(obj, "_clsptr");
+ NewFun classPtr = obj_getClass(obj);
if (NULL == classPtr) {
return NULL;
}
@@ -393,15 +386,14 @@ PikaObj* newNormalObj(NewFun newObjFun) {
extern PikaObj* __pikaMain;
PikaObj* newRootObj(char* name, NewFun newObjFun) {
+#if PIKA_POOL_ENABLE
+ mem_pool_init();
+#endif
PikaObj* newObj = newNormalObj(newObjFun);
__pikaMain = newObj;
return newObj;
}
-Arg* obj_getRefArg(PikaObj* self) {
- return arg_setPtr(NULL, "", ARG_TYPE_OBJECT_NEW, self);
-}
-
Arg* arg_newMetaObj(NewFun new_obj_fun) {
Arg* arg_new = New_arg(NULL);
/* m means meta-object */
@@ -411,7 +403,7 @@ Arg* arg_newMetaObj(NewFun new_obj_fun) {
Arg* arg_newDirectObj(NewFun new_obj_fun) {
PikaObj* newObj = newNormalObj(new_obj_fun);
- Arg* arg_new = arg_setPtr(NULL, "", ARG_TYPE_OBJECT_NEW, newObj);
+ Arg* arg_new = arg_newPtr(ARG_TYPE_OBJECT_NEW, newObj);
return arg_new;
}
@@ -442,7 +434,10 @@ exit:
return res;
}
-static PikaObj* __obj_getObjDirect(PikaObj* self, char* name) {
+static PikaObj* __obj_getObjDirect(PikaObj* self,
+ char* name,
+ PIKA_BOOL* pIsClass) {
+ *pIsClass = PIKA_FALSE;
if (NULL == self) {
return NULL;
}
@@ -456,11 +451,27 @@ static PikaObj* __obj_getObjDirect(PikaObj* self, char* name) {
if (argType_isObject(type)) {
return args_getPtr(self->list, name);
}
+ /* found class */
+ if (type == ARG_TYPE_METHOD_NATIVE_CONSTRUCTOR ||
+ type == ARG_TYPE_METHOD_CONSTRUCTOR) {
+ *pIsClass = PIKA_TRUE;
+ PikaObj* method_args_obj = New_TinyObj(NULL);
+ Arg* cls_obj_arg = obj_runMethodArg(self, method_args_obj,
+ args_getArg(self->list, name));
+ obj_deinit(method_args_obj);
+ if (type == ARG_TYPE_METHOD_NATIVE_CONSTRUCTOR) {
+ obj_runNativeMethod(arg_getPtr(cls_obj_arg), "__init__", NULL);
+ }
+ PikaObj* res = arg_getPtr(cls_obj_arg);
+ arg_deinit(cls_obj_arg);
+ return res;
+ }
return NULL;
}
static PikaObj* __obj_getObjWithKeepDeepth(PikaObj* self,
char* objPath,
+ PIKA_BOOL* pIsClass,
int32_t keepDeepth) {
char objPath_buff[PIKA_PATH_BUFF_SIZE];
__platform_memcpy(objPath_buff, objPath, strGetSize(objPath) + 1);
@@ -469,7 +480,7 @@ static PikaObj* __obj_getObjWithKeepDeepth(PikaObj* self,
PikaObj* obj = self;
for (int32_t i = 0; i < token_num - keepDeepth; i++) {
char* token = strPopToken(token_buff, objPath_buff, '.');
- obj = __obj_getObjDirect(obj, token);
+ obj = __obj_getObjDirect(obj, token, pIsClass);
if (obj == NULL) {
goto exit;
}
@@ -480,11 +491,19 @@ exit:
}
PikaObj* obj_getObj(PikaObj* self, char* objPath) {
- return __obj_getObjWithKeepDeepth(self, objPath, 0);
+ PIKA_BOOL isClass = PIKA_FALSE;
+ return __obj_getObjWithKeepDeepth(self, objPath, &isClass, 0);
}
PikaObj* obj_getHostObj(PikaObj* self, char* objPath) {
- return __obj_getObjWithKeepDeepth(self, objPath, 1);
+ PIKA_BOOL isClass = PIKA_FALSE;
+ return __obj_getObjWithKeepDeepth(self, objPath, &isClass, 1);
+}
+
+PikaObj* obj_getHostObjWithIsClass(PikaObj* self,
+ char* objPath,
+ PIKA_BOOL* pIsClass) {
+ return __obj_getObjWithKeepDeepth(self, objPath, pIsClass, 1);
}
Method methodArg_getPtr(Arg* method_arg) {
@@ -495,9 +514,12 @@ Method methodArg_getPtr(Arg* method_arg) {
return (Method)ptr;
}
-char* methodArg_getTypeList(Arg* method_arg, Args* buffs) {
- char* method_dec = strsCopy(buffs, methodArg_getDec(method_arg));
- return strsCut(buffs, method_dec, '(', ')');
+char* methodArg_getTypeList(Arg* method_arg, char* buffs, size_t size) {
+ char* method_dec = strCopy(buffs, methodArg_getDec(method_arg));
+ if (strGetSize(method_dec) > size) {
+ return NULL;
+ }
+ return strCut(buffs, method_dec, '(', ')');
}
Method obj_getNativeMethod(PikaObj* self, char* method_name) {
@@ -521,7 +543,15 @@ ByteCodeFrame* methodArg_getBytecodeFrame(Arg* method_arg) {
char* methodArg_getDec(Arg* method_arg) {
uint32_t size_ptr = sizeof(void*);
void* info = arg_getContent(method_arg);
- return (char*)((uintptr_t)info + 2 * size_ptr);
+ return (char*)((uintptr_t)info + 3 * size_ptr);
+}
+
+PikaObj* methodArg_getDefContext(Arg* method_arg) {
+ uint32_t size_ptr = sizeof(void*);
+ void* info = arg_getContent(method_arg) + 2 * size_ptr;
+ PikaObj* context = NULL;
+ __platform_memcpy(&context, info, size_ptr);
+ return context;
}
static void obj_saveMethodInfo(PikaObj* self, MethodInfo* method_info) {
@@ -532,11 +562,17 @@ static void obj_saveMethodInfo(PikaObj* self, MethodInfo* method_info) {
uint32_t size_pars = strGetSize(pars);
uintptr_t method_info_bytecode_frame =
(uintptr_t)method_info->bytecode_frame;
+ uintptr_t method_info_def_context = (uintptr_t)method_info->def_context;
+ /* the first arg_value */
arg =
arg_setPtr(arg, method_info->name, method_info->type, method_info->ptr);
+ /* the seconed */
arg = arg_append(arg, &(method_info_bytecode_frame),
sizeof(method_info_bytecode_frame));
+ arg = arg_append(arg, &(method_info_def_context),
+ sizeof(method_info_def_context));
arg = arg_append(arg, method_info->pars, size_pars + 1);
+
args_setArg(self->list, arg);
strsDeinit(&buffs);
}
@@ -545,6 +581,7 @@ static int32_t __class_defineMethodWithType(PikaObj* self,
char* declearation,
Method method_ptr,
ArgType method_type,
+ PikaObj* def_context,
ByteCodeFrame* bytecode_frame) {
int32_t size = strGetSize(declearation);
int32_t res = 0;
@@ -567,6 +604,7 @@ static int32_t __class_defineMethodWithType(PikaObj* self,
method_info.name = method_name;
method_info.ptr = (void*)method_ptr;
method_info.type = method_type;
+ method_info.def_context = def_context;
method_info.bytecode_frame = bytecode_frame;
obj_saveMethodInfo(method_host, &method_info);
res = 0;
@@ -582,7 +620,7 @@ int32_t class_defineConstructor(PikaObj* self,
Method methodPtr) {
return __class_defineMethodWithType(self, declearation, methodPtr,
ARG_TYPE_METHOD_NATIVE_CONSTRUCTOR,
- NULL);
+ NULL, NULL);
}
/* define a native method as default */
@@ -590,35 +628,40 @@ int32_t class_defineMethod(PikaObj* self,
char* declearation,
Method methodPtr) {
return __class_defineMethodWithType(self, declearation, methodPtr,
- ARG_TYPE_METHOD_NATIVE, NULL);
+ ARG_TYPE_METHOD_NATIVE, NULL, NULL);
}
/* define object method, object method is which startwith (self) */
int32_t class_defineRunTimeConstructor(PikaObj* self,
char* declearation,
Method methodPtr,
+ PikaObj* def_context,
ByteCodeFrame* bytecode_frame) {
return __class_defineMethodWithType(self, declearation, methodPtr,
ARG_TYPE_METHOD_CONSTRUCTOR,
- bytecode_frame);
+ def_context, bytecode_frame);
}
/* define object method, object method is which startwith (self) */
int32_t class_defineObjectMethod(PikaObj* self,
char* declearation,
Method methodPtr,
+ PikaObj* def_context,
ByteCodeFrame* bytecode_frame) {
return __class_defineMethodWithType(self, declearation, methodPtr,
- ARG_TYPE_METHOD_OBJECT, bytecode_frame);
+ ARG_TYPE_METHOD_OBJECT, def_context,
+ bytecode_frame);
}
/* define a static method as default */
int32_t class_defineStaticMethod(PikaObj* self,
char* declearation,
Method methodPtr,
+ PikaObj* def_context,
ByteCodeFrame* bytecode_frame) {
return __class_defineMethodWithType(self, declearation, methodPtr,
- ARG_TYPE_METHOD_STATIC, bytecode_frame);
+ ARG_TYPE_METHOD_STATIC, def_context,
+ bytecode_frame);
}
VMParameters* obj_runDirect(PikaObj* self, char* cmd) {
@@ -681,12 +724,13 @@ void obj_run(PikaObj* self, char* cmd) {
obj_runDirect(self, cmd);
}
-void obj_runNativeMethod(PikaObj* self, char* method_name, Args* args) {
+PIKA_RES obj_runNativeMethod(PikaObj* self, char* method_name, Args* args) {
Method native_method = obj_getNativeMethod(self, method_name);
if (NULL == native_method) {
- return;
+ return PIKA_RES_ERR_ARG_NO_FOUND;
}
native_method(self, args);
+ return PIKA_RES_OK;
}
static void __clearBuff(char* buff, int size) {
@@ -706,7 +750,8 @@ static void __obj_runCharBeforeRun(PikaObj* self) {
enum shell_state obj_runChar(PikaObj* self, char inputChar) {
struct shell_config* cfg = args_getStruct(self->list, "__shcfg");
- __obj_shellLineHandler_t __lineHandler_fun = obj_getPtr(self, "__shhdl");
+ __obj_shellLineHandler_t __lineHandler_fun =
+ (__obj_shellLineHandler_t)obj_getPtr(self, "__shhdl");
char* rxBuff = (char*)obj_getBytes(self, "__shbuf");
char* input_line = NULL;
int is_in_block = obj_getInt(self, "__shinb");
@@ -841,10 +886,6 @@ int32_t obj_getErrorCode(PikaObj* self) {
return obj_getInt(self, "__errCode");
}
-void args_setErrorCode(Args* args, int32_t errCode) {
- args_setInt(args, "__errCode", errCode);
-}
-
int32_t args_getErrorCode(Args* args) {
if (!args_isArgExist(args, "__errCode")) {
return 0;
@@ -860,10 +901,6 @@ char* obj_getSysOut(PikaObj* self) {
return obj_getStr(self, "__sysOut");
}
-char* args_getSysOut(Args* args) {
- return args_getStr(args, "__sysOut");
-}
-
void args_setSysOut(Args* args, char* str) {
// args_setStr(args, "__sysOut", str);
if (NULL == str) {
@@ -875,15 +912,6 @@ void args_setSysOut(Args* args, char* str) {
__platform_printf("%s\r\n", str);
}
-void obj_sysPrintf(PikaObj* self, char* fmt, ...) {
- va_list args;
- va_start(args, fmt);
- char sysOut[128] = {0};
- __platform_vsprintf(sysOut, fmt, args);
- obj_setSysOut(self, sysOut);
- va_end(args);
-}
-
void method_returnBytes(Args* args, uint8_t* val) {
args_setBytes(args, "return", val, PIKA_BYTES_DEFAULT_SIZE);
}
@@ -932,30 +960,16 @@ PikaObj* New_PikaObj(void) {
PikaObj* self = pikaMalloc(sizeof(PikaObj));
/* List */
self->list = New_args(NULL);
+ self->refcnt = 0;
+ self->constructor = NULL;
return self;
}
-void obj_refcntInc(PikaObj* self) {
- obj_setInt(self, "_refcnt", obj_getInt(self, "_refcnt") + 1);
-}
-
-void obj_refcntDec(PikaObj* self) {
- obj_setInt(self, "_refcnt", obj_getInt(self, "_refcnt") - 1);
-}
-
-int obj_refcntNow(PikaObj* self) {
- return obj_getInt(self, "_refcnt");
-}
-
Arg* arg_setRef(Arg* self, char* name, PikaObj* obj) {
obj_refcntInc(obj);
return arg_setPtr(self, name, ARG_TYPE_OBJECT, obj);
}
-Arg* arg_setWeakRef(Arg* self, char* name, PikaObj* obj) {
- return arg_setPtr(self, name, ARG_TYPE_OBJECT, obj);
-}
-
int32_t obj_newDirectObj(PikaObj* self, char* objName, NewFun newFunPtr) {
Arg* new_obj = arg_newDirectObj(newFunPtr);
new_obj = arg_setName(new_obj, objName);
@@ -991,11 +1005,19 @@ PikaObj* obj_importModuleWithByteCode(PikaObj* self,
PikaObj* obj_importModuleWithByteCodeFrame(PikaObj* self,
char* name,
ByteCodeFrame* byteCode_frame) {
- obj_newDirectObj(self, name, New_TinyObj);
+ PikaObj* New_PikaStdLib_SysObj(Args * args);
+ obj_newDirectObj(self, name, New_PikaStdLib_SysObj);
pikaVM_runByteCodeFrame(obj_getObj(self, name), byteCode_frame);
return self;
}
+PikaObj* Obj_linkLibraryFile(PikaObj* self, char* input_file_name) {
+ obj_newMetaObj(self, "__lib", New_LibObj);
+ LibObj* lib = obj_getObj(self, "__lib");
+ LibObj_loadLibraryFile(lib, input_file_name);
+ return self;
+}
+
PikaObj* obj_linkLibrary(PikaObj* self, uint8_t* library_bytes) {
obj_newMetaObj(self, "__lib", New_LibObj);
LibObj* lib = obj_getObj(self, "__lib");
@@ -1065,5 +1087,82 @@ char* obj_toStr(PikaObj* self) {
char* str_res = obj_getStr(self, "__res");
return str_res;
}
- return NULL;
+
+ /* normal object */
+ Args buffs = {0};
+ char* str_res =
+ strsFormat(&buffs, PIKA_SPRINTF_BUFF_SIZE, "