From be4caeee45bc7adfdef57f14dea7706f923f848c Mon Sep 17 00:00:00 2001 From: lyon1998 Date: Mon, 18 Apr 2022 14:16:55 +0800 Subject: [PATCH] add other ctypes_type, add c_float --- package/ctypes/ctypes.c | 5 +++ package/ctypes/ctypes.py | 37 ++++++++++++++----- port/linux/.vscode/settings.json | 3 +- port/linux/package/pikascript/ctypes.py | 37 ++++++++++++++----- .../pikascript/pikascript-lib/ctypes/ctypes.c | 5 +++ 5 files changed, 68 insertions(+), 19 deletions(-) diff --git a/package/ctypes/ctypes.c b/package/ctypes/ctypes.c index add315a85..732b001f9 100644 --- a/package/ctypes/ctypes.c +++ b/package/ctypes/ctypes.c @@ -1,6 +1,7 @@ #include "ctypes_Test.h" #include "ctypes_c_uint.h" #include "ctypes_c_wchar_p.h" +#include "ctypes_c_float.h" #include "ctypes_utils.h" void ctypes_c_uint___init__(PikaObj* self, int value) { @@ -11,6 +12,10 @@ void ctypes_c_wchar_p___init__(PikaObj* self, char* value) { ctypesUtils_setStr(self, value); } +void ctypes_c_float___init__(PikaObj *self, float value){ + ctypesUtils_setFloat(self, value); +} + int ctypes_Test_add(PikaObj* self, PikaObj* c_uint1, PikaObj* c_uint2) { return ctypesUtils_getInt(c_uint1) + ctypesUtils_getInt(c_uint2); } diff --git a/package/ctypes/ctypes.py b/package/ctypes/ctypes.py index f63bb3e52..e58c3a38a 100644 --- a/package/ctypes/ctypes.py +++ b/package/ctypes/ctypes.py @@ -1,16 +1,35 @@ +from ctypes import c_byte from PikaObj import * class c_uint(TinyObj): - def __init__(self, value:int): - pass + def __init__(self, value:int):... + +class c_byte(c_uint):... +class c_ubyte(c_uint):... +class c_short(c_uint):... +class c_int(c_uint):... +class c_long(c_uint):... +class c_ulong(c_uint):... +class c_longlong(c_uint):... +class c_ulonglong(c_uint):... +class c_size_t(c_uint):... +class c_ssize_t(c_uint):... +class c_bool(c_uint):... + +class c_float(TinyObj): + def __init__(self, value:float):... + +class c_double(c_float):... +class c_longdouble(c_float):... class c_wchar_p(TinyObj): - def __init__(self, value:str): - pass + def __init__(self, value:str):... + +class c_char(c_wchar_p):... +class c_wchar(c_wchar_p):... +class c_char_p(c_wchar_p):... + class Test(TinyObj): - def add(self, c_uint1:c_uint, c_uint2:c_uint)->int: - pass - - def dc_cpuapdu_hex(self, slen:int, sendbuf:str, rlen:c_uint, rcvbuf:c_wchar_p) -> int: - pass + def add(self, c_uint1:c_uint, c_uint2:c_uint)->int:... + def dc_cpuapdu_hex(self, slen:int, sendbuf:str, rlen:c_uint, rcvbuf:c_wchar_p) -> int:... diff --git a/port/linux/.vscode/settings.json b/port/linux/.vscode/settings.json index b2638f7df..ffa79e5c6 100644 --- a/port/linux/.vscode/settings.json +++ b/port/linux/.vscode/settings.json @@ -54,7 +54,8 @@ "ctypes.h": "c", "ctypes_test.h": "c", "ctypes_c_uint.h": "c", - "ctypes_utils.h": "c" + "ctypes_utils.h": "c", + "ctypes_c_float.h": "c" }, "python.formatting.provider": "autopep8" } \ No newline at end of file diff --git a/port/linux/package/pikascript/ctypes.py b/port/linux/package/pikascript/ctypes.py index f63bb3e52..e58c3a38a 100644 --- a/port/linux/package/pikascript/ctypes.py +++ b/port/linux/package/pikascript/ctypes.py @@ -1,16 +1,35 @@ +from ctypes import c_byte from PikaObj import * class c_uint(TinyObj): - def __init__(self, value:int): - pass + def __init__(self, value:int):... + +class c_byte(c_uint):... +class c_ubyte(c_uint):... +class c_short(c_uint):... +class c_int(c_uint):... +class c_long(c_uint):... +class c_ulong(c_uint):... +class c_longlong(c_uint):... +class c_ulonglong(c_uint):... +class c_size_t(c_uint):... +class c_ssize_t(c_uint):... +class c_bool(c_uint):... + +class c_float(TinyObj): + def __init__(self, value:float):... + +class c_double(c_float):... +class c_longdouble(c_float):... class c_wchar_p(TinyObj): - def __init__(self, value:str): - pass + def __init__(self, value:str):... + +class c_char(c_wchar_p):... +class c_wchar(c_wchar_p):... +class c_char_p(c_wchar_p):... + class Test(TinyObj): - def add(self, c_uint1:c_uint, c_uint2:c_uint)->int: - pass - - def dc_cpuapdu_hex(self, slen:int, sendbuf:str, rlen:c_uint, rcvbuf:c_wchar_p) -> int: - pass + def add(self, c_uint1:c_uint, c_uint2:c_uint)->int:... + def dc_cpuapdu_hex(self, slen:int, sendbuf:str, rlen:c_uint, rcvbuf:c_wchar_p) -> int:... diff --git a/port/linux/package/pikascript/pikascript-lib/ctypes/ctypes.c b/port/linux/package/pikascript/pikascript-lib/ctypes/ctypes.c index add315a85..732b001f9 100644 --- a/port/linux/package/pikascript/pikascript-lib/ctypes/ctypes.c +++ b/port/linux/package/pikascript/pikascript-lib/ctypes/ctypes.c @@ -1,6 +1,7 @@ #include "ctypes_Test.h" #include "ctypes_c_uint.h" #include "ctypes_c_wchar_p.h" +#include "ctypes_c_float.h" #include "ctypes_utils.h" void ctypes_c_uint___init__(PikaObj* self, int value) { @@ -11,6 +12,10 @@ void ctypes_c_wchar_p___init__(PikaObj* self, char* value) { ctypesUtils_setStr(self, value); } +void ctypes_c_float___init__(PikaObj *self, float value){ + ctypesUtils_setFloat(self, value); +} + int ctypes_Test_add(PikaObj* self, PikaObj* c_uint1, PikaObj* c_uint2) { return ctypesUtils_getInt(c_uint1) + ctypesUtils_getInt(c_uint2); }