mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
add new file
update cmsis-pack to v1.10 update v1.10.0 to cmsis-pack update makepdsc
This commit is contained in:
parent
a4dcc337bc
commit
ee90f9a60f
@ -1,7 +1,4 @@
|
|||||||
#api
|
class Debuger:
|
||||||
from PikaObj import *
|
|
||||||
|
|
||||||
class Debuger(TinyObj):
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -1,28 +1,32 @@
|
|||||||
from PikaObj import *
|
class Tuple:
|
||||||
|
|
||||||
|
|
||||||
class List(TinyObj):
|
|
||||||
def __init__(self): ...
|
def __init__(self): ...
|
||||||
# add an arg after the end of list
|
|
||||||
def append(self, arg: any): ...
|
|
||||||
# get an arg by the index
|
# get an arg by the index
|
||||||
def get(self, i: int) -> any: ...
|
def get(self, i: int) -> any: ...
|
||||||
# set an arg by the index
|
|
||||||
def set(self, i: int, arg: any): ...
|
|
||||||
# get the length of list
|
# get the length of list
|
||||||
def len(self) -> int: ...
|
def len(self) -> int: ...
|
||||||
# support for loop
|
# support for loop
|
||||||
def __iter__(self) -> any: ...
|
def __iter__(self) -> any: ...
|
||||||
# support for loop
|
# support for loop
|
||||||
def __next__(self) -> any: ...
|
def __next__(self) -> any: ...
|
||||||
# support list[] = val
|
|
||||||
def __setitem__(self, __key: any, __val: any): ...
|
|
||||||
# support val = list[]
|
# support val = list[]
|
||||||
def __getitem__(self, __key: any) -> any: ...
|
def __getitem__(self, __key: any) -> any: ...
|
||||||
def __del__(self): ...
|
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): ...
|
def __init__(self): ...
|
||||||
# get an arg by the key
|
# get an arg by the key
|
||||||
def get(self, key: str) -> any: ...
|
def get(self, key: str) -> any: ...
|
||||||
@ -37,9 +41,19 @@ class Dict(TinyObj):
|
|||||||
# support val = dict[]
|
# support val = dict[]
|
||||||
def __getitem__(self, __key: any) -> any: ...
|
def __getitem__(self, __key: any) -> any: ...
|
||||||
def __del__(self): ...
|
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 __init__(self, s: str): ...
|
||||||
def set(self, s: str): ...
|
def set(self, s: str): ...
|
||||||
def get(self) -> str: ...
|
def get(self) -> str: ...
|
||||||
@ -51,6 +65,8 @@ class String(TinyObj):
|
|||||||
def __getitem__(self, __key: any) -> any: ...
|
def __getitem__(self, __key: any) -> any: ...
|
||||||
# support str()
|
# support str()
|
||||||
def __str__(self) -> str: ...
|
def __str__(self) -> str: ...
|
||||||
|
def __len__(self) -> int: ...
|
||||||
|
def encode(self) -> bytes: ...
|
||||||
|
|
||||||
def startwith(self, prefix: str) -> int: ...
|
def startwith(self, prefix: str) -> int: ...
|
||||||
def endwith(self, suffix: str) -> int: ...
|
def endwith(self, suffix: str) -> int: ...
|
||||||
@ -59,13 +75,37 @@ class String(TinyObj):
|
|||||||
def isalnum(self) -> int: ...
|
def isalnum(self) -> int: ...
|
||||||
def isalpha(self) -> int: ...
|
def isalpha(self) -> int: ...
|
||||||
def isspace(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
|
# 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
|
# convert a int to bytes
|
||||||
def int_to_bytes(self, val: int) -> bytes: ...
|
def int_to_bytes(self, val: int) -> bytes: ...
|
||||||
|
@ -1,7 +1,4 @@
|
|||||||
from PikaObj import *
|
class MemChecker:
|
||||||
|
|
||||||
|
|
||||||
class MemChecker(TinyObj):
|
|
||||||
def max(self): ...
|
def max(self): ...
|
||||||
def now(self): ...
|
def now(self): ...
|
||||||
def getMax(self) -> float: ...
|
def getMax(self) -> float: ...
|
||||||
@ -9,37 +6,60 @@ class MemChecker(TinyObj):
|
|||||||
def resetMax(self): ...
|
def resetMax(self): ...
|
||||||
|
|
||||||
|
|
||||||
class SysObj(BaseObj):
|
class SysObj:
|
||||||
def type(self, arg: any): ...
|
@staticmethod
|
||||||
def remove(self, argPath: str): ...
|
def type(arg: any) -> any: ...
|
||||||
def int(self, arg: any) -> int: ...
|
@staticmethod
|
||||||
def float(self, arg: any) -> float: ...
|
def remove(argPath: str): ...
|
||||||
def str(self, arg: any) -> str: ...
|
@staticmethod
|
||||||
def iter(self, arg: any) -> any: ...
|
def int(arg: any) -> int: ...
|
||||||
def range(self, a1: int, a2: int) -> any: ...
|
@staticmethod
|
||||||
def print(self, *val): ...
|
def float(arg: any) -> float: ...
|
||||||
def printNoEnd(self, val: any): ...
|
@staticmethod
|
||||||
def __setitem__(self, obj: any, key: any, val: any, obj_str: str): ...
|
def str(arg: any) -> str: ...
|
||||||
def __getitem__(self, obj: any, key: any) -> any: ...
|
@staticmethod
|
||||||
def __slice__(self, obj: any, start: any, end: any, step: int) -> any: ...
|
def iter(arg: any) -> any: ...
|
||||||
def len(self, arg: any) -> int: ...
|
@staticmethod
|
||||||
def list(self) -> any: ...
|
def range(a1: int, a2: int) -> any: ...
|
||||||
def dict(self) -> any: ...
|
@staticmethod
|
||||||
def hex(self, val: int) -> str: ...
|
def print(*val): ...
|
||||||
def ord(self, val: str) -> int: ...
|
@staticmethod
|
||||||
def chr(self, val: int) -> str: ...
|
def printNoEnd(val: any): ...
|
||||||
def bytes(self, val: any) -> bytes: ...
|
@staticmethod
|
||||||
def cformat(self, fmt: str, *var) -> str: ...
|
def __setitem__(obj: any, key: any, val: any) -> any: ...
|
||||||
def id(self, obj: any) -> int: ...
|
@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: ...
|
def __next__(self) -> any: ...
|
||||||
|
|
||||||
|
|
||||||
class StringObj(TinyObj):
|
class StringObj:
|
||||||
def __next__(self) -> any: ...
|
def __next__(self) -> any: ...
|
||||||
|
|
||||||
|
|
||||||
class PikaObj(TinyObj):
|
class PikaObj:
|
||||||
...
|
...
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
#api
|
|
||||||
from PikaObj import *
|
|
||||||
import PikaStdData
|
import PikaStdData
|
||||||
|
import PikaStdLib
|
||||||
|
|
||||||
|
|
||||||
class Task(TinyObj):
|
class Task(PikaStdLib.SysObj):
|
||||||
calls = PikaStdData.List()
|
calls = PikaStdData.List()
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -12,14 +12,14 @@
|
|||||||
<license>
|
<license>
|
||||||
</license>
|
</license>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<repository type="git">https://github.com/pikasTech/pikascript.git</repository>
|
<repository type="git">https://github.com/pikasTech/pikascript.git</repository>
|
||||||
|
|
||||||
<releases>
|
<releases>
|
||||||
<release date="2022-06-24" version="0.9.2" url="https://gitee.com/Lyon1998/pikascript/attach_files/1106948/download">
|
<release date="2022-08-8" version="1.10.0" url="https://gitee.com/Lyon1998/pikascript/attach_files/1106948/download">
|
||||||
- PikaScript v1.8.7
|
- PikaScript v1.10.0
|
||||||
</release>
|
</release>
|
||||||
|
|
||||||
</releases>
|
</releases>
|
||||||
|
|
||||||
<keywords>
|
<keywords>
|
||||||
@ -27,84 +27,84 @@
|
|||||||
<keyword>Python</keyword>
|
<keyword>Python</keyword>
|
||||||
<keyword>MCU</keyword>
|
<keyword>MCU</keyword>
|
||||||
</keywords>
|
</keywords>
|
||||||
|
|
||||||
<conditions>
|
<conditions>
|
||||||
<condition id="Arm Compiler">
|
<condition id="Arm Compiler">
|
||||||
<description>Arm Compiler 5 (armcc) or Arm Compiler 6 (armclang).</description>
|
<description>Arm Compiler 5 (armcc) or Arm Compiler 6 (armclang).</description>
|
||||||
<accept Tcompiler="ARMCC" Toptions="AC6"/>
|
<accept Tcompiler="ARMCC" Toptions="AC6" />
|
||||||
<accept Tcompiler="ARMCC" Toptions="AC6LTO"/>
|
<accept Tcompiler="ARMCC" Toptions="AC6LTO" />
|
||||||
<accept Tcompiler="ARMCC" Toptions="AC5"/>
|
<accept Tcompiler="ARMCC" Toptions="AC5" />
|
||||||
</condition>
|
</condition>
|
||||||
<condition id="Arm GCC">
|
<condition id="Arm GCC">
|
||||||
<description>GNU Tools for Arm Embedded Processors.</description>
|
<description>GNU Tools for Arm Embedded Processors.</description>
|
||||||
<accept Tcompiler="GCC"/>
|
<accept Tcompiler="GCC" />
|
||||||
</condition>
|
</condition>
|
||||||
<condition id="Cortex-M Processors">
|
<condition id="Cortex-M Processors">
|
||||||
<description>Support All Cortex-M based processors</description>
|
<description>Support All Cortex-M based processors</description>
|
||||||
<accept Dcore="Cortex-M0"/>
|
<accept Dcore="Cortex-M0" />
|
||||||
<accept Dcore="Cortex-M0+"/>
|
<accept Dcore="Cortex-M0+" />
|
||||||
<accept Dcore="Cortex-M1"/>
|
<accept Dcore="Cortex-M1" />
|
||||||
<accept Dcore="Cortex-M3"/>
|
<accept Dcore="Cortex-M3" />
|
||||||
<accept Dcore="Cortex-M4"/>
|
<accept Dcore="Cortex-M4" />
|
||||||
<accept Dcore="Cortex-M7"/>
|
<accept Dcore="Cortex-M7" />
|
||||||
<accept Dcore="Cortex-M23"/>
|
<accept Dcore="Cortex-M23" />
|
||||||
<accept Dcore="Cortex-M33"/>
|
<accept Dcore="Cortex-M33" />
|
||||||
<accept Dcore="Cortex-M35P"/>
|
<accept Dcore="Cortex-M35P" />
|
||||||
<accept Dcore="Cortex-M55"/>
|
<accept Dcore="Cortex-M55" />
|
||||||
<accept Dcore="Cortex-M85"/>
|
<accept Dcore="Cortex-M85" />
|
||||||
<accept Dcore="Star-MC1"/>
|
<accept Dcore="Star-MC1" />
|
||||||
<accept Dcore="SC000"/>
|
<accept Dcore="SC000" />
|
||||||
<accept Dcore="SC300"/>
|
<accept Dcore="SC300" />
|
||||||
<accept Dcore="ARMV8MBL"/>
|
<accept Dcore="ARMV8MBL" />
|
||||||
<accept Dcore="ARMV8MML"/>
|
<accept Dcore="ARMV8MML" />
|
||||||
<accept Dcore="ARMV81MML"/>
|
<accept Dcore="ARMV81MML" />
|
||||||
</condition>
|
</condition>
|
||||||
|
|
||||||
<condition id="CMSIS-CORE">
|
<condition id="CMSIS-CORE">
|
||||||
<description>Require CMSIS-CORE Support</description>
|
<description>Require CMSIS-CORE Support</description>
|
||||||
<require Cclass="CMSIS" Cgroup="CORE"/>
|
<require Cclass="CMSIS" Cgroup="CORE" />
|
||||||
</condition>
|
</condition>
|
||||||
|
|
||||||
<condition id="Cortex-M Arm GCC">
|
<condition id="Cortex-M Arm GCC">
|
||||||
<description>Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.</description>
|
<description>Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.</description>
|
||||||
<require condition="Arm GCC"/>
|
<require condition="Arm GCC" />
|
||||||
<require condition="Cortex-M Processors"/>
|
<require condition="Cortex-M Processors" />
|
||||||
</condition>
|
</condition>
|
||||||
<condition id="Cortex-M Arm Compiler">
|
<condition id="Cortex-M Arm Compiler">
|
||||||
<description>Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.</description>
|
<description>Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.</description>
|
||||||
<require condition="Arm Compiler"/>
|
<require condition="Arm Compiler" />
|
||||||
<require condition="Cortex-M Processors"/>
|
<require condition="Cortex-M Processors" />
|
||||||
</condition>
|
</condition>
|
||||||
|
|
||||||
<condition id="Cortex-M Arm GCC CMSIS-CORE">
|
<condition id="Cortex-M Arm GCC CMSIS-CORE">
|
||||||
<description>Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.</description>
|
<description>Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.</description>
|
||||||
<require condition="Arm GCC"/>
|
<require condition="Arm GCC" />
|
||||||
<require condition="Cortex-M Processors"/>
|
<require condition="Cortex-M Processors" />
|
||||||
<require condition="CMSIS-CORE"/>
|
<require condition="CMSIS-CORE" />
|
||||||
</condition>
|
</condition>
|
||||||
<condition id="Cortex-M Arm Compiler CMSIS-CORE">
|
<condition id="Cortex-M Arm Compiler CMSIS-CORE">
|
||||||
<description>Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.</description>
|
<description>Compile Cortex-M Processors with GNU Tools for Arm Embedded Processors.</description>
|
||||||
<require condition="Arm Compiler"/>
|
<require condition="Arm Compiler" />
|
||||||
<require condition="Cortex-M Processors"/>
|
<require condition="Cortex-M Processors" />
|
||||||
<require condition="CMSIS-CORE"/>
|
<require condition="CMSIS-CORE" />
|
||||||
</condition>
|
</condition>
|
||||||
|
|
||||||
<condition id="Kernel">
|
<condition id="Kernel">
|
||||||
<description>The Kernel of the PikaScript</description>
|
<description>The Kernel of the PikaScript</description>
|
||||||
<require Cclass="PikaScript" Cgroup="PikaScript" Csub="Core" Cversion="1.8.6"/>
|
<require Cclass="PikaScript" Cgroup="PikaScript" Csub="Core" Cversion="1.8.6" />
|
||||||
</condition>
|
</condition>
|
||||||
|
|
||||||
<condition id="PLOOC_Pack">
|
<condition id="PLOOC_Pack">
|
||||||
<description>The Kernel of the PikaScript</description>
|
<description>The Kernel of the PikaScript</description>
|
||||||
<require Cclass="Language Extension" Cgroup="PLOOC"/>
|
<require Cclass="Language Extension" Cgroup="PLOOC" />
|
||||||
</condition>
|
</condition>
|
||||||
|
|
||||||
<condition id="NO_PLOOC_Pack">
|
<condition id="NO_PLOOC_Pack">
|
||||||
<description>The Kernel of the PikaScript</description>
|
<description>The Kernel of the PikaScript</description>
|
||||||
<deny Cclass="Language Extension" Cgroup="PLOOC" />
|
<deny Cclass="Language Extension" Cgroup="PLOOC" />
|
||||||
</condition>
|
</condition>
|
||||||
|
|
||||||
</conditions>
|
</conditions>
|
||||||
<!-- apis section (optional - for Application Programming Interface descriptions) -->
|
<!-- apis section (optional - for Application Programming Interface descriptions) -->
|
||||||
<!--
|
<!--
|
||||||
<apis>
|
<apis>
|
||||||
@ -128,147 +128,156 @@
|
|||||||
<examples>
|
<examples>
|
||||||
</examples>
|
</examples>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- conditions section (optional for all Software Packs)-->
|
<!-- conditions section (optional for all Software Packs)-->
|
||||||
<!--
|
<!--
|
||||||
<conditions>
|
<conditions>
|
||||||
</conditions>
|
</conditions>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<components>
|
<components>
|
||||||
<bundle Cbundle="PikaScript" Cclass="PikaScript" Cversion="1.8.7">
|
<bundle Cbundle="PikaScript" Cclass="PikaScript" Cversion="1.8.7">
|
||||||
<description>an ultra-lightweight Python engine</description>
|
<description>an ultra-lightweight Python engine</description>
|
||||||
<doc>https://pikadoc.readthedocs.io/en/latest/index.html</doc>
|
<doc>https://pikadoc.readthedocs.io/en/latest/index.html</doc>
|
||||||
|
|
||||||
<component Cgroup="PikaScript" Csub="Core" Cversion="1.8.7">
|
<component Cgroup="PikaScript" Csub="Core" Cversion="1.8.7">
|
||||||
<description>PikaScript Kernel</description>
|
<description>PikaScript Kernel</description>
|
||||||
<files>
|
<files>
|
||||||
<file attr="config" category="header" name="pikascript-core/BaseObj.h" />
|
<!-- kernal begin -->
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/BaseObj.c" />
|
<file attr="config" category="sourceC" name="pikascript-core/BaseObj.c" />
|
||||||
<file attr="config" category="header" name="pikascript-core/dataArg.h" />
|
<file attr="config" category="sourceC" name="pikascript-core/dataArg.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/dataArg.c" />
|
<file attr="config" category="sourceC" name="pikascript-core/dataArgs.c" />
|
||||||
<file attr="config" category="header" name="pikascript-core/dataArgs.h" />
|
<file attr="config" category="sourceC" name="pikascript-core/dataLink.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/dataArgs.c" />
|
<file attr="config" category="sourceC" name="pikascript-core/dataLinkNode.c" />
|
||||||
<file attr="config" category="header" name="pikascript-core/dataLink.h" />
|
<file attr="config" category="sourceC" name="pikascript-core/dataMemory.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/dataLink.c" />
|
<file attr="config" category="sourceC" name="pikascript-core/dataQueue.c" />
|
||||||
<file attr="config" category="header" name="pikascript-core/dataLinkNode.h" />
|
<file attr="config" category="sourceC" name="pikascript-core/dataQueueObj.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/dataLinkNode.c" />
|
<file attr="config" category="sourceC" name="pikascript-core/dataStack.c" />
|
||||||
<file attr="config" category="header" name="pikascript-core/dataMemory.h" />
|
<file attr="config" category="sourceC" name="pikascript-core/dataString.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/dataMemory.c" />
|
<file attr="config" category="sourceC" name="pikascript-core/dataStrs.c" />
|
||||||
<file attr="config" category="header" name="pikascript-core/dataQueue.h" />
|
<file attr="config" category="sourceC" name="pikascript-core/PikaCompiler.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/dataQueue.c" />
|
<file attr="config" category="sourceC" name="pikascript-core/PikaObj.c" />
|
||||||
<file attr="config" category="header" name="pikascript-core/dataQueueObj.h" />
|
<file attr="config" category="sourceC" name="pikascript-core/PikaParser.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/dataQueueObj.c" />
|
<file attr="config" category="sourceC" name="pikascript-core/PikaPlatform.c" />
|
||||||
<file attr="config" category="header" name="pikascript-core/dataStack.h" />
|
<file attr="config" category="sourceC" name="pikascript-core/PikaVM.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/dataStack.c" />
|
<file attr="config" category="sourceC" name="pikascript-core/TinyObj.c" />
|
||||||
<file attr="config" category="header" name="pikascript-core/dataString.h" />
|
<file attr="config" category="header" name="pikascript-core/BaseObj.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/dataString.c" />
|
<file attr="config" category="header" name="pikascript-core/dataArg.h" />
|
||||||
<file attr="config" category="header" name="pikascript-core/dataStrs.h" />
|
<file attr="config" category="header" name="pikascript-core/dataArgs.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/dataStrs.c" />
|
<file attr="config" category="header" name="pikascript-core/dataLink.h" />
|
||||||
<file attr="config" category="header" name="pikascript-core/PikaCompiler.h" />
|
<file attr="config" category="header" name="pikascript-core/dataLinkNode.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/PikaCompiler.c" />
|
<file attr="config" category="header" name="pikascript-core/dataMemory.h" />
|
||||||
<file attr="config" category="header" name="pikascript-core/PikaObj.h" />
|
<file attr="config" category="header" name="pikascript-core/dataQueue.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/PikaObj.c" />
|
<file attr="config" category="header" name="pikascript-core/dataQueueObj.h" />
|
||||||
<file attr="config" category="header" name="pikascript-core/PikaParser.h" />
|
<file attr="config" category="header" name="pikascript-core/dataStack.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/PikaParser.c" />
|
<file attr="config" category="header" name="pikascript-core/dataString.h" />
|
||||||
<file attr="config" category="header" name="pikascript-core/PikaPlatform.h" />
|
<file attr="config" category="header" name="pikascript-core/dataStrs.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/PikaPlatform.c" />
|
<file attr="config" category="header" name="pikascript-core/PikaCompiler.h" />
|
||||||
<file attr="config" category="header" name="pikascript-core/PikaVM.h" />
|
<file attr="config" category="header" name="pikascript-core/PikaObj.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/PikaVM.c" />
|
<file attr="config" category="header" name="pikascript-core/PikaParser.h" />
|
||||||
<file attr="config" category="header" name="pikascript-core/TinyObj.h" />
|
<file attr="config" category="header" name="pikascript-core/PikaPlatform.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-core/TinyObj.c" />
|
<file attr="config" category="header" name="pikascript-core/PikaVersion.h" />
|
||||||
<file attr="config" category="header" name="pikascript-core/pika_config_valid.h" />
|
<file attr="config" category="header" name="pikascript-core/PikaVM.h" />
|
||||||
|
<file attr="config" category="header" name="pikascript-core/pika_config_valid.h" />
|
||||||
<!-- Misc -->
|
<file attr="config" category="header" name="pikascript-core/TinyObj.h" />
|
||||||
<file attr="config" category="header" name="pikascript-core/__instruction_def.h" />
|
<file attr="config" category="header" name="pikascript-core/__instruction_def.h" />
|
||||||
<file attr="config" category="source" name="pikascript-core/__instruction_table.cfg" />
|
<file attr="config" category="header" name="pikascript-core/__pika_ooc.h" />
|
||||||
|
<file attr="config" category="source" name="pikascript-core/__instruction_table.cfg" />
|
||||||
<file attr="config" category="header" name="__pika_ooc.h" />
|
<!-- kernal end -->
|
||||||
<file category="header" name="PLOOC/plooc_class.h" condition="NO_PLOOC_Pack" />
|
|
||||||
<file category="header" name="PLOOC/plooc.h" condition="NO_PLOOC_Pack" />
|
<file attr="config" category="header" name="__pika_ooc.h" />
|
||||||
<file category="header" name="PLOOC/plooc_class_simple.h" condition="NO_PLOOC_Pack" />
|
<file category="header" name="PLOOC/plooc_class.h" condition="NO_PLOOC_Pack" />
|
||||||
<file category="header" name="PLOOC/plooc_class_simple_c90.h" condition="NO_PLOOC_Pack" />
|
<file category="header" name="PLOOC/plooc.h" condition="NO_PLOOC_Pack" />
|
||||||
<file category="header" name="PLOOC/plooc_class_strict.h" condition="NO_PLOOC_Pack" />
|
<file category="header" name="PLOOC/plooc_class_simple.h" condition="NO_PLOOC_Pack" />
|
||||||
<file category="header" name="PLOOC/plooc_class_black_box.h" condition="NO_PLOOC_Pack" />
|
<file category="header" name="PLOOC/plooc_class_simple_c90.h" condition="NO_PLOOC_Pack" />
|
||||||
|
<file category="header" name="PLOOC/plooc_class_strict.h" condition="NO_PLOOC_Pack" />
|
||||||
<file attr="config" category="utility" name="rust-msc-latest-win10.exe" version="1.0.0"/>
|
<file category="header" name="PLOOC/plooc_class_black_box.h" condition="NO_PLOOC_Pack" />
|
||||||
<file attr="config" category="utility" name="pikaPackage.exe" version="1.0.0"/>
|
|
||||||
<file attr="config" category="utility" name="pikaBeforBuild-keil.bat" version="1.0.2"/>
|
<file attr="config" category="utility" name="rust-msc-latest-win10.exe" version="1.0.0" />
|
||||||
<file attr="config" category="source" name="requestment.txt" version="1.0.1"/>
|
<file attr="config" category="utility" name="pikaPackage.exe" version="1.0.0" />
|
||||||
<file attr="config" category="source" name="main.py" />
|
<file attr="config" category="utility" name="pikaBeforBuild-keil.bat" version="1.0.2" />
|
||||||
|
<file attr="config" category="source" name="requestment.txt" version="1.0.1" />
|
||||||
</files>
|
<file attr="config" category="source" name="main.py" />
|
||||||
<RTE_Components_h>
|
|
||||||
|
</files>
|
||||||
|
<RTE_Components_h>
|
||||||
|
|
||||||
#define RTE_Script_PikaScript
|
#define RTE_Script_PikaScript
|
||||||
</RTE_Components_h>
|
</RTE_Components_h>
|
||||||
</component>
|
</component>
|
||||||
|
|
||||||
<component Cgroup="PikaScript" Csub="PikaStdLib" Cversion="1.8.7" condition="Kernel">
|
<component Cgroup="PikaScript" Csub="PikaStdLib" Cversion="1.8.7" condition="Kernel">
|
||||||
<description>The standard library for PikaScript</description>
|
<description>The standard library for PikaScript</description>
|
||||||
<files>
|
<files>
|
||||||
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaDebuger_Debuger.c" />
|
<!-- lib begin -->
|
||||||
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdData_Dict.c" />
|
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaDebuger_Debuger.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdData_List.c" />
|
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdData_ByteArray.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdData_String.c" />
|
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdData_Dict.c" />
|
||||||
<file attr="config" category="header" name="pikascript-lib/PikaStdLib/PikaStdData_String_Util.h" />
|
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdData_FILEIO.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdData_Utils.c" />
|
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdData_List.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdLib_MemChecker.c" />
|
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdData_String.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdLib_RangeObj.c" />
|
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdData_Tuple.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdLib_StringObj.c" />
|
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdData_Utils.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdLib_SysObj.c" />
|
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdLib_MemChecker.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdTask_Task.c" />
|
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdLib_RangeObj.c" />
|
||||||
|
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdLib_StringObj.c" />
|
||||||
<!-- placeholder for pikascript-api -->
|
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdLib_SysObj.c" />
|
||||||
|
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdTask_Task.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaDebug.h" />
|
<file attr="config" category="sourceC" name="pikascript-lib/PikaStdLib/PikaStdData_String_Util.h" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaDebug_Debuger.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaDebug-api.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaMain.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaDebug_Debuger-api.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/pikaScript.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaMain-api.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaStdData.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/pikaScript.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaStdData_ByteArray.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData-api.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaStdData_Dict.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_ByteArray-api.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaStdData_List.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_Dict-api.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaStdData_String.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_dict_keys-api.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaStdData_Utils.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_FILEIO-api.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaStdLib.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_List-api.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaStdLib_MemChecker.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_String-api.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaStdLib_PikaObj.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_Tuple-api.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaStdLib_RangeObj.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_Utils-api.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaStdLib_StringObj.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib-api.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaStdLib_SysObj.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib_MemChecker-api.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaStdTask.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib_PikaObj-api.c" />
|
||||||
<file attr="config" category="header" name="pikascript-api/PikaStdTask_Task.h" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib_RangeObj-api.c" />
|
||||||
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib_StringObj-api.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/__asset_pikaModules_py_a.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib_SysObj-api.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaDebug_Debuger-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdTask-api.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaDebug-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdTask_Task-api.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaMain-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/__asset_pikaModules_py_a.c" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/pikaScript.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaDebug.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_ByteArray-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaDebug_Debuger.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_Dict-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaMain.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_List-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/pikaScript.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_String-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_Utils-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_ByteArray.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_Dict.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib_MemChecker-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_dict_keys.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib_PikaObj-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_FILEIO.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib_RangeObj-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_List.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib_StringObj-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_String.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib_SysObj-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_Tuple.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdData_Utils.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaStdTask_Task-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib.h" />
|
||||||
<file attr="config" category="sourceC" name="pikascript-api/PikaStdTask-api.c" />
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib_MemChecker.h" />
|
||||||
</files>
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib_PikaObj.h" />
|
||||||
</component>
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib_RangeObj.h" />
|
||||||
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib_StringObj.h" />
|
||||||
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdLib_SysObj.h" />
|
||||||
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdTask.h" />
|
||||||
|
<file attr="config" category="sourceC" name="pikascript-api/PikaStdTask_Task.h" />
|
||||||
|
<!-- lib end -->
|
||||||
|
</files>
|
||||||
|
</component>
|
||||||
|
|
||||||
|
</bundle>
|
||||||
|
</components>
|
||||||
|
|
||||||
</bundle>
|
|
||||||
</components>
|
|
||||||
|
|
||||||
<!-- optional taxonomy section for defining new component Class and Group names -->
|
<!-- optional taxonomy section for defining new component Class and Group names -->
|
||||||
<!--
|
<!--
|
||||||
<taxonomy>
|
<taxonomy>
|
||||||
</taxonomy>
|
</taxonomy>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
</package>
|
</package>
|
56
port/cmsis-pack/pikascript/makepdsc.py
Normal file
56
port/cmsis-pack/pikascript/makepdsc.py
Normal file
@ -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='<file attr="config" category="sourceC" name="%s" />'):
|
||||||
|
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='<file attr="config" category="header" name="%s" />')
|
||||||
|
kernal_cfg = Group("kernalCfg", "pikascript-core", ".cfg",
|
||||||
|
format='<file attr="config" category="source" name="%s" />')
|
||||||
|
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])
|
@ -17,6 +17,11 @@ void PikaStdData_DictMethod(PikaObj *self, Args *args){
|
|||||||
method_returnArg(args, res);
|
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){
|
void PikaStdData_ListMethod(PikaObj *self, Args *args){
|
||||||
Arg* res = PikaStdData_List(self);
|
Arg* res = PikaStdData_List(self);
|
||||||
method_returnArg(args, res);
|
method_returnArg(args, res);
|
||||||
@ -27,18 +32,31 @@ void PikaStdData_StringMethod(PikaObj *self, Args *args){
|
|||||||
method_returnArg(args, res);
|
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){
|
void PikaStdData_UtilsMethod(PikaObj *self, Args *args){
|
||||||
Arg* res = PikaStdData_Utils(self);
|
Arg* res = PikaStdData_Utils(self);
|
||||||
method_returnArg(args, res);
|
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 *New_PikaStdData(Args *args){
|
||||||
PikaObj *self = New_TinyObj(args);
|
PikaObj *self = New_TinyObj(args);
|
||||||
class_defineConstructor(self, "ByteArray()->any", PikaStdData_ByteArrayMethod);
|
class_defineConstructor(self, "ByteArray()->any", PikaStdData_ByteArrayMethod);
|
||||||
class_defineConstructor(self, "Dict()->any", PikaStdData_DictMethod);
|
class_defineConstructor(self, "Dict()->any", PikaStdData_DictMethod);
|
||||||
|
class_defineConstructor(self, "FILEIO()->any", PikaStdData_FILEIOMethod);
|
||||||
class_defineConstructor(self, "List()->any", PikaStdData_ListMethod);
|
class_defineConstructor(self, "List()->any", PikaStdData_ListMethod);
|
||||||
class_defineConstructor(self, "String()->any", PikaStdData_StringMethod);
|
class_defineConstructor(self, "String()->any", PikaStdData_StringMethod);
|
||||||
|
class_defineConstructor(self, "Tuple()->any", PikaStdData_TupleMethod);
|
||||||
class_defineConstructor(self, "Utils()->any", PikaStdData_UtilsMethod);
|
class_defineConstructor(self, "Utils()->any", PikaStdData_UtilsMethod);
|
||||||
|
class_defineConstructor(self, "dict_keys()->any", PikaStdData_dict_keysMethod);
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,8 +11,11 @@ PikaObj *New_PikaStdData(Args *args);
|
|||||||
|
|
||||||
Arg* PikaStdData_ByteArray(PikaObj *self);
|
Arg* PikaStdData_ByteArray(PikaObj *self);
|
||||||
Arg* PikaStdData_Dict(PikaObj *self);
|
Arg* PikaStdData_Dict(PikaObj *self);
|
||||||
|
Arg* PikaStdData_FILEIO(PikaObj *self);
|
||||||
Arg* PikaStdData_List(PikaObj *self);
|
Arg* PikaStdData_List(PikaObj *self);
|
||||||
Arg* PikaStdData_String(PikaObj *self);
|
Arg* PikaStdData_String(PikaObj *self);
|
||||||
|
Arg* PikaStdData_Tuple(PikaObj *self);
|
||||||
Arg* PikaStdData_Utils(PikaObj *self);
|
Arg* PikaStdData_Utils(PikaObj *self);
|
||||||
|
Arg* PikaStdData_dict_keys(PikaObj *self);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -2,19 +2,57 @@
|
|||||||
/* Warning! Don't modify this file! */
|
/* Warning! Don't modify this file! */
|
||||||
/* ******************************** */
|
/* ******************************** */
|
||||||
#include "PikaStdData_ByteArray.h"
|
#include "PikaStdData_ByteArray.h"
|
||||||
#include "PikaStdData_List.h"
|
#include "TinyObj.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "BaseObj.h"
|
#include "BaseObj.h"
|
||||||
|
|
||||||
void PikaStdData_ByteArray_fromStringMethod(PikaObj *self, Args *args){
|
void PikaStdData_ByteArray___getitem__Method(PikaObj *self, Args *args){
|
||||||
char* s = args_getStr(args, "s");
|
int __key = args_getInt(args, "__key");
|
||||||
PikaStdData_ByteArray_fromString(self, s);
|
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 *New_PikaStdData_ByteArray(Args *args){
|
||||||
PikaObj *self = New_PikaStdData_List(args);
|
PikaObj *self = New_TinyObj(args);
|
||||||
class_defineMethod(self, "fromString(s:str)", PikaStdData_ByteArray_fromStringMethod);
|
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;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,6 +9,12 @@
|
|||||||
|
|
||||||
PikaObj *New_PikaStdData_ByteArray(Args *args);
|
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
|
#endif
|
||||||
|
@ -26,6 +26,11 @@ void PikaStdData_Dict___iter__Method(PikaObj *self, Args *args){
|
|||||||
method_returnArg(args, res);
|
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){
|
void PikaStdData_Dict___next__Method(PikaObj *self, Args *args){
|
||||||
Arg* res = PikaStdData_Dict___next__(self);
|
Arg* res = PikaStdData_Dict___next__(self);
|
||||||
method_returnArg(args, res);
|
method_returnArg(args, res);
|
||||||
@ -37,21 +42,31 @@ void PikaStdData_Dict___setitem__Method(PikaObj *self, Args *args){
|
|||||||
PikaStdData_Dict___setitem__(self, __key, __val);
|
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){
|
void PikaStdData_Dict_getMethod(PikaObj *self, Args *args){
|
||||||
char* key = args_getStr(args, "key");
|
char* key = args_getStr(args, "key");
|
||||||
Arg* res = PikaStdData_Dict_get(self, key);
|
Arg* res = PikaStdData_Dict_get(self, key);
|
||||||
method_returnArg(args, res);
|
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){
|
void PikaStdData_Dict_removeMethod(PikaObj *self, Args *args){
|
||||||
char* key = args_getStr(args, "key");
|
char* key = args_getStr(args, "key");
|
||||||
PikaStdData_Dict_remove(self, key);
|
PikaStdData_Dict_remove(self, key);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PikaStdData_Dict_setMethod(PikaObj *self, Args *args){
|
void PikaStdData_Dict_setMethod(PikaObj *self, Args *args){
|
||||||
Arg* arg = args_getArg(args, "arg");
|
|
||||||
char* key = args_getStr(args, "key");
|
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){
|
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, "__getitem__(__key:any)->any", PikaStdData_Dict___getitem__Method);
|
||||||
class_defineMethod(self, "__init__()", PikaStdData_Dict___init__Method);
|
class_defineMethod(self, "__init__()", PikaStdData_Dict___init__Method);
|
||||||
class_defineMethod(self, "__iter__()->any", PikaStdData_Dict___iter__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, "__next__()->any", PikaStdData_Dict___next__Method);
|
||||||
class_defineMethod(self, "__setitem__(__key:any,__val:any)", PikaStdData_Dict___setitem__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, "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, "remove(key:str)", PikaStdData_Dict_removeMethod);
|
||||||
class_defineMethod(self, "set(key:str,arg:any)", PikaStdData_Dict_setMethod);
|
class_defineMethod(self, "set(key:str,arg:any)", PikaStdData_Dict_setMethod);
|
||||||
return self;
|
return self;
|
||||||
|
@ -13,10 +13,13 @@ void PikaStdData_Dict___del__(PikaObj *self);
|
|||||||
Arg* PikaStdData_Dict___getitem__(PikaObj *self, Arg* __key);
|
Arg* PikaStdData_Dict___getitem__(PikaObj *self, Arg* __key);
|
||||||
void PikaStdData_Dict___init__(PikaObj *self);
|
void PikaStdData_Dict___init__(PikaObj *self);
|
||||||
Arg* PikaStdData_Dict___iter__(PikaObj *self);
|
Arg* PikaStdData_Dict___iter__(PikaObj *self);
|
||||||
|
int PikaStdData_Dict___len__(PikaObj *self);
|
||||||
Arg* PikaStdData_Dict___next__(PikaObj *self);
|
Arg* PikaStdData_Dict___next__(PikaObj *self);
|
||||||
void PikaStdData_Dict___setitem__(PikaObj *self, Arg* __key, Arg* __val);
|
void PikaStdData_Dict___setitem__(PikaObj *self, Arg* __key, Arg* __val);
|
||||||
|
char* PikaStdData_Dict___str__(PikaObj *self);
|
||||||
Arg* PikaStdData_Dict_get(PikaObj *self, char* key);
|
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_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
|
#endif
|
||||||
|
@ -0,0 +1,75 @@
|
|||||||
|
/* ******************************** */
|
||||||
|
/* Warning! Don't modify this file! */
|
||||||
|
/* ******************************** */
|
||||||
|
#include "PikaStdData_FILEIO.h"
|
||||||
|
#include "TinyObj.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#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);
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
/* ******************************** */
|
||||||
|
/* Warning! Don't modify this file! */
|
||||||
|
/* ******************************** */
|
||||||
|
#ifndef __PikaStdData_FILEIO__H
|
||||||
|
#define __PikaStdData_FILEIO__H
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#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
|
@ -2,74 +2,43 @@
|
|||||||
/* Warning! Don't modify this file! */
|
/* Warning! Don't modify this file! */
|
||||||
/* ******************************** */
|
/* ******************************** */
|
||||||
#include "PikaStdData_List.h"
|
#include "PikaStdData_List.h"
|
||||||
#include "TinyObj.h"
|
#include "PikaStdData_Tuple.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "BaseObj.h"
|
#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){
|
void PikaStdData_List___init__Method(PikaObj *self, Args *args){
|
||||||
PikaStdData_List___init__(self);
|
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){
|
void PikaStdData_List___setitem__Method(PikaObj *self, Args *args){
|
||||||
Arg* __key = args_getArg(args, "__key");
|
Arg* __key = args_getArg(args, "__key");
|
||||||
Arg* __val = args_getArg(args, "__val");
|
Arg* __val = args_getArg(args, "__val");
|
||||||
PikaStdData_List___setitem__(self, __key, __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){
|
void PikaStdData_List_appendMethod(PikaObj *self, Args *args){
|
||||||
Arg* arg = args_getArg(args, "arg");
|
Arg* arg = args_getArg(args, "arg");
|
||||||
PikaStdData_List_append(self, 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){
|
void PikaStdData_List_setMethod(PikaObj *self, Args *args){
|
||||||
Arg* arg = args_getArg(args, "arg");
|
|
||||||
int i = args_getInt(args, "i");
|
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 *New_PikaStdData_List(Args *args){
|
||||||
PikaObj *self = New_TinyObj(args);
|
PikaObj *self = New_PikaStdData_Tuple(args);
|
||||||
class_defineMethod(self, "__del__()", PikaStdData_List___del__Method);
|
|
||||||
class_defineMethod(self, "__getitem__(__key:any)->any", PikaStdData_List___getitem__Method);
|
|
||||||
class_defineMethod(self, "__init__()", PikaStdData_List___init__Method);
|
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, "__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, "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);
|
class_defineMethod(self, "set(i:int,arg:any)", PikaStdData_List_setMethod);
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
@ -9,15 +9,10 @@
|
|||||||
|
|
||||||
PikaObj *New_PikaStdData_List(Args *args);
|
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);
|
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);
|
void PikaStdData_List___setitem__(PikaObj *self, Arg* __key, Arg* __val);
|
||||||
|
char* PikaStdData_List___str__(PikaObj *self);
|
||||||
void PikaStdData_List_append(PikaObj *self, Arg* arg);
|
void PikaStdData_List_append(PikaObj *self, Arg* arg);
|
||||||
Arg* PikaStdData_List_get(PikaObj *self, int i);
|
void PikaStdData_List_set(PikaObj *self, int i, Arg* arg);
|
||||||
int PikaStdData_List_len(PikaObj *self);
|
|
||||||
void PikaStdData_List_set(PikaObj *self, Arg* arg, int i);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -23,6 +23,11 @@ void PikaStdData_String___iter__Method(PikaObj *self, Args *args){
|
|||||||
method_returnArg(args, res);
|
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){
|
void PikaStdData_String___next__Method(PikaObj *self, Args *args){
|
||||||
Arg* res = PikaStdData_String___next__(self);
|
Arg* res = PikaStdData_String___next__(self);
|
||||||
method_returnArg(args, res);
|
method_returnArg(args, res);
|
||||||
@ -39,6 +44,11 @@ void PikaStdData_String___str__Method(PikaObj *self, Args *args){
|
|||||||
method_returnStr(args, res);
|
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){
|
void PikaStdData_String_endwithMethod(PikaObj *self, Args *args){
|
||||||
char* suffix = args_getStr(args, "suffix");
|
char* suffix = args_getStr(args, "suffix");
|
||||||
int res = PikaStdData_String_endwith(self, suffix);
|
int res = PikaStdData_String_endwith(self, suffix);
|
||||||
@ -75,25 +85,45 @@ void PikaStdData_String_isspaceMethod(PikaObj *self, Args *args){
|
|||||||
method_returnInt(args, res);
|
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){
|
void PikaStdData_String_setMethod(PikaObj *self, Args *args){
|
||||||
char* s = args_getStr(args, "s");
|
char* s = args_getStr(args, "s");
|
||||||
PikaStdData_String_set(self, 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){
|
void PikaStdData_String_startwithMethod(PikaObj *self, Args *args){
|
||||||
char* prefix = args_getStr(args, "prefix");
|
char* prefix = args_getStr(args, "prefix");
|
||||||
int res = PikaStdData_String_startwith(self, prefix);
|
int res = PikaStdData_String_startwith(self, prefix);
|
||||||
method_returnInt(args, res);
|
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 *New_PikaStdData_String(Args *args){
|
||||||
PikaObj *self = New_TinyObj(args);
|
PikaObj *self = New_TinyObj(args);
|
||||||
class_defineMethod(self, "__getitem__(__key:any)->any", PikaStdData_String___getitem__Method);
|
class_defineMethod(self, "__getitem__(__key:any)->any", PikaStdData_String___getitem__Method);
|
||||||
class_defineMethod(self, "__init__(s:str)", PikaStdData_String___init__Method);
|
class_defineMethod(self, "__init__(s:str)", PikaStdData_String___init__Method);
|
||||||
class_defineMethod(self, "__iter__()->any", PikaStdData_String___iter__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, "__next__()->any", PikaStdData_String___next__Method);
|
||||||
class_defineMethod(self, "__setitem__(__key:any,__val:any)", PikaStdData_String___setitem__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, "__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, "endwith(suffix:str)->int", PikaStdData_String_endwithMethod);
|
||||||
class_defineMethod(self, "get()->str", PikaStdData_String_getMethod);
|
class_defineMethod(self, "get()->str", PikaStdData_String_getMethod);
|
||||||
class_defineMethod(self, "isalnum()->int", PikaStdData_String_isalnumMethod);
|
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, "isdigit()->int", PikaStdData_String_isdigitMethod);
|
||||||
class_defineMethod(self, "islower()->int", PikaStdData_String_islowerMethod);
|
class_defineMethod(self, "islower()->int", PikaStdData_String_islowerMethod);
|
||||||
class_defineMethod(self, "isspace()->int", PikaStdData_String_isspaceMethod);
|
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, "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, "startwith(prefix:str)->int", PikaStdData_String_startwithMethod);
|
||||||
|
class_defineMethod(self, "strip()->str", PikaStdData_String_stripMethod);
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,9 +12,11 @@ PikaObj *New_PikaStdData_String(Args *args);
|
|||||||
Arg* PikaStdData_String___getitem__(PikaObj *self, Arg* __key);
|
Arg* PikaStdData_String___getitem__(PikaObj *self, Arg* __key);
|
||||||
void PikaStdData_String___init__(PikaObj *self, char* s);
|
void PikaStdData_String___init__(PikaObj *self, char* s);
|
||||||
Arg* PikaStdData_String___iter__(PikaObj *self);
|
Arg* PikaStdData_String___iter__(PikaObj *self);
|
||||||
|
int PikaStdData_String___len__(PikaObj *self);
|
||||||
Arg* PikaStdData_String___next__(PikaObj *self);
|
Arg* PikaStdData_String___next__(PikaObj *self);
|
||||||
void PikaStdData_String___setitem__(PikaObj *self, Arg* __key, Arg* __val);
|
void PikaStdData_String___setitem__(PikaObj *self, Arg* __key, Arg* __val);
|
||||||
char* PikaStdData_String___str__(PikaObj *self);
|
char* PikaStdData_String___str__(PikaObj *self);
|
||||||
|
Arg* PikaStdData_String_encode(PikaObj *self);
|
||||||
int PikaStdData_String_endwith(PikaObj *self, char* suffix);
|
int PikaStdData_String_endwith(PikaObj *self, char* suffix);
|
||||||
char* PikaStdData_String_get(PikaObj *self);
|
char* PikaStdData_String_get(PikaObj *self);
|
||||||
int PikaStdData_String_isalnum(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_isdigit(PikaObj *self);
|
||||||
int PikaStdData_String_islower(PikaObj *self);
|
int PikaStdData_String_islower(PikaObj *self);
|
||||||
int PikaStdData_String_isspace(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);
|
void PikaStdData_String_set(PikaObj *self, char* s);
|
||||||
|
PikaObj* PikaStdData_String_split(PikaObj *self, char* s);
|
||||||
int PikaStdData_String_startwith(PikaObj *self, char* prefix);
|
int PikaStdData_String_startwith(PikaObj *self, char* prefix);
|
||||||
|
char* PikaStdData_String_strip(PikaObj *self);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -0,0 +1,71 @@
|
|||||||
|
/* ******************************** */
|
||||||
|
/* Warning! Don't modify this file! */
|
||||||
|
/* ******************************** */
|
||||||
|
#include "PikaStdData_Tuple.h"
|
||||||
|
#include "TinyObj.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#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);
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
/* ******************************** */
|
||||||
|
/* Warning! Don't modify this file! */
|
||||||
|
/* ******************************** */
|
||||||
|
#ifndef __PikaStdData_Tuple__H
|
||||||
|
#define __PikaStdData_Tuple__H
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#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
|
@ -0,0 +1,41 @@
|
|||||||
|
/* ******************************** */
|
||||||
|
/* Warning! Don't modify this file! */
|
||||||
|
/* ******************************** */
|
||||||
|
#include "PikaStdData_dict_keys.h"
|
||||||
|
#include "TinyObj.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#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);
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
/* ******************************** */
|
||||||
|
/* Warning! Don't modify this file! */
|
||||||
|
/* ******************************** */
|
||||||
|
#ifndef __PikaStdData_dict_keys__H
|
||||||
|
#define __PikaStdData_dict_keys__H
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#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
|
@ -2,32 +2,32 @@
|
|||||||
/* Warning! Don't modify this file! */
|
/* Warning! Don't modify this file! */
|
||||||
/* ******************************** */
|
/* ******************************** */
|
||||||
#include "PikaStdLib_SysObj.h"
|
#include "PikaStdLib_SysObj.h"
|
||||||
#include "BaseObj.h"
|
#include "TinyObj.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "BaseObj.h"
|
#include "BaseObj.h"
|
||||||
|
|
||||||
void PikaStdLib_SysObj___getitem__Method(PikaObj *self, Args *args){
|
void PikaStdLib_SysObj___getitem__Method(PikaObj *self, Args *args){
|
||||||
Arg* key = args_getArg(args, "key");
|
|
||||||
Arg* obj = args_getArg(args, "obj");
|
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);
|
method_returnArg(args, res);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PikaStdLib_SysObj___setitem__Method(PikaObj *self, Args *args){
|
void PikaStdLib_SysObj___setitem__Method(PikaObj *self, Args *args){
|
||||||
Arg* key = args_getArg(args, "key");
|
|
||||||
Arg* obj = args_getArg(args, "obj");
|
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");
|
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){
|
void PikaStdLib_SysObj___slice__Method(PikaObj *self, Args *args){
|
||||||
Arg* end = args_getArg(args, "end");
|
|
||||||
Arg* obj = args_getArg(args, "obj");
|
Arg* obj = args_getArg(args, "obj");
|
||||||
Arg* start = args_getArg(args, "start");
|
Arg* start = args_getArg(args, "start");
|
||||||
|
Arg* end = args_getArg(args, "end");
|
||||||
int step = args_getInt(args, "step");
|
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);
|
method_returnArg(args, res);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,6 +96,13 @@ void PikaStdLib_SysObj_listMethod(PikaObj *self, Args *args){
|
|||||||
method_returnArg(args, res);
|
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){
|
void PikaStdLib_SysObj_ordMethod(PikaObj *self, Args *args){
|
||||||
char* val = args_getStr(args, "val");
|
char* val = args_getStr(args, "val");
|
||||||
int res = PikaStdLib_SysObj_ord(self, 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){
|
void PikaStdLib_SysObj_typeMethod(PikaObj *self, Args *args){
|
||||||
Arg* arg = args_getArg(args, "arg");
|
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 *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, "__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, "__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, "bytes(val:any)->bytes", PikaStdLib_SysObj_bytesMethod);
|
||||||
class_defineMethod(self, "cformat(fmt:str,*var)->str", PikaStdLib_SysObj_cformatMethod);
|
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, "iter(arg:any)->any", PikaStdLib_SysObj_iterMethod);
|
||||||
class_defineMethod(self, "len(arg:any)->int", PikaStdLib_SysObj_lenMethod);
|
class_defineMethod(self, "len(arg:any)->int", PikaStdLib_SysObj_lenMethod);
|
||||||
class_defineMethod(self, "list()->any", PikaStdLib_SysObj_listMethod);
|
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, "ord(val:str)->int", PikaStdLib_SysObj_ordMethod);
|
||||||
class_defineMethod(self, "print(*val)", PikaStdLib_SysObj_printMethod);
|
class_defineMethod(self, "print(*val)", PikaStdLib_SysObj_printMethod);
|
||||||
class_defineMethod(self, "printNoEnd(val:any)", PikaStdLib_SysObj_printNoEndMethod);
|
class_defineMethod(self, "printNoEnd(val:any)", PikaStdLib_SysObj_printNoEndMethod);
|
||||||
class_defineMethod(self, "range(a1:int,a2:int)->any", PikaStdLib_SysObj_rangeMethod);
|
class_defineMethod(self, "range(a1:int,a2:int)->any", PikaStdLib_SysObj_rangeMethod);
|
||||||
class_defineMethod(self, "remove(argPath:str)", PikaStdLib_SysObj_removeMethod);
|
class_defineMethod(self, "remove(argPath:str)", PikaStdLib_SysObj_removeMethod);
|
||||||
class_defineMethod(self, "str(arg:any)->str", PikaStdLib_SysObj_strMethod);
|
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;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,9 +9,9 @@
|
|||||||
|
|
||||||
PikaObj *New_PikaStdLib_SysObj(Args *args);
|
PikaObj *New_PikaStdLib_SysObj(Args *args);
|
||||||
|
|
||||||
Arg* PikaStdLib_SysObj___getitem__(PikaObj *self, Arg* key, Arg* obj);
|
Arg* PikaStdLib_SysObj___getitem__(PikaObj *self, Arg* obj, Arg* key);
|
||||||
void PikaStdLib_SysObj___setitem__(PikaObj *self, Arg* key, Arg* obj, char* obj_str, Arg* val);
|
Arg* PikaStdLib_SysObj___setitem__(PikaObj *self, Arg* obj, Arg* key, Arg* val);
|
||||||
Arg* PikaStdLib_SysObj___slice__(PikaObj *self, Arg* end, Arg* obj, Arg* start, int step);
|
Arg* PikaStdLib_SysObj___slice__(PikaObj *self, Arg* obj, Arg* start, Arg* end, int step);
|
||||||
Arg* PikaStdLib_SysObj_bytes(PikaObj *self, Arg* val);
|
Arg* PikaStdLib_SysObj_bytes(PikaObj *self, Arg* val);
|
||||||
char* PikaStdLib_SysObj_cformat(PikaObj *self, char* fmt, PikaTuple* var);
|
char* PikaStdLib_SysObj_cformat(PikaObj *self, char* fmt, PikaTuple* var);
|
||||||
char* PikaStdLib_SysObj_chr(PikaObj *self, int val);
|
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);
|
Arg* PikaStdLib_SysObj_iter(PikaObj *self, Arg* arg);
|
||||||
int PikaStdLib_SysObj_len(PikaObj *self, Arg* arg);
|
int PikaStdLib_SysObj_len(PikaObj *self, Arg* arg);
|
||||||
Arg* PikaStdLib_SysObj_list(PikaObj *self);
|
Arg* PikaStdLib_SysObj_list(PikaObj *self);
|
||||||
|
PikaObj* PikaStdLib_SysObj_open(PikaObj *self, char* path, char* mode);
|
||||||
int PikaStdLib_SysObj_ord(PikaObj *self, char* val);
|
int PikaStdLib_SysObj_ord(PikaObj *self, char* val);
|
||||||
void PikaStdLib_SysObj_print(PikaObj *self, PikaTuple* val);
|
void PikaStdLib_SysObj_print(PikaObj *self, PikaTuple* val);
|
||||||
void PikaStdLib_SysObj_printNoEnd(PikaObj *self, Arg* val);
|
void PikaStdLib_SysObj_printNoEnd(PikaObj *self, Arg* val);
|
||||||
Arg* PikaStdLib_SysObj_range(PikaObj *self, int a1, int a2);
|
Arg* PikaStdLib_SysObj_range(PikaObj *self, int a1, int a2);
|
||||||
void PikaStdLib_SysObj_remove(PikaObj *self, char* argPath);
|
void PikaStdLib_SysObj_remove(PikaObj *self, char* argPath);
|
||||||
char* PikaStdLib_SysObj_str(PikaObj *self, Arg* arg);
|
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
|
#endif
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/* Warning! Don't modify this file! */
|
/* Warning! Don't modify this file! */
|
||||||
/* ******************************** */
|
/* ******************************** */
|
||||||
#include "PikaStdTask_Task.h"
|
#include "PikaStdTask_Task.h"
|
||||||
#include "TinyObj.h"
|
#include "PikaStdLib_SysObj.h"
|
||||||
#include "PikaStdData_List.h"
|
#include "PikaStdData_List.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -47,7 +47,7 @@ void PikaStdTask_Task_run_until_msMethod(PikaObj *self, Args *args){
|
|||||||
}
|
}
|
||||||
|
|
||||||
PikaObj *New_PikaStdTask_Task(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);
|
obj_newObj(self, "calls", "PikaStdData_List", New_PikaStdData_List);
|
||||||
class_defineMethod(self, "__init__()", PikaStdTask_Task___init__Method);
|
class_defineMethod(self, "__init__()", PikaStdTask_Task___init__Method);
|
||||||
class_defineMethod(self, "call_always(fun_todo:any)", PikaStdTask_Task_call_alwaysMethod);
|
class_defineMethod(self, "call_always(fun_todo:any)", PikaStdTask_Task_call_alwaysMethod);
|
||||||
|
File diff suppressed because one or more lines are too long
@ -8,8 +8,8 @@
|
|||||||
PikaObj *__pikaMain;
|
PikaObj *__pikaMain;
|
||||||
PikaObj *pikaScriptInit(void){
|
PikaObj *pikaScriptInit(void){
|
||||||
__platform_printf("======[pikascript packages installed]======\r\n");
|
__platform_printf("======[pikascript packages installed]======\r\n");
|
||||||
__platform_printf("PikaStdLib==v1.8.7\r\n");
|
pks_printVersion();
|
||||||
__platform_printf("pikascript-core==v1.8.7\r\n");
|
__platform_printf("PikaStdLib==v1.10.0\r\n");
|
||||||
__platform_printf("===========================================\r\n");
|
__platform_printf("===========================================\r\n");
|
||||||
__pikaMain = newRootObj("pikaMain", New_PikaMain);
|
__pikaMain = newRootObj("pikaMain", New_PikaMain);
|
||||||
extern unsigned char pikaModules_py_a[];
|
extern unsigned char pikaModules_py_a[];
|
||||||
|
@ -371,7 +371,7 @@ int Lib_loadLibraryFileToArray(char* origin_file_name, char* out_folder) {
|
|||||||
FILE* fp = __platform_fopen(output_file_path, "wb+");
|
FILE* fp = __platform_fopen(output_file_path, "wb+");
|
||||||
char* array_name = strsGetLastToken(&buffs, origin_file_name, '/');
|
char* array_name = strsGetLastToken(&buffs, origin_file_name, '/');
|
||||||
array_name = strsReplace(&buffs, array_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("#include \"PikaPlatform.h\"\n", fp);
|
||||||
pika_fputs("/* warning: auto generated file, please do not modify */\n",
|
pika_fputs("/* warning: auto generated file, please do not modify */\n",
|
||||||
fp);
|
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_name = strsAppend(&buffs, module_name, ".py");
|
||||||
char* input_file_path =
|
char* input_file_path =
|
||||||
strsAppend(&buffs, obj_getStr(self, "pwd"), input_file_name);
|
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_name = strsAppend(&buffs, module_name, ".py.o");
|
||||||
char* output_file_path = NULL;
|
char* output_file_path = NULL;
|
||||||
output_file_path =
|
output_file_path =
|
||||||
@ -587,20 +587,30 @@ int32_t __foreach_handler_linkCompiledModules(Arg* argEach, Args* context) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void pikaMaker_linkCompiledModules(PikaMaker* self, char* lib_name) {
|
void pikaMaker_linkCompiledModulesFullPath(PikaMaker* self, char* lib_path) {
|
||||||
Args context = {0};
|
Args context = {0};
|
||||||
LibObj* lib = New_LibObj(NULL);
|
LibObj* lib = New_LibObj(NULL);
|
||||||
Args buffs = {0};
|
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, "__lib", lib);
|
||||||
args_setPtr(&context, "__maker", self);
|
args_setPtr(&context, "__maker", self);
|
||||||
args_foreach(self->list, __foreach_handler_linkCompiledModules, &context);
|
args_foreach(self->list, __foreach_handler_linkCompiledModules, &context);
|
||||||
args_deinit_stack(&context);
|
args_deinit_stack(&context);
|
||||||
char* pwd = obj_getStr(self, "pwd");
|
char* pwd = obj_getStr(self, "pwd");
|
||||||
char* folder_path = strsAppend(&buffs, pwd, "pikascript-api/");
|
char* lib_path_folder = strsCopy(&buffs, lib_path);
|
||||||
char* lib_file_path = strsAppend(&buffs, folder_path, lib_name);
|
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);
|
LibObj_saveLibraryFile(lib, lib_file_path);
|
||||||
Lib_loadLibraryFileToArray(lib_file_path, folder_path);
|
Lib_loadLibraryFileToArray(lib_file_path, folder_path);
|
||||||
LibObj_deinit(lib);
|
LibObj_deinit(lib);
|
||||||
strsDeinit(&buffs);
|
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);
|
||||||
|
}
|
||||||
|
@ -29,6 +29,7 @@ char* pikaMaker_getFirstNocompiled(PikaMaker* self);
|
|||||||
void pikaMaker_compileModuleWithDepends(PikaMaker* self, char* module_name);
|
void pikaMaker_compileModuleWithDepends(PikaMaker* self, char* module_name);
|
||||||
void pikaMaker_linkCompiledModules(PikaMaker* self, char* lib_name);
|
void pikaMaker_linkCompiledModules(PikaMaker* self, char* lib_name);
|
||||||
int LibObj_loadLibrary(LibObj* self, uint8_t* library_bytes);
|
int LibObj_loadLibrary(LibObj* self, uint8_t* library_bytes);
|
||||||
|
void pikaMaker_linkCompiledModulesFullPath(PikaMaker* self, char* lib_path);
|
||||||
|
|
||||||
#define LIB_VERSION_NUMBER 1
|
#define LIB_VERSION_NUMBER 1
|
||||||
#define LIB_INFO_BLOCK_SIZE 32
|
#define LIB_INFO_BLOCK_SIZE 32
|
||||||
|
@ -122,75 +122,68 @@ int32_t obj_deinit(PikaObj* self) {
|
|||||||
return obj_deinit_no_del(self);
|
return obj_deinit_no_del(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t obj_enable(PikaObj* self) {
|
PIKA_RES obj_setInt(PikaObj* self, char* argPath, int64_t val) {
|
||||||
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) {
|
|
||||||
PikaObj* obj = obj_getHostObj(self, argPath);
|
PikaObj* obj = obj_getHostObj(self, argPath);
|
||||||
if (NULL == obj) {
|
if (NULL == obj) {
|
||||||
/* [error] object no found */
|
/* [error] object no found */
|
||||||
return 1;
|
return PIKA_RES_ERR_ARG_NO_FOUND;
|
||||||
}
|
}
|
||||||
char* name = strPointToLastToken(argPath, '.');
|
char* name = strPointToLastToken(argPath, '.');
|
||||||
args_setInt(obj->list, name, val);
|
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);
|
PikaObj* obj = obj_getHostObj(self, argPath);
|
||||||
if (NULL == obj) {
|
if (NULL == obj) {
|
||||||
return 1;
|
/* [error] object no found */
|
||||||
|
return PIKA_RES_ERR_ARG_NO_FOUND;
|
||||||
}
|
}
|
||||||
char* name = strPointToLastToken(argPath, '.');
|
char* name = strPointToLastToken(argPath, '.');
|
||||||
args_setPtr(obj->list, name, pointer);
|
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);
|
PikaObj* obj = obj_getHostObj(self, argPath);
|
||||||
if (NULL == obj) {
|
if (NULL == obj) {
|
||||||
return 1;
|
/* [error] object no found */
|
||||||
|
return PIKA_RES_ERR_ARG_NO_FOUND;
|
||||||
}
|
}
|
||||||
char* name = strPointToLastToken(argPath, '.');
|
char* name = strPointToLastToken(argPath, '.');
|
||||||
args_setRef(obj->list, name, pointer);
|
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);
|
PikaObj* obj = obj_getHostObj(self, argPath);
|
||||||
if (NULL == obj) {
|
if (NULL == obj) {
|
||||||
return 1;
|
/* [error] object no found */
|
||||||
|
return PIKA_RES_ERR_ARG_NO_FOUND;
|
||||||
}
|
}
|
||||||
char* name = strPointToLastToken(argPath, '.');
|
char* name = strPointToLastToken(argPath, '.');
|
||||||
args_setFloat(obj->list, name, value);
|
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);
|
PikaObj* obj = obj_getHostObj(self, argPath);
|
||||||
if (NULL == obj) {
|
if (NULL == obj) {
|
||||||
return 1;
|
return PIKA_RES_ERR_ARG_NO_FOUND;
|
||||||
}
|
}
|
||||||
char* name = strPointToLastToken(argPath, '.');
|
char* name = strPointToLastToken(argPath, '.');
|
||||||
args_setStr(obj->list, name, str);
|
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);
|
PikaObj* obj = obj_getHostObj(self, argPath);
|
||||||
if (NULL == obj) {
|
if (NULL == obj) {
|
||||||
return 1;
|
return PIKA_RES_ERR_ARG_NO_FOUND;
|
||||||
}
|
}
|
||||||
char* name = strPointToLastToken(argPath, '.');
|
char* name = strPointToLastToken(argPath, '.');
|
||||||
args_setBytes(obj->list, name, src, size);
|
args_setBytes(obj->list, name, src, size);
|
||||||
return 0;
|
return PIKA_RES_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t obj_getInt(PikaObj* self, char* argPath) {
|
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) {
|
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) {
|
if (NULL == obj) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
char* argName = strPointToLastToken(argPath, '.');
|
char* argName = strPointToLastToken(argPath, '.');
|
||||||
Arg* res = args_getArg(obj->list, argName);
|
Arg* res = args_getArg(obj->list, argName);
|
||||||
|
if (isClass) {
|
||||||
|
obj_setArg(self, "_buf", res);
|
||||||
|
res = obj_getArg(self, "_buf");
|
||||||
|
obj_deinit(obj);
|
||||||
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -244,7 +243,7 @@ size_t obj_loadBytes(PikaObj* self, char* argPath, uint8_t* out_buff) {
|
|||||||
return size_mem;
|
return size_mem;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t __obj_setArg(PikaObj* self,
|
static PIKA_RES __obj_setArg(PikaObj* self,
|
||||||
char* argPath,
|
char* argPath,
|
||||||
Arg* arg,
|
Arg* arg,
|
||||||
uint8_t is_copy) {
|
uint8_t is_copy) {
|
||||||
@ -252,7 +251,7 @@ static int32_t __obj_setArg(PikaObj* self,
|
|||||||
PikaObj* obj = obj_getHostObj(self, argPath);
|
PikaObj* obj = obj_getHostObj(self, argPath);
|
||||||
if (NULL == obj) {
|
if (NULL == obj) {
|
||||||
/* object no found */
|
/* object no found */
|
||||||
return 1;
|
return PIKA_RES_ERR_ARG_NO_FOUND;
|
||||||
}
|
}
|
||||||
char* argName = strPointToLastToken(argPath, '.');
|
char* argName = strPointToLastToken(argPath, '.');
|
||||||
Arg* newArg;
|
Arg* newArg;
|
||||||
@ -263,14 +262,14 @@ static int32_t __obj_setArg(PikaObj* self,
|
|||||||
}
|
}
|
||||||
newArg = arg_setName(newArg, argName);
|
newArg = arg_setName(newArg, argName);
|
||||||
args_setArg(obj->list, newArg);
|
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);
|
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);
|
return __obj_setArg(self, argPath, arg, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -304,42 +303,24 @@ char* obj_getStr(PikaObj* self, char* argPath) {
|
|||||||
return res;
|
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,
|
PikaObj* obj_getClassObjByNewFun(PikaObj* context,
|
||||||
char* name,
|
char* name,
|
||||||
NewFun newClassFun) {
|
NewFun newClassFun) {
|
||||||
Args* initArgs = New_args(NULL);
|
Args* initArgs = New_args(NULL);
|
||||||
PikaObj* thisClass = newClassFun(initArgs);
|
PikaObj* thisClass = newClassFun(initArgs);
|
||||||
obj_setPtr(thisClass, "_clsptr", (void*)newClassFun);
|
thisClass->constructor = newClassFun;
|
||||||
obj_setInt(thisClass, "_refcnt", 0);
|
thisClass->refcnt = 0;
|
||||||
args_deinit(initArgs);
|
args_deinit(initArgs);
|
||||||
return thisClass;
|
return thisClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* obj_getMethodArg(PikaObj* obj, char* methodPath) {
|
Arg* _obj_getMethodArg(PikaObj* obj, char* methodPath, Arg* arg_reg) {
|
||||||
Arg* method = NULL;
|
Arg* method = NULL;
|
||||||
char* methodName = strPointToLastToken(methodPath, '.');
|
char* methodName = strPointToLastToken(methodPath, '.');
|
||||||
method = obj_getArg(obj, methodName);
|
method = obj_getArg(obj, methodName);
|
||||||
PikaObj* methodHostClass;
|
PikaObj* methodHostClass;
|
||||||
if (NULL != method) {
|
if (NULL != method) {
|
||||||
method = arg_copy(method);
|
method = arg_copy_noalloc(method, arg_reg);
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
methodHostClass = obj_getClassObj(obj);
|
methodHostClass = obj_getClassObj(obj);
|
||||||
@ -347,14 +328,26 @@ Arg* obj_getMethodArg(PikaObj* obj, char* methodPath) {
|
|||||||
method = NULL;
|
method = NULL;
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
method = arg_copy(obj_getArg(methodHostClass, methodName));
|
method = arg_copy_noalloc(obj_getArg(methodHostClass, methodName), arg_reg);
|
||||||
obj_deinit_no_del(methodHostClass);
|
obj_deinit_no_del(methodHostClass);
|
||||||
exit:
|
exit:
|
||||||
return method;
|
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) {
|
PikaObj* obj_getClassObj(PikaObj* obj) {
|
||||||
NewFun classPtr = (NewFun)obj_getPtr(obj, "_clsptr");
|
NewFun classPtr = obj_getClass(obj);
|
||||||
if (NULL == classPtr) {
|
if (NULL == classPtr) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -393,15 +386,14 @@ PikaObj* newNormalObj(NewFun newObjFun) {
|
|||||||
|
|
||||||
extern PikaObj* __pikaMain;
|
extern PikaObj* __pikaMain;
|
||||||
PikaObj* newRootObj(char* name, NewFun newObjFun) {
|
PikaObj* newRootObj(char* name, NewFun newObjFun) {
|
||||||
|
#if PIKA_POOL_ENABLE
|
||||||
|
mem_pool_init();
|
||||||
|
#endif
|
||||||
PikaObj* newObj = newNormalObj(newObjFun);
|
PikaObj* newObj = newNormalObj(newObjFun);
|
||||||
__pikaMain = newObj;
|
__pikaMain = newObj;
|
||||||
return 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_newMetaObj(NewFun new_obj_fun) {
|
||||||
Arg* arg_new = New_arg(NULL);
|
Arg* arg_new = New_arg(NULL);
|
||||||
/* m means meta-object */
|
/* m means meta-object */
|
||||||
@ -411,7 +403,7 @@ Arg* arg_newMetaObj(NewFun new_obj_fun) {
|
|||||||
|
|
||||||
Arg* arg_newDirectObj(NewFun new_obj_fun) {
|
Arg* arg_newDirectObj(NewFun new_obj_fun) {
|
||||||
PikaObj* newObj = newNormalObj(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;
|
return arg_new;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -442,7 +434,10 @@ exit:
|
|||||||
return res;
|
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) {
|
if (NULL == self) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -456,11 +451,27 @@ static PikaObj* __obj_getObjDirect(PikaObj* self, char* name) {
|
|||||||
if (argType_isObject(type)) {
|
if (argType_isObject(type)) {
|
||||||
return args_getPtr(self->list, name);
|
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;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static PikaObj* __obj_getObjWithKeepDeepth(PikaObj* self,
|
static PikaObj* __obj_getObjWithKeepDeepth(PikaObj* self,
|
||||||
char* objPath,
|
char* objPath,
|
||||||
|
PIKA_BOOL* pIsClass,
|
||||||
int32_t keepDeepth) {
|
int32_t keepDeepth) {
|
||||||
char objPath_buff[PIKA_PATH_BUFF_SIZE];
|
char objPath_buff[PIKA_PATH_BUFF_SIZE];
|
||||||
__platform_memcpy(objPath_buff, objPath, strGetSize(objPath) + 1);
|
__platform_memcpy(objPath_buff, objPath, strGetSize(objPath) + 1);
|
||||||
@ -469,7 +480,7 @@ static PikaObj* __obj_getObjWithKeepDeepth(PikaObj* self,
|
|||||||
PikaObj* obj = self;
|
PikaObj* obj = self;
|
||||||
for (int32_t i = 0; i < token_num - keepDeepth; i++) {
|
for (int32_t i = 0; i < token_num - keepDeepth; i++) {
|
||||||
char* token = strPopToken(token_buff, objPath_buff, '.');
|
char* token = strPopToken(token_buff, objPath_buff, '.');
|
||||||
obj = __obj_getObjDirect(obj, token);
|
obj = __obj_getObjDirect(obj, token, pIsClass);
|
||||||
if (obj == NULL) {
|
if (obj == NULL) {
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
@ -480,11 +491,19 @@ exit:
|
|||||||
}
|
}
|
||||||
|
|
||||||
PikaObj* obj_getObj(PikaObj* self, char* objPath) {
|
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) {
|
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) {
|
Method methodArg_getPtr(Arg* method_arg) {
|
||||||
@ -495,9 +514,12 @@ Method methodArg_getPtr(Arg* method_arg) {
|
|||||||
return (Method)ptr;
|
return (Method)ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* methodArg_getTypeList(Arg* method_arg, Args* buffs) {
|
char* methodArg_getTypeList(Arg* method_arg, char* buffs, size_t size) {
|
||||||
char* method_dec = strsCopy(buffs, methodArg_getDec(method_arg));
|
char* method_dec = strCopy(buffs, methodArg_getDec(method_arg));
|
||||||
return strsCut(buffs, method_dec, '(', ')');
|
if (strGetSize(method_dec) > size) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return strCut(buffs, method_dec, '(', ')');
|
||||||
}
|
}
|
||||||
|
|
||||||
Method obj_getNativeMethod(PikaObj* self, char* method_name) {
|
Method obj_getNativeMethod(PikaObj* self, char* method_name) {
|
||||||
@ -521,7 +543,15 @@ ByteCodeFrame* methodArg_getBytecodeFrame(Arg* method_arg) {
|
|||||||
char* methodArg_getDec(Arg* method_arg) {
|
char* methodArg_getDec(Arg* method_arg) {
|
||||||
uint32_t size_ptr = sizeof(void*);
|
uint32_t size_ptr = sizeof(void*);
|
||||||
void* info = arg_getContent(method_arg);
|
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) {
|
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);
|
uint32_t size_pars = strGetSize(pars);
|
||||||
uintptr_t method_info_bytecode_frame =
|
uintptr_t method_info_bytecode_frame =
|
||||||
(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 =
|
||||||
arg_setPtr(arg, method_info->name, method_info->type, method_info->ptr);
|
arg_setPtr(arg, method_info->name, method_info->type, method_info->ptr);
|
||||||
|
/* the seconed */
|
||||||
arg = arg_append(arg, &(method_info_bytecode_frame),
|
arg = arg_append(arg, &(method_info_bytecode_frame),
|
||||||
sizeof(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);
|
arg = arg_append(arg, method_info->pars, size_pars + 1);
|
||||||
|
|
||||||
args_setArg(self->list, arg);
|
args_setArg(self->list, arg);
|
||||||
strsDeinit(&buffs);
|
strsDeinit(&buffs);
|
||||||
}
|
}
|
||||||
@ -545,6 +581,7 @@ static int32_t __class_defineMethodWithType(PikaObj* self,
|
|||||||
char* declearation,
|
char* declearation,
|
||||||
Method method_ptr,
|
Method method_ptr,
|
||||||
ArgType method_type,
|
ArgType method_type,
|
||||||
|
PikaObj* def_context,
|
||||||
ByteCodeFrame* bytecode_frame) {
|
ByteCodeFrame* bytecode_frame) {
|
||||||
int32_t size = strGetSize(declearation);
|
int32_t size = strGetSize(declearation);
|
||||||
int32_t res = 0;
|
int32_t res = 0;
|
||||||
@ -567,6 +604,7 @@ static int32_t __class_defineMethodWithType(PikaObj* self,
|
|||||||
method_info.name = method_name;
|
method_info.name = method_name;
|
||||||
method_info.ptr = (void*)method_ptr;
|
method_info.ptr = (void*)method_ptr;
|
||||||
method_info.type = method_type;
|
method_info.type = method_type;
|
||||||
|
method_info.def_context = def_context;
|
||||||
method_info.bytecode_frame = bytecode_frame;
|
method_info.bytecode_frame = bytecode_frame;
|
||||||
obj_saveMethodInfo(method_host, &method_info);
|
obj_saveMethodInfo(method_host, &method_info);
|
||||||
res = 0;
|
res = 0;
|
||||||
@ -582,7 +620,7 @@ int32_t class_defineConstructor(PikaObj* self,
|
|||||||
Method methodPtr) {
|
Method methodPtr) {
|
||||||
return __class_defineMethodWithType(self, declearation, methodPtr,
|
return __class_defineMethodWithType(self, declearation, methodPtr,
|
||||||
ARG_TYPE_METHOD_NATIVE_CONSTRUCTOR,
|
ARG_TYPE_METHOD_NATIVE_CONSTRUCTOR,
|
||||||
NULL);
|
NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* define a native method as default */
|
/* define a native method as default */
|
||||||
@ -590,35 +628,40 @@ int32_t class_defineMethod(PikaObj* self,
|
|||||||
char* declearation,
|
char* declearation,
|
||||||
Method methodPtr) {
|
Method methodPtr) {
|
||||||
return __class_defineMethodWithType(self, declearation, 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) */
|
/* define object method, object method is which startwith (self) */
|
||||||
int32_t class_defineRunTimeConstructor(PikaObj* self,
|
int32_t class_defineRunTimeConstructor(PikaObj* self,
|
||||||
char* declearation,
|
char* declearation,
|
||||||
Method methodPtr,
|
Method methodPtr,
|
||||||
|
PikaObj* def_context,
|
||||||
ByteCodeFrame* bytecode_frame) {
|
ByteCodeFrame* bytecode_frame) {
|
||||||
return __class_defineMethodWithType(self, declearation, methodPtr,
|
return __class_defineMethodWithType(self, declearation, methodPtr,
|
||||||
ARG_TYPE_METHOD_CONSTRUCTOR,
|
ARG_TYPE_METHOD_CONSTRUCTOR,
|
||||||
bytecode_frame);
|
def_context, bytecode_frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* define object method, object method is which startwith (self) */
|
/* define object method, object method is which startwith (self) */
|
||||||
int32_t class_defineObjectMethod(PikaObj* self,
|
int32_t class_defineObjectMethod(PikaObj* self,
|
||||||
char* declearation,
|
char* declearation,
|
||||||
Method methodPtr,
|
Method methodPtr,
|
||||||
|
PikaObj* def_context,
|
||||||
ByteCodeFrame* bytecode_frame) {
|
ByteCodeFrame* bytecode_frame) {
|
||||||
return __class_defineMethodWithType(self, declearation, methodPtr,
|
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 */
|
/* define a static method as default */
|
||||||
int32_t class_defineStaticMethod(PikaObj* self,
|
int32_t class_defineStaticMethod(PikaObj* self,
|
||||||
char* declearation,
|
char* declearation,
|
||||||
Method methodPtr,
|
Method methodPtr,
|
||||||
|
PikaObj* def_context,
|
||||||
ByteCodeFrame* bytecode_frame) {
|
ByteCodeFrame* bytecode_frame) {
|
||||||
return __class_defineMethodWithType(self, declearation, methodPtr,
|
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) {
|
VMParameters* obj_runDirect(PikaObj* self, char* cmd) {
|
||||||
@ -681,12 +724,13 @@ void obj_run(PikaObj* self, char* cmd) {
|
|||||||
obj_runDirect(self, 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);
|
Method native_method = obj_getNativeMethod(self, method_name);
|
||||||
if (NULL == native_method) {
|
if (NULL == native_method) {
|
||||||
return;
|
return PIKA_RES_ERR_ARG_NO_FOUND;
|
||||||
}
|
}
|
||||||
native_method(self, args);
|
native_method(self, args);
|
||||||
|
return PIKA_RES_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __clearBuff(char* buff, int size) {
|
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) {
|
enum shell_state obj_runChar(PikaObj* self, char inputChar) {
|
||||||
struct shell_config* cfg = args_getStruct(self->list, "__shcfg");
|
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* rxBuff = (char*)obj_getBytes(self, "__shbuf");
|
||||||
char* input_line = NULL;
|
char* input_line = NULL;
|
||||||
int is_in_block = obj_getInt(self, "__shinb");
|
int is_in_block = obj_getInt(self, "__shinb");
|
||||||
@ -841,10 +886,6 @@ int32_t obj_getErrorCode(PikaObj* self) {
|
|||||||
return obj_getInt(self, "__errCode");
|
return obj_getInt(self, "__errCode");
|
||||||
}
|
}
|
||||||
|
|
||||||
void args_setErrorCode(Args* args, int32_t errCode) {
|
|
||||||
args_setInt(args, "__errCode", errCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t args_getErrorCode(Args* args) {
|
int32_t args_getErrorCode(Args* args) {
|
||||||
if (!args_isArgExist(args, "__errCode")) {
|
if (!args_isArgExist(args, "__errCode")) {
|
||||||
return 0;
|
return 0;
|
||||||
@ -860,10 +901,6 @@ char* obj_getSysOut(PikaObj* self) {
|
|||||||
return obj_getStr(self, "__sysOut");
|
return obj_getStr(self, "__sysOut");
|
||||||
}
|
}
|
||||||
|
|
||||||
char* args_getSysOut(Args* args) {
|
|
||||||
return args_getStr(args, "__sysOut");
|
|
||||||
}
|
|
||||||
|
|
||||||
void args_setSysOut(Args* args, char* str) {
|
void args_setSysOut(Args* args, char* str) {
|
||||||
// args_setStr(args, "__sysOut", str);
|
// args_setStr(args, "__sysOut", str);
|
||||||
if (NULL == str) {
|
if (NULL == str) {
|
||||||
@ -875,15 +912,6 @@ void args_setSysOut(Args* args, char* str) {
|
|||||||
__platform_printf("%s\r\n", 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) {
|
void method_returnBytes(Args* args, uint8_t* val) {
|
||||||
args_setBytes(args, "return", val, PIKA_BYTES_DEFAULT_SIZE);
|
args_setBytes(args, "return", val, PIKA_BYTES_DEFAULT_SIZE);
|
||||||
}
|
}
|
||||||
@ -932,30 +960,16 @@ PikaObj* New_PikaObj(void) {
|
|||||||
PikaObj* self = pikaMalloc(sizeof(PikaObj));
|
PikaObj* self = pikaMalloc(sizeof(PikaObj));
|
||||||
/* List */
|
/* List */
|
||||||
self->list = New_args(NULL);
|
self->list = New_args(NULL);
|
||||||
|
self->refcnt = 0;
|
||||||
|
self->constructor = NULL;
|
||||||
return self;
|
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) {
|
Arg* arg_setRef(Arg* self, char* name, PikaObj* obj) {
|
||||||
obj_refcntInc(obj);
|
obj_refcntInc(obj);
|
||||||
return arg_setPtr(self, name, ARG_TYPE_OBJECT, 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) {
|
int32_t obj_newDirectObj(PikaObj* self, char* objName, NewFun newFunPtr) {
|
||||||
Arg* new_obj = arg_newDirectObj(newFunPtr);
|
Arg* new_obj = arg_newDirectObj(newFunPtr);
|
||||||
new_obj = arg_setName(new_obj, objName);
|
new_obj = arg_setName(new_obj, objName);
|
||||||
@ -991,11 +1005,19 @@ PikaObj* obj_importModuleWithByteCode(PikaObj* self,
|
|||||||
PikaObj* obj_importModuleWithByteCodeFrame(PikaObj* self,
|
PikaObj* obj_importModuleWithByteCodeFrame(PikaObj* self,
|
||||||
char* name,
|
char* name,
|
||||||
ByteCodeFrame* byteCode_frame) {
|
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);
|
pikaVM_runByteCodeFrame(obj_getObj(self, name), byteCode_frame);
|
||||||
return self;
|
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) {
|
PikaObj* obj_linkLibrary(PikaObj* self, uint8_t* library_bytes) {
|
||||||
obj_newMetaObj(self, "__lib", New_LibObj);
|
obj_newMetaObj(self, "__lib", New_LibObj);
|
||||||
LibObj* lib = obj_getObj(self, "__lib");
|
LibObj* lib = obj_getObj(self, "__lib");
|
||||||
@ -1065,5 +1087,82 @@ char* obj_toStr(PikaObj* self) {
|
|||||||
char* str_res = obj_getStr(self, "__res");
|
char* str_res = obj_getStr(self, "__res");
|
||||||
return str_res;
|
return str_res;
|
||||||
}
|
}
|
||||||
return NULL;
|
|
||||||
|
/* normal object */
|
||||||
|
Args buffs = {0};
|
||||||
|
char* str_res =
|
||||||
|
strsFormat(&buffs, PIKA_SPRINTF_BUFF_SIZE, "<object at %p>", self);
|
||||||
|
obj_setStr(self, "__res", str_res);
|
||||||
|
strsDeinit(&buffs);
|
||||||
|
return obj_getStr(self, "__res");
|
||||||
|
}
|
||||||
|
|
||||||
|
void pks_eventLicener_registEvent(PikaEventListener* self,
|
||||||
|
uint32_t eventId,
|
||||||
|
PikaObj* eventHandleObj) {
|
||||||
|
Args buffs = {0};
|
||||||
|
char* event_name =
|
||||||
|
strsFormat(&buffs, PIKA_SPRINTF_BUFF_SIZE, "%ld", eventId);
|
||||||
|
obj_newDirectObj(self, event_name, New_TinyObj);
|
||||||
|
PikaObj* event_item = obj_getObj(self, event_name);
|
||||||
|
obj_setRef(event_item, "eventHandleObj", eventHandleObj);
|
||||||
|
strsDeinit(&buffs);
|
||||||
|
}
|
||||||
|
|
||||||
|
PikaObj* pks_eventLisener_getEventHandleObj(PikaEventListener* self,
|
||||||
|
uint32_t eventId) {
|
||||||
|
Args buffs = {0};
|
||||||
|
char* event_name =
|
||||||
|
strsFormat(&buffs, PIKA_SPRINTF_BUFF_SIZE, "%ld", eventId);
|
||||||
|
PikaObj* event_item = obj_getObj(self, event_name);
|
||||||
|
PikaObj* eventHandleObj = obj_getPtr(event_item, "eventHandleObj");
|
||||||
|
strsDeinit(&buffs);
|
||||||
|
return eventHandleObj;
|
||||||
|
}
|
||||||
|
|
||||||
|
void pks_eventLisener_init(PikaEventListener** p_self) {
|
||||||
|
*p_self = newNormalObj(New_TinyObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
void pks_eventLisener_deinit(PikaEventListener** p_self) {
|
||||||
|
if (NULL != *p_self) {
|
||||||
|
obj_deinit(*p_self);
|
||||||
|
*p_self = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void pks_eventLisener_sendSignal(PikaEventListener* self,
|
||||||
|
uint32_t eventId,
|
||||||
|
int eventSignal) {
|
||||||
|
PikaObj* eventHandleObj = pks_eventLisener_getEventHandleObj(self, eventId);
|
||||||
|
if (NULL == eventHandleObj) {
|
||||||
|
__platform_printf(
|
||||||
|
"Error: can not find event handler by id: [0x%02x]\r\n", eventId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
obj_setInt(eventHandleObj, "eventSignal", eventSignal);
|
||||||
|
/* clang-format off */
|
||||||
|
PIKA_PYTHON(
|
||||||
|
eventCallBack(eventSignal)
|
||||||
|
)
|
||||||
|
/* clang-format on */
|
||||||
|
const uint8_t bytes[] = {
|
||||||
|
0x08, 0x00, /* instruct array size */
|
||||||
|
0x10, 0x81, 0x01, 0x00, 0x00, 0x02, 0x0d, 0x00, /* instruct array */
|
||||||
|
0x1b, 0x00, /* const pool size */
|
||||||
|
0x00, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x69, 0x67,
|
||||||
|
0x6e, 0x61, 0x6c, 0x00, 0x65, 0x76, 0x65, 0x6e, 0x74,
|
||||||
|
0x43, 0x61, 0x6c, 0x6c, 0x42, 0x61, 0x63, 0x6b, 0x00, /* const pool */
|
||||||
|
};
|
||||||
|
pikaVM_runByteCode(eventHandleObj, (uint8_t*)bytes);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* print major version info */
|
||||||
|
void pks_printVersion(void) {
|
||||||
|
__platform_printf("pikascript-core==v%d.%d.%d (%s)\r\n", PIKA_VERSION_MAJOR,
|
||||||
|
PIKA_VERSION_MINOR, PIKA_VERSION_MICRO, PIKA_EDIT_TIME);
|
||||||
|
}
|
||||||
|
|
||||||
|
void* obj_getStruct(PikaObj* self, char* name) {
|
||||||
|
return args_getStruct(self->list, name);
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include "dataArgs.h"
|
#include "dataArgs.h"
|
||||||
#include "dataLink.h"
|
#include "dataLink.h"
|
||||||
#include "dataMemory.h"
|
#include "dataMemory.h"
|
||||||
|
#include "dataStrs.h"
|
||||||
|
|
||||||
typedef struct InstructUnit InstructUnit;
|
typedef struct InstructUnit InstructUnit;
|
||||||
struct InstructUnit {
|
struct InstructUnit {
|
||||||
@ -68,6 +69,8 @@ struct ByteCodeFrame {
|
|||||||
typedef struct PikaObj PikaObj;
|
typedef struct PikaObj PikaObj;
|
||||||
struct PikaObj {
|
struct PikaObj {
|
||||||
Args* list;
|
Args* list;
|
||||||
|
uint8_t refcnt;
|
||||||
|
void* constructor;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef PikaObj* (*NewFun)(Args* args);
|
typedef PikaObj* (*NewFun)(Args* args);
|
||||||
@ -81,6 +84,7 @@ struct MethodInfo {
|
|||||||
char* dec;
|
char* dec;
|
||||||
char* ptr;
|
char* ptr;
|
||||||
char* pars;
|
char* pars;
|
||||||
|
PikaObj* def_context;
|
||||||
ArgType type;
|
ArgType type;
|
||||||
ByteCodeFrame* bytecode_frame;
|
ByteCodeFrame* bytecode_frame;
|
||||||
};
|
};
|
||||||
@ -96,14 +100,14 @@ int32_t obj_enable(PikaObj* self);
|
|||||||
int32_t obj_disable(PikaObj* self);
|
int32_t obj_disable(PikaObj* self);
|
||||||
|
|
||||||
// arg type operations
|
// arg type operations
|
||||||
int32_t obj_setInt(PikaObj* self, char* argPath, int64_t val);
|
PIKA_RES obj_setInt(PikaObj* self, char* argPath, int64_t val);
|
||||||
int32_t obj_setRef(PikaObj* self, char* argPath, void* pointer);
|
PIKA_RES obj_setRef(PikaObj* self, char* argPath, void* pointer);
|
||||||
int32_t obj_setPtr(PikaObj* self, char* argPath, void* pointer);
|
PIKA_RES obj_setPtr(PikaObj* self, char* argPath, void* pointer);
|
||||||
int32_t obj_setFloat(PikaObj* self, char* argPath, double value);
|
PIKA_RES obj_setFloat(PikaObj* self, char* argPath, double value);
|
||||||
int32_t obj_setStr(PikaObj* self, char* argPath, char* str);
|
PIKA_RES obj_setStr(PikaObj* self, char* argPath, char* str);
|
||||||
int32_t obj_setArg(PikaObj* self, char* argPath, Arg* arg);
|
PIKA_RES obj_setArg(PikaObj* self, char* argPath, Arg* arg);
|
||||||
int32_t obj_setArg_noCopy(PikaObj* self, char* argPath, Arg* arg);
|
PIKA_RES obj_setArg_noCopy(PikaObj* self, char* argPath, Arg* arg);
|
||||||
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);
|
||||||
|
|
||||||
void* obj_getPtr(PikaObj* self, char* argPath);
|
void* obj_getPtr(PikaObj* self, char* argPath);
|
||||||
double obj_getFloat(PikaObj* self, char* argPath);
|
double obj_getFloat(PikaObj* self, char* argPath);
|
||||||
@ -123,6 +127,9 @@ int32_t obj_load(PikaObj* self, Args* args, char* name);
|
|||||||
int32_t obj_addOther(PikaObj* self, char* subObjectName, void* new_projcetFun);
|
int32_t obj_addOther(PikaObj* self, char* subObjectName, void* new_projcetFun);
|
||||||
PikaObj* obj_getObj(PikaObj* self, char* objPath);
|
PikaObj* obj_getObj(PikaObj* self, char* objPath);
|
||||||
PikaObj* obj_getHostObj(PikaObj* self, char* objPath);
|
PikaObj* obj_getHostObj(PikaObj* self, char* objPath);
|
||||||
|
PikaObj* obj_getHostObjWithIsClass(PikaObj* self,
|
||||||
|
char* objPath,
|
||||||
|
PIKA_BOOL* pIsClass);
|
||||||
|
|
||||||
// subProcess
|
// subProcess
|
||||||
int32_t obj_freeObj(PikaObj* self, char* subObjectName);
|
int32_t obj_freeObj(PikaObj* self, char* subObjectName);
|
||||||
@ -133,11 +140,13 @@ int32_t class_defineMethod(PikaObj* self, char* declearation, Method methodPtr);
|
|||||||
int32_t class_defineObjectMethod(PikaObj* self,
|
int32_t class_defineObjectMethod(PikaObj* self,
|
||||||
char* declearation,
|
char* declearation,
|
||||||
Method methodPtr,
|
Method methodPtr,
|
||||||
|
PikaObj* def_context,
|
||||||
ByteCodeFrame* bytecode_frame);
|
ByteCodeFrame* bytecode_frame);
|
||||||
|
|
||||||
int32_t class_defineStaticMethod(PikaObj* self,
|
int32_t class_defineStaticMethod(PikaObj* self,
|
||||||
char* declearation,
|
char* declearation,
|
||||||
Method methodPtr,
|
Method methodPtr,
|
||||||
|
PikaObj* def_context,
|
||||||
ByteCodeFrame* bytecode_frame);
|
ByteCodeFrame* bytecode_frame);
|
||||||
|
|
||||||
int32_t class_defineConstructor(PikaObj* self,
|
int32_t class_defineConstructor(PikaObj* self,
|
||||||
@ -147,6 +156,7 @@ int32_t class_defineConstructor(PikaObj* self,
|
|||||||
int32_t class_defineRunTimeConstructor(PikaObj* self,
|
int32_t class_defineRunTimeConstructor(PikaObj* self,
|
||||||
char* declearation,
|
char* declearation,
|
||||||
Method methodPtr,
|
Method methodPtr,
|
||||||
|
PikaObj* def_context,
|
||||||
ByteCodeFrame* bytecode_frame);
|
ByteCodeFrame* bytecode_frame);
|
||||||
|
|
||||||
int32_t obj_removeArg(PikaObj* self, char* argPath);
|
int32_t obj_removeArg(PikaObj* self, char* argPath);
|
||||||
@ -155,6 +165,7 @@ PikaObj* obj_getClassObjByNewFun(PikaObj* self, char* name, NewFun newClassFun);
|
|||||||
PikaObj* newRootObj(char* name, NewFun newObjFun);
|
PikaObj* newRootObj(char* name, NewFun newObjFun);
|
||||||
PikaObj* obj_getClassObj(PikaObj* obj);
|
PikaObj* obj_getClassObj(PikaObj* obj);
|
||||||
Arg* obj_getMethodArg(PikaObj* obj, char* methodPath);
|
Arg* obj_getMethodArg(PikaObj* obj, char* methodPath);
|
||||||
|
Arg* obj_getMethodArg_noalloc(PikaObj* obj, char* methodPath, Arg* arg_reg);
|
||||||
|
|
||||||
void obj_setErrorCode(PikaObj* self, int32_t errCode);
|
void obj_setErrorCode(PikaObj* self, int32_t errCode);
|
||||||
int32_t obj_getErrorCode(PikaObj* self);
|
int32_t obj_getErrorCode(PikaObj* self);
|
||||||
@ -180,7 +191,7 @@ double method_getFloat(Args* args, char* argName);
|
|||||||
char* method_getStr(Args* args, char* argName);
|
char* method_getStr(Args* args, char* argName);
|
||||||
void method_returnArg(Args* args, Arg* arg);
|
void method_returnArg(Args* args, Arg* arg);
|
||||||
char* methodArg_getDec(Arg* method_arg);
|
char* methodArg_getDec(Arg* method_arg);
|
||||||
char* methodArg_getTypeList(Arg* method_arg, Args* buffs);
|
char* methodArg_getTypeList(Arg* method_arg, char* buffs, size_t size);
|
||||||
ByteCodeFrame* methodArg_getBytecodeFrame(Arg* method_arg);
|
ByteCodeFrame* methodArg_getBytecodeFrame(Arg* method_arg);
|
||||||
Method methodArg_getPtr(Arg* method_arg);
|
Method methodArg_getPtr(Arg* method_arg);
|
||||||
|
|
||||||
@ -214,16 +225,16 @@ void obj_shellLineProcess(PikaObj* self,
|
|||||||
*/
|
*/
|
||||||
int pikaCompile(char* output_file_name, char* py_lines);
|
int pikaCompile(char* output_file_name, char* py_lines);
|
||||||
Method obj_getNativeMethod(PikaObj* self, char* method_name);
|
Method obj_getNativeMethod(PikaObj* self, char* method_name);
|
||||||
void obj_runNativeMethod(PikaObj* self, char* method_name, Args* args);
|
PIKA_RES obj_runNativeMethod(PikaObj* self, char* method_name, Args* args);
|
||||||
Arg* obj_newObjInPackage(NewFun newObjFun);
|
Arg* obj_newObjInPackage(NewFun newObjFun);
|
||||||
|
|
||||||
void obj_refcntInc(PikaObj* self);
|
|
||||||
void obj_refcntDec(PikaObj* self);
|
|
||||||
int obj_refcntNow(PikaObj* self);
|
|
||||||
PikaObj* newNormalObj(NewFun newObjFun);
|
PikaObj* newNormalObj(NewFun newObjFun);
|
||||||
Arg* arg_setRef(Arg* self, char* name, PikaObj* obj);
|
Arg* arg_setRef(Arg* self, char* name, PikaObj* obj);
|
||||||
Arg* arg_setWeakRef(Arg* self, char* name, PikaObj* obj);
|
Arg* arg_setWeakRef(Arg* self, char* name, PikaObj* obj);
|
||||||
|
|
||||||
|
#define arg_newRef(obj) arg_setRef(NULL, "", (obj))
|
||||||
|
#define arg_newWeakRef(obj) arg_setWeakRef(NULL, "", (obj))
|
||||||
|
|
||||||
PikaObj* obj_importModuleWithByteCodeFrame(PikaObj* self,
|
PikaObj* obj_importModuleWithByteCodeFrame(PikaObj* self,
|
||||||
char* name,
|
char* name,
|
||||||
ByteCodeFrame* bytecode_frame);
|
ByteCodeFrame* bytecode_frame);
|
||||||
@ -252,4 +263,32 @@ enum shell_state obj_runChar(PikaObj* self, char inputChar);
|
|||||||
#define PIKA_PYTHON(x)
|
#define PIKA_PYTHON(x)
|
||||||
#define PIKA_PYTHON_END
|
#define PIKA_PYTHON_END
|
||||||
|
|
||||||
|
typedef PikaObj PikaEventListener;
|
||||||
|
|
||||||
|
void pks_eventLisener_sendSignal(PikaEventListener* self,
|
||||||
|
uint32_t eventId,
|
||||||
|
int eventSignal);
|
||||||
|
|
||||||
|
void pks_eventLicener_registEvent(PikaEventListener* self,
|
||||||
|
uint32_t eventId,
|
||||||
|
PikaObj* eventHandleObj);
|
||||||
|
|
||||||
|
void pks_eventLisener_init(PikaEventListener** p_self);
|
||||||
|
void pks_eventLisener_deinit(PikaEventListener** p_self);
|
||||||
|
PikaObj* methodArg_getDefContext(Arg* method_arg);
|
||||||
|
PikaObj* Obj_linkLibraryFile(PikaObj* self, char* input_file_name);
|
||||||
|
NewFun obj_getClass(PikaObj* obj);
|
||||||
|
|
||||||
|
void pks_printVersion(void);
|
||||||
|
void* obj_getStruct(PikaObj* self, char* name);
|
||||||
|
PikaObj* pks_eventLisener_getEventHandleObj(PikaEventListener* self,
|
||||||
|
uint32_t eventId);
|
||||||
|
|
||||||
|
#define obj_refcntDec(self) (((self)->refcnt--))
|
||||||
|
#define obj_refcntInc(self) (((self)->refcnt)++)
|
||||||
|
#define obj_refcntNow(self) ((self)->refcnt)
|
||||||
|
|
||||||
|
#define obj_setStruct(PikaObj_p_self, char_p_name, struct_) \
|
||||||
|
args_setStruct(((PikaObj_p_self)->list), char_p_name, struct_)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -46,9 +46,12 @@ enum StmtType {
|
|||||||
STMT_bytes,
|
STMT_bytes,
|
||||||
STMT_number,
|
STMT_number,
|
||||||
STMT_method,
|
STMT_method,
|
||||||
|
STMT_chain,
|
||||||
STMT_operator,
|
STMT_operator,
|
||||||
STMT_import,
|
STMT_import,
|
||||||
STMT_list,
|
STMT_list,
|
||||||
|
STMT_slice,
|
||||||
|
STMT_dict,
|
||||||
STMT_none,
|
STMT_none,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -60,6 +63,12 @@ struct Asmer {
|
|||||||
char* line_pointer;
|
char* line_pointer;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct SyntaxItem {
|
||||||
|
char* astNodeName;
|
||||||
|
char* asmCode;
|
||||||
|
PIKA_BOOL isUseNodeValue;
|
||||||
|
} SyntaxItem;
|
||||||
|
|
||||||
typedef struct LexToken LexToken;
|
typedef struct LexToken LexToken;
|
||||||
struct LexToken {
|
struct LexToken {
|
||||||
char* token;
|
char* token;
|
||||||
@ -78,6 +87,7 @@ struct ParserState {
|
|||||||
Arg* last_token;
|
Arg* last_token;
|
||||||
Args* iter_buffs;
|
Args* iter_buffs;
|
||||||
Args* buffs_p;
|
Args* buffs_p;
|
||||||
|
PIKA_RES result;
|
||||||
};
|
};
|
||||||
|
|
||||||
char* Parser_multiLineToAsm(Args* outBuffs, char* multiLine);
|
char* Parser_multiLineToAsm(Args* outBuffs, char* multiLine);
|
||||||
@ -92,7 +102,7 @@ char* Parser_parsePyLines(Args* outBuffs,
|
|||||||
char* py_lines);
|
char* py_lines);
|
||||||
#define ParserState_forEach(parseState) \
|
#define ParserState_forEach(parseState) \
|
||||||
ParserState_beforeIter(&parseState); \
|
ParserState_beforeIter(&parseState); \
|
||||||
for (int i = 0; i < parseState.length; i++)
|
for (int __i = 0; __i < parseState.length; __i++)
|
||||||
|
|
||||||
#define ParserState_forEachTokenExistPs(parseState, tokens) \
|
#define ParserState_forEachTokenExistPs(parseState, tokens) \
|
||||||
/* init parserStage */ \
|
/* init parserStage */ \
|
||||||
@ -101,9 +111,10 @@ char* Parser_parsePyLines(Args* outBuffs,
|
|||||||
ParserState_forEach(parseState)
|
ParserState_forEach(parseState)
|
||||||
|
|
||||||
#define ParserState_forEachToken(parseState, tokens) \
|
#define ParserState_forEachToken(parseState, tokens) \
|
||||||
struct ParserState parseState; \
|
struct ParserState parseState; \
|
||||||
ParserState_forEachTokenExistPs(parseState, tokens)
|
ParserState_forEachTokenExistPs(parseState, tokens)
|
||||||
|
|
||||||
uint16_t Tokens_getSize(char* tokens);
|
uint16_t Tokens_getSize(char* tokens);
|
||||||
|
char* Parser_fileToAsm(Args* outBuffs, char* filename);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -101,6 +101,7 @@ PIKA_WEAK void __platform_wait(void) {
|
|||||||
while (1) {
|
while (1) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
PIKA_WEAK void* __platform_memset(void* mem, int ch, size_t size) {
|
PIKA_WEAK void* __platform_memset(void* mem, int ch, size_t size) {
|
||||||
return memset(mem, ch, size);
|
return memset(mem, ch, size);
|
||||||
}
|
}
|
||||||
@ -119,6 +120,7 @@ PIKA_WEAK char __platform_getchar(void) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* fopen */
|
||||||
PIKA_WEAK FILE* __platform_fopen(const char* filename, const char* modes) {
|
PIKA_WEAK FILE* __platform_fopen(const char* filename, const char* modes) {
|
||||||
#if defined(__linux) || defined(_WIN32)
|
#if defined(__linux) || defined(_WIN32)
|
||||||
return fopen(filename, modes);
|
return fopen(filename, modes);
|
||||||
@ -129,6 +131,7 @@ PIKA_WEAK FILE* __platform_fopen(const char* filename, const char* modes) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* fclose */
|
||||||
PIKA_WEAK int __platform_fclose(FILE* stream) {
|
PIKA_WEAK int __platform_fclose(FILE* stream) {
|
||||||
#if defined(__linux) || defined(_WIN32)
|
#if defined(__linux) || defined(_WIN32)
|
||||||
return fclose(stream);
|
return fclose(stream);
|
||||||
@ -139,6 +142,7 @@ PIKA_WEAK int __platform_fclose(FILE* stream) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* fwrite */
|
||||||
PIKA_WEAK size_t __platform_fwrite(const void* ptr,
|
PIKA_WEAK size_t __platform_fwrite(const void* ptr,
|
||||||
size_t size,
|
size_t size,
|
||||||
size_t n,
|
size_t n,
|
||||||
@ -152,6 +156,7 @@ PIKA_WEAK size_t __platform_fwrite(const void* ptr,
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* fread */
|
||||||
PIKA_WEAK size_t __platform_fread(void* ptr,
|
PIKA_WEAK size_t __platform_fread(void* ptr,
|
||||||
size_t size,
|
size_t size,
|
||||||
size_t n,
|
size_t n,
|
||||||
@ -164,3 +169,25 @@ PIKA_WEAK size_t __platform_fread(void* ptr,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* fseek */
|
||||||
|
PIKA_WEAK int __platform_fseek(FILE* stream, long offset, int whence) {
|
||||||
|
#if defined(__linux) || defined(_WIN32)
|
||||||
|
return fseek(stream, offset, whence);
|
||||||
|
#else
|
||||||
|
__platform_printf("[error]: __platform_fseek need implementation!\r\n");
|
||||||
|
while (1) {
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ftell */
|
||||||
|
PIKA_WEAK long __platform_ftell(FILE* stream) {
|
||||||
|
#if defined(__linux) || defined(_WIN32)
|
||||||
|
return ftell(stream);
|
||||||
|
#else
|
||||||
|
__platform_printf("[error]: __platform_ftell need implementation!\r\n");
|
||||||
|
while (1) {
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
@ -36,6 +36,18 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
/* clang-format off */
|
||||||
|
#if PIKA_ASSERT_ENABLE
|
||||||
|
#define pika_assert(expr) \
|
||||||
|
if(!(expr)) { \
|
||||||
|
__platform_printf("Assertion failed: %s\nfile: %s:%d\n", #expr, __FILE__, __LINE__); \
|
||||||
|
abort(); \
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#define pika_assert(...)
|
||||||
|
#endif
|
||||||
|
/* clang-format on */
|
||||||
|
|
||||||
/* Compiler */
|
/* Compiler */
|
||||||
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 5000000) /* ARM Compiler \
|
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 5000000) /* ARM Compiler \
|
||||||
*/
|
*/
|
||||||
@ -65,23 +77,24 @@
|
|||||||
#define __platform_printf(...) rt_kprintf(__VA_ARGS__)
|
#define __platform_printf(...) rt_kprintf(__VA_ARGS__)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* clang-format off */
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
PIKA_RES_ERR_ARG_NO_FOUND = -12,
|
PIKA_RES_OK = 0,
|
||||||
PIKA_RES_ERR_UNKNOWN_INSTRUCTION = -11,
|
PIKA_RES_ERR_RUNTIME_ERROR,
|
||||||
PIKA_RES_ERR_OUT_OF_RANGE = -10,
|
PIKA_RES_ERR_ARG_NO_FOUND,
|
||||||
PIKA_RES_ERR_IO_ERROR = -9,
|
PIKA_RES_ERR_UNKNOWN_INSTRUCTION,
|
||||||
PIKA_RES_ERR_INSUFFICIENT_RESOURCE = -8,
|
PIKA_RES_ERR_OUT_OF_RANGE,
|
||||||
PIKA_RES_ERR_INVALID_PARAM = -7,
|
PIKA_RES_ERR_IO_ERROR,
|
||||||
PIKA_RES_ERR_INVALID_PTR = -6,
|
PIKA_RES_ERR_INSUFFICIENT_RESOURCE,
|
||||||
PIKA_RES_ERR_UNALIGNED_PTR = -5,
|
PIKA_RES_ERR_INVALID_PARAM,
|
||||||
PIKA_RES_ERR_INVALID_VERSION_NUMBER = -4,
|
PIKA_RES_ERR_INVALID_PTR,
|
||||||
PIKA_RES_ERR_ILLEGAL_MAGIC_CODE = -3,
|
PIKA_RES_ERR_UNALIGNED_PTR,
|
||||||
PIKA_RES_ERR_OPERATION_FAILED = -2,
|
PIKA_RES_ERR_INVALID_VERSION_NUMBER,
|
||||||
PIKA_RES_ERR_UNKNOWN = -1,
|
PIKA_RES_ERR_ILLEGAL_MAGIC_CODE,
|
||||||
PIKA_RES_OK = 0,
|
PIKA_RES_ERR_OPERATION_FAILED,
|
||||||
|
PIKA_RES_ERR_UNKNOWN,
|
||||||
|
PIKA_RES_ERR_SYNTAX_ERROR,
|
||||||
|
PIKA_RES_ERR_IO,
|
||||||
} PIKA_RES;
|
} PIKA_RES;
|
||||||
/* clang-format on*/
|
|
||||||
|
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
|
|
||||||
@ -139,6 +152,8 @@ FILE* __platform_fopen(const char* filename, const char* modes);
|
|||||||
int __platform_fclose(FILE* stream);
|
int __platform_fclose(FILE* stream);
|
||||||
size_t __platform_fwrite(const void* ptr, size_t size, size_t n, FILE* stream);
|
size_t __platform_fwrite(const void* ptr, size_t size, size_t n, FILE* stream);
|
||||||
size_t __platform_fread(void* ptr, size_t size, size_t n, FILE* stream);
|
size_t __platform_fread(void* ptr, size_t size, size_t n, FILE* stream);
|
||||||
|
int __platform_fseek(FILE* stream, long offset, int whence);
|
||||||
|
long __platform_ftell(FILE* stream);
|
||||||
|
|
||||||
/* error */
|
/* error */
|
||||||
void __platform_error_handle(void);
|
void __platform_error_handle(void);
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -38,6 +38,32 @@ enum Instruct {
|
|||||||
__INSTRCUTION_CNT,
|
__INSTRCUTION_CNT,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
VM_JMP_EXIT = -999,
|
||||||
|
VM_JMP_CONTINUE = -997,
|
||||||
|
VM_JMP_BREAK = -998,
|
||||||
|
VM_JMP_RAISE = -996,
|
||||||
|
} VM_JMP;
|
||||||
|
|
||||||
|
typedef enum { VM_PC_EXIT = -99999 } VM_PC;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
TRY_STATE_NONE = 0,
|
||||||
|
TRY_STATE_TOP,
|
||||||
|
TRY_STATE_INNER,
|
||||||
|
} TRY_STATE;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
TRY_RESULT_NONE = 0,
|
||||||
|
TRY_RESULT_RAISE,
|
||||||
|
} TRY_RESULT;
|
||||||
|
|
||||||
|
typedef struct TryInfo TryInfo;
|
||||||
|
struct TryInfo {
|
||||||
|
TRY_STATE try_state;
|
||||||
|
TRY_RESULT try_result;
|
||||||
|
};
|
||||||
|
|
||||||
typedef struct VMState VMState;
|
typedef struct VMState VMState;
|
||||||
struct VMState {
|
struct VMState {
|
||||||
VMParameters* locals;
|
VMParameters* locals;
|
||||||
@ -46,10 +72,16 @@ struct VMState {
|
|||||||
int32_t jmp;
|
int32_t jmp;
|
||||||
int32_t pc;
|
int32_t pc;
|
||||||
ByteCodeFrame* bytecode_frame;
|
ByteCodeFrame* bytecode_frame;
|
||||||
|
uint8_t loop_deepth;
|
||||||
uint8_t error_code;
|
uint8_t error_code;
|
||||||
uint8_t line_error_code;
|
uint8_t line_error_code;
|
||||||
|
uint8_t try_error_code;
|
||||||
|
PikaObj* lreg[PIKA_REGIST_SIZE];
|
||||||
|
PIKA_BOOL ireg[PIKA_REGIST_SIZE];
|
||||||
|
TryInfo* try_info;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
VMParameters* pikaVM_run(PikaObj* self, char* pyLine);
|
VMParameters* pikaVM_run(PikaObj* self, char* pyLine);
|
||||||
VMParameters* pikaVM_runAsm(PikaObj* self, char* pikaAsm);
|
VMParameters* pikaVM_runAsm(PikaObj* self, char* pikaAsm);
|
||||||
VMParameters* pikaVM_runByteCodeFrame(PikaObj* self,
|
VMParameters* pikaVM_runByteCodeFrame(PikaObj* self,
|
||||||
@ -95,11 +127,15 @@ enum Instruct pikaVM_getInstructFromAsm(char* line);
|
|||||||
void constPool_init(ConstPool* self);
|
void constPool_init(ConstPool* self);
|
||||||
void constPool_deinit(ConstPool* self);
|
void constPool_deinit(ConstPool* self);
|
||||||
void constPool_append(ConstPool* self, char* content);
|
void constPool_append(ConstPool* self, char* content);
|
||||||
|
|
||||||
|
#define constPool_getStart(self) ((self)->content_start)
|
||||||
|
#define constPool_getLastOffset(self) ((self)->size)
|
||||||
|
#define constPool_getByOffset(self, offset) \
|
||||||
|
(char*)((uintptr_t)constPool_getStart((self)) + (uintptr_t)(offset))
|
||||||
|
|
||||||
char* constPool_getNow(ConstPool* self);
|
char* constPool_getNow(ConstPool* self);
|
||||||
char* constPool_getNext(ConstPool* self);
|
char* constPool_getNext(ConstPool* self);
|
||||||
char* constPool_getByIndex(ConstPool* self, uint16_t index);
|
char* constPool_getByIndex(ConstPool* self, uint16_t index);
|
||||||
char* constPool_getByOffset(ConstPool* self, uint16_t offset);
|
|
||||||
uint16_t constPool_getLastOffset(ConstPool* self);
|
|
||||||
void constPool_print(ConstPool* self);
|
void constPool_print(ConstPool* self);
|
||||||
|
|
||||||
void byteCodeFrame_init(ByteCodeFrame* bf);
|
void byteCodeFrame_init(ByteCodeFrame* bf);
|
||||||
@ -118,6 +154,7 @@ InstructUnit* instructArray_getByOffset(InstructArray* self, int32_t offset);
|
|||||||
#define instructUnit_getSize(InstructUnit_p_self) ((size_t)sizeof(InstructUnit))
|
#define instructUnit_getSize(InstructUnit_p_self) ((size_t)sizeof(InstructUnit))
|
||||||
#define instructArray_getSize(InsturctArry_p_self) \
|
#define instructArray_getSize(InsturctArry_p_self) \
|
||||||
((size_t)(InsturctArry_p_self)->size)
|
((size_t)(InsturctArry_p_self)->size)
|
||||||
|
#define instructArray_getStart(InsturctArry_p_self) ((self)->content_start)
|
||||||
|
|
||||||
uint16_t constPool_getOffsetByData(ConstPool* self, char* data);
|
uint16_t constPool_getOffsetByData(ConstPool* self, char* data);
|
||||||
void instructArray_printWithConst(InstructArray* self, ConstPool* const_pool);
|
void instructArray_printWithConst(InstructArray* self, ConstPool* const_pool);
|
||||||
@ -131,6 +168,14 @@ void byteCodeFrame_init(ByteCodeFrame* self);
|
|||||||
VMParameters* pikaVM_runByteCode(PikaObj* self, uint8_t* bytecode);
|
VMParameters* pikaVM_runByteCode(PikaObj* self, uint8_t* bytecode);
|
||||||
InstructUnit* instructArray_getNow(InstructArray* self);
|
InstructUnit* instructArray_getNow(InstructArray* self);
|
||||||
InstructUnit* instructArray_getNext(InstructArray* self);
|
InstructUnit* instructArray_getNext(InstructArray* self);
|
||||||
VMParameters* pikaVM_runFile(PikaObj* self, char* filename);
|
VMParameters* pikaVM_runSingleFile(PikaObj* self, char* filename);
|
||||||
|
Arg* obj_runMethodArg(PikaObj* self, PikaObj* method_args_obj, Arg* method_arg);
|
||||||
|
PikaObj* pikaVM_runFile(PikaObj* self, char* file_name);
|
||||||
|
Arg* __vm_slice(PikaObj* self, Arg* end, Arg* obj, Arg* start, int step);
|
||||||
|
Arg* __vm_get(PikaObj* self, Arg* key, Arg* obj);
|
||||||
|
void __vm_List_append(PikaObj* self, Arg* arg);
|
||||||
|
void __vm_List___init__(PikaObj* self);
|
||||||
|
void __vm_Dict_set(PikaObj* self, Arg* arg, char* key);
|
||||||
|
void __vm_Dict___init__(PikaObj* self);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
5
port/cmsis-pack/pikascript/pikascript-core/PikaVersion.h
Normal file
5
port/cmsis-pack/pikascript/pikascript-core/PikaVersion.h
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#define PIKA_VERSION_MAJOR 1
|
||||||
|
#define PIKA_VERSION_MINOR 10
|
||||||
|
#define PIKA_VERSION_MICRO 0
|
||||||
|
|
||||||
|
#define PIKA_EDIT_TIME "2022/08/05 15:00:46"
|
@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
#if defined(__INS_COMPIRE)
|
#if defined(__INS_COMPIRE)
|
||||||
#define def_ins(__INS_NAME) \
|
#define def_ins(__INS_NAME) \
|
||||||
if (0 == strncmp(line + 2, "" #__INS_NAME "", 3)) { \
|
if (0 == strncmp(ins_str, "" #__INS_NAME "", 3)) { \
|
||||||
return __INS_NAME; \
|
return __INS_NAME; \
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -30,26 +30,63 @@
|
|||||||
//! just append ins to the end, insert ins would brake the pre-compiled
|
//! just append ins to the end, insert ins would brake the pre-compiled
|
||||||
//! bytecode.
|
//! bytecode.
|
||||||
|
|
||||||
|
/* none */
|
||||||
def_ins(NON)
|
def_ins(NON)
|
||||||
|
/* get referance */
|
||||||
def_ins(REF)
|
def_ins(REF)
|
||||||
|
/* run function */
|
||||||
def_ins(RUN)
|
def_ins(RUN)
|
||||||
|
/* string */
|
||||||
def_ins(STR)
|
def_ins(STR)
|
||||||
|
/* output */
|
||||||
def_ins(OUT)
|
def_ins(OUT)
|
||||||
|
/* number */
|
||||||
def_ins(NUM)
|
def_ins(NUM)
|
||||||
|
/* jump */
|
||||||
def_ins(JMP)
|
def_ins(JMP)
|
||||||
|
/* jump qual zero */
|
||||||
def_ins(JEZ)
|
def_ins(JEZ)
|
||||||
|
/* operator */
|
||||||
def_ins(OPT)
|
def_ins(OPT)
|
||||||
|
/* define */
|
||||||
def_ins(DEF)
|
def_ins(DEF)
|
||||||
|
/* return */
|
||||||
def_ins(RET)
|
def_ins(RET)
|
||||||
|
/* not equal */
|
||||||
def_ins(NEL)
|
def_ins(NEL)
|
||||||
|
/* delete */
|
||||||
def_ins(DEL)
|
def_ins(DEL)
|
||||||
|
/* exist */
|
||||||
def_ins(EST)
|
def_ins(EST)
|
||||||
|
/* break */
|
||||||
def_ins(BRK)
|
def_ins(BRK)
|
||||||
|
/* continue */
|
||||||
def_ins(CTN)
|
def_ins(CTN)
|
||||||
|
/* global */
|
||||||
def_ins(GLB)
|
def_ins(GLB)
|
||||||
|
/* run as */
|
||||||
def_ins(RAS)
|
def_ins(RAS)
|
||||||
|
/* new */
|
||||||
def_ins(NEW)
|
def_ins(NEW)
|
||||||
|
/* class */
|
||||||
def_ins(CLS)
|
def_ins(CLS)
|
||||||
|
/* bytes */
|
||||||
def_ins(BYT)
|
def_ins(BYT)
|
||||||
|
/* list */
|
||||||
def_ins(LST)
|
def_ins(LST)
|
||||||
|
/* import */
|
||||||
def_ins(IMP)
|
def_ins(IMP)
|
||||||
|
/* try */
|
||||||
|
def_ins(TRY)
|
||||||
|
/* not try */
|
||||||
|
def_ins(NTR)
|
||||||
|
/* raise */
|
||||||
|
def_ins(RIS)
|
||||||
|
/* get error code */
|
||||||
|
def_ins(GER)
|
||||||
|
/* set error code */
|
||||||
|
def_ins(SER)
|
||||||
|
/* dict */
|
||||||
|
def_ins(DCT)
|
||||||
|
/* slice */
|
||||||
|
def_ins(SLC)
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
#include "dataString.h"
|
#include "dataString.h"
|
||||||
#include "stdlib.h"
|
#include "stdlib.h"
|
||||||
|
|
||||||
uint16_t arg_getTotleSize(Arg* self) {
|
uint32_t arg_getTotleSize(Arg* self) {
|
||||||
return arg_totleSize(self);
|
return arg_totleSize(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,13 +53,15 @@ static Arg* arg_init_hash(Hash nameHash,
|
|||||||
uint32_t size,
|
uint32_t size,
|
||||||
Arg* next) {
|
Arg* next) {
|
||||||
Arg* self = (Arg*)pikaMalloc(sizeof(Arg) + size);
|
Arg* self = (Arg*)pikaMalloc(sizeof(Arg) + size);
|
||||||
self->next = next;
|
arg_setNext(self, next);
|
||||||
self->size = size;
|
self->size = size;
|
||||||
self->name_hash = nameHash;
|
self->name_hash = nameHash;
|
||||||
self->type = type;
|
self->type = type;
|
||||||
__platform_memset(self->content, 0, aline_by(size, sizeof(uint32_t)));
|
self->serialized = PIKA_TRUE;
|
||||||
|
__platform_memset(arg_getContent(self), 0,
|
||||||
|
aline_by(size, sizeof(uint32_t)));
|
||||||
if (NULL != content) {
|
if (NULL != content) {
|
||||||
__platform_memcpy(self->content, content, size);
|
__platform_memcpy(arg_getContent(self), content, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
@ -68,33 +70,41 @@ static Arg* arg_init_hash(Hash nameHash,
|
|||||||
static Arg* arg_init(char* name,
|
static Arg* arg_init(char* name,
|
||||||
ArgType type,
|
ArgType type,
|
||||||
uint8_t* content,
|
uint8_t* content,
|
||||||
uint16_t size,
|
uint32_t size,
|
||||||
Arg* next) {
|
Arg* next) {
|
||||||
Hash nameHash = hash_time33(name);
|
Hash nameHash = hash_time33(name);
|
||||||
return arg_init_hash(nameHash, type, content, size, next);
|
return arg_init_hash(nameHash, type, content, size, next);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t arg_totleSize(Arg* self) {
|
void arg_init_stack(Arg* self, uint8_t* buffer, uint32_t size) {
|
||||||
|
self->_.buffer = buffer;
|
||||||
|
self->size = size;
|
||||||
|
self->type = ARG_TYPE_UNDEF;
|
||||||
|
self->name_hash = 0;
|
||||||
|
self->serialized = PIKA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t arg_totleSize(Arg* self) {
|
||||||
return ((Arg*)self)->size + sizeof(Arg);
|
return ((Arg*)self)->size + sizeof(Arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
void arg_freeContent(Arg* self) {
|
void arg_freeContent(Arg* self) {
|
||||||
if (NULL != self) {
|
if (NULL != self) {
|
||||||
uint16_t totleSize = arg_totleSize(self);
|
uint32_t totleSize = arg_totleSize(self);
|
||||||
pikaFree(self, totleSize);
|
pikaFree(self, totleSize);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* arg_setContent(Arg* self, uint8_t* content, uint16_t size) {
|
Arg* arg_setContent(Arg* self, uint8_t* content, uint32_t size) {
|
||||||
if (NULL == self) {
|
if (NULL == self) {
|
||||||
/* malloc */
|
/* malloc */
|
||||||
return arg_init("", ARG_TYPE_VOID, content, size, NULL);
|
return arg_init("", ARG_TYPE_NONE, content, size, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* only copy */
|
/* only copy */
|
||||||
if (arg_getSize(self) == size) {
|
if (arg_getSize(self) >= size) {
|
||||||
__platform_memcpy(((Arg*)self)->content, content, size);
|
__platform_memcpy(arg_getContent((Arg*)self), content, size);
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,7 +119,7 @@ Arg* arg_setContent(Arg* self, uint8_t* content, uint16_t size) {
|
|||||||
|
|
||||||
Arg* arg_setNameHash(Arg* self, Hash nameHash) {
|
Arg* arg_setNameHash(Arg* self, Hash nameHash) {
|
||||||
if (NULL == self) {
|
if (NULL == self) {
|
||||||
return arg_init_hash(nameHash, ARG_TYPE_VOID, NULL, 0, NULL);
|
return arg_init_hash(nameHash, ARG_TYPE_NONE, NULL, 0, NULL);
|
||||||
}
|
}
|
||||||
Arg* arg = (Arg*)self;
|
Arg* arg = (Arg*)self;
|
||||||
arg->name_hash = nameHash;
|
arg->name_hash = nameHash;
|
||||||
@ -130,6 +140,9 @@ Arg* arg_setType(Arg* self, ArgType type) {
|
|||||||
|
|
||||||
Arg* arg_setBytes(Arg* self, char* name, uint8_t* src, size_t size) {
|
Arg* arg_setBytes(Arg* self, char* name, uint8_t* src, size_t size) {
|
||||||
self = arg_newContent(self, size + sizeof(size_t) + 1);
|
self = arg_newContent(self, size + sizeof(size_t) + 1);
|
||||||
|
if (NULL == self) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
self = arg_setName(self, name);
|
self = arg_setName(self, name);
|
||||||
self = arg_setType(self, ARG_TYPE_BYTES);
|
self = arg_setType(self, ARG_TYPE_BYTES);
|
||||||
void* dir = arg_getContent(self);
|
void* dir = arg_getContent(self);
|
||||||
@ -146,8 +159,8 @@ Arg* arg_setBytes(Arg* self, char* name, uint8_t* src, size_t size) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Arg* arg_newContent(Arg* self, uint32_t size) {
|
Arg* arg_newContent(Arg* self, uint32_t size) {
|
||||||
Arg* newContent = arg_init("", ARG_TYPE_VOID, NULL, size, NULL);
|
|
||||||
arg_freeContent(self);
|
arg_freeContent(self);
|
||||||
|
Arg* newContent = arg_init("", ARG_TYPE_NONE, NULL, size, NULL);
|
||||||
return newContent;
|
return newContent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -211,15 +224,28 @@ void* arg_getHeapStructDeinitFun(Arg* self) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Arg* arg_setInt(Arg* self, char* name, int64_t val) {
|
Arg* arg_setInt(Arg* self, char* name, int64_t val) {
|
||||||
return arg_init(name, ARG_TYPE_INT, (uint8_t*)&val, sizeof(val), NULL);
|
if (NULL == self) {
|
||||||
|
return arg_init(name, ARG_TYPE_INT, (uint8_t*)&val, sizeof(val), NULL);
|
||||||
|
}
|
||||||
|
self = arg_setContent(self, (uint8_t*)&val, sizeof(val));
|
||||||
|
self = arg_setType(self, ARG_TYPE_INT);
|
||||||
|
self = arg_setName(self, name);
|
||||||
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* arg_setNull(Arg* self) {
|
Arg* arg_setNull(Arg* self) {
|
||||||
return arg_init("", ARG_TYPE_NULL, NULL, 0, NULL);
|
return arg_init("", ARG_TYPE_NONE, NULL, 0, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* arg_setFloat(Arg* self, char* name, double val) {
|
Arg* arg_setFloat(Arg* self, char* name, double val) {
|
||||||
return arg_init(name, ARG_TYPE_FLOAT, (uint8_t*)&val, sizeof(val), NULL);
|
if (NULL == self) {
|
||||||
|
return arg_init(name, ARG_TYPE_FLOAT, (uint8_t*)&val, sizeof(val),
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
self = arg_setContent(self, (uint8_t*)&val, sizeof(val));
|
||||||
|
self = arg_setType(self, ARG_TYPE_FLOAT);
|
||||||
|
self = arg_setName(self, name);
|
||||||
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
double arg_getFloat(Arg* self) {
|
double arg_getFloat(Arg* self) {
|
||||||
@ -227,7 +253,7 @@ double arg_getFloat(Arg* self) {
|
|||||||
return -999.999;
|
return -999.999;
|
||||||
}
|
}
|
||||||
|
|
||||||
return *(double*)self->content;
|
return *(double*)arg_getContent(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* arg_setPtr(Arg* self, char* name, ArgType type, void* pointer) {
|
Arg* arg_setPtr(Arg* self, char* name, ArgType type, void* pointer) {
|
||||||
@ -235,22 +261,26 @@ Arg* arg_setPtr(Arg* self, char* name, ArgType type, void* pointer) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Arg* arg_setStr(Arg* self, char* name, char* string) {
|
Arg* arg_setStr(Arg* self, char* name, char* string) {
|
||||||
|
if (NULL == string) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
return arg_init(name, ARG_TYPE_STRING, (uint8_t*)string,
|
return arg_init(name, ARG_TYPE_STRING, (uint8_t*)string,
|
||||||
strGetSize(string) + 1, NULL);
|
strGetSize(string) + 1, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t arg_getInt(Arg* self) {
|
int64_t arg_getInt(Arg* self) {
|
||||||
|
pika_assert(NULL!=self);
|
||||||
if (NULL == arg_getContent(self)) {
|
if (NULL == arg_getContent(self)) {
|
||||||
return -999999;
|
return -999999;
|
||||||
}
|
}
|
||||||
return *(int64_t*)self->content;
|
return *(int64_t*)arg_getContent(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
void* arg_getPtr(Arg* self) {
|
void* arg_getPtr(Arg* self) {
|
||||||
if (NULL == arg_getContent(self)) {
|
if (NULL == arg_getContent(self)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return *(void**)self->content;
|
return *(void**)arg_getContent(self);
|
||||||
}
|
}
|
||||||
char* arg_getStr(Arg* self) {
|
char* arg_getStr(Arg* self) {
|
||||||
return (char*)arg_getContent(self);
|
return (char*)arg_getContent(self);
|
||||||
@ -265,12 +295,12 @@ Hash arg_getNameHash(Arg* self) {
|
|||||||
|
|
||||||
ArgType arg_getType(Arg* self) {
|
ArgType arg_getType(Arg* self) {
|
||||||
if (NULL == self) {
|
if (NULL == self) {
|
||||||
return ARG_TYPE_NULL;
|
return ARG_TYPE_NONE;
|
||||||
}
|
}
|
||||||
return self->type;
|
return (ArgType)self->type;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t arg_getContentSize(Arg* self) {
|
uint32_t arg_getContentSize(Arg* self) {
|
||||||
return arg_getSize(self);
|
return arg_getSize(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,22 +308,45 @@ Arg* New_arg(void* voidPointer) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* arg_copy(Arg* argToBeCopy) {
|
Arg* arg_copy(Arg* arg_src) {
|
||||||
if (NULL == argToBeCopy) {
|
if (NULL == arg_src) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
ArgType arg_type = arg_getType(argToBeCopy);
|
ArgType arg_type = arg_getType(arg_src);
|
||||||
if (ARG_TYPE_OBJECT == arg_type) {
|
if (ARG_TYPE_OBJECT == arg_type) {
|
||||||
obj_refcntInc(arg_getPtr(argToBeCopy));
|
obj_refcntInc((PikaObj*)arg_getPtr(arg_src));
|
||||||
}
|
}
|
||||||
Arg* argCopied = New_arg(NULL);
|
Arg* argCopied = New_arg(NULL);
|
||||||
argCopied = arg_setContent(argCopied, arg_getContent(argToBeCopy),
|
argCopied = arg_setContent(argCopied, arg_getContent(arg_src),
|
||||||
arg_getContentSize(argToBeCopy));
|
arg_getContentSize(arg_src));
|
||||||
argCopied = arg_setNameHash(argCopied, arg_getNameHash(argToBeCopy));
|
argCopied = arg_setNameHash(argCopied, arg_getNameHash(arg_src));
|
||||||
argCopied = arg_setType(argCopied, arg_getType(argToBeCopy));
|
argCopied = arg_setType(argCopied, arg_getType(arg_src));
|
||||||
return argCopied;
|
return argCopied;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Arg* arg_copy_noalloc(Arg* arg_src, Arg* arg_dict) {
|
||||||
|
if (NULL == arg_src) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if (NULL == arg_dict){
|
||||||
|
return arg_copy(arg_src);
|
||||||
|
}
|
||||||
|
/* size is too big to be copied by noalloc */
|
||||||
|
if (arg_getSize(arg_src) > arg_getSize(arg_dict)) {
|
||||||
|
return arg_copy(arg_src);
|
||||||
|
}
|
||||||
|
ArgType arg_type = arg_getType(arg_src);
|
||||||
|
if (ARG_TYPE_OBJECT == arg_type) {
|
||||||
|
obj_refcntInc((PikaObj*)arg_getPtr(arg_src));
|
||||||
|
}
|
||||||
|
arg_dict->serialized = PIKA_FALSE;
|
||||||
|
arg_dict = arg_setContent(arg_dict, arg_getContent(arg_src),
|
||||||
|
arg_getContentSize(arg_src));
|
||||||
|
arg_dict = arg_setNameHash(arg_dict, arg_getNameHash(arg_src));
|
||||||
|
arg_dict = arg_setType(arg_dict, arg_getType(arg_src));
|
||||||
|
return arg_dict;
|
||||||
|
}
|
||||||
|
|
||||||
Arg* arg_append(Arg* self, void* new_content, size_t new_size) {
|
Arg* arg_append(Arg* self, void* new_content, size_t new_size) {
|
||||||
uint8_t* old_content = arg_getContent(self);
|
uint8_t* old_content = arg_getContent(self);
|
||||||
size_t old_size = arg_getContentSize(self);
|
size_t old_size = arg_getContentSize(self);
|
||||||
@ -365,31 +418,14 @@ exit:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void arg_deinit(Arg* self) {
|
void arg_deinit(Arg* self) {
|
||||||
|
if (NULL == self) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
/* deinit arg pointed heap */
|
/* deinit arg pointed heap */
|
||||||
arg_deinitHeap(self);
|
arg_deinitHeap(self);
|
||||||
|
if (!self->serialized) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
/* free the ref */
|
/* free the ref */
|
||||||
arg_freeContent(self);
|
arg_freeContent(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* arg_getNext(Arg* self) {
|
|
||||||
return self->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t arg_getSize(Arg* self) {
|
|
||||||
return self->size;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t* arg_getContent(Arg* self) {
|
|
||||||
return self->content;
|
|
||||||
}
|
|
||||||
|
|
||||||
void arg_setNext(Arg* self, Arg* next) {
|
|
||||||
self->next = next;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t argType_isObject(ArgType type) {
|
|
||||||
if (ARG_TYPE_OBJECT == type || ARG_TYPE_OBJECT_NEW == type) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
@ -35,8 +35,6 @@ typedef uint32_t Hash;
|
|||||||
typedef enum {
|
typedef enum {
|
||||||
ARG_TYPE_UNDEF = 0,
|
ARG_TYPE_UNDEF = 0,
|
||||||
ARG_TYPE_NONE,
|
ARG_TYPE_NONE,
|
||||||
ARG_TYPE_NULL,
|
|
||||||
ARG_TYPE_VOID,
|
|
||||||
ARG_TYPE_INT,
|
ARG_TYPE_INT,
|
||||||
ARG_TYPE_FLOAT,
|
ARG_TYPE_FLOAT,
|
||||||
ARG_TYPE_STRING,
|
ARG_TYPE_STRING,
|
||||||
@ -58,30 +56,34 @@ typedef enum {
|
|||||||
typedef void (*StructDeinitFun)(void* struct_);
|
typedef void (*StructDeinitFun)(void* struct_);
|
||||||
|
|
||||||
typedef struct Arg Arg;
|
typedef struct Arg Arg;
|
||||||
struct Arg {
|
typedef union {
|
||||||
Arg* next;
|
Arg* next;
|
||||||
uint16_t size;
|
uint8_t* buffer;
|
||||||
|
} _arg_union;
|
||||||
|
struct Arg {
|
||||||
|
_arg_union _;
|
||||||
|
uint32_t size;
|
||||||
uint8_t type;
|
uint8_t type;
|
||||||
uint8_t sub_type;
|
PIKA_BOOL serialized;
|
||||||
Hash name_hash;
|
Hash name_hash;
|
||||||
uint8_t content[];
|
uint8_t content[];
|
||||||
};
|
};
|
||||||
|
|
||||||
Arg* arg_getNext(Arg* self);
|
Arg* arg_getNext(Arg* self);
|
||||||
uint16_t arg_getSize(Arg* self);
|
uint32_t arg_getSize(Arg* self);
|
||||||
uint8_t* arg_getContent(Arg* self);
|
uint8_t* arg_getContent(Arg* self);
|
||||||
uint16_t arg_totleSize(Arg* self);
|
uint32_t arg_totleSize(Arg* self);
|
||||||
void arg_setNext(Arg* self, Arg* next);
|
void arg_setNext(Arg* self, Arg* next);
|
||||||
uint16_t arg_getTotleSize(Arg* self);
|
uint32_t arg_getTotleSize(Arg* self);
|
||||||
void arg_freeContent(Arg* self);
|
void arg_freeContent(Arg* self);
|
||||||
|
|
||||||
Arg* arg_setName(Arg* self, char* name);
|
Arg* arg_setName(Arg* self, char* name);
|
||||||
Arg* arg_setContent(Arg* self, uint8_t* content, uint16_t size);
|
Arg* arg_setContent(Arg* self, uint8_t* content, uint32_t size);
|
||||||
Arg* arg_newContent(Arg* self, uint32_t size);
|
Arg* arg_newContent(Arg* self, uint32_t size);
|
||||||
Arg* arg_setType(Arg* self, ArgType type);
|
Arg* arg_setType(Arg* self, ArgType type);
|
||||||
Hash arg_getNameHash(Arg* self);
|
Hash arg_getNameHash(Arg* self);
|
||||||
ArgType arg_getType(Arg* self);
|
ArgType arg_getType(Arg* self);
|
||||||
uint16_t arg_getContentSize(Arg* self);
|
uint32_t arg_getContentSize(Arg* self);
|
||||||
Hash hash_time33(char* str);
|
Hash hash_time33(char* str);
|
||||||
|
|
||||||
Arg* arg_setInt(Arg* self, char* name, int64_t val);
|
Arg* arg_setInt(Arg* self, char* name, int64_t val);
|
||||||
@ -89,6 +91,14 @@ Arg* arg_setFloat(Arg* self, char* name, double val);
|
|||||||
Arg* arg_setPtr(Arg* self, char* name, ArgType type, void* pointer);
|
Arg* arg_setPtr(Arg* self, char* name, ArgType type, void* pointer);
|
||||||
Arg* arg_setStr(Arg* self, char* name, char* string);
|
Arg* arg_setStr(Arg* self, char* name, char* string);
|
||||||
Arg* arg_setNull(Arg* self);
|
Arg* arg_setNull(Arg* self);
|
||||||
|
Arg* arg_setBytes(Arg* self, char* name, uint8_t* src, size_t size);
|
||||||
|
|
||||||
|
#define arg_newInt(val) arg_setInt(NULL, "", (val))
|
||||||
|
#define arg_newFloat(val) arg_setFloat(NULL, "", (val))
|
||||||
|
#define arg_newPtr(type, pointer) arg_setPtr(NULL, "", (type), (pointer))
|
||||||
|
#define arg_newStr(string) arg_setStr(NULL, "", (string))
|
||||||
|
#define arg_newNull() arg_setNull(NULL)
|
||||||
|
#define arg_newBytes(src, size) arg_setBytes(NULL, "", (src), (size))
|
||||||
|
|
||||||
int64_t arg_getInt(Arg* self);
|
int64_t arg_getInt(Arg* self);
|
||||||
double arg_getFloat(Arg* self);
|
double arg_getFloat(Arg* self);
|
||||||
@ -97,6 +107,7 @@ char* arg_getStr(Arg* self);
|
|||||||
uint8_t* arg_getBytes(Arg* self);
|
uint8_t* arg_getBytes(Arg* self);
|
||||||
size_t arg_getBytesSize(Arg* self);
|
size_t arg_getBytesSize(Arg* self);
|
||||||
Arg* arg_copy(Arg* argToBeCopy);
|
Arg* arg_copy(Arg* argToBeCopy);
|
||||||
|
Arg* arg_copy_noalloc(Arg* argToBeCopy, Arg* argToBeCopyTo);
|
||||||
|
|
||||||
uint8_t* arg_getContent(Arg* self);
|
uint8_t* arg_getContent(Arg* self);
|
||||||
void arg_deinit(Arg* self);
|
void arg_deinit(Arg* self);
|
||||||
@ -114,9 +125,25 @@ Arg* arg_setHeapStruct(Arg* self,
|
|||||||
void* struct_deinit_fun);
|
void* struct_deinit_fun);
|
||||||
void* arg_getHeapStruct(Arg* self);
|
void* arg_getHeapStruct(Arg* self);
|
||||||
void arg_deinitHeap(Arg* self);
|
void arg_deinitHeap(Arg* self);
|
||||||
Arg* arg_setBytes(Arg* self, char* name, uint8_t* src, size_t size);
|
|
||||||
void arg_printBytes(Arg* self);
|
void arg_printBytes(Arg* self);
|
||||||
Arg* arg_loadFile(Arg* self, char* filename);
|
Arg* arg_loadFile(Arg* self, char* filename);
|
||||||
uint8_t argType_isObject(ArgType type);
|
uint8_t argType_isObject(ArgType type);
|
||||||
|
|
||||||
|
#define arg_getNext(self) ((self)->_.next)
|
||||||
|
#define arg_getSize(self) ((self)->size)
|
||||||
|
#define arg_getContent(self) \
|
||||||
|
((self)->serialized ? (self)->content : ((self)->_.buffer))
|
||||||
|
#define arg_getNext(self) ((self)->_.next)
|
||||||
|
#define arg_setNext(self, __next) ((self)->_.next = (__next))
|
||||||
|
|
||||||
|
#define argType_isObject(type) \
|
||||||
|
((type) == ARG_TYPE_OBJECT || (type) == ARG_TYPE_OBJECT_NEW)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define arg_newReg(__name, __size) \
|
||||||
|
Arg __name = {0}; \
|
||||||
|
uint8_t __##__name##_buff[__size] = {0}; \
|
||||||
|
arg_init_stack(&__name, __##__name##_buff, __size)
|
||||||
|
|
||||||
|
void arg_init_stack(Arg* self, uint8_t* buffer, uint32_t size);
|
||||||
|
@ -79,12 +79,22 @@ PIKA_RES args_setStr(Args* self, char* name, char* strIn) {
|
|||||||
PIKA_RES errCode = PIKA_RES_OK;
|
PIKA_RES errCode = PIKA_RES_OK;
|
||||||
Arg* argNew = New_arg(NULL);
|
Arg* argNew = New_arg(NULL);
|
||||||
argNew = arg_setStr(argNew, name, strIn);
|
argNew = arg_setStr(argNew, name, strIn);
|
||||||
|
if (NULL == argNew) {
|
||||||
|
return PIKA_RES_ERR_INVALID_PTR;
|
||||||
|
}
|
||||||
args_setArg(self, argNew);
|
args_setArg(self, argNew);
|
||||||
return errCode;
|
return errCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
PIKA_RES args_pushArg(Args* self, Arg* arg) {
|
PIKA_RES args_pushArg(Args* self, Arg* arg) {
|
||||||
link_addNode(self, arg);
|
Arg* new_arg = NULL;
|
||||||
|
if (!arg->serialized) {
|
||||||
|
new_arg = arg_copy(arg);
|
||||||
|
arg_deinit(arg);
|
||||||
|
} else {
|
||||||
|
new_arg = arg;
|
||||||
|
}
|
||||||
|
link_addNode(self, new_arg);
|
||||||
return PIKA_RES_OK;
|
return PIKA_RES_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,7 +182,7 @@ ArgType args_getType(Args* self, char* name) {
|
|||||||
Arg* arg = NULL;
|
Arg* arg = NULL;
|
||||||
arg = args_getArg(self, name);
|
arg = args_getArg(self, name);
|
||||||
if (NULL == arg) {
|
if (NULL == arg) {
|
||||||
return ARG_TYPE_NULL;
|
return ARG_TYPE_NONE;
|
||||||
}
|
}
|
||||||
return arg_getType(arg);
|
return arg_getType(arg);
|
||||||
}
|
}
|
||||||
@ -216,6 +226,9 @@ PIKA_RES args_setStructWithSize(Args* self,
|
|||||||
|
|
||||||
void* args_getStruct(Args* self, char* name) {
|
void* args_getStruct(Args* self, char* name) {
|
||||||
Arg* struct_arg = args_getArg(self, name);
|
Arg* struct_arg = args_getArg(self, name);
|
||||||
|
if (NULL == struct_arg) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
return arg_getContent(struct_arg);
|
return arg_getContent(struct_arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -293,6 +306,9 @@ PIKA_RES __updateArg(Args* self, Arg* argNew) {
|
|||||||
arg_setNext((Arg*)priorNode, (Arg*)nodeToUpdate);
|
arg_setNext((Arg*)priorNode, (Arg*)nodeToUpdate);
|
||||||
goto exit;
|
goto exit;
|
||||||
exit:
|
exit:
|
||||||
|
if (!argNew->serialized) {
|
||||||
|
return PIKA_RES_OK;
|
||||||
|
}
|
||||||
arg_freeContent(argNew);
|
arg_freeContent(argNew);
|
||||||
return PIKA_RES_OK;
|
return PIKA_RES_OK;
|
||||||
}
|
}
|
||||||
@ -402,7 +418,7 @@ char* getPrintStringFromPtr(Args* self, char* name, void* val) {
|
|||||||
Args buffs = {0};
|
Args buffs = {0};
|
||||||
char* res = NULL;
|
char* res = NULL;
|
||||||
uint64_t intVal = (uintptr_t)val;
|
uint64_t intVal = (uintptr_t)val;
|
||||||
char* valString = strsFormat(&buffs, 32, "0x%llx", intVal);
|
char* valString = strsFormat(&buffs, 32, "%p", intVal);
|
||||||
res = getPrintSring(self, name, valString);
|
res = getPrintSring(self, name, valString);
|
||||||
strsDeinit(&buffs);
|
strsDeinit(&buffs);
|
||||||
return res;
|
return res;
|
||||||
@ -435,7 +451,8 @@ char* args_print(Args* self, char* name) {
|
|||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argType_isObject(type)) {
|
if (argType_isObject(type) || ARG_TYPE_POINTER == type ||
|
||||||
|
ARG_TYPE_METHOD_NATIVE_CONSTRUCTOR) {
|
||||||
void* val = args_getPtr(self, name);
|
void* val = args_getPtr(self, name);
|
||||||
res = getPrintStringFromPtr(self, name, val);
|
res = getPrintStringFromPtr(self, name, val);
|
||||||
goto exit;
|
goto exit;
|
||||||
@ -544,6 +561,26 @@ Arg* list_getArg(PikaList* self, int index) {
|
|||||||
return args_getArg(&self->super, i_str);
|
return args_getArg(&self->super, i_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int list_getInt(PikaList* self, int index) {
|
||||||
|
Arg* arg = list_getArg(self, index);
|
||||||
|
return arg_getInt(arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
double list_getFloat(PikaList* self, int index) {
|
||||||
|
Arg* arg = list_getArg(self, index);
|
||||||
|
return arg_getFloat(arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
char* list_getStr(PikaList* self, int index) {
|
||||||
|
Arg* arg = list_getArg(self, index);
|
||||||
|
return arg_getStr(arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void* list_getPtr(PikaList* self, int index) {
|
||||||
|
Arg* arg = list_getArg(self, index);
|
||||||
|
return arg_getPtr(arg);
|
||||||
|
}
|
||||||
|
|
||||||
PIKA_RES list_append(PikaList* self, Arg* arg) {
|
PIKA_RES list_append(PikaList* self, Arg* arg) {
|
||||||
int top = args_getInt(&self->super, "top");
|
int top = args_getInt(&self->super, "top");
|
||||||
char buff[11];
|
char buff[11];
|
||||||
@ -583,8 +620,14 @@ char* strsFormatArg(Args* out_buffs, char* fmt, Arg* arg) {
|
|||||||
res = strsFormat(&buffs, PIKA_SPRINTF_BUFF_SIZE, fmt, val);
|
res = strsFormat(&buffs, PIKA_SPRINTF_BUFF_SIZE, fmt, val);
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
if (ARG_TYPE_NONE == type) {
|
||||||
|
res = strsFormat(&buffs, PIKA_SPRINTF_BUFF_SIZE, fmt, "None");
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
exit:
|
exit:
|
||||||
res = strsCopy(out_buffs, res);
|
if (NULL != res) {
|
||||||
|
res = strsCopy(out_buffs, res);
|
||||||
|
}
|
||||||
strsDeinit(&buffs);
|
strsDeinit(&buffs);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@ -594,7 +637,7 @@ char* strsFormatList(Args* out_buffs, char* fmt, PikaList* list) {
|
|||||||
char* res = NULL;
|
char* res = NULL;
|
||||||
char* fmt_buff = strsCopy(&buffs, fmt);
|
char* fmt_buff = strsCopy(&buffs, fmt);
|
||||||
char* fmt_item = strsPopToken(&buffs, fmt_buff, '%');
|
char* fmt_item = strsPopToken(&buffs, fmt_buff, '%');
|
||||||
Arg* res_buff = arg_setStr(NULL, "", fmt_item);
|
Arg* res_buff = arg_newStr(fmt_item);
|
||||||
|
|
||||||
for (size_t i = 0; i < list_getSize(list); i++) {
|
for (size_t i = 0; i < list_getSize(list); i++) {
|
||||||
Args buffs_item = {0};
|
Args buffs_item = {0};
|
||||||
@ -602,6 +645,10 @@ char* strsFormatList(Args* out_buffs, char* fmt, PikaList* list) {
|
|||||||
char* fmt_item = strsPopToken(&buffs_item, fmt_buff, '%');
|
char* fmt_item = strsPopToken(&buffs_item, fmt_buff, '%');
|
||||||
fmt_item = strsAppend(&buffs_item, "%", fmt_item);
|
fmt_item = strsAppend(&buffs_item, "%", fmt_item);
|
||||||
char* str_format = strsFormatArg(&buffs_item, fmt_item, arg);
|
char* str_format = strsFormatArg(&buffs_item, fmt_item, arg);
|
||||||
|
if (NULL == str_format) {
|
||||||
|
strsDeinit(&buffs_item);
|
||||||
|
goto exit;
|
||||||
|
}
|
||||||
res_buff = arg_strAppend(res_buff, str_format);
|
res_buff = arg_strAppend(res_buff, str_format);
|
||||||
strsDeinit(&buffs_item);
|
strsDeinit(&buffs_item);
|
||||||
}
|
}
|
||||||
|
@ -162,6 +162,10 @@ PikaDict* New_dict(void);
|
|||||||
#define list_deinit(self) (args_deinit((&((self)->super))))
|
#define list_deinit(self) (args_deinit((&((self)->super))))
|
||||||
PIKA_RES list_append(PikaList* self, Arg* arg);
|
PIKA_RES list_append(PikaList* self, Arg* arg);
|
||||||
PIKA_RES list_setArg(PikaList* self, int index, Arg* arg);
|
PIKA_RES list_setArg(PikaList* self, int index, Arg* arg);
|
||||||
|
int list_getInt(PikaList* self, int index);
|
||||||
|
double list_getFloat(PikaList* self, int index);
|
||||||
|
char* list_getStr(PikaList* self, int index);
|
||||||
|
void* list_getPtr(PikaList* self, int index);
|
||||||
Arg* list_getArg(PikaList* self, int index);
|
Arg* list_getArg(PikaList* self, int index);
|
||||||
size_t list_getSize(PikaList* self);
|
size_t list_getSize(PikaList* self);
|
||||||
char* strsFormatArg(Args* out_buffs, char* fmt, Arg* arg);
|
char* strsFormatArg(Args* out_buffs, char* fmt, Arg* arg);
|
||||||
@ -170,6 +174,12 @@ char* strsFormatArg(Args* out_buffs, char* fmt, Arg* arg);
|
|||||||
#define tuple_deinit(self) (list_deinit((&((self)->super))))
|
#define tuple_deinit(self) (list_deinit((&((self)->super))))
|
||||||
#define tuple_getArg(self, index) (list_getArg((&((self)->super)), (index)))
|
#define tuple_getArg(self, index) (list_getArg((&((self)->super)), (index)))
|
||||||
#define tuple_getSize(self) (list_getSize((&((self)->super))))
|
#define tuple_getSize(self) (list_getSize((&((self)->super))))
|
||||||
|
#define tuple_getInt(self, index) (list_getInt((&((self)->super)), (index)))
|
||||||
|
#define tuple_getFloat(self, index) \
|
||||||
|
(list_getFloat((&((self)->super)), (index)))
|
||||||
|
#define tuple_getStr(self, index) (list_getStr((&((self)->super)), (index)))
|
||||||
|
#define tuple_getPtr(self, index) (list_getPtr((&((self)->super)), (index)))
|
||||||
|
#define tuple_getType(self, index) (list_getType((&((self)->super)), (index)))
|
||||||
|
|
||||||
PikaList* New_list(void);
|
PikaList* New_list(void);
|
||||||
PikaTuple* New_tuple(void);
|
PikaTuple* New_tuple(void);
|
||||||
|
@ -55,7 +55,7 @@ void link_addNode(Link* self, void* content) {
|
|||||||
|
|
||||||
self->firstNode = content;
|
self->firstNode = content;
|
||||||
// change the first node to new node
|
// change the first node to new node
|
||||||
arg_setNext(content, (Arg*)secondNode);
|
arg_setNext((Arg*)content, (Arg*)secondNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __link_removeNode(Link* self,
|
static void __link_removeNode(Link* self,
|
||||||
|
@ -32,11 +32,3 @@
|
|||||||
void linkNode_deinit(LinkNode* self) {
|
void linkNode_deinit(LinkNode* self) {
|
||||||
arg_deinit((Arg*)self);
|
arg_deinit((Arg*)self);
|
||||||
}
|
}
|
||||||
|
|
||||||
void linkNode_init(LinkNode* self, void* args) {
|
|
||||||
/* attribute */
|
|
||||||
}
|
|
||||||
|
|
||||||
LinkNode* New_linkNode(void* args) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
@ -76,12 +76,12 @@ void pikaFree(void* mem, uint32_t size) {
|
|||||||
pikaMemInfo.heapUsed -= size;
|
pikaMemInfo.heapUsed -= size;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t pikaMemNow(void) {
|
uint32_t pikaMemNow(void) {
|
||||||
return pikaMemInfo.heapUsed;
|
return pikaMemInfo.heapUsed;
|
||||||
// return 0;
|
// return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint16_t pikaMemMax(void) {
|
uint32_t pikaMemMax(void) {
|
||||||
return pikaMemInfo.heapUsedMax;
|
return pikaMemInfo.heapUsedMax;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,6 +109,7 @@ Pool pool_init(uint32_t size, uint8_t aline) {
|
|||||||
pool.mem = __platform_malloc(pool_aline(&pool, pool.size));
|
pool.mem = __platform_malloc(pool_aline(&pool, pool.size));
|
||||||
pool.first_free_block = 0;
|
pool.first_free_block = 0;
|
||||||
pool.purl_free_block_start = 0;
|
pool.purl_free_block_start = 0;
|
||||||
|
pool.inited = PIKA_TRUE;
|
||||||
return pool;
|
return pool;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -295,3 +296,27 @@ uint8_t bitmap_get(BitMap bitmap, uint32_t index) {
|
|||||||
void bitmap_deinit(BitMap bitmap) {
|
void bitmap_deinit(BitMap bitmap) {
|
||||||
__platform_free(bitmap);
|
__platform_free(bitmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if PIKA_POOL_ENABLE
|
||||||
|
Pool pikaPool = {0};
|
||||||
|
void* __user_malloc(size_t size) {
|
||||||
|
return pool_malloc(&pikaPool, size);
|
||||||
|
}
|
||||||
|
void __user_free(void* ptrm, size_t size) {
|
||||||
|
pool_free(&pikaPool, ptrm, size);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void mem_pool_init(void) {
|
||||||
|
#if PIKA_POOL_ENABLE
|
||||||
|
if (!pikaPool.inited) {
|
||||||
|
pikaPool = pool_init(PIKA_POOL_SIZE, PIKA_POOL_ALIGN);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void mem_pool_deinit(void) {
|
||||||
|
#if PIKA_POOL_ENABLE
|
||||||
|
pool_deinit(&pikaPool);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#define __MEMORY_H__
|
#define __MEMORY_H__
|
||||||
|
|
||||||
#include "PikaPlatform.h"
|
#include "PikaPlatform.h"
|
||||||
|
#include "PikaVersion.h"
|
||||||
|
|
||||||
/*! \NOTE: Make sure #include "plooc_class.h" is close to the class definition
|
/*! \NOTE: Make sure #include "plooc_class.h" is close to the class definition
|
||||||
*/
|
*/
|
||||||
@ -54,14 +55,15 @@ struct Pool{
|
|||||||
uint32_t size;
|
uint32_t size;
|
||||||
uint32_t first_free_block;
|
uint32_t first_free_block;
|
||||||
uint32_t purl_free_block_start;
|
uint32_t purl_free_block_start;
|
||||||
|
PIKA_BOOL inited;
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
/* clang-format on */
|
/* clang-format on */
|
||||||
|
|
||||||
void pikaFree(void* mem, uint32_t size);
|
void pikaFree(void* mem, uint32_t size);
|
||||||
void* pikaMalloc(uint32_t size);
|
void* pikaMalloc(uint32_t size);
|
||||||
uint16_t pikaMemNow(void);
|
uint32_t pikaMemNow(void);
|
||||||
uint16_t pikaMemMax(void);
|
uint32_t pikaMemMax(void);
|
||||||
void pikaMemMaxReset(void);
|
void pikaMemMaxReset(void);
|
||||||
|
|
||||||
uint32_t aline_by(uint32_t size, uint32_t aline);
|
uint32_t aline_by(uint32_t size, uint32_t aline);
|
||||||
@ -72,11 +74,8 @@ uint8_t bitmap_get(BitMap bitmap, uint32_t index);
|
|||||||
uint8_t bitmap_getByte(BitMap bitmap, uint32_t index);
|
uint8_t bitmap_getByte(BitMap bitmap, uint32_t index);
|
||||||
void bitmap_deinit(BitMap bitmap);
|
void bitmap_deinit(BitMap bitmap);
|
||||||
|
|
||||||
Pool pool_init(uint32_t size, uint8_t aline);
|
void mem_pool_deinit(void);
|
||||||
void* pool_malloc(Pool* pool, uint32_t size);
|
void mem_pool_init(void);
|
||||||
void pool_free(Pool* pool, void* mem, uint32_t size);
|
|
||||||
void pool_deinit(Pool* pool);
|
|
||||||
void pool_printBlocks(Pool* pool, uint32_t block_min, uint32_t block_max);
|
|
||||||
|
|
||||||
#undef __DATA_MEMORY_CLASS_IMPLEMENT__
|
#undef __DATA_MEMORY_CLASS_IMPLEMENT__
|
||||||
#endif
|
#endif
|
||||||
|
@ -56,25 +56,6 @@ int32_t queue_pushArg(Queue* queue, Arg* arg) {
|
|||||||
return args_setArg(args, arg);
|
return args_setArg(args, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* __queue_popArg(Queue* queue, uint8_t is_deinit_arg) {
|
|
||||||
Args* args = queue;
|
|
||||||
uint64_t top = args_getInt(args, "__t");
|
|
||||||
uint64_t bottom = args_getInt(args, "__b");
|
|
||||||
if (top - bottom < 1) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
/* add bottom */
|
|
||||||
args_setInt(args, "__b", bottom + 1);
|
|
||||||
char buff[11];
|
|
||||||
Arg* res = args_getArg(args, fast_itoa(buff, bottom));
|
|
||||||
if (is_deinit_arg) {
|
|
||||||
args_removeArg(args, res);
|
|
||||||
} else {
|
|
||||||
args_removeArg_notDeinitArg(args, res);
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
Arg* __queue_popArg_noRmoveArg(Queue* queue) {
|
Arg* __queue_popArg_noRmoveArg(Queue* queue) {
|
||||||
Args* args = queue;
|
Args* args = queue;
|
||||||
uint64_t top = args_getInt(args, "__t");
|
uint64_t top = args_getInt(args, "__t");
|
||||||
@ -90,16 +71,8 @@ Arg* __queue_popArg_noRmoveArg(Queue* queue) {
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* queue_popArg(Queue* queue) {
|
|
||||||
return __queue_popArg(queue, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
Arg* queue_popArg_notDeinitArg(Queue* queue) {
|
|
||||||
return __queue_popArg(queue, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t queue_pushInt(Queue* queue, int val) {
|
int32_t queue_pushInt(Queue* queue, int val) {
|
||||||
return queue_pushArg(queue, arg_setInt(NULL, "", val));
|
return queue_pushArg(queue, arg_newInt(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
int64_t queue_popInt(Queue* queue) {
|
int64_t queue_popInt(Queue* queue) {
|
||||||
@ -107,7 +80,7 @@ int64_t queue_popInt(Queue* queue) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t queue_pushFloat(Queue* queue, double val) {
|
int32_t queue_pushFloat(Queue* queue, double val) {
|
||||||
return queue_pushArg(queue, arg_setFloat(NULL, "", val));
|
return queue_pushArg(queue, arg_newFloat(val));
|
||||||
}
|
}
|
||||||
|
|
||||||
double queue_popFloat(Queue* queue) {
|
double queue_popFloat(Queue* queue) {
|
||||||
@ -115,7 +88,7 @@ double queue_popFloat(Queue* queue) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int32_t queue_pushStr(Queue* queue, char* str) {
|
int32_t queue_pushStr(Queue* queue, char* str) {
|
||||||
return queue_pushArg(queue, arg_setStr(NULL, "", str));
|
return queue_pushArg(queue, arg_newStr(str));
|
||||||
}
|
}
|
||||||
|
|
||||||
char* queue_popStr(Queue* queue) {
|
char* queue_popStr(Queue* queue) {
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
void stack_reset(Stack* stack) {
|
void stack_reset(Stack* stack) {
|
||||||
stack->sp = (uint8_t*)arg_getContent(stack->stack_pyload);
|
stack->sp = (uint8_t*)arg_getContent(stack->stack_pyload);
|
||||||
stack->sp_size = (int16_t*)arg_getContent(stack->stack_size_array);
|
stack->sp_size = (int32_t*)arg_getContent(stack->stack_size_array);
|
||||||
stack->top = 0;
|
stack->top = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,12 +44,12 @@ int32_t stack_init(Stack* stack) {
|
|||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
void stack_pushSize(Stack* stack, int16_t size) {
|
void stack_pushSize(Stack* stack, int32_t size) {
|
||||||
*(stack->sp_size) = size;
|
*(stack->sp_size) = size;
|
||||||
stack->sp_size++;
|
stack->sp_size++;
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t stack_popSize(Stack* stack) {
|
int32_t stack_popSize(Stack* stack) {
|
||||||
stack->sp_size--;
|
stack->sp_size--;
|
||||||
return *(stack->sp_size);
|
return *(stack->sp_size);
|
||||||
}
|
}
|
||||||
@ -74,7 +74,15 @@ void stack_pushPyload(Stack* stack, Arg* content, size_t size) {
|
|||||||
while (1) {
|
while (1) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
__platform_memcpy(stack->sp, content, size);
|
if (content->serialized) {
|
||||||
|
__platform_memcpy(stack->sp, content, size);
|
||||||
|
} else {
|
||||||
|
__platform_memcpy(stack->sp, content, sizeof(Arg));
|
||||||
|
__platform_memcpy(stack->sp + sizeof(Arg), content->_.buffer,
|
||||||
|
size - sizeof(Arg));
|
||||||
|
/* transfer to serialized form */
|
||||||
|
((Arg*)stack->sp)->serialized = PIKA_TRUE;
|
||||||
|
}
|
||||||
stack->sp += size;
|
stack->sp += size;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,7 +91,7 @@ uint8_t* stack_popPyload(Stack* stack, size_t size) {
|
|||||||
return stack->sp;
|
return stack->sp;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t stack_pushArg(Stack* stack, Arg* arg) {
|
static int32_t _stack_pushArg(Stack* stack, Arg* arg, PIKA_BOOL is_alloc) {
|
||||||
stack->top++;
|
stack->top++;
|
||||||
size_t size = arg_getTotleSize(arg);
|
size_t size = arg_getTotleSize(arg);
|
||||||
|
|
||||||
@ -94,41 +102,65 @@ int32_t stack_pushArg(Stack* stack, Arg* arg) {
|
|||||||
#endif
|
#endif
|
||||||
/* add ref_cnt to keep object in stack */
|
/* add ref_cnt to keep object in stack */
|
||||||
if (argType_isObject(arg_getType(arg))) {
|
if (argType_isObject(arg_getType(arg))) {
|
||||||
obj_refcntInc(arg_getPtr(arg));
|
obj_refcntInc((PikaObj*)arg_getPtr(arg));
|
||||||
}
|
}
|
||||||
stack_pushSize(stack, size);
|
stack_pushSize(stack, size);
|
||||||
stack_pushPyload(stack, arg, size);
|
stack_pushPyload(stack, arg, size);
|
||||||
arg_deinit(arg);
|
if (is_alloc) {
|
||||||
|
arg_deinit(arg);
|
||||||
|
} else {
|
||||||
|
arg_deinitHeap(arg);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t stack_pushArg(Stack* stack, Arg* arg) {
|
||||||
|
if (arg->serialized) {
|
||||||
|
return _stack_pushArg(stack, arg, PIKA_TRUE);
|
||||||
|
}
|
||||||
|
return _stack_pushArg(stack, arg, PIKA_FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
int32_t stack_pushStr(Stack* stack, char* str) {
|
int32_t stack_pushStr(Stack* stack, char* str) {
|
||||||
Arg* newArg = arg_setStr(NULL, "", str);
|
Arg* newArg = arg_newStr(str);
|
||||||
return stack_pushArg(stack, newArg);
|
return stack_pushArg(stack, newArg);
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* stack_popArg(Stack* stack) {
|
Arg* _stack_popArg(Stack* stack, Arg* arg_dict, PIKA_BOOL is_alloc) {
|
||||||
if (stack->top == 0) {
|
if (stack->top == 0) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
stack->top--;
|
stack->top--;
|
||||||
int16_t size = stack_popSize(stack);
|
int32_t size = stack_popSize(stack);
|
||||||
Arg* arg = arg_copy((Arg*)stack_popPyload(stack, size));
|
Arg* arg = NULL;
|
||||||
|
if (is_alloc) {
|
||||||
|
arg = arg_copy((Arg*)stack_popPyload(stack, size));
|
||||||
|
} else {
|
||||||
|
arg = arg_copy_noalloc((Arg*)stack_popPyload(stack, size), arg_dict);
|
||||||
|
}
|
||||||
ArgType type = arg_getType(arg);
|
ArgType type = arg_getType(arg);
|
||||||
/* decrase ref_cnt */
|
/* decrase ref_cnt */
|
||||||
if (argType_isObject(type)) {
|
if (argType_isObject(type)) {
|
||||||
obj_refcntDec(arg_getPtr(arg));
|
obj_refcntDec((PikaObj*)arg_getPtr(arg));
|
||||||
}
|
}
|
||||||
return arg;
|
return arg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Arg* stack_popArg_alloc(Stack* stack) {
|
||||||
|
return _stack_popArg(stack, NULL, PIKA_TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
Arg* stack_popArg(Stack* stack, Arg* arg_dict) {
|
||||||
|
return _stack_popArg(stack, arg_dict, PIKA_FALSE);
|
||||||
|
}
|
||||||
|
|
||||||
char* stack_popStr(Stack* stack, char* outBuff) {
|
char* stack_popStr(Stack* stack, char* outBuff) {
|
||||||
Arg* arg = stack_popArg(stack);
|
Arg* arg = stack_popArg_alloc(stack);
|
||||||
strcpy(outBuff, arg_getStr(arg));
|
strcpy(outBuff, arg_getStr(arg));
|
||||||
arg_deinit(arg);
|
arg_deinit(arg);
|
||||||
return outBuff;
|
return outBuff;
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t stack_getTop(Stack* stack) {
|
int32_t stack_getTop(Stack* stack) {
|
||||||
return stack->top;
|
return stack->top;
|
||||||
}
|
}
|
||||||
|
@ -33,8 +33,8 @@ typedef struct Stack_t {
|
|||||||
Arg* stack_pyload;
|
Arg* stack_pyload;
|
||||||
Arg* stack_size_array;
|
Arg* stack_size_array;
|
||||||
uint8_t* sp;
|
uint8_t* sp;
|
||||||
int16_t* sp_size;
|
int32_t* sp_size;
|
||||||
int16_t top;
|
int32_t top;
|
||||||
size_t stack_totle_size;
|
size_t stack_totle_size;
|
||||||
} Stack;
|
} Stack;
|
||||||
|
|
||||||
@ -42,11 +42,12 @@ int32_t stack_deinit(Stack* stack);
|
|||||||
|
|
||||||
int32_t stack_pushStr(Stack* stack, char* str);
|
int32_t stack_pushStr(Stack* stack, char* str);
|
||||||
char* stack_popStr(Stack* stack, char* outBuff);
|
char* stack_popStr(Stack* stack, char* outBuff);
|
||||||
Arg* stack_popArg(Stack* stack);
|
|
||||||
int32_t stack_pushArg(Stack* stack, Arg* arg);
|
int32_t stack_pushArg(Stack* stack, Arg* arg);
|
||||||
int8_t stack_getTop(Stack* stack);
|
Arg* stack_popArg_alloc(Stack* stack);
|
||||||
|
Arg* stack_popArg(Stack* stack, Arg* arg_dict);
|
||||||
|
int32_t stack_getTop(Stack* stack);
|
||||||
int32_t stack_init(Stack* stack);
|
int32_t stack_init(Stack* stack);
|
||||||
int16_t stack_popSize(Stack* stack);
|
int32_t stack_popSize(Stack* stack);
|
||||||
void stack_pushSize(Stack* stack, int16_t size);
|
void stack_pushSize(Stack* stack, int32_t size);
|
||||||
void stack_reset(Stack* stack);
|
void stack_reset(Stack* stack);
|
||||||
#endif
|
#endif
|
||||||
|
@ -28,18 +28,6 @@
|
|||||||
#include "dataString.h"
|
#include "dataString.h"
|
||||||
#include "PikaPlatform.h"
|
#include "PikaPlatform.h"
|
||||||
|
|
||||||
char* strAppendWithSize_unlimited(char* strOut, char* pData, int32_t Size) {
|
|
||||||
int32_t strOut_i = strGetSize(strOut);
|
|
||||||
for (int32_t i = 0; i < Size; i++) {
|
|
||||||
strOut[strOut_i + i] = pData[i];
|
|
||||||
}
|
|
||||||
strOut_i += Size;
|
|
||||||
// add \0 to the end of strOut
|
|
||||||
strOut[strOut_i] = 0;
|
|
||||||
|
|
||||||
return strOut;
|
|
||||||
}
|
|
||||||
|
|
||||||
char* strCut(char* strOut, char* strIn, char startSign, char endSign) {
|
char* strCut(char* strOut, char* strIn, char startSign, char endSign) {
|
||||||
int32_t Size = strGetSize(strIn);
|
int32_t Size = strGetSize(strIn);
|
||||||
int32_t iStart = 0;
|
int32_t iStart = 0;
|
||||||
@ -89,10 +77,6 @@ char* strDeleteChar(char* strOut, char* strIn, char ch) {
|
|||||||
return strOut;
|
return strOut;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* strDeleteEnter(char* str) {
|
|
||||||
return strDeleteChar(str, str, '\n');
|
|
||||||
}
|
|
||||||
|
|
||||||
char* strAppendWithSize(char* strOut, char* pData, int32_t Size) {
|
char* strAppendWithSize(char* strOut, char* pData, int32_t Size) {
|
||||||
int32_t strOut_i = strGetSize(strOut);
|
int32_t strOut_i = strGetSize(strOut);
|
||||||
for (int32_t i = 0; i < Size; i++) {
|
for (int32_t i = 0; i < Size; i++) {
|
||||||
@ -120,33 +104,10 @@ int32_t strGetTokenNum(char* strIn, char sign) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t strGetSize(char* pData) {
|
size_t strGetSize(char* pData) {
|
||||||
|
pika_assert(pData != NULL);
|
||||||
return strlen(pData);
|
return strlen(pData);
|
||||||
}
|
}
|
||||||
|
|
||||||
char* strAppend_unlimited(char* strOut, char* pData) {
|
|
||||||
uint32_t Size = 0;
|
|
||||||
Size = strGetSize(pData);
|
|
||||||
return strAppendWithSize_unlimited(strOut, pData, Size);
|
|
||||||
}
|
|
||||||
|
|
||||||
char* strGetLastLine(char* strOut, char* strIn) {
|
|
||||||
int32_t size = strGetSize(strIn);
|
|
||||||
char sign = '\n';
|
|
||||||
uint32_t beginIndex = 0;
|
|
||||||
|
|
||||||
/* skip the latest '\n' */
|
|
||||||
for (int32_t i = size - 2; i > -1; i--) {
|
|
||||||
if (strIn[i] == sign) {
|
|
||||||
beginIndex = i + 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
__platform_memcpy(strOut, strIn + beginIndex, size - beginIndex);
|
|
||||||
strOut[size - beginIndex + 1] = 0;
|
|
||||||
return strOut;
|
|
||||||
}
|
|
||||||
|
|
||||||
char* strPointToLastToken(char* strIn, char sign) {
|
char* strPointToLastToken(char* strIn, char sign) {
|
||||||
int32_t size = strGetSize(strIn);
|
int32_t size = strGetSize(strIn);
|
||||||
for (int32_t i = size - 1; i > -1; i--) {
|
for (int32_t i = size - 1; i > -1; i--) {
|
||||||
@ -226,31 +187,6 @@ char* strGetFirstToken(char* strOut, char* strIn, char sign) {
|
|||||||
return strOut;
|
return strOut;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t strGetToken(char* string, char** argv, char sign) {
|
|
||||||
int32_t argc = 0;
|
|
||||||
uint32_t i = 0;
|
|
||||||
// arg_i point32_t to the arg operated now
|
|
||||||
int32_t arg_i = 0;
|
|
||||||
// if not found ' ', then put chars from CMD to argv_tem
|
|
||||||
int32_t char_i = 0;
|
|
||||||
for (i = 0; i < strGetSize(string); i++) {
|
|
||||||
if (string[i] != sign) {
|
|
||||||
argv[arg_i][char_i] = string[i];
|
|
||||||
char_i++;
|
|
||||||
}
|
|
||||||
if (string[i] == sign) {
|
|
||||||
// write '\0' to the end of argv
|
|
||||||
argv[arg_i][char_i] = 0;
|
|
||||||
arg_i++;
|
|
||||||
char_i = 0;
|
|
||||||
}
|
|
||||||
// write '\0' to the end of last argv
|
|
||||||
argv[arg_i][char_i] = 0;
|
|
||||||
}
|
|
||||||
argc = arg_i + 1;
|
|
||||||
return argc;
|
|
||||||
}
|
|
||||||
|
|
||||||
char* strAppend(char* strOut, char* pData) {
|
char* strAppend(char* strOut, char* pData) {
|
||||||
uint32_t Size = 0;
|
uint32_t Size = 0;
|
||||||
Size = strGetSize(pData);
|
Size = strGetSize(pData);
|
||||||
@ -287,13 +223,6 @@ char* strRemovePrefix(char* inputStr, char* prefix, char* outputStr) {
|
|||||||
return outputStr;
|
return outputStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* strClear(char* str) {
|
|
||||||
for (uint32_t i = 0; i < sizeof(str); i++) {
|
|
||||||
str[i] = 0;
|
|
||||||
}
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t strIsContain(char* str, char ch) {
|
int32_t strIsContain(char* str, char ch) {
|
||||||
for (uint32_t i = 0; i < strGetSize(str); i++) {
|
for (uint32_t i = 0; i < strGetSize(str); i++) {
|
||||||
if (str[i] == ch) {
|
if (str[i] == ch) {
|
||||||
@ -324,3 +253,21 @@ char* strGetLine(char* strOut, char* strIn) {
|
|||||||
strOut[lineSize] = 0;
|
strOut[lineSize] = 0;
|
||||||
return strOut;
|
return strOut;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char* strGetLastLine(char* strOut, char* strIn) {
|
||||||
|
int32_t size = strGetSize(strIn);
|
||||||
|
char sign = '\n';
|
||||||
|
uint32_t beginIndex = 0;
|
||||||
|
|
||||||
|
/* skip the latest '\n' */
|
||||||
|
for (int32_t i = size - 2; i > -1; i--) {
|
||||||
|
if (strIn[i] == sign) {
|
||||||
|
beginIndex = i + 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
__platform_memcpy(strOut, strIn + beginIndex, size - beginIndex);
|
||||||
|
strOut[size - beginIndex + 1] = 0;
|
||||||
|
return strOut;
|
||||||
|
}
|
||||||
|
@ -37,7 +37,7 @@ char* strAppend_unlimited(char* strOut, char* pData);
|
|||||||
char* strAppendWithSize(char* strOut, char* pData, int32_t Size);
|
char* strAppendWithSize(char* strOut, char* pData, int32_t Size);
|
||||||
/* cut */
|
/* cut */
|
||||||
char* strCut(char* strOut, char* strIn, char startSign, char endSign);
|
char* strCut(char* strOut, char* strIn, char startSign, char endSign);
|
||||||
/* assert */
|
/* pika_assert */
|
||||||
int32_t strIsStartWith(char* str, char* strStart);
|
int32_t strIsStartWith(char* str, char* strStart);
|
||||||
int32_t strEqu(char* str1, char* str2);
|
int32_t strEqu(char* str1, char* str2);
|
||||||
/* delete */
|
/* delete */
|
||||||
@ -60,5 +60,6 @@ char* strPointToLastToken(char* strIn, char sign);
|
|||||||
char* strGetLine(char* strOut, char* strIn);
|
char* strGetLine(char* strOut, char* strIn);
|
||||||
int32_t strGetLineSize(char* str);
|
int32_t strGetLineSize(char* str);
|
||||||
char* strPopLastToken(char* strIn, char sign);
|
char* strPopLastToken(char* strIn, char sign);
|
||||||
|
char* strGetLastLine(char* strOut, char* strIn);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -53,6 +53,8 @@ char* strsGetDirectStr(Args* buffs_p, char* argPath) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
char* strsAppend(Args* buffs_p, char* strOrigin, char* strToAppend) {
|
char* strsAppend(Args* buffs_p, char* strOrigin, char* strToAppend) {
|
||||||
|
pika_assert(NULL != strToAppend);
|
||||||
|
pika_assert(NULL != strOrigin);
|
||||||
int32_t size = strGetSize(strOrigin) + strGetSize(strToAppend);
|
int32_t size = strGetSize(strOrigin) + strGetSize(strToAppend);
|
||||||
char* buff = args_getBuff(buffs_p, size);
|
char* buff = args_getBuff(buffs_p, size);
|
||||||
char* strOut = strCopy(buff, strOrigin);
|
char* strOut = strCopy(buff, strOrigin);
|
||||||
@ -99,11 +101,19 @@ char* strsPopToken(Args* buffs_p, char* tokens, char sign) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
char* strsCopy(Args* buffs_p, char* source) {
|
char* strsCopy(Args* buffs_p, char* source) {
|
||||||
|
pika_assert(source != NULL);
|
||||||
int32_t size = strGetSize(source);
|
int32_t size = strGetSize(source);
|
||||||
char* buff = args_getBuff(buffs_p, size);
|
char* buff = args_getBuff(buffs_p, size);
|
||||||
return strCopy(buff, source);
|
return strCopy(buff, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char* strsCacheArg(Args* buffs_p, Arg* arg) {
|
||||||
|
pika_assert(arg != NULL);
|
||||||
|
char* res = strsCopy(buffs_p, arg_getStr(arg));
|
||||||
|
arg_deinit(arg);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
char* strsFormat(Args* buffs_p, uint16_t buffSize, const char* fmt, ...) {
|
char* strsFormat(Args* buffs_p, uint16_t buffSize, const char* fmt, ...) {
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
@ -114,6 +124,7 @@ char* strsFormat(Args* buffs_p, uint16_t buffSize, const char* fmt, ...) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Arg* arg_strAppend(Arg* arg_in, char* str_to_append) {
|
Arg* arg_strAppend(Arg* arg_in, char* str_to_append) {
|
||||||
|
pika_assert(NULL != str_to_append);
|
||||||
Args buffs = {0};
|
Args buffs = {0};
|
||||||
char* str_out = strsAppend(&buffs, arg_getStr(arg_in), str_to_append);
|
char* str_out = strsAppend(&buffs, arg_getStr(arg_in), str_to_append);
|
||||||
Arg* arg_out = arg_setStr(arg_in, "", str_out);
|
Arg* arg_out = arg_setStr(arg_in, "", str_out);
|
||||||
|
@ -43,4 +43,5 @@ Arg* arg_strAppend(Arg* arg_in, char* str_to_append);
|
|||||||
char* strsReplace(Args* buffs, char* orig, char* rep, char* with);
|
char* strsReplace(Args* buffs, char* orig, char* rep, char* with);
|
||||||
char* strsGetLine(Args* buffs, char* code);
|
char* strsGetLine(Args* buffs, char* code);
|
||||||
void strsDeinit(Args* buffs);
|
void strsDeinit(Args* buffs);
|
||||||
|
char* strsCacheArg(Args* buffs_p, Arg* arg);
|
||||||
#endif
|
#endif
|
||||||
|
@ -27,24 +27,16 @@
|
|||||||
#ifndef __PIKA_CFG_VALID_H__
|
#ifndef __PIKA_CFG_VALID_H__
|
||||||
#define __PIKA_CFG_VALID_H__
|
#define __PIKA_CFG_VALID_H__
|
||||||
|
|
||||||
/* default configuration */
|
/* clang-format off */
|
||||||
#define PIKA_LINE_BUFF_SIZE 128
|
|
||||||
#define PIKA_SPRINTF_BUFF_SIZE 256
|
/*
|
||||||
#define PIKA_STACK_BUFF_SIZE 256
|
* Don't modify the "pika_config_valid.h" file!
|
||||||
#define PIKA_NAME_BUFF_SIZE 32
|
* If you want to change the config, create "pika_config.h",
|
||||||
#define PIKA_PATH_BUFF_SIZE 64
|
* then #define PIKA_CONFIG_ENABLE in the Compiler Options.
|
||||||
#define PIKA_BYTES_DEFAULT_SIZE 64
|
* To see more:
|
||||||
#define PIKA_ARG_ALIGN_ENABLE 1
|
* https://pikadoc.readthedocs.io/en/latest/%E4%BC%98%E5%8C%96%E5%86%85%E5%AD%98%E5%8D%A0%E7%94%A8%E3%80%81%E9%85%8D%E7%BD%AE%20libc.html
|
||||||
#define PIKA_METHOD_CACHE_ENABLE 0
|
*/
|
||||||
#define PIKA_BUILTIN_LIST_ENABLE 0
|
|
||||||
#define PIKA_BUILTIN_DICT_ENABLE 0
|
|
||||||
#define PIKA_READ_FILE_BUFF_SIZE 0x10000
|
|
||||||
#define PIKA_INIT_STRING_ENABLE 0
|
|
||||||
#define PIKA_SYNTEX_ITEM_SLICE_ENABLE 1
|
|
||||||
#define PIKA_SYNTEX_ITEM_FORMAT_ENABLE 1
|
|
||||||
#define PIKA_PLOOC_ENABLE 0
|
|
||||||
#define PIKA_STD_DEVICE_UNIX_TIME_ENABLE 1
|
|
||||||
|
|
||||||
/* optimize options */
|
/* optimize options */
|
||||||
#define PIKA_OPTIMIZE_SIZE 0
|
#define PIKA_OPTIMIZE_SIZE 0
|
||||||
#define PIKA_OPTIMIZE_SPEED 1
|
#define PIKA_OPTIMIZE_SPEED 1
|
||||||
@ -53,50 +45,213 @@
|
|||||||
#define PIKA_SYNTAX_LEVEL_MINIMAL 0
|
#define PIKA_SYNTAX_LEVEL_MINIMAL 0
|
||||||
#define PIKA_SYNTAX_LEVEL_MAXIMAL 1
|
#define PIKA_SYNTAX_LEVEL_MAXIMAL 1
|
||||||
|
|
||||||
/* default optimize */
|
|
||||||
#define PIKA_OPTIMIZE PIKA_OPTIMIZE_SIZE
|
|
||||||
/* default syntax support level */
|
|
||||||
#define PIKA_SYNTAX_LEVEL PIKA_SYNTAX_LEVEL_MAXIMAL
|
|
||||||
|
|
||||||
/* use user config */
|
/* use user config */
|
||||||
#ifdef PIKA_CONFIG_ENABLE
|
#ifdef PIKA_CONFIG_ENABLE
|
||||||
#include "pika_config.h"
|
#include "pika_config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* config for size optimize */
|
/* default optimize */
|
||||||
#if PIKA_OPTIMIZE == PIKA_OPTIMIZE_SIZE
|
#ifndef PIKA_OPTIMIZE
|
||||||
#undef PIKA_METHOD_CACHE_ENABLE
|
#define PIKA_OPTIMIZE PIKA_OPTIMIZE_SIZE
|
||||||
#define PIKA_METHOD_CACHE_ENABLE 0
|
#endif
|
||||||
|
|
||||||
|
/* default syntax support level */
|
||||||
|
#ifndef PIKA_SYNTAX_LEVEL
|
||||||
|
#define PIKA_SYNTAX_LEVEL PIKA_SYNTAX_LEVEL_MAXIMAL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* auto config for optimize */
|
||||||
|
#if PIKA_OPTIMIZE == PIKA_OPTIMIZE_SIZE
|
||||||
|
#ifndef PIKA_METHOD_CACHE_ENABLE
|
||||||
|
#define PIKA_METHOD_CACHE_ENABLE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
/* config for speed optimize */
|
|
||||||
#elif PIKA_OPTIMIZE == PIKA_OPTIMIZE_SPEED
|
#elif PIKA_OPTIMIZE == PIKA_OPTIMIZE_SPEED
|
||||||
#undef PIKA_METHOD_CACHE_ENABLE
|
#ifndef PIKA_METHOD_CACHE_ENABLE
|
||||||
#define PIKA_METHOD_CACHE_ENABLE 1
|
#define PIKA_METHOD_CACHE_ENABLE 1
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* config for syntax level */
|
/* auto config for syntax level */
|
||||||
#if PIKA_SYNTAX_LEVEL == PIKA_SYNTAX_LEVEL_MINIMAL
|
#if PIKA_SYNTAX_LEVEL == PIKA_SYNTAX_LEVEL_MINIMAL
|
||||||
#undef PIKA_SYNTEX_ITEM_SLICE_ENABLE
|
#ifndef PIKA_SYNTAX_SLICE_ENABLE
|
||||||
#define PIKA_SYNTEX_ITEM_SLICE_ENABLE 0
|
#define PIKA_SYNTAX_SLICE_ENABLE 0
|
||||||
#undef PIKA_BUILTIN_LIST_ENABLE
|
#endif
|
||||||
#define PIKA_BUILTIN_LIST_ENABLE 0
|
|
||||||
#undef PIKA_BUILTIN_DICT_ENABLE
|
#ifndef PIKA_BUILTIN_STRUCT_ENABLE
|
||||||
#define PIKA_BUILTIN_DICT_ENABLE 0
|
#define PIKA_BUILTIN_STRUCT_ENABLE 0
|
||||||
#undef PIKA_SYNTEX_ITEM_FORMAT_ENABLE
|
#endif
|
||||||
#define PIKA_SYNTEX_ITEM_FORMAT_ENABLE 0
|
|
||||||
#undef PIKA_STD_DEVICE_UNIX_TIME_ENABLE
|
#ifndef PIKA_SYNTAX_FORMAT_ENABLE
|
||||||
#define PIKA_STD_DEVICE_UNIX_TIME_ENABLE 0
|
#define PIKA_SYNTAX_FORMAT_ENABLE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_STD_DEVICE_UNIX_TIME_ENABLE
|
||||||
|
#define PIKA_STD_DEVICE_UNIX_TIME_ENABLE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_SYNTAX_EXCEPTION_ENABLE
|
||||||
|
#define PIKA_SYNTAX_EXCEPTION_ENABLE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_SYNTAX_IMPORT_EX_ENABLE
|
||||||
|
#define PIKA_SYNTAX_IMPORT_EX_ENABLE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_EVENT_ENABLE
|
||||||
|
#define PIKA_EVENT_ENABLE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_FILEIO_ENABLE
|
||||||
|
#define PIKA_FILEIO_ENABLE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#elif PIKA_SYNTAX_LEVEL == PIKA_SYNTAX_LEVEL_MAXIMAL
|
#elif PIKA_SYNTAX_LEVEL == PIKA_SYNTAX_LEVEL_MAXIMAL
|
||||||
#undef PIKA_SYNTEX_ITEM_SLICE_ENABLE
|
#ifndef PIKA_SYNTAX_SLICE_ENABLE
|
||||||
#define PIKA_SYNTEX_ITEM_SLICE_ENABLE 1
|
#define PIKA_SYNTAX_SLICE_ENABLE 1
|
||||||
#undef PIKA_BUILTIN_LIST_ENABLE
|
#endif
|
||||||
#define PIKA_BUILTIN_LIST_ENABLE 1
|
|
||||||
#undef PIKA_BUILTIN_DICT_ENABLE
|
#ifndef PIKA_BUILTIN_STRUCT_ENABLE
|
||||||
#define PIKA_BUILTIN_DICT_ENABLE 1
|
#define PIKA_BUILTIN_STRUCT_ENABLE 1
|
||||||
#undef PIKA_SYNTEX_ITEM_FORMAT_ENABLE
|
#endif
|
||||||
#define PIKA_SYNTEX_ITEM_FORMAT_ENABLE 1
|
|
||||||
#undef PIKA_STD_DEVICE_UNIX_TIME_ENABLE
|
#ifndef PIKA_SYNTAX_FORMAT_ENABLE
|
||||||
#define PIKA_STD_DEVICE_UNIX_TIME_ENABLE 1
|
#define PIKA_SYNTAX_FORMAT_ENABLE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_STD_DEVICE_UNIX_TIME_ENABLE
|
||||||
|
#define PIKA_STD_DEVICE_UNIX_TIME_ENABLE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_SYNTAX_EXCEPTION_ENABLE
|
||||||
|
#define PIKA_SYNTAX_EXCEPTION_ENABLE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_SYNTAX_IMPORT_EX_ENABLE
|
||||||
|
#define PIKA_SYNTAX_IMPORT_EX_ENABLE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_EVENT_ENABLE
|
||||||
|
#define PIKA_EVENT_ENABLE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_FILEIO_ENABLE
|
||||||
|
#define PIKA_FILEIO_ENABLE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* default configuration */
|
||||||
|
#ifndef PIKA_LINE_BUFF_SIZE
|
||||||
|
#define PIKA_LINE_BUFF_SIZE 128
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_SPRINTF_BUFF_SIZE
|
||||||
|
#define PIKA_SPRINTF_BUFF_SIZE 256
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_STACK_BUFF_SIZE
|
||||||
|
#define PIKA_STACK_BUFF_SIZE 256
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_NAME_BUFF_SIZE
|
||||||
|
#define PIKA_NAME_BUFF_SIZE 32
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_PATH_BUFF_SIZE
|
||||||
|
#define PIKA_PATH_BUFF_SIZE 96
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_BYTES_DEFAULT_SIZE
|
||||||
|
#define PIKA_BYTES_DEFAULT_SIZE 64
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_ARG_ALIGN_ENABLE
|
||||||
|
#define PIKA_ARG_ALIGN_ENABLE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_METHOD_CACHE_ENABLE
|
||||||
|
#define PIKA_METHOD_CACHE_ENABLE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_BUILTIN_STRUCT_ENABLE
|
||||||
|
#define PIKA_BUILTIN_STRUCT_ENABLE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_READ_FILE_BUFF_SIZE
|
||||||
|
#define PIKA_READ_FILE_BUFF_SIZE 0x1024 * 10
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_INIT_STRING_ENABLE
|
||||||
|
#define PIKA_INIT_STRING_ENABLE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_SYNTAX_SLICE_ENABLE
|
||||||
|
#define PIKA_SYNTAX_SLICE_ENABLE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_SYNTAX_FORMAT_ENABLE
|
||||||
|
#define PIKA_SYNTAX_FORMAT_ENABLE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_SYNTAX_EXCEPTION_ENABLE
|
||||||
|
#define PIKA_SYNTAX_EXCEPTION_ENABLE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_SYNTAX_IMPORT_EX_ENABLE
|
||||||
|
#define PIKA_SYNTAX_IMPORT_EX_ENABLE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_PLOOC_ENABLE
|
||||||
|
#define PIKA_PLOOC_ENABLE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_STD_DEVICE_UNIX_TIME_ENABLE
|
||||||
|
#define PIKA_STD_DEVICE_UNIX_TIME_ENABLE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_POOL_ENABLE
|
||||||
|
#define PIKA_POOL_ENABLE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_POOL_SIZE
|
||||||
|
#define PIKA_POOL_SIZE 0x4000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_POOL_ALIGN
|
||||||
|
#define PIKA_POOL_ALIGN 8
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_ASSERT_ENABLE
|
||||||
|
#define PIKA_ASSERT_ENABLE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_EVENT_ENABLE
|
||||||
|
#define PIKA_EVENT_ENABLE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_DEBUG_ENABLE
|
||||||
|
#define PIKA_DEBUG_ENABLE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_FILEIO_ENABLE
|
||||||
|
#define PIKA_FILEIO_ENABLE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_ARG_NUM_MAX
|
||||||
|
#define PIKA_ARG_NUM_MAX 16
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_MATH_ENABLE
|
||||||
|
#define PIKA_MATH_ENABLE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_REGIST_SIZE
|
||||||
|
#define PIKA_REGIST_SIZE 10
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef PIKA_ARG_BUFF_SIZE
|
||||||
|
#define PIKA_ARG_BUFF_SIZE 8
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* configuration validation */
|
/* configuration validation */
|
||||||
|
@ -26,7 +26,7 @@ static enum shell_state __obj_shellLineHandler_debug(PikaObj* self,
|
|||||||
/* print */
|
/* print */
|
||||||
if (strIsStartWith(input_line, "p ")) {
|
if (strIsStartWith(input_line, "p ")) {
|
||||||
char* path = input_line + 2;
|
char* path = input_line + 2;
|
||||||
Arg* asm_buff = arg_setStr(NULL, "", "B0\n1 REF ");
|
Arg* asm_buff = arg_newStr("B0\n1 REF ");
|
||||||
asm_buff = arg_strAppend(asm_buff, path);
|
asm_buff = arg_strAppend(asm_buff, path);
|
||||||
asm_buff = arg_strAppend(asm_buff, "\n0 RUN print\n");
|
asm_buff = arg_strAppend(asm_buff, "\n0 RUN print\n");
|
||||||
pikaVM_runAsm(__pikaMain, arg_getStr(asm_buff));
|
pikaVM_runAsm(__pikaMain, arg_getStr(asm_buff));
|
||||||
|
@ -0,0 +1,71 @@
|
|||||||
|
#include "PikaStdData_ByteArray.h"
|
||||||
|
|
||||||
|
void PikaStdData_ByteArray___init__(PikaObj* self, Arg* bytes) {
|
||||||
|
obj_setArg(self, "raw", bytes);
|
||||||
|
}
|
||||||
|
|
||||||
|
Arg* PikaStdData_ByteArray___iter__(PikaObj* self) {
|
||||||
|
obj_setInt(self, "__iter_i", 0);
|
||||||
|
return arg_newRef(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
Arg* PikaStdData_ByteArray___next__(PikaObj* self) {
|
||||||
|
int __iter_i = args_getInt(self->list, "__iter_i");
|
||||||
|
uint8_t* data = obj_getBytes(self, "raw");
|
||||||
|
uint16_t len = obj_getBytesSize(self, "raw");
|
||||||
|
Arg* res = NULL;
|
||||||
|
char char_buff[] = " ";
|
||||||
|
if (__iter_i < len) {
|
||||||
|
char_buff[0] = data[__iter_i];
|
||||||
|
res = arg_newInt(char_buff[0]);
|
||||||
|
} else {
|
||||||
|
return arg_newNull();
|
||||||
|
}
|
||||||
|
args_setInt(self->list, "__iter_i", __iter_i + 1);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
int PikaStdData_ByteArray___getitem__(PikaObj* self, int __key) {
|
||||||
|
uint8_t* data = obj_getBytes(self, "raw");
|
||||||
|
uint16_t len = obj_getBytesSize(self, "raw");
|
||||||
|
if (__key < len) {
|
||||||
|
return data[__key];
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PikaStdData_ByteArray___setitem__(PikaObj* self, int __key, int __val) {
|
||||||
|
uint8_t* data = obj_getBytes(self, "raw");
|
||||||
|
uint16_t len = obj_getBytesSize(self, "raw");
|
||||||
|
if (__key < len) {
|
||||||
|
data[__key] = __val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char* PikaStdData_ByteArray___str__(PikaObj* self) {
|
||||||
|
uint8_t* data = obj_getBytes(self, "raw");
|
||||||
|
uint16_t len = obj_getBytesSize(self, "raw");
|
||||||
|
Arg* str_arg = arg_newStr("");
|
||||||
|
str_arg = arg_strAppend(str_arg, "bytearray(b'");
|
||||||
|
for (int i = 0; i < len; i++) {
|
||||||
|
char u8_str[] = "\\x00";
|
||||||
|
uint8_t u8 = data[i];
|
||||||
|
__platform_sprintf(u8_str, "\\x%02x", u8);
|
||||||
|
str_arg = arg_strAppend(str_arg, u8_str);
|
||||||
|
}
|
||||||
|
str_arg = arg_strAppend(str_arg, "')");
|
||||||
|
obj_removeArg(self, "_buf");
|
||||||
|
obj_setStr(self, "_buf", arg_getStr(str_arg));
|
||||||
|
arg_deinit(str_arg);
|
||||||
|
return obj_getStr(self, "_buf");
|
||||||
|
}
|
||||||
|
|
||||||
|
char* PikaStdData_ByteArray_decode(PikaObj* self) {
|
||||||
|
uint8_t* data = obj_getBytes(self, "raw");
|
||||||
|
Arg* str_arg = arg_newStr((char*)data);
|
||||||
|
obj_removeArg(self, "_buf");
|
||||||
|
obj_setStr(self, "_buf", arg_getStr(str_arg));
|
||||||
|
arg_deinit(str_arg);
|
||||||
|
return obj_getStr(self, "_buf");
|
||||||
|
}
|
@ -1,6 +1,9 @@
|
|||||||
|
#include "PikaStdData_Dict.h"
|
||||||
#include "BaseObj.h"
|
#include "BaseObj.h"
|
||||||
#include "PikaObj.h"
|
#include "PikaObj.h"
|
||||||
|
#include "PikaStdData_dict_keys.h"
|
||||||
#include "PikaStdLib_SysObj.h"
|
#include "PikaStdLib_SysObj.h"
|
||||||
|
#include "dataStrs.h"
|
||||||
|
|
||||||
Arg* PikaStdData_Dict_get(PikaObj* self, char* key) {
|
Arg* PikaStdData_Dict_get(PikaObj* self, char* key) {
|
||||||
PikaDict* dict = obj_getPtr(self, "dict");
|
PikaDict* dict = obj_getPtr(self, "dict");
|
||||||
@ -8,47 +11,145 @@ Arg* PikaStdData_Dict_get(PikaObj* self, char* key) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PikaStdData_Dict___init__(PikaObj* self) {
|
void PikaStdData_Dict___init__(PikaObj* self) {
|
||||||
PikaDict* dict = New_dict();
|
__vm_Dict___init__(self);
|
||||||
obj_setPtr(self, "dict", dict);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PikaStdData_Dict_set(PikaObj* self, Arg* arg, char* key) {
|
void PikaStdData_Dict_set(PikaObj* self, char* key, Arg* arg) {
|
||||||
PikaDict* dict = obj_getPtr(self, "dict");
|
__vm_Dict_set(self, arg, key);
|
||||||
arg_setName(arg, key);
|
|
||||||
dict_setArg(dict, arg_copy(arg));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PikaStdData_Dict_remove(PikaObj* self, char* key) {
|
void PikaStdData_Dict_remove(PikaObj* self, char* key) {
|
||||||
PikaDict* dict = obj_getPtr(self, "dict");
|
PikaDict* dict = obj_getPtr(self, "dict");
|
||||||
|
PikaDict* keys = obj_getPtr(self, "_keys");
|
||||||
dict_removeArg(dict, dict_getArg(dict, key));
|
dict_removeArg(dict, dict_getArg(dict, key));
|
||||||
|
dict_removeArg(keys, dict_getArg(keys, key));
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* PikaStdData_Dict___iter__(PikaObj* self) {
|
Arg* PikaStdData_Dict___iter__(PikaObj* self) {
|
||||||
obj_setInt(self, "__iter_i", 0);
|
obj_setInt(self, "__iter_i", 0);
|
||||||
return arg_setRef(NULL, "", self);
|
return arg_newRef(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* PikaStdData_Dict___next__(PikaObj* self) {
|
Arg* PikaStdData_Dict___next__(PikaObj* self) {
|
||||||
int __iter_i = args_getInt(self->list, "__iter_i");
|
int __iter_i = args_getInt(self->list, "__iter_i");
|
||||||
PikaDict* dict = obj_getPtr(self, "dict");
|
PikaDict* keys = obj_getPtr(self, "_keys");
|
||||||
Arg* res = arg_copy(args_getArgByidex(&dict->super, __iter_i));
|
Arg* res = arg_copy(args_getArgByidex(&keys->super, __iter_i));
|
||||||
if (NULL == res) {
|
if (NULL == res) {
|
||||||
return arg_setNull(NULL);
|
return arg_newNull();
|
||||||
}
|
}
|
||||||
args_setInt(self->list, "__iter_i", __iter_i + 1);
|
args_setInt(self->list, "__iter_i", __iter_i + 1);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PikaStdData_Dict___setitem__(PikaObj* self) {
|
void PikaStdData_Dict___setitem__(PikaObj* self, Arg* __key, Arg* __val) {
|
||||||
PikaStdData_Dict_set(self, obj_getArg(self, "__val"),
|
PikaStdData_Dict_set(self, obj_getStr(self, "__key"),
|
||||||
obj_getStr(self, "__key"));
|
obj_getArg(self, "__val"));
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* PikaStdData_Dict___getitem__(PikaObj* self) {
|
Arg* PikaStdData_Dict___getitem__(PikaObj* self, Arg* __key) {
|
||||||
return PikaStdData_Dict_get(self, obj_getStr(self, "__key"));
|
return PikaStdData_Dict_get(self, obj_getStr(self, "__key"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void PikaStdData_Dict___del__(PikaObj* self) {
|
void PikaStdData_Dict___del__(PikaObj* self) {
|
||||||
PikaDict* dict = obj_getPtr(self, "dict");
|
PikaDict* dict = obj_getPtr(self, "dict");
|
||||||
|
PikaDict* keys = obj_getPtr(self, "_keys");
|
||||||
dict_deinit(dict);
|
dict_deinit(dict);
|
||||||
|
dict_deinit(keys);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PikaStdData_dict_keys___init__(PikaObj* self, PikaObj* dict) {
|
||||||
|
obj_setPtr(self, "dictptr", dict);
|
||||||
|
}
|
||||||
|
|
||||||
|
PikaObj* PikaStdData_Dict_keys(PikaObj* self) {
|
||||||
|
PikaObj* dict_keys = newNormalObj(New_PikaStdData_dict_keys);
|
||||||
|
PikaStdData_dict_keys___init__(dict_keys, self);
|
||||||
|
return dict_keys;
|
||||||
|
}
|
||||||
|
|
||||||
|
Arg* PikaStdData_dict_keys___iter__(PikaObj* self) {
|
||||||
|
obj_setInt(self, "__iter_i", 0);
|
||||||
|
return arg_newRef(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
Arg* PikaStdData_dict_keys___next__(PikaObj* self) {
|
||||||
|
int __iter_i = args_getInt(self->list, "__iter_i");
|
||||||
|
PikaObj* dictptr = obj_getPtr(self, "dictptr");
|
||||||
|
PikaDict* keys = obj_getPtr(dictptr, "_keys");
|
||||||
|
Arg* res = arg_copy(args_getArgByidex(&keys->super, __iter_i));
|
||||||
|
if (NULL == res) {
|
||||||
|
return arg_newNull();
|
||||||
|
}
|
||||||
|
args_setInt(self->list, "__iter_i", __iter_i + 1);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
char* PikaStdLib_SysObj_str(PikaObj* self, Arg* arg);
|
||||||
|
char* PikaStdData_dict_keys___str__(PikaObj* self) {
|
||||||
|
Arg* str_arg = arg_newStr("dict_keys([");
|
||||||
|
PikaObj* dictptr = obj_getPtr(self, "dictptr");
|
||||||
|
PikaDict* keys = obj_getPtr(dictptr, "_keys");
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
while (PIKA_TRUE) {
|
||||||
|
Arg* item = args_getArgByidex(&keys->super, i);
|
||||||
|
if (NULL == item) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (i != 0) {
|
||||||
|
str_arg = arg_strAppend(str_arg, ", ");
|
||||||
|
}
|
||||||
|
char* item_str = PikaStdLib_SysObj_str(self, item);
|
||||||
|
str_arg = arg_strAppend(str_arg, item_str);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
str_arg = arg_strAppend(str_arg, "])");
|
||||||
|
obj_setStr(self, "_buf", arg_getStr(str_arg));
|
||||||
|
arg_deinit(str_arg);
|
||||||
|
return obj_getStr(self, "_buf");
|
||||||
|
}
|
||||||
|
|
||||||
|
char* PikaStdData_Dict___str__(PikaObj* self) {
|
||||||
|
Arg* str_arg = arg_newStr("{");
|
||||||
|
|
||||||
|
PikaDict* keys = obj_getPtr(self, "_keys");
|
||||||
|
PikaDict* dict = obj_getPtr(self, "dict");
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
while (PIKA_TRUE) {
|
||||||
|
Arg* item_key = args_getArgByidex(&keys->super, i);
|
||||||
|
Arg* item_val = args_getArgByidex(&dict->super, i);
|
||||||
|
if (NULL == item_key) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (i != 0) {
|
||||||
|
str_arg = arg_strAppend(str_arg, ", ");
|
||||||
|
}
|
||||||
|
char* key_str = PikaStdLib_SysObj_str(self, item_key);
|
||||||
|
str_arg = arg_strAppend(str_arg, "'");
|
||||||
|
str_arg = arg_strAppend(str_arg, key_str);
|
||||||
|
str_arg = arg_strAppend(str_arg, "'");
|
||||||
|
str_arg = arg_strAppend(str_arg, ": ");
|
||||||
|
|
||||||
|
char* val_str = PikaStdLib_SysObj_str(self, item_val);
|
||||||
|
str_arg = arg_strAppend(str_arg, val_str);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
str_arg = arg_strAppend(str_arg, "}");
|
||||||
|
obj_setStr(self, "_buf", arg_getStr(str_arg));
|
||||||
|
arg_deinit(str_arg);
|
||||||
|
return obj_getStr(self, "_buf");
|
||||||
|
}
|
||||||
|
|
||||||
|
int PikaStdData_Dict___len__(PikaObj* self) {
|
||||||
|
PikaDict* dict = obj_getPtr(self, "dict");
|
||||||
|
return args_getSize(&dict->super);
|
||||||
|
}
|
||||||
|
|
||||||
|
int PikaStdData_dict_keys___len__(PikaObj* self) {
|
||||||
|
PikaObj* dictptr = obj_getPtr(self, "dictptr");
|
||||||
|
PikaDict* keys = obj_getPtr(dictptr, "_keys");
|
||||||
|
return args_getSize(&keys->super);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,177 @@
|
|||||||
|
#include "PikaStdData_FILEIO.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "PikaStdData_List.h"
|
||||||
|
|
||||||
|
void PikaStdData_FILEIO_init(PikaObj* self, char* mode, char* path) {
|
||||||
|
if (obj_isArgExist(self, "_f")) {
|
||||||
|
/* already initialized */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
FILE* f = __platform_fopen(path, mode);
|
||||||
|
if (f == NULL) {
|
||||||
|
printf("Error: can't open file %s\n", path);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
obj_setPtr(self, "_f", f);
|
||||||
|
obj_setStr(self, "_mode", mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PikaStdData_FILEIO_close(PikaObj* self) {
|
||||||
|
FILE* f = obj_getPtr(self, "_f");
|
||||||
|
if (f == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
__platform_fclose(f);
|
||||||
|
obj_setPtr(self, "_f", NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
Arg* PikaStdData_FILEIO_read(PikaObj* self, int size) {
|
||||||
|
if (size <= 0) {
|
||||||
|
/* read all */
|
||||||
|
size = PIKA_READ_FILE_BUFF_SIZE;
|
||||||
|
}
|
||||||
|
FILE* f = obj_getPtr(self, "_f");
|
||||||
|
if (f == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
Arg* buf_arg = arg_newBytes(NULL, size);
|
||||||
|
uint8_t* buf = arg_getBytes(buf_arg);
|
||||||
|
/* read */
|
||||||
|
int n = __platform_fread(buf, 1, size, f);
|
||||||
|
if (n < size) {
|
||||||
|
/* EOF */
|
||||||
|
buf[n] = '\0';
|
||||||
|
}
|
||||||
|
char* mode = obj_getStr(self, "_mode");
|
||||||
|
if (strIsContain(mode, 'b')) {
|
||||||
|
/* binary */
|
||||||
|
Arg* res = arg_newBytes(buf, n);
|
||||||
|
arg_deinit(buf_arg);
|
||||||
|
return res;
|
||||||
|
} else {
|
||||||
|
/* text */
|
||||||
|
Arg* res = arg_newStr((char*)buf);
|
||||||
|
arg_deinit(buf_arg);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int PikaStdData_FILEIO_write(PikaObj* self, Arg* s) {
|
||||||
|
FILE* f = obj_getPtr(self, "_f");
|
||||||
|
int res = -1;
|
||||||
|
if (f == NULL) {
|
||||||
|
obj_setErrorCode(self, PIKA_RES_ERR_IO);
|
||||||
|
__platform_printf("Error: can't write to file\n");
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
char* mode = obj_getStr(self, "_mode");
|
||||||
|
if (strIsContain(mode, 'b')) {
|
||||||
|
/* binary */
|
||||||
|
res = __platform_fwrite(arg_getBytes(s), 1, arg_getSize(s), f);
|
||||||
|
} else {
|
||||||
|
/* text */
|
||||||
|
char* str = arg_getStr(s);
|
||||||
|
res = __platform_fwrite(str, 1, strlen(str), f);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
int PikaStdData_FILEIO_seek(PikaObj *self, int offset, PikaTuple* fromwhere){
|
||||||
|
FILE* f = obj_getPtr(self, "_f");
|
||||||
|
if (f == NULL) {
|
||||||
|
obj_setErrorCode(self, PIKA_RES_ERR_IO);
|
||||||
|
__platform_printf("Error: can't seek in file\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (tuple_getSize(fromwhere) == 1) {
|
||||||
|
int whence = tuple_getInt(fromwhere, 0);
|
||||||
|
__platform_fseek(f, offset, whence);
|
||||||
|
return __platform_ftell(f);
|
||||||
|
}
|
||||||
|
__platform_fseek(f, offset, 0);
|
||||||
|
return __platform_ftell(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
int PikaStdData_FILEIO_tell(PikaObj* self) {
|
||||||
|
FILE* f = obj_getPtr(self, "_f");
|
||||||
|
if (f == NULL) {
|
||||||
|
obj_setErrorCode(self, PIKA_RES_ERR_IO);
|
||||||
|
__platform_printf("Error: can't tell in file\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return __platform_ftell(f);
|
||||||
|
}
|
||||||
|
|
||||||
|
char* PikaStdData_FILEIO_readline(PikaObj* self) {
|
||||||
|
FILE* f = obj_getPtr(self, "_f");
|
||||||
|
if (f == NULL) {
|
||||||
|
obj_setErrorCode(self, PIKA_RES_ERR_IO);
|
||||||
|
__platform_printf("Error: can't read line from file\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
obj_setBytes(self, "_line_buff", NULL, PIKA_LINE_BUFF_SIZE);
|
||||||
|
char* line_buff = (char*)obj_getBytes(self, "_line_buff");
|
||||||
|
while (1) {
|
||||||
|
char char_buff[2] = {0};
|
||||||
|
int n = __platform_fread(char_buff, 1, 1, f);
|
||||||
|
if (n == 0) {
|
||||||
|
/* EOF */
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
if (char_buff[0] == '\n') {
|
||||||
|
/* end of line */
|
||||||
|
strAppend(line_buff, char_buff);
|
||||||
|
return line_buff;
|
||||||
|
}
|
||||||
|
if (strGetSize(line_buff) >= PIKA_LINE_BUFF_SIZE) {
|
||||||
|
/* line too long */
|
||||||
|
obj_setErrorCode(self, PIKA_RES_ERR_IO);
|
||||||
|
__platform_printf("Error: line too long\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
strAppend(line_buff, char_buff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PikaObj* PikaStdData_FILEIO_readlines(PikaObj* self) {
|
||||||
|
FILE* f = obj_getPtr(self, "_f");
|
||||||
|
if (f == NULL) {
|
||||||
|
obj_setErrorCode(self, PIKA_RES_ERR_IO);
|
||||||
|
__platform_printf("Error: can't read lines from file\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
PikaObj* line_list = newNormalObj(New_PikaStdData_List);
|
||||||
|
PikaStdData_List___init__(line_list);
|
||||||
|
while (1) {
|
||||||
|
char* line = PikaStdData_FILEIO_readline(self);
|
||||||
|
if (line == NULL) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Arg* arg_str = arg_newStr(line);
|
||||||
|
PikaStdData_List_append(line_list, arg_str);
|
||||||
|
arg_deinit(arg_str);
|
||||||
|
}
|
||||||
|
return line_list;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PikaStdData_FILEIO_writelines(PikaObj* self, PikaObj* lines) {
|
||||||
|
FILE* f = obj_getPtr(self, "_f");
|
||||||
|
if (f == NULL) {
|
||||||
|
obj_setErrorCode(self, PIKA_RES_ERR_IO);
|
||||||
|
__platform_printf("Error: can't write lines to file\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
PikaList* list = obj_getPtr(lines, "list");
|
||||||
|
if (list == NULL) {
|
||||||
|
obj_setErrorCode(self, PIKA_RES_ERR_IO);
|
||||||
|
__platform_printf("Error: can't write lines to file\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (size_t i = 0; i < list_getSize(list); i++) {
|
||||||
|
char* line = list_getStr(list, i);
|
||||||
|
Arg* arg_str = arg_newStr(line);
|
||||||
|
PikaStdData_FILEIO_write(self, arg_str);
|
||||||
|
arg_deinit(arg_str);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
@ -1,29 +1,14 @@
|
|||||||
|
#include "PikaStdData_List.h"
|
||||||
#include "BaseObj.h"
|
#include "BaseObj.h"
|
||||||
#include "PikaObj.h"
|
#include "PikaObj.h"
|
||||||
|
#include "PikaStdData_Tuple.h"
|
||||||
|
#include "dataStrs.h"
|
||||||
|
|
||||||
void PikaStdData_List_append(PikaObj* self, Arg* arg) {
|
void PikaStdData_List_append(PikaObj* self, Arg* arg) {
|
||||||
PikaList* list = obj_getPtr(self, "list");
|
__vm_List_append(self, arg);
|
||||||
list_append(list, arg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int PikaStdData_List_len(PikaObj* self) {
|
void PikaStdData_List_set(PikaObj* self, int i, Arg* arg) {
|
||||||
PikaList* list = obj_getPtr(self, "list");
|
|
||||||
return list_getSize(list);
|
|
||||||
}
|
|
||||||
|
|
||||||
Arg* PikaStdData_List_get(PikaObj* self, int i) {
|
|
||||||
PikaList* list = obj_getPtr(self, "list");
|
|
||||||
return arg_copy(list_getArg(list, i));
|
|
||||||
}
|
|
||||||
|
|
||||||
void PikaStdData_List___init__(PikaObj* self) {
|
|
||||||
if (!obj_isArgExist(self, "list")) {
|
|
||||||
PikaList* list = New_list();
|
|
||||||
obj_setPtr(self, "list", list);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PikaStdData_List_set(PikaObj* self, Arg* arg, int i) {
|
|
||||||
PikaList* list = obj_getPtr(self, "list");
|
PikaList* list = obj_getPtr(self, "list");
|
||||||
if (PIKA_RES_OK != list_setArg(list, i, arg)) {
|
if (PIKA_RES_OK != list_setArg(list, i, arg)) {
|
||||||
obj_setErrorCode(self, 1);
|
obj_setErrorCode(self, 1);
|
||||||
@ -31,52 +16,36 @@ void PikaStdData_List_set(PikaObj* self, Arg* arg, int i) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* PikaStdData_List___iter__(PikaObj* self) {
|
void PikaStdData_List___setitem__(PikaObj* self, Arg* __key, Arg* __val) {
|
||||||
obj_setInt(self, "__iter_i", 0);
|
PikaStdData_List_set(self, obj_getInt(self, "__key"),
|
||||||
return arg_setRef(NULL, "", self);
|
obj_getArg(self, "__val"));
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* PikaStdData_List___next__(PikaObj* self) {
|
void PikaStdData_List___init__(PikaObj* self) {
|
||||||
int __iter_i = args_getInt(self->list, "__iter_i");
|
__vm_List___init__(self);
|
||||||
Arg* res = PikaStdData_List_get(self, __iter_i);
|
}
|
||||||
if (NULL == res) {
|
|
||||||
return arg_setNull(NULL);
|
char* PikaStdLib_SysObj_str(PikaObj* self, Arg* arg);
|
||||||
|
char* PikaStdData_List___str__(PikaObj* self) {
|
||||||
|
Arg* str_arg = arg_newStr("[");
|
||||||
|
PikaList* list = obj_getPtr(self, "list");
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
while (PIKA_TRUE) {
|
||||||
|
Arg* item = list_getArg(list, i);
|
||||||
|
if (NULL == item) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (i != 0) {
|
||||||
|
str_arg = arg_strAppend(str_arg, ", ");
|
||||||
|
}
|
||||||
|
char* item_str = PikaStdLib_SysObj_str(self, item);
|
||||||
|
str_arg = arg_strAppend(str_arg, item_str);
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
args_setInt(self->list, "__iter_i", __iter_i + 1);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
Arg* PikaStdData_List___getitem__(PikaObj* self) {
|
str_arg = arg_strAppend(str_arg, "]");
|
||||||
return PikaStdData_List_get(self, obj_getInt(self, "__key"));
|
obj_setStr(self, "_buf", arg_getStr(str_arg));
|
||||||
}
|
arg_deinit(str_arg);
|
||||||
|
return obj_getStr(self, "_buf");
|
||||||
void PikaStdData_List___setitem__(PikaObj* self) {
|
|
||||||
PikaStdData_List_set(self, obj_getArg(self, "__val"),
|
|
||||||
obj_getInt(self, "__key"));
|
|
||||||
}
|
|
||||||
|
|
||||||
void PikaStdData_ByteArray_fromString(PikaObj* self, char* s) {
|
|
||||||
for (uint32_t i = 0; i < strGetSize(s); i++) {
|
|
||||||
obj_setInt(self, "__val", (int)s[i]);
|
|
||||||
PIKA_PYTHON_BEGIN
|
|
||||||
/* clang-format off */
|
|
||||||
PIKA_PYTHON(
|
|
||||||
append(__val)
|
|
||||||
)
|
|
||||||
/* clang-format on */
|
|
||||||
const uint8_t bytes[] = {
|
|
||||||
0x08, 0x00, /* instruct array size */
|
|
||||||
0x10, 0x81, 0x01, 0x00, 0x00, 0x02, 0x07, 0x00, /* instruct array */
|
|
||||||
0x0e, 0x00, /* const pool size */
|
|
||||||
0x00, 0x5f, 0x5f, 0x76, 0x61, 0x6c, 0x00, 0x61,
|
|
||||||
0x70, 0x70, 0x65, 0x6e, 0x64, 0x00, /* const pool */
|
|
||||||
};
|
|
||||||
pikaVM_runByteCode(self, (uint8_t*)bytes);
|
|
||||||
PIKA_PYTHON_END
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PikaStdData_List___del__(PikaObj* self) {
|
|
||||||
Args* list = obj_getPtr(self, "list");
|
|
||||||
args_deinit(list);
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
#include "PikaStdData_String.h"
|
#include "PikaStdData_String.h"
|
||||||
|
#include "PikaStdData_List.h"
|
||||||
#include "PikaStdData_String_Util.h"
|
#include "PikaStdData_String_Util.h"
|
||||||
|
#include "dataStrs.h"
|
||||||
|
|
||||||
Arg* PikaStdData_String___iter__(PikaObj* self) {
|
Arg* PikaStdData_String___iter__(PikaObj* self) {
|
||||||
obj_setInt(self, "__iter_i", 0);
|
obj_setInt(self, "__iter_i", 0);
|
||||||
return arg_setRef(NULL, "", self);
|
return arg_newRef(self);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PikaStdData_String_set(PikaObj* self, char* s) {
|
void PikaStdData_String_set(PikaObj* self, char* s) {
|
||||||
@ -26,9 +28,9 @@ Arg* PikaStdData_String___next__(PikaObj* self) {
|
|||||||
char char_buff[] = " ";
|
char char_buff[] = " ";
|
||||||
if (__iter_i < len) {
|
if (__iter_i < len) {
|
||||||
char_buff[0] = str[__iter_i];
|
char_buff[0] = str[__iter_i];
|
||||||
res = arg_setStr(NULL, "", (char*)char_buff);
|
res = arg_newStr((char*)char_buff);
|
||||||
} else {
|
} else {
|
||||||
return arg_setNull(NULL);
|
return arg_newNull();
|
||||||
}
|
}
|
||||||
args_setInt(self->list, "__iter_i", __iter_i + 1);
|
args_setInt(self->list, "__iter_i", __iter_i + 1);
|
||||||
return res;
|
return res;
|
||||||
@ -41,9 +43,9 @@ Arg* PikaStdData_String___getitem__(PikaObj* self, Arg* __key) {
|
|||||||
char char_buff[] = " ";
|
char char_buff[] = " ";
|
||||||
if (key_i < len) {
|
if (key_i < len) {
|
||||||
char_buff[0] = str[key_i];
|
char_buff[0] = str[key_i];
|
||||||
return arg_setStr(NULL, "", (char*)char_buff);
|
return arg_newStr((char*)char_buff);
|
||||||
} else {
|
} else {
|
||||||
return arg_setNull(NULL);
|
return arg_newNull();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,12 +66,12 @@ char* PikaStdData_String___str__(PikaObj* self) {
|
|||||||
return obj_getStr(self, "str");
|
return obj_getStr(self, "str");
|
||||||
}
|
}
|
||||||
|
|
||||||
int PikaStdData_String_startwith(PikaObj *self, char* prefix){
|
int PikaStdData_String_startwith(PikaObj* self, char* prefix) {
|
||||||
char *str = obj_getStr(self,"str");
|
char* str = obj_getStr(self, "str");
|
||||||
char *p = prefix;
|
char* p = prefix;
|
||||||
int i=0;
|
int i = 0;
|
||||||
while(*p!='\0'){
|
while (*p != '\0') {
|
||||||
if(*p!=str[i])
|
if (*p != str[i])
|
||||||
return 0;
|
return 0;
|
||||||
p++;
|
p++;
|
||||||
i++;
|
i++;
|
||||||
@ -77,12 +79,12 @@ int PikaStdData_String_startwith(PikaObj *self, char* prefix){
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PikaStdData_String_endwith(PikaObj *self, char* suffix){
|
int PikaStdData_String_endwith(PikaObj* self, char* suffix) {
|
||||||
char *str = obj_getStr(self,"str");
|
char* str = obj_getStr(self, "str");
|
||||||
int len1=strlen(str);
|
int len1 = strlen(str);
|
||||||
int len2=strlen(suffix);
|
int len2 = strlen(suffix);
|
||||||
while(len2>=1){
|
while (len2 >= 1) {
|
||||||
if(suffix[len2-1]!=str[len1-1])
|
if (suffix[len2 - 1] != str[len1 - 1])
|
||||||
return 0;
|
return 0;
|
||||||
len2--;
|
len2--;
|
||||||
len1--;
|
len1--;
|
||||||
@ -90,57 +92,127 @@ int PikaStdData_String_endwith(PikaObj *self, char* suffix){
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PikaStdData_String_isdigit(PikaObj *self){
|
int PikaStdData_String_isdigit(PikaObj* self) {
|
||||||
char *str = obj_getStr(self,"str");
|
char* str = obj_getStr(self, "str");
|
||||||
int i=0;
|
int i = 0;
|
||||||
while(str[i]!='\0'){
|
while (str[i] != '\0') {
|
||||||
if(!isdigit((int)str[i]))
|
if (!isdigit((int)str[i]))
|
||||||
return 0;
|
return 0;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PikaStdData_String_islower(PikaObj *self){
|
int PikaStdData_String_islower(PikaObj* self) {
|
||||||
char *str = obj_getStr(self,"str");
|
char* str = obj_getStr(self, "str");
|
||||||
int i=0;
|
int i = 0;
|
||||||
while(str[i]!='\0'){
|
while (str[i] != '\0') {
|
||||||
if(!islower((int)str[i]))
|
if (!islower((int)str[i]))
|
||||||
return 0;
|
return 0;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PikaStdData_String_isalnum(PikaObj *self){
|
int PikaStdData_String_isalnum(PikaObj* self) {
|
||||||
char *str = obj_getStr(self,"str");
|
char* str = obj_getStr(self, "str");
|
||||||
int i=0;
|
int i = 0;
|
||||||
while(str[i]!='\0'){
|
while (str[i] != '\0') {
|
||||||
if(!isalnum((int)str[i]))
|
if (!isalnum((int)str[i]))
|
||||||
return 0;
|
return 0;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PikaStdData_String_isalpha(PikaObj *self){
|
int PikaStdData_String_isalpha(PikaObj* self) {
|
||||||
char *str = obj_getStr(self,"str");
|
char* str = obj_getStr(self, "str");
|
||||||
int i=0;
|
int i = 0;
|
||||||
while(str[i]!='\0'){
|
while (str[i] != '\0') {
|
||||||
if(!isalpha((int)str[i]))
|
if (!isalpha((int)str[i]))
|
||||||
return 0;
|
return 0;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PikaStdData_String_isspace(PikaObj *self){
|
int PikaStdData_String_isspace(PikaObj* self) {
|
||||||
char *str = obj_getStr(self,"str");
|
char* str = obj_getStr(self, "str");
|
||||||
int i=0;
|
int i = 0;
|
||||||
while(str[i]!='\0'){
|
while (str[i] != '\0') {
|
||||||
if(!isspace((int)str[i]))
|
if (!isspace((int)str[i]))
|
||||||
return 0;
|
return 0;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PikaObj* PikaStdData_String_split(PikaObj* self, char* s) {
|
||||||
|
/* 创建 list 对象 */
|
||||||
|
PikaObj* list = newNormalObj(New_PikaStdData_List);
|
||||||
|
/* 初始化 list */
|
||||||
|
PikaStdData_List___init__(list);
|
||||||
|
|
||||||
|
Args buffs = {0};
|
||||||
|
char* str = strsCopy(&buffs, obj_getStr(self, "str"));
|
||||||
|
|
||||||
|
char sign = s[0];
|
||||||
|
int token_num = strCountSign(str, sign) + 1;
|
||||||
|
|
||||||
|
for (int i = 0; i < token_num; i++) {
|
||||||
|
char* token = strsPopToken(&buffs, str, sign);
|
||||||
|
/* 用 arg_set<type> 的 api 创建 arg */
|
||||||
|
Arg* token_arg = arg_newStr(token);
|
||||||
|
/* 添加到 list 对象 */
|
||||||
|
PikaStdData_List_append(list, token_arg);
|
||||||
|
/* 销毁 arg */
|
||||||
|
arg_deinit(token_arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
strsDeinit(&buffs);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
int PikaStdData_String___len__(PikaObj* self) {
|
||||||
|
char* str = obj_getStr(self, "str");
|
||||||
|
return strGetSize(str);
|
||||||
|
}
|
||||||
|
|
||||||
|
char* PikaStdData_String_strip(PikaObj* self) {
|
||||||
|
Args buffs = {0};
|
||||||
|
char* str = strsCopy(&buffs, obj_getStr(self, "str"));
|
||||||
|
/* strip */
|
||||||
|
char* str_start = str;
|
||||||
|
for (size_t i = 0; i < strGetSize(str); i++) {
|
||||||
|
if (str[i] != ' ') {
|
||||||
|
str_start = (char*)(str + i);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = strGetSize(str) - 1; i >= 0; i--) {
|
||||||
|
if (str[i] != ' ') {
|
||||||
|
str[i + 1] = '\0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
obj_setStr(self, "_buf", str_start);
|
||||||
|
strsDeinit(&buffs);
|
||||||
|
return obj_getStr(self, "_buf");
|
||||||
|
}
|
||||||
|
|
||||||
|
char* PikaStdData_String_replace(PikaObj* self, char* old, char* new) {
|
||||||
|
Args buffs = {0};
|
||||||
|
char* str = strsCopy(&buffs, obj_getStr(self, "str"));
|
||||||
|
str = strsReplace(&buffs, str, old, new);
|
||||||
|
obj_setStr(self, "_buf", str);
|
||||||
|
strsDeinit(&buffs);
|
||||||
|
return obj_getStr(self, "_buf");
|
||||||
|
}
|
||||||
|
|
||||||
|
Arg* PikaStdData_String_encode(PikaObj* self) {
|
||||||
|
char* str = obj_getStr(self, "str");
|
||||||
|
Arg* arg = arg_newBytes((uint8_t*)str, strGetSize(str));
|
||||||
|
return arg;
|
||||||
|
}
|
||||||
|
@ -1 +1 @@
|
|||||||
#include<ctype.h>
|
#include<ctype.h>
|
||||||
|
@ -0,0 +1,70 @@
|
|||||||
|
#include "PikaStdData_Tuple.h"
|
||||||
|
#include "PikaVM.h"
|
||||||
|
#include "dataStrs.h"
|
||||||
|
|
||||||
|
int PikaStdData_Tuple_len(PikaObj* self) {
|
||||||
|
PikaList* list = obj_getPtr(self, "list");
|
||||||
|
return list_getSize(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
Arg* PikaStdData_Tuple_get(PikaObj* self, int i) {
|
||||||
|
PikaList* list = obj_getPtr(self, "list");
|
||||||
|
return arg_copy(list_getArg(list, i));
|
||||||
|
}
|
||||||
|
|
||||||
|
void PikaStdData_Tuple___init__(PikaObj* self) {
|
||||||
|
__vm_List___init__(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
Arg* PikaStdData_Tuple___iter__(PikaObj* self) {
|
||||||
|
obj_setInt(self, "__iter_i", 0);
|
||||||
|
return arg_newRef(self);
|
||||||
|
}
|
||||||
|
|
||||||
|
Arg* PikaStdData_Tuple___next__(PikaObj* self) {
|
||||||
|
int __iter_i = args_getInt(self->list, "__iter_i");
|
||||||
|
Arg* res = PikaStdData_Tuple_get(self, __iter_i);
|
||||||
|
if (NULL == res) {
|
||||||
|
return arg_newNull();
|
||||||
|
}
|
||||||
|
args_setInt(self->list, "__iter_i", __iter_i + 1);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
Arg* PikaStdData_Tuple___getitem__(PikaObj* self, Arg* __key) {
|
||||||
|
return PikaStdData_Tuple_get(self, obj_getInt(self, "__key"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void PikaStdData_Tuple___del__(PikaObj* self) {
|
||||||
|
Args* list = obj_getPtr(self, "list");
|
||||||
|
args_deinit(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
char* PikaStdLib_SysObj_str(PikaObj* self, Arg* arg);
|
||||||
|
char* PikaStdData_Tuple___str__(PikaObj* self) {
|
||||||
|
Arg* str_arg = arg_newStr("(");
|
||||||
|
PikaList* list = obj_getPtr(self, "list");
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
while (PIKA_TRUE) {
|
||||||
|
Arg* item = list_getArg(list, i);
|
||||||
|
if (NULL == item) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (i != 0) {
|
||||||
|
str_arg = arg_strAppend(str_arg, ", ");
|
||||||
|
}
|
||||||
|
char* item_str = PikaStdLib_SysObj_str(self, item);
|
||||||
|
str_arg = arg_strAppend(str_arg, item_str);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
str_arg = arg_strAppend(str_arg, ")");
|
||||||
|
obj_setStr(self, "_buf", arg_getStr(str_arg));
|
||||||
|
arg_deinit(str_arg);
|
||||||
|
return obj_getStr(self, "_buf");
|
||||||
|
}
|
||||||
|
|
||||||
|
int PikaStdData_Tuple___len__(PikaObj* self) {
|
||||||
|
return PikaStdData_Tuple_len(self);
|
||||||
|
}
|
@ -1,4 +1,5 @@
|
|||||||
#include "PikaStdData_Utils.h"
|
#include "PikaStdData_Utils.h"
|
||||||
|
#include "dataStrs.h"
|
||||||
|
|
||||||
Arg* PikaStdData_Utils_int_to_bytes(PikaObj* self, int val) {
|
Arg* PikaStdData_Utils_int_to_bytes(PikaObj* self, int val) {
|
||||||
if (val > 0xFF) {
|
if (val > 0xFF) {
|
||||||
@ -6,8 +7,8 @@ Arg* PikaStdData_Utils_int_to_bytes(PikaObj* self, int val) {
|
|||||||
__platform_printf(
|
__platform_printf(
|
||||||
"OverflowError: cannot convert value larger than 0xFF to "
|
"OverflowError: cannot convert value larger than 0xFF to "
|
||||||
"bytes\r\n");
|
"bytes\r\n");
|
||||||
return arg_setNull(NULL);
|
return arg_newNull();
|
||||||
}
|
}
|
||||||
uint8_t val_bytes = (uint8_t)val;
|
uint8_t val_bytes = (uint8_t)val;
|
||||||
return arg_setBytes(NULL, "", &val_bytes, 1);
|
return arg_newBytes(&val_bytes, 1);
|
||||||
}
|
}
|
||||||
|
@ -17,8 +17,8 @@ Arg* PikaStdLib_RangeObj___next__(PikaObj* self) {
|
|||||||
}
|
}
|
||||||
/* exit */
|
/* exit */
|
||||||
if (iter_i >= end) {
|
if (iter_i >= end) {
|
||||||
return arg_setNull(NULL);
|
return arg_newNull();
|
||||||
}
|
}
|
||||||
args_setInt(self->list, "iter_i", iter_i + foot);
|
args_setInt(self->list, "iter_i", iter_i + foot);
|
||||||
return arg_setInt(NULL, "", iter_i);
|
return arg_newInt(iter_i);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#include "PikaObj.h"
|
#include "PikaObj.h"
|
||||||
|
|
||||||
Arg* PikaStdLib_StringObj___next__(PikaObj* self) {
|
Arg* PikaStdLib_StringObj___next__(PikaObj* self) {
|
||||||
return arg_setNull(NULL);
|
return arg_newNull();
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
#include "PikaStdLib_SysObj.h"
|
#include "PikaStdLib_SysObj.h"
|
||||||
|
#include "PikaStdData_FILEIO.h"
|
||||||
#include "PikaStdLib_RangeObj.h"
|
#include "PikaStdLib_RangeObj.h"
|
||||||
#include "PikaStdLib_StringObj.h"
|
#include "PikaStdLib_StringObj.h"
|
||||||
#include "PikaVM.h"
|
#include "PikaVM.h"
|
||||||
@ -19,49 +20,55 @@ void PikaStdLib_SysObj_remove(PikaObj* self, char* argPath) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PikaStdLib_SysObj_type(PikaObj* self, Arg* arg) {
|
Arg* PikaStdLib_SysObj_type(PikaObj* self, Arg* arg) {
|
||||||
if (NULL == arg) {
|
if (NULL == arg) {
|
||||||
obj_setSysOut(self, "[error] type: arg no found.");
|
obj_setSysOut(self, "[error] type: arg no found.");
|
||||||
obj_setErrorCode(self, 1);
|
obj_setErrorCode(self, 1);
|
||||||
return;
|
return arg_newNull();
|
||||||
}
|
}
|
||||||
ArgType type = arg_getType(arg);
|
ArgType type = arg_getType(arg);
|
||||||
if (ARG_TYPE_INT == type) {
|
if (ARG_TYPE_INT == type) {
|
||||||
obj_setSysOut(self, "<class 'int'>");
|
return arg_newStr("<class 'int'>");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (ARG_TYPE_FLOAT == type) {
|
if (ARG_TYPE_FLOAT == type) {
|
||||||
obj_setSysOut(self, "<class 'float'>");
|
return arg_newStr("<class 'float'>");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (ARG_TYPE_STRING == type) {
|
if (ARG_TYPE_STRING == type) {
|
||||||
obj_setSysOut(self, "<class 'str'>");
|
return arg_newStr("<class 'str'>");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (ARG_TYPE_OBJECT == type) {
|
if (argType_isObject(type)) {
|
||||||
obj_setSysOut(self, "<class 'object'>");
|
PikaObj* obj = arg_getPtr(arg);
|
||||||
return;
|
NewFun clsptr = obj_getClass(obj);
|
||||||
|
PikaObj* New_PikaStdData_List(Args * args);
|
||||||
|
if (clsptr == New_PikaStdData_List) {
|
||||||
|
return arg_newStr("<class 'list'>");
|
||||||
|
}
|
||||||
|
/* dict */
|
||||||
|
PikaObj* New_PikaStdData_Dict(Args * args);
|
||||||
|
if (clsptr == New_PikaStdData_Dict) {
|
||||||
|
return arg_newStr("<class 'dict'>");
|
||||||
|
}
|
||||||
|
return arg_newStr("<class 'object'>");
|
||||||
}
|
}
|
||||||
if (ARG_TYPE_OBJECT_META == type) {
|
if (ARG_TYPE_OBJECT_META == type) {
|
||||||
obj_setSysOut(self, "<class 'meta object'>");
|
return arg_newStr("<class 'meta object'>");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (ARG_TYPE_BYTES == type) {
|
if (ARG_TYPE_BYTES == type) {
|
||||||
obj_setSysOut(self, "<class 'bytes'>");
|
return arg_newStr("<class 'bytes'>");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (ARG_TYPE_METHOD_NATIVE == type) {
|
if (ARG_TYPE_METHOD_NATIVE == type) {
|
||||||
obj_setSysOut(self, "<class 'buitin_function_or_method'>");
|
return arg_newStr("<class 'buitin_function_or_method'>");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (ARG_TYPE_METHOD_OBJECT == type) {
|
if (ARG_TYPE_METHOD_OBJECT == type) {
|
||||||
obj_setSysOut(self, "<class 'method'>");
|
return arg_newStr("<class 'method'>");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (ARG_TYPE_METHOD_STATIC == type) {
|
if (ARG_TYPE_METHOD_STATIC == type) {
|
||||||
obj_setSysOut(self, "<class 'function'>");
|
return arg_newStr("<class 'function'>");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
if (ARG_TYPE_NONE == type) {
|
||||||
|
return arg_newStr("<class 'NoneType'>");
|
||||||
|
}
|
||||||
|
return arg_newNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
double PikaStdLib_SysObj_float(PikaObj* self, Arg* arg) {
|
double PikaStdLib_SysObj_float(PikaObj* self, Arg* arg) {
|
||||||
@ -104,9 +111,10 @@ int PikaStdLib_SysObj_int(PikaObj* self, Arg* arg) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
char* PikaStdLib_SysObj_str(PikaObj* self, Arg* arg) {
|
char* PikaStdLib_SysObj_str(PikaObj* self, Arg* arg) {
|
||||||
|
obj_removeArg(self, "__buf");
|
||||||
ArgType type = arg_getType(arg);
|
ArgType type = arg_getType(arg);
|
||||||
Args buffs = {0};
|
Args buffs = {0};
|
||||||
char* res = NULL;
|
char* res = "";
|
||||||
if (ARG_TYPE_INT == type) {
|
if (ARG_TYPE_INT == type) {
|
||||||
int val = arg_getInt(arg);
|
int val = arg_getInt(arg);
|
||||||
res = strsFormat(&buffs, 11, "%d", val);
|
res = strsFormat(&buffs, 11, "%d", val);
|
||||||
@ -121,6 +129,12 @@ char* PikaStdLib_SysObj_str(PikaObj* self, Arg* arg) {
|
|||||||
res = (char*)arg_getBytes(arg);
|
res = (char*)arg_getBytes(arg);
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
if (ARG_TYPE_STRING == type) {
|
||||||
|
res = arg_getStr(arg);
|
||||||
|
}
|
||||||
|
if (ARG_TYPE_NONE == type) {
|
||||||
|
res = "None";
|
||||||
|
}
|
||||||
if (argType_isObject(type)) {
|
if (argType_isObject(type)) {
|
||||||
res = obj_toStr(arg_getPtr(arg));
|
res = obj_toStr(arg_getPtr(arg));
|
||||||
if (NULL != res) {
|
if (NULL != res) {
|
||||||
@ -146,7 +160,7 @@ Arg* PikaStdLib_SysObj_iter(PikaObj* self, Arg* arg) {
|
|||||||
/* object */
|
/* object */
|
||||||
if (argType_isObject(arg_getType(arg))) {
|
if (argType_isObject(arg_getType(arg))) {
|
||||||
PikaObj* arg_obj = arg_getPtr(arg);
|
PikaObj* arg_obj = arg_getPtr(arg);
|
||||||
NewFun _clsptr = obj_getPtr(arg_obj, "_clsptr");
|
NewFun _clsptr = (NewFun)arg_obj->constructor;
|
||||||
if (_clsptr == New_PikaStdLib_RangeObj) {
|
if (_clsptr == New_PikaStdLib_RangeObj) {
|
||||||
/* found RangeObj, return directly */
|
/* found RangeObj, return directly */
|
||||||
return arg_copy(arg);
|
return arg_copy(arg);
|
||||||
@ -167,7 +181,7 @@ Arg* PikaStdLib_SysObj_iter(PikaObj* self, Arg* arg) {
|
|||||||
obj_removeArg(arg_obj, "__res");
|
obj_removeArg(arg_obj, "__res");
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
return arg_setNull(NULL);
|
return arg_newNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* PikaStdLib_SysObj_range(PikaObj* self, int a1, int a2) {
|
Arg* PikaStdLib_SysObj_range(PikaObj* self, int a1, int a2) {
|
||||||
@ -178,96 +192,61 @@ Arg* PikaStdLib_SysObj_range(PikaObj* self, int a1, int a2) {
|
|||||||
return obj_arg;
|
return obj_arg;
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* PikaStdLib_SysObj___getitem__(PikaObj* self, Arg* key, Arg* obj) {
|
Arg* PikaStdLib_SysObj___getitem__(PikaObj* self, Arg* obj, Arg* key) {
|
||||||
ArgType obj_type = arg_getType(obj);
|
return __vm_get(self, key, obj);
|
||||||
int index = 0;
|
|
||||||
if (ARG_TYPE_INT == arg_getType(key)) {
|
|
||||||
index = arg_getInt(key);
|
|
||||||
}
|
|
||||||
if (ARG_TYPE_STRING == obj_type) {
|
|
||||||
char* str_pyload = arg_getStr(obj);
|
|
||||||
char char_buff[] = " ";
|
|
||||||
if (index < 0) {
|
|
||||||
index = strGetSize(str_pyload) + index;
|
|
||||||
}
|
|
||||||
char_buff[0] = str_pyload[index];
|
|
||||||
return arg_setStr(NULL, "", char_buff);
|
|
||||||
}
|
|
||||||
if (ARG_TYPE_BYTES == obj_type) {
|
|
||||||
uint8_t* bytes_pyload = arg_getBytes(obj);
|
|
||||||
uint8_t byte_buff[] = " ";
|
|
||||||
if (index < 0) {
|
|
||||||
index = arg_getBytesSize(obj) + index;
|
|
||||||
}
|
|
||||||
byte_buff[0] = bytes_pyload[index];
|
|
||||||
return arg_setBytes(NULL, "", byte_buff, 1);
|
|
||||||
}
|
|
||||||
if (argType_isObject(obj_type)) {
|
|
||||||
PikaObj* arg_obj = arg_getPtr(obj);
|
|
||||||
obj_setArg(arg_obj, "__key", key);
|
|
||||||
// pikaVM_runAsm(arg_obj,
|
|
||||||
// "B0\n"
|
|
||||||
// "1 REF __key\n"
|
|
||||||
// "0 RUN __getitem__\n"
|
|
||||||
// "0 OUT __res\n");
|
|
||||||
const uint8_t bytes[] = {
|
|
||||||
0x0c, 0x00, /* instruct array size */
|
|
||||||
0x10, 0x81, 0x01, 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0x04, 0x0f,
|
|
||||||
0x00,
|
|
||||||
/* instruct array */
|
|
||||||
0x15, 0x00, /* const pool size */
|
|
||||||
0x00, 0x5f, 0x5f, 0x6b, 0x65, 0x79, 0x00, 0x5f, 0x5f, 0x67, 0x65,
|
|
||||||
0x74, 0x5f, 0x5f, 0x00, 0x5f, 0x5f, 0x72, 0x65, 0x73,
|
|
||||||
0x00, /* const pool */
|
|
||||||
};
|
|
||||||
pikaVM_runByteCode(arg_obj, (uint8_t*)bytes);
|
|
||||||
return arg_copy(args_getArg(arg_obj->list, "__res"));
|
|
||||||
}
|
|
||||||
return arg_setNull(NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PikaStdLib_SysObj___setitem__(PikaObj* self,
|
Arg* PikaStdLib_SysObj___setitem__(PikaObj* self,
|
||||||
Arg* key,
|
Arg* obj,
|
||||||
Arg* obj,
|
Arg* key,
|
||||||
char* obj_str,
|
Arg* val) {
|
||||||
Arg* val) {
|
|
||||||
ArgType obj_type = arg_getType(obj);
|
ArgType obj_type = arg_getType(obj);
|
||||||
if (ARG_TYPE_STRING == obj_type) {
|
if (ARG_TYPE_STRING == obj_type) {
|
||||||
int index = arg_getInt(key);
|
int index = arg_getInt(key);
|
||||||
char* str_val = arg_getStr(val);
|
char* str_val = arg_getStr(val);
|
||||||
char* str_pyload = arg_getStr(obj);
|
char* str_pyload = arg_getStr(obj);
|
||||||
str_pyload[index] = str_val[0];
|
str_pyload[index] = str_val[0];
|
||||||
obj_setStr(self, obj_str, str_pyload);
|
return arg_newStr(str_pyload);
|
||||||
}
|
}
|
||||||
if (ARG_TYPE_BYTES == obj_type) {
|
if (ARG_TYPE_BYTES == obj_type) {
|
||||||
int index = arg_getInt(key);
|
int index = arg_getInt(key);
|
||||||
uint8_t* bytes_val = arg_getBytes(val);
|
uint8_t byte_val = 0;
|
||||||
|
if (ARG_TYPE_BYTES == arg_getType(val)) {
|
||||||
|
uint8_t* bytes_val = arg_getBytes(val);
|
||||||
|
byte_val = bytes_val[0];
|
||||||
|
}
|
||||||
|
if (ARG_TYPE_INT == arg_getType(val)) {
|
||||||
|
byte_val = arg_getInt(val);
|
||||||
|
}
|
||||||
uint8_t* bytes_pyload = arg_getBytes(obj);
|
uint8_t* bytes_pyload = arg_getBytes(obj);
|
||||||
size_t bytes_len = arg_getBytesSize(obj);
|
size_t bytes_len = arg_getBytesSize(obj);
|
||||||
bytes_pyload[index] = bytes_val[0];
|
bytes_pyload[index] = byte_val;
|
||||||
obj_setBytes(self, obj_str, bytes_pyload, bytes_len);
|
return arg_newBytes(bytes_pyload, bytes_len);
|
||||||
}
|
}
|
||||||
if (argType_isObject(obj_type)) {
|
if (argType_isObject(obj_type)) {
|
||||||
PikaObj* arg_obj = arg_getPtr(obj);
|
PikaObj* arg_obj = arg_getPtr(obj);
|
||||||
obj_setArg(arg_obj, "__key", key);
|
obj_setArg(arg_obj, "__key", key);
|
||||||
obj_setArg(arg_obj, "__val", val);
|
obj_setArg(arg_obj, "__val", val);
|
||||||
// pikaVM_runAsm(arg_obj,
|
/* clang-format off */
|
||||||
// "B0\n"
|
PIKA_PYTHON(
|
||||||
// "1 REF __key\n"
|
__setitem__(__key, __val)
|
||||||
// "1 REF __val\n"
|
)
|
||||||
// "0 RUN __setitem__\n");
|
/* clang-format on */
|
||||||
const uint8_t bytes[] = {
|
const uint8_t bytes[] = {
|
||||||
0x0c, 0x00, /* instruct array size */
|
0x0c, 0x00, /* instruct array size */
|
||||||
0x10, 0x81, 0x01, 0x00, 0x10, 0x01, 0x07, 0x00, 0x00, 0x02, 0x0d,
|
0x10, 0x81, 0x01, 0x00, 0x10, 0x01, 0x07, 0x00, 0x00, 0x02, 0x0d,
|
||||||
0x00,
|
0x00,
|
||||||
/* instruct array */
|
/* instruct array */
|
||||||
0x15, 0x00, /* const pool size */
|
0x19, 0x00, /* const pool size */
|
||||||
0x00, 0x5f, 0x5f, 0x6b, 0x65, 0x79, 0x00, 0x5f, 0x5f, 0x76, 0x61,
|
0x00, 0x5f, 0x5f, 0x6b, 0x65, 0x79, 0x00, 0x5f, 0x5f, 0x76, 0x61,
|
||||||
0x6c, 0x00, 0x5f, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x5f,
|
0x6c, 0x00, 0x5f, 0x5f, 0x73, 0x65, 0x74, 0x69, 0x74, 0x65, 0x6d,
|
||||||
0x00, /* const pool */
|
0x5f, 0x5f, 0x00,
|
||||||
|
/* const pool */
|
||||||
};
|
};
|
||||||
pikaVM_runByteCode(arg_obj, (uint8_t*)bytes);
|
pikaVM_runByteCode(arg_obj, (uint8_t*)bytes);
|
||||||
|
return arg_newRef(arg_obj);
|
||||||
}
|
}
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int PikaStdLib_SysObj_len(PikaObj* self, Arg* arg) {
|
int PikaStdLib_SysObj_len(PikaObj* self, Arg* arg) {
|
||||||
@ -277,34 +256,61 @@ int PikaStdLib_SysObj_len(PikaObj* self, Arg* arg) {
|
|||||||
if (ARG_TYPE_BYTES == arg_getType(arg)) {
|
if (ARG_TYPE_BYTES == arg_getType(arg)) {
|
||||||
return arg_getBytesSize(arg);
|
return arg_getBytesSize(arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (argType_isObject(arg_getType(arg))) {
|
||||||
|
PikaObj* arg_obj = arg_getPtr(arg);
|
||||||
|
Arg* method_arg = obj_getMethodArg(arg_obj, "__len__");
|
||||||
|
if (NULL != method_arg) {
|
||||||
|
arg_deinit(method_arg);
|
||||||
|
|
||||||
|
/* clang-format off */
|
||||||
|
PIKA_PYTHON(
|
||||||
|
__res = __len__()
|
||||||
|
)
|
||||||
|
/* clang-format on */
|
||||||
|
const uint8_t bytes[] = {
|
||||||
|
0x08, 0x00, /* instruct array size */
|
||||||
|
0x00, 0x82, 0x01, 0x00, 0x00, 0x04, 0x09, 0x00, /* instruct
|
||||||
|
array */
|
||||||
|
0x0f, 0x00, /* const pool size */
|
||||||
|
0x00, 0x5f, 0x5f, 0x6c, 0x65, 0x6e, 0x5f, 0x5f, 0x00,
|
||||||
|
0x5f, 0x5f, 0x72, 0x65, 0x73, 0x00, /* const pool */
|
||||||
|
};
|
||||||
|
pikaVM_runByteCode(arg_obj, (uint8_t*)bytes);
|
||||||
|
return obj_getInt(arg_obj, "__res");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
obj_setErrorCode(self, 1);
|
obj_setErrorCode(self, 1);
|
||||||
__platform_printf("[Error] len: arg type not support\r\n");
|
__platform_printf("[Error] len: arg type not support\r\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* PikaStdLib_SysObj_list(PikaObj* self) {
|
Arg* PikaStdLib_SysObj_list(PikaObj* self) {
|
||||||
#if PIKA_BUILTIN_LIST_ENABLE
|
#if PIKA_BUILTIN_STRUCT_ENABLE
|
||||||
PikaObj* New_PikaStdData_List(Args * args);
|
PikaObj* New_PikaStdData_List(Args * args);
|
||||||
return arg_newMetaObj(New_PikaStdData_List);
|
return arg_newDirectObj(New_PikaStdData_List);
|
||||||
#endif
|
#else
|
||||||
obj_setErrorCode(self, 1);
|
obj_setErrorCode(self, 1);
|
||||||
__platform_printf("[Error] built-in list is not enabled.\r\n");
|
__platform_printf("[Error] built-in list is not enabled.\r\n");
|
||||||
return arg_setNull(NULL);
|
return arg_newNull();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* PikaStdLib_SysObj_dict(PikaObj* self) {
|
Arg* PikaStdLib_SysObj_dict(PikaObj* self) {
|
||||||
#if PIKA_BUILTIN_DICT_ENABLE
|
#if PIKA_BUILTIN_STRUCT_ENABLE
|
||||||
PikaObj* New_PikaStdData_Dict(Args * args);
|
PikaObj* New_PikaStdData_Dict(Args * args);
|
||||||
return arg_newMetaObj(New_PikaStdData_Dict);
|
return arg_newDirectObj(New_PikaStdData_Dict);
|
||||||
#endif
|
#else
|
||||||
obj_setErrorCode(self, 1);
|
obj_setErrorCode(self, 1);
|
||||||
__platform_printf("[Error] built-in dist is not enabled.\r\n");
|
__platform_printf("[Error] built-in dist is not enabled.\r\n");
|
||||||
return arg_setNull(NULL);
|
return arg_newNull();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
char* PikaStdLib_SysObj_hex(PikaObj* self, int val) {
|
char* PikaStdLib_SysObj_hex(PikaObj* self, int val) {
|
||||||
char buff[PIKA_SPRINTF_BUFF_SIZE] = {0};
|
char buff[PIKA_SPRINTF_BUFF_SIZE] = {0};
|
||||||
if (val > 0) {
|
if (val >= 0) {
|
||||||
__platform_sprintf(buff, "0x%02x", val);
|
__platform_sprintf(buff, "0x%02x", val);
|
||||||
} else {
|
} else {
|
||||||
__platform_sprintf(buff, "-0x%02x", -val);
|
__platform_sprintf(buff, "-0x%02x", -val);
|
||||||
@ -333,7 +339,7 @@ Arg* PikaStdLib_SysObj_bytes(PikaObj* self, Arg* val) {
|
|||||||
if (ARG_TYPE_INT == type) {
|
if (ARG_TYPE_INT == type) {
|
||||||
int size = arg_getInt(val);
|
int size = arg_getInt(val);
|
||||||
/* src is NULL so the bytes are all '\0' */
|
/* src is NULL so the bytes are all '\0' */
|
||||||
Arg* bytes = arg_setBytes(NULL, "", NULL, size);
|
Arg* bytes = arg_newBytes(NULL, size);
|
||||||
return bytes;
|
return bytes;
|
||||||
}
|
}
|
||||||
if (ARG_TYPE_BYTES == type) {
|
if (ARG_TYPE_BYTES == type) {
|
||||||
@ -341,12 +347,12 @@ Arg* PikaStdLib_SysObj_bytes(PikaObj* self, Arg* val) {
|
|||||||
}
|
}
|
||||||
if (ARG_TYPE_STRING == type) {
|
if (ARG_TYPE_STRING == type) {
|
||||||
int size = strGetSize(arg_getStr(val));
|
int size = strGetSize(arg_getStr(val));
|
||||||
Arg* bytes = arg_setBytes(NULL, "", (uint8_t*)arg_getStr(val), size);
|
Arg* bytes = arg_newBytes((uint8_t*)arg_getStr(val), size);
|
||||||
return bytes;
|
return bytes;
|
||||||
}
|
}
|
||||||
obj_setErrorCode(self, 1);
|
obj_setErrorCode(self, 1);
|
||||||
__platform_printf("Error: input arg type not supported.\r\n");
|
__platform_printf("Error: input arg type not supported.\r\n");
|
||||||
return arg_setNull(NULL);
|
return arg_newNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
Arg* PikaStdLib_SysObj___slice__(PikaObj* self,
|
Arg* PikaStdLib_SysObj___slice__(PikaObj* self,
|
||||||
@ -354,70 +360,7 @@ Arg* PikaStdLib_SysObj___slice__(PikaObj* self,
|
|||||||
Arg* obj,
|
Arg* obj,
|
||||||
Arg* start,
|
Arg* start,
|
||||||
int step) {
|
int step) {
|
||||||
#if PIKA_SYNTEX_ITEM_SLICE_ENABLE
|
return __vm_slice(self, end, obj, start, step);
|
||||||
/* No interger index only support __getitem__ */
|
|
||||||
if (!(arg_getType(start) == ARG_TYPE_INT &&
|
|
||||||
arg_getType(end) == ARG_TYPE_INT)) {
|
|
||||||
return PikaStdLib_SysObj___getitem__(self, start, obj);
|
|
||||||
}
|
|
||||||
|
|
||||||
int start_i = arg_getInt(start);
|
|
||||||
int end_i = arg_getInt(end);
|
|
||||||
|
|
||||||
/* __slice__ is equal to __getitem__ */
|
|
||||||
if (end_i - start_i == 1) {
|
|
||||||
return PikaStdLib_SysObj___getitem__(self, start, obj);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ARG_TYPE_STRING == arg_getType(obj)) {
|
|
||||||
size_t len = strGetSize(arg_getStr(obj));
|
|
||||||
if (start_i < 0) {
|
|
||||||
start_i += len;
|
|
||||||
}
|
|
||||||
if (end_i < 0) {
|
|
||||||
end_i += len + 1;
|
|
||||||
}
|
|
||||||
Arg* sliced_arg = arg_setStr(NULL, "", "");
|
|
||||||
for (int i = start_i; i < end_i; i++) {
|
|
||||||
Arg* i_arg = arg_setInt(NULL, "", i);
|
|
||||||
Arg* item_arg = PikaStdLib_SysObj___getitem__(self, i_arg, obj);
|
|
||||||
sliced_arg = arg_strAppend(sliced_arg, arg_getStr(item_arg));
|
|
||||||
arg_deinit(item_arg);
|
|
||||||
arg_deinit(i_arg);
|
|
||||||
}
|
|
||||||
return sliced_arg;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ARG_TYPE_BYTES == arg_getType(obj)) {
|
|
||||||
size_t len = arg_getBytesSize(obj);
|
|
||||||
if (start_i < 0) {
|
|
||||||
start_i += len;
|
|
||||||
}
|
|
||||||
if (end_i < 0) {
|
|
||||||
end_i += len + 1;
|
|
||||||
}
|
|
||||||
Arg* sliced_arg = arg_setBytes(NULL, "", NULL, 0);
|
|
||||||
for (int i = start_i; i < end_i; i++) {
|
|
||||||
Arg* i_arg = arg_setInt(NULL, "", i);
|
|
||||||
Arg* item_arg = PikaStdLib_SysObj___getitem__(self, i_arg, obj);
|
|
||||||
uint8_t* bytes_origin = arg_getBytes(sliced_arg);
|
|
||||||
size_t size_origin = arg_getBytesSize(sliced_arg);
|
|
||||||
Arg* sliced_arg_new = arg_setBytes(NULL, "", NULL, size_origin + 1);
|
|
||||||
__platform_memcpy(arg_getBytes(sliced_arg_new), bytes_origin,
|
|
||||||
size_origin);
|
|
||||||
__platform_memcpy(arg_getBytes(sliced_arg_new) + size_origin,
|
|
||||||
arg_getBytes(item_arg), 1);
|
|
||||||
arg_deinit(sliced_arg);
|
|
||||||
sliced_arg = sliced_arg_new;
|
|
||||||
arg_deinit(item_arg);
|
|
||||||
arg_deinit(i_arg);
|
|
||||||
}
|
|
||||||
return sliced_arg;
|
|
||||||
}
|
|
||||||
return arg_setNull(NULL);
|
|
||||||
#else
|
|
||||||
return PikaStdLib_SysObj___getitem__(self, start, obj);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __print_arg(PikaObj* self, Arg* val) {
|
static void __print_arg(PikaObj* self, Arg* val) {
|
||||||
@ -452,7 +395,7 @@ static void __print_arg(PikaObj* self, Arg* val) {
|
|||||||
|
|
||||||
void PikaStdLib_SysObj_print(PikaObj* self, PikaTuple* val) {
|
void PikaStdLib_SysObj_print(PikaObj* self, PikaTuple* val) {
|
||||||
int arg_size = tuple_getSize(val);
|
int arg_size = tuple_getSize(val);
|
||||||
Arg* print_out_arg = arg_setStr(NULL, "", "");
|
Arg* print_out_arg = arg_newStr("");
|
||||||
PIKA_BOOL is_get_print = PIKA_FALSE;
|
PIKA_BOOL is_get_print = PIKA_FALSE;
|
||||||
for (int i = 0; i < arg_size; i++) {
|
for (int i = 0; i < arg_size; i++) {
|
||||||
Arg* arg = tuple_getArg(val, i);
|
Arg* arg = tuple_getArg(val, i);
|
||||||
@ -490,6 +433,7 @@ void PikaStdLib_SysObj_printNoEnd(PikaObj* self, Arg* val) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
char* PikaStdLib_SysObj_cformat(PikaObj* self, char* fmt, PikaTuple* var) {
|
char* PikaStdLib_SysObj_cformat(PikaObj* self, char* fmt, PikaTuple* var) {
|
||||||
|
#if PIKA_SYNTAX_FORMAT_ENABLE
|
||||||
Args buffs = {0};
|
Args buffs = {0};
|
||||||
pikaMemMaxReset();
|
pikaMemMaxReset();
|
||||||
char* res = strsFormatList(&buffs, fmt, &var->super);
|
char* res = strsFormatList(&buffs, fmt, &var->super);
|
||||||
@ -497,6 +441,11 @@ char* PikaStdLib_SysObj_cformat(PikaObj* self, char* fmt, PikaTuple* var) {
|
|||||||
res = obj_getStr(self, "_buf");
|
res = obj_getStr(self, "_buf");
|
||||||
strsDeinit(&buffs);
|
strsDeinit(&buffs);
|
||||||
return res;
|
return res;
|
||||||
|
#else
|
||||||
|
obj_setErrorCode(self, 1);
|
||||||
|
__platform_printf("[Error] PIKA_SYNTAX_FORMAT_ENABLE is not enabled.\r\n");
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
int PikaStdLib_SysObj_id(PikaObj* self, Arg* obj) {
|
int PikaStdLib_SysObj_id(PikaObj* self, Arg* obj) {
|
||||||
@ -508,3 +457,15 @@ int PikaStdLib_SysObj_id(PikaObj* self, Arg* obj) {
|
|||||||
}
|
}
|
||||||
return ptr & (0x7FFFFFFF);
|
return ptr & (0x7FFFFFFF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PikaObj* PikaStdLib_SysObj_open(PikaObj* self, char* path, char* mode) {
|
||||||
|
#if PIKA_FILEIO_ENABLE
|
||||||
|
PikaObj* file = newNormalObj(New_PikaStdData_FILEIO);
|
||||||
|
PikaStdData_FILEIO_init(file, mode, path);
|
||||||
|
return file;
|
||||||
|
#else
|
||||||
|
obj_setErrorCode(self, 1);
|
||||||
|
__platform_printf("[Error] PIKA_FILEIO_ENABLE is not enabled.\r\n");
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
#include "BaseObj.h"
|
#include "BaseObj.h"
|
||||||
#include "PikaVM.h"
|
#include "PikaVM.h"
|
||||||
|
|
||||||
extern PikaObj* __pikaMain;
|
|
||||||
void PikaStdTask_Task___init__(PikaObj* self) {
|
void PikaStdTask_Task___init__(PikaObj* self) {
|
||||||
obj_setInt(self, "is_period", 0);
|
obj_setInt(self, "is_period", 0);
|
||||||
obj_setRef(__pikaMain, "__calls", obj_getObj(self, "calls"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PikaStdTask_Task_call_always(PikaObj* self, Arg* fun_todo) {
|
void PikaStdTask_Task_call_always(PikaObj* self, Arg* fun_todo) {
|
||||||
@ -90,116 +88,104 @@ void PikaStdTask_Task_call_period_ms(PikaObj* self,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PikaStdTask_Task_run_once(PikaObj* self) {
|
void PikaStdTask_Task_run_once(PikaObj* self) {
|
||||||
/* transfer the tick to pikaMain */
|
|
||||||
obj_setInt(__pikaMain, "__tick", obj_getInt(self, "tick"));
|
|
||||||
/* clang-format off */
|
/* clang-format off */
|
||||||
PIKA_PYTHON(
|
PIKA_PYTHON(
|
||||||
len = __calls.len()
|
len = calls.len()
|
||||||
mode = 'none'
|
mode = 'none'
|
||||||
info_index = 0
|
info_index = 0
|
||||||
for i in range(0, len):
|
for i in range(0, len):
|
||||||
if len == 0:
|
if len == 0:
|
||||||
break
|
break
|
||||||
if info_index == 0:
|
if info_index == 0:
|
||||||
mode = __calls[i]
|
mode = calls[i]
|
||||||
info_index = 1
|
info_index = 1
|
||||||
elif info_index == 1:
|
elif info_index == 1:
|
||||||
if mode == 'always':
|
if mode == 'always':
|
||||||
todo = __calls[i]
|
todo = calls[i]
|
||||||
|
todo()
|
||||||
|
info_index = 0
|
||||||
|
elif mode == 'when':
|
||||||
|
when = calls[i]
|
||||||
|
info_index = 2
|
||||||
|
elif mode == 'period_ms':
|
||||||
|
period_ms = calls[i]
|
||||||
|
info_index = 2
|
||||||
|
elif info_index == 2:
|
||||||
|
if mode == 'when':
|
||||||
|
if when():
|
||||||
|
todo = calls[i]
|
||||||
todo()
|
todo()
|
||||||
info_index = 0
|
info_index = 0
|
||||||
elif mode == 'when':
|
elif mode == 'period_ms':
|
||||||
when = __calls[i]
|
todo = calls[i]
|
||||||
info_index = 2
|
info_index = 3
|
||||||
elif mode == 'period_ms':
|
elif info_index == 3:
|
||||||
period_ms = __calls[i]
|
if mode == 'period_ms':
|
||||||
info_index = 2
|
if tick > calls[i]:
|
||||||
elif info_index == 2:
|
todo()
|
||||||
if mode == 'when':
|
calls[i] = tick + period_ms
|
||||||
if when():
|
info_index = 0
|
||||||
todo = __calls[i]
|
|
||||||
todo()
|
|
||||||
info_index = 0
|
|
||||||
elif mode == 'period_ms':
|
|
||||||
todo = __calls[i]
|
|
||||||
info_index = 3
|
|
||||||
elif info_index == 3:
|
|
||||||
if mode == 'period_ms':
|
|
||||||
if __tick > __calls[i]:
|
|
||||||
todo()
|
|
||||||
__calls[i] = __tick + period_ms
|
|
||||||
info_index = 0
|
|
||||||
)
|
)
|
||||||
/* clang-format on */
|
/* clang-format on */
|
||||||
const uint8_t bytes[] = {
|
const uint8_t bytes[] = {
|
||||||
0x60, 0x02, /* instruct array size */
|
0xf0, 0x01, /* instruct array size */
|
||||||
0x00, 0x82, 0x01, 0x00, 0x00, 0x04, 0x0d, 0x00, 0x00, 0x83, 0x11, 0x00,
|
0x00, 0x82, 0x01, 0x00, 0x00, 0x04, 0x0b, 0x00, 0x00, 0x83, 0x0f, 0x00,
|
||||||
0x00, 0x04, 0x16, 0x00, 0x00, 0x85, 0x1b, 0x00, 0x00, 0x04, 0x1d, 0x00,
|
0x00, 0x04, 0x14, 0x00, 0x00, 0x85, 0x19, 0x00, 0x00, 0x04, 0x1b, 0x00,
|
||||||
0x20, 0x85, 0x1b, 0x00, 0x20, 0x01, 0x0d, 0x00, 0x10, 0x02, 0x28, 0x00,
|
0x20, 0x85, 0x19, 0x00, 0x20, 0x01, 0x0b, 0x00, 0x10, 0x02, 0x26, 0x00,
|
||||||
0x00, 0x02, 0x2e, 0x00, 0x00, 0x04, 0x33, 0x00, 0x00, 0x82, 0x37, 0x00,
|
0x00, 0x02, 0x2c, 0x00, 0x00, 0x04, 0x31, 0x00, 0x00, 0x82, 0x35, 0x00,
|
||||||
0x00, 0x04, 0x44, 0x00, 0x00, 0x0d, 0x44, 0x00, 0x00, 0x07, 0x46, 0x00,
|
0x00, 0x04, 0x42, 0x00, 0x00, 0x0d, 0x42, 0x00, 0x00, 0x07, 0x44, 0x00,
|
||||||
0x11, 0x81, 0x0d, 0x00, 0x11, 0x05, 0x1b, 0x00, 0x01, 0x08, 0x48, 0x00,
|
0x11, 0x81, 0x0b, 0x00, 0x11, 0x05, 0x19, 0x00, 0x01, 0x08, 0x46, 0x00,
|
||||||
0x01, 0x07, 0x4b, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x11, 0x81, 0x1d, 0x00,
|
0x01, 0x07, 0x49, 0x00, 0x02, 0x8e, 0x00, 0x00, 0x11, 0x81, 0x1b, 0x00,
|
||||||
0x11, 0x05, 0x1b, 0x00, 0x01, 0x08, 0x48, 0x00, 0x01, 0x07, 0x4b, 0x00,
|
0x11, 0x05, 0x19, 0x00, 0x01, 0x08, 0x46, 0x00, 0x01, 0x07, 0x49, 0x00,
|
||||||
0x12, 0x81, 0x4d, 0x00, 0x12, 0x01, 0x44, 0x00, 0x22, 0x01, 0x44, 0x00,
|
0x12, 0x81, 0x4b, 0x00, 0x12, 0x01, 0x42, 0x00, 0x02, 0x1d, 0x00, 0x00,
|
||||||
0x22, 0x05, 0x4b, 0x00, 0x12, 0x08, 0x55, 0x00, 0x12, 0x05, 0x4b, 0x00,
|
0x02, 0x04, 0x14, 0x00, 0x02, 0x85, 0x49, 0x00, 0x02, 0x04, 0x1b, 0x00,
|
||||||
0x02, 0x02, 0x57, 0x00, 0x02, 0x04, 0x16, 0x00, 0x02, 0x85, 0x4b, 0x00,
|
0x01, 0x8b, 0x49, 0x00, 0x11, 0x01, 0x1b, 0x00, 0x11, 0x05, 0x49, 0x00,
|
||||||
0x02, 0x04, 0x1d, 0x00, 0x01, 0x8b, 0x4b, 0x00, 0x11, 0x01, 0x1d, 0x00,
|
0x01, 0x08, 0x46, 0x00, 0x01, 0x07, 0x49, 0x00, 0x12, 0x81, 0x14, 0x00,
|
||||||
0x11, 0x05, 0x4b, 0x00, 0x01, 0x08, 0x48, 0x00, 0x01, 0x07, 0x4b, 0x00,
|
0x12, 0x03, 0x51, 0x00, 0x02, 0x08, 0x46, 0x00, 0x02, 0x07, 0x49, 0x00,
|
||||||
0x12, 0x81, 0x16, 0x00, 0x12, 0x03, 0x61, 0x00, 0x02, 0x08, 0x48, 0x00,
|
0x13, 0x81, 0x4b, 0x00, 0x13, 0x01, 0x42, 0x00, 0x03, 0x1d, 0x00, 0x00,
|
||||||
0x02, 0x07, 0x4b, 0x00, 0x13, 0x81, 0x4d, 0x00, 0x13, 0x01, 0x44, 0x00,
|
0x03, 0x04, 0x58, 0x00, 0x03, 0x82, 0x58, 0x00, 0x03, 0x85, 0x19, 0x00,
|
||||||
0x23, 0x01, 0x44, 0x00, 0x23, 0x05, 0x4b, 0x00, 0x13, 0x08, 0x55, 0x00,
|
0x03, 0x04, 0x1b, 0x00, 0x02, 0x8b, 0x49, 0x00, 0x12, 0x01, 0x14, 0x00,
|
||||||
0x13, 0x05, 0x4b, 0x00, 0x03, 0x02, 0x57, 0x00, 0x03, 0x04, 0x68, 0x00,
|
0x12, 0x03, 0x5d, 0x00, 0x02, 0x08, 0x46, 0x00, 0x02, 0x07, 0x49, 0x00,
|
||||||
0x03, 0x82, 0x68, 0x00, 0x03, 0x85, 0x1b, 0x00, 0x03, 0x04, 0x1d, 0x00,
|
0x13, 0x81, 0x4b, 0x00, 0x13, 0x01, 0x42, 0x00, 0x03, 0x1d, 0x00, 0x00,
|
||||||
0x02, 0x8b, 0x4b, 0x00, 0x12, 0x01, 0x16, 0x00, 0x12, 0x03, 0x6d, 0x00,
|
0x03, 0x04, 0x5d, 0x00, 0x03, 0x85, 0x44, 0x00, 0x03, 0x04, 0x1b, 0x00,
|
||||||
0x02, 0x08, 0x48, 0x00, 0x02, 0x07, 0x4b, 0x00, 0x13, 0x81, 0x4d, 0x00,
|
0x02, 0x8b, 0x49, 0x00, 0x12, 0x01, 0x14, 0x00, 0x12, 0x03, 0x62, 0x00,
|
||||||
0x13, 0x01, 0x44, 0x00, 0x23, 0x01, 0x44, 0x00, 0x23, 0x05, 0x4b, 0x00,
|
0x02, 0x08, 0x46, 0x00, 0x02, 0x07, 0x49, 0x00, 0x13, 0x81, 0x4b, 0x00,
|
||||||
0x13, 0x08, 0x55, 0x00, 0x13, 0x05, 0x4b, 0x00, 0x03, 0x02, 0x57, 0x00,
|
0x13, 0x01, 0x42, 0x00, 0x03, 0x1d, 0x00, 0x00, 0x03, 0x04, 0x62, 0x00,
|
||||||
0x03, 0x04, 0x6d, 0x00, 0x03, 0x85, 0x46, 0x00, 0x03, 0x04, 0x1d, 0x00,
|
0x03, 0x85, 0x44, 0x00, 0x03, 0x04, 0x1b, 0x00, 0x01, 0x8b, 0x49, 0x00,
|
||||||
0x02, 0x8b, 0x4b, 0x00, 0x12, 0x01, 0x16, 0x00, 0x12, 0x03, 0x72, 0x00,
|
0x11, 0x01, 0x1b, 0x00, 0x11, 0x05, 0x44, 0x00, 0x01, 0x08, 0x46, 0x00,
|
||||||
0x02, 0x08, 0x48, 0x00, 0x02, 0x07, 0x4b, 0x00, 0x13, 0x81, 0x4d, 0x00,
|
0x01, 0x07, 0x49, 0x00, 0x12, 0x81, 0x14, 0x00, 0x12, 0x03, 0x5d, 0x00,
|
||||||
0x13, 0x01, 0x44, 0x00, 0x23, 0x01, 0x44, 0x00, 0x23, 0x05, 0x4b, 0x00,
|
0x02, 0x08, 0x46, 0x00, 0x02, 0x07, 0x49, 0x00, 0x03, 0x82, 0x5d, 0x00,
|
||||||
0x13, 0x08, 0x55, 0x00, 0x13, 0x05, 0x4b, 0x00, 0x03, 0x02, 0x57, 0x00,
|
0x03, 0x07, 0x49, 0x00, 0x14, 0x81, 0x4b, 0x00, 0x14, 0x01, 0x42, 0x00,
|
||||||
0x03, 0x04, 0x72, 0x00, 0x03, 0x85, 0x46, 0x00, 0x03, 0x04, 0x1d, 0x00,
|
0x04, 0x1d, 0x00, 0x00, 0x04, 0x04, 0x58, 0x00, 0x04, 0x82, 0x58, 0x00,
|
||||||
0x01, 0x8b, 0x4b, 0x00, 0x11, 0x01, 0x1d, 0x00, 0x11, 0x05, 0x46, 0x00,
|
0x03, 0x85, 0x19, 0x00, 0x03, 0x04, 0x1b, 0x00, 0x02, 0x8b, 0x49, 0x00,
|
||||||
0x01, 0x08, 0x48, 0x00, 0x01, 0x07, 0x4b, 0x00, 0x12, 0x81, 0x16, 0x00,
|
0x12, 0x01, 0x14, 0x00, 0x12, 0x03, 0x62, 0x00, 0x02, 0x08, 0x46, 0x00,
|
||||||
0x12, 0x03, 0x6d, 0x00, 0x02, 0x08, 0x48, 0x00, 0x02, 0x07, 0x4b, 0x00,
|
0x02, 0x07, 0x49, 0x00, 0x13, 0x81, 0x4b, 0x00, 0x13, 0x01, 0x42, 0x00,
|
||||||
0x03, 0x82, 0x6d, 0x00, 0x03, 0x07, 0x4b, 0x00, 0x14, 0x81, 0x4d, 0x00,
|
0x03, 0x1d, 0x00, 0x00, 0x03, 0x04, 0x58, 0x00, 0x03, 0x85, 0x6c, 0x00,
|
||||||
0x14, 0x01, 0x44, 0x00, 0x24, 0x01, 0x44, 0x00, 0x24, 0x05, 0x4b, 0x00,
|
0x03, 0x04, 0x1b, 0x00, 0x01, 0x8b, 0x49, 0x00, 0x11, 0x01, 0x1b, 0x00,
|
||||||
0x14, 0x08, 0x55, 0x00, 0x14, 0x05, 0x4b, 0x00, 0x04, 0x02, 0x57, 0x00,
|
0x11, 0x05, 0x6c, 0x00, 0x01, 0x08, 0x46, 0x00, 0x01, 0x07, 0x49, 0x00,
|
||||||
0x04, 0x04, 0x68, 0x00, 0x04, 0x82, 0x68, 0x00, 0x03, 0x85, 0x1b, 0x00,
|
0x12, 0x81, 0x14, 0x00, 0x12, 0x03, 0x62, 0x00, 0x02, 0x08, 0x46, 0x00,
|
||||||
0x03, 0x04, 0x1d, 0x00, 0x02, 0x8b, 0x4b, 0x00, 0x12, 0x01, 0x16, 0x00,
|
0x02, 0x07, 0x49, 0x00, 0x13, 0x81, 0x6e, 0x00, 0x23, 0x01, 0x4b, 0x00,
|
||||||
0x12, 0x03, 0x72, 0x00, 0x02, 0x08, 0x48, 0x00, 0x02, 0x07, 0x4b, 0x00,
|
0x23, 0x01, 0x42, 0x00, 0x13, 0x1d, 0x00, 0x00, 0x03, 0x08, 0x73, 0x00,
|
||||||
0x13, 0x81, 0x4d, 0x00, 0x13, 0x01, 0x44, 0x00, 0x23, 0x01, 0x44, 0x00,
|
0x03, 0x07, 0x49, 0x00, 0x04, 0x82, 0x58, 0x00, 0x14, 0x81, 0x4b, 0x00,
|
||||||
0x23, 0x05, 0x4b, 0x00, 0x13, 0x08, 0x55, 0x00, 0x13, 0x05, 0x4b, 0x00,
|
0x14, 0x01, 0x42, 0x00, 0x24, 0x01, 0x6e, 0x00, 0x24, 0x01, 0x62, 0x00,
|
||||||
0x03, 0x02, 0x57, 0x00, 0x03, 0x04, 0x68, 0x00, 0x03, 0x85, 0x7c, 0x00,
|
0x14, 0x08, 0x75, 0x00, 0x04, 0x02, 0x77, 0x00, 0x04, 0x04, 0x4b, 0x00,
|
||||||
0x03, 0x04, 0x1d, 0x00, 0x01, 0x8b, 0x4b, 0x00, 0x11, 0x01, 0x1d, 0x00,
|
0x03, 0x85, 0x19, 0x00, 0x03, 0x04, 0x1b, 0x00, 0x00, 0x86, 0x83, 0x00,
|
||||||
0x11, 0x05, 0x7c, 0x00, 0x01, 0x08, 0x48, 0x00, 0x01, 0x07, 0x4b, 0x00,
|
0x00, 0x8c, 0x31, 0x00, /* instruct array */
|
||||||
0x12, 0x81, 0x16, 0x00, 0x12, 0x03, 0x72, 0x00, 0x02, 0x08, 0x48, 0x00,
|
0x86, 0x00, /* const pool size */
|
||||||
0x02, 0x07, 0x4b, 0x00, 0x13, 0x81, 0x7e, 0x00, 0x23, 0x01, 0x4d, 0x00,
|
0x00, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x2e, 0x6c, 0x65, 0x6e, 0x00, 0x6c,
|
||||||
0x23, 0x01, 0x44, 0x00, 0x33, 0x01, 0x44, 0x00, 0x33, 0x05, 0x4b, 0x00,
|
0x65, 0x6e, 0x00, 0x6e, 0x6f, 0x6e, 0x65, 0x00, 0x6d, 0x6f, 0x64, 0x65,
|
||||||
0x23, 0x08, 0x55, 0x00, 0x23, 0x05, 0x4b, 0x00, 0x13, 0x02, 0x57, 0x00,
|
0x00, 0x30, 0x00, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x69, 0x6e, 0x64, 0x65,
|
||||||
0x03, 0x08, 0x85, 0x00, 0x03, 0x07, 0x4b, 0x00, 0x04, 0x82, 0x68, 0x00,
|
0x78, 0x00, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x00, 0x69, 0x74, 0x65, 0x72,
|
||||||
0x14, 0x81, 0x4d, 0x00, 0x14, 0x01, 0x44, 0x00, 0x24, 0x01, 0x7e, 0x00,
|
0x00, 0x5f, 0x6c, 0x30, 0x00, 0x5f, 0x6c, 0x30, 0x2e, 0x5f, 0x5f, 0x6e,
|
||||||
0x24, 0x01, 0x72, 0x00, 0x14, 0x08, 0x55, 0x00, 0x14, 0x03, 0x4d, 0x00,
|
0x65, 0x78, 0x74, 0x5f, 0x5f, 0x00, 0x69, 0x00, 0x32, 0x00, 0x3d, 0x3d,
|
||||||
0x04, 0x02, 0x87, 0x00, 0x03, 0x85, 0x1b, 0x00, 0x03, 0x04, 0x1d, 0x00,
|
0x00, 0x31, 0x00, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x00, 0x61, 0x6c, 0x77,
|
||||||
0x00, 0x86, 0x8f, 0x00, 0x00, 0x8c, 0x33, 0x00, /* instruct array */
|
0x61, 0x79, 0x73, 0x00, 0x74, 0x6f, 0x64, 0x6f, 0x00, 0x77, 0x68, 0x65,
|
||||||
0x92, 0x00, /* const pool size */
|
0x6e, 0x00, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x5f, 0x6d, 0x73, 0x00,
|
||||||
0x00, 0x5f, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73, 0x2e, 0x6c, 0x65, 0x6e,
|
0x33, 0x00, 0x74, 0x69, 0x63, 0x6b, 0x00, 0x3e, 0x00, 0x2b, 0x00, 0x5f,
|
||||||
0x00, 0x6c, 0x65, 0x6e, 0x00, 0x6e, 0x6f, 0x6e, 0x65, 0x00, 0x6d, 0x6f,
|
0x5f, 0x73, 0x65, 0x74, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x5f, 0x00, 0x2d,
|
||||||
0x64, 0x65, 0x00, 0x30, 0x00, 0x69, 0x6e, 0x66, 0x6f, 0x5f, 0x69, 0x6e,
|
|
||||||
0x64, 0x65, 0x78, 0x00, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x00, 0x69, 0x74,
|
|
||||||
0x65, 0x72, 0x00, 0x5f, 0x6c, 0x30, 0x00, 0x5f, 0x6c, 0x30, 0x2e, 0x5f,
|
|
||||||
0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x5f, 0x00, 0x69, 0x00, 0x32, 0x00,
|
|
||||||
0x3d, 0x3d, 0x00, 0x31, 0x00, 0x5f, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x73,
|
|
||||||
0x00, 0x2b, 0x00, 0x5f, 0x5f, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x5f, 0x5f,
|
|
||||||
0x00, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x00, 0x74, 0x6f, 0x64, 0x6f,
|
|
||||||
0x00, 0x77, 0x68, 0x65, 0x6e, 0x00, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64,
|
|
||||||
0x5f, 0x6d, 0x73, 0x00, 0x33, 0x00, 0x5f, 0x5f, 0x74, 0x69, 0x63, 0x6b,
|
|
||||||
0x00, 0x3e, 0x00, 0x5f, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x5f, 0x00, 0x2d,
|
|
||||||
0x31, 0x00, /* const pool */
|
0x31, 0x00, /* const pool */
|
||||||
};
|
};
|
||||||
pikaVM_runByteCode(__pikaMain, (uint8_t*)bytes);
|
pikaVM_runByteCode(self, (uint8_t*)bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __Task_update_tick(PikaObj* self) {
|
void __Task_update_tick(PikaObj* self) {
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
pikascript-core==v1.8.7
|
pikascript-core==v1.10.0
|
||||||
PikaStdLib==v1.8.7
|
PikaStdLib==v1.10.0
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user