From adaff1bd43d8dd5b6895818a72a98bc5f47eafef Mon Sep 17 00:00:00 2001 From: lyon Date: Mon, 13 Dec 2021 22:01:42 +0800 Subject: [PATCH] add dict in stddata --- port/linux/.vscode/settings.json | 3 ++- port/linux/package/pikascript/PikaStdData.py | 22 +++++++++++++++++-- .../PikaStdData/PikaStdData_List.c | 2 +- port/linux/test/pikaMain-test.cpp | 20 +++++++++++++++++ 4 files changed, 43 insertions(+), 4 deletions(-) diff --git a/port/linux/.vscode/settings.json b/port/linux/.vscode/settings.json index dd1700d7f..e07ce78d1 100644 --- a/port/linux/.vscode/settings.json +++ b/port/linux/.vscode/settings.json @@ -18,7 +18,8 @@ "stdint.h": "c", "cstdio": "c", "cstdlib": "c", - "pikastddevice_gpio.h": "c" + "pikastddevice_gpio.h": "c", + "pikastddata_dict.h": "c" }, "python.formatting.provider": "autopep8" } \ No newline at end of file diff --git a/port/linux/package/pikascript/PikaStdData.py b/port/linux/package/pikascript/PikaStdData.py index be734b56a..20e601cc0 100644 --- a/port/linux/package/pikascript/PikaStdData.py +++ b/port/linux/package/pikascript/PikaStdData.py @@ -1,5 +1,6 @@ from PikaObj import * + class List(TinyObj): def __init__(): pass @@ -12,10 +13,27 @@ class List(TinyObj): def get(i: int) -> any: pass - # set an arg by the index + # set an arg by the index def set(i: int, arg: any): pass # get the length of list def len() -> int: - pass \ No newline at end of file + pass + + +class Dict(TinyObj): + def __init__(): + pass + + # get an arg by the key + def get(key: str) -> any: + pass + + # set an arg by the key + def set(key: str, arg: any): + pass + + # remove an arg by the key + def remove(key: str): + pass diff --git a/port/linux/package/pikascript/pikascript-lib/PikaStdData/PikaStdData_List.c b/port/linux/package/pikascript/pikascript-lib/PikaStdData/PikaStdData_List.c index 407594dea..138d42086 100644 --- a/port/linux/package/pikascript/pikascript-lib/PikaStdData/PikaStdData_List.c +++ b/port/linux/package/pikascript/pikascript-lib/PikaStdData/PikaStdData_List.c @@ -1,4 +1,4 @@ -#include "PikaStdData_List.h" +#include "PikaObj.h" void PikaStdData_List_append(PikaObj* self, Arg* arg) { int top = obj_getInt(self, "top"); diff --git a/port/linux/test/pikaMain-test.cpp b/port/linux/test/pikaMain-test.cpp index 3d35a0324..25bc1f624 100644 --- a/port/linux/test/pikaMain-test.cpp +++ b/port/linux/test/pikaMain-test.cpp @@ -266,6 +266,26 @@ TEST(pikaMain, __init__) { /* assert */ EXPECT_STREQ(a, "PA0"); + /* deinit */ + obj_deinit(pikaMain); + EXPECT_EQ(pikaMemNow(), 0); +} + +TEST(pikaMain, PikaStdData){ + /* init */ + pikaMemInfo.heapUsedMax = 0; + PikaObj* pikaMain = newRootObj((char*)"pikaMain", New_PikaMain); + /* run */ + obj_run(pikaMain, (char*) + "dict = PikaStdData.Dict()\n" + "dict.set('a', 1)\n" + "a = dict.get('a')\n" + ); + /* collect */ + int a = obj_getInt(pikaMain, (char *)"a"); + /* assert */ + EXPECT_EQ(a, 1); + /* deinit */ obj_deinit(pikaMain); EXPECT_EQ(pikaMemNow(), 0);