mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
add ARG_TYPE_MEM
This commit is contained in:
parent
f23dac8a8a
commit
a2dd87c8a8
@ -225,11 +225,13 @@ TEST(object_test, obj_mem) {
|
||||
obj_setMem(obj, (char*)"mem", mem_test, sizeof(mem_test));
|
||||
size_t mem_size = obj_getMemSize(obj, (char*)"mem");
|
||||
char* mem_test_out = (char*)obj_getMem(obj, (char*)"mem");
|
||||
ArgType arg_type = arg_getType(obj_getArg(obj, (char*)"mem"));
|
||||
EXPECT_EQ(mem_size, sizeof(mem_test));
|
||||
EXPECT_EQ(mem_test_out[0], 0x33);
|
||||
EXPECT_EQ(mem_test_out[1], 0x55);
|
||||
EXPECT_EQ(mem_test_out[2], 0x00);
|
||||
EXPECT_EQ(mem_test_out[3], 0x15);
|
||||
EXPECT_EQ(arg_type, ARG_TYPE_MEM);
|
||||
obj_deinit(obj);
|
||||
}
|
||||
|
||||
|
@ -143,6 +143,16 @@ ArgType content_getType(uint8_t* self) {
|
||||
return (ArgType)arg->type;
|
||||
}
|
||||
|
||||
Arg* arg_setMem(Arg* self, char* name, void* src, size_t size) {
|
||||
self = arg_newContent(self, size + sizeof(size_t));
|
||||
self = arg_setName(self, name);
|
||||
self = arg_setType(self, ARG_TYPE_MEM);
|
||||
void* dir = arg_getContent(self);
|
||||
__platform_memcpy(dir, &size, sizeof(size_t));
|
||||
__platform_memcpy(dir + sizeof(size_t), src, size);
|
||||
return self;
|
||||
}
|
||||
|
||||
Arg* arg_newContent(Arg* self, uint32_t size) {
|
||||
uint8_t* newContent = content_init("", ARG_TYPE_VOID, NULL, size, NULL);
|
||||
arg_freeContent(self);
|
||||
|
@ -35,6 +35,7 @@ typedef enum {
|
||||
ARG_TYPE_UNDEF = 0,
|
||||
ARG_TYPE_NONE,
|
||||
ARG_TYPE_VOID,
|
||||
ARG_TYPE_MEM,
|
||||
ARG_TYPE_NULL,
|
||||
ARG_TYPE_INT,
|
||||
ARG_TYPE_FLOAT,
|
||||
@ -135,5 +136,6 @@ Arg* arg_setHeapStruct(Arg* self,
|
||||
void* struct_deinit_fun);
|
||||
void* arg_getHeapStruct(Arg* self);
|
||||
void arg_deinitHeap(Arg* self);
|
||||
Arg* arg_setMem(Arg* self, char* name, void* src, size_t size);
|
||||
|
||||
#endif
|
||||
|
@ -81,12 +81,7 @@ int args_pushArg(Args* self, Arg* arg) {
|
||||
}
|
||||
|
||||
void args_setMem(Args* self, char* name, void* src, size_t size) {
|
||||
Arg* argNew = New_arg(NULL);
|
||||
argNew = arg_newContent(argNew, size + sizeof(size_t));
|
||||
argNew = arg_setName(argNew, name);
|
||||
void* dir = arg_getContent(argNew);
|
||||
__platform_memcpy(dir, &size, sizeof(size_t));
|
||||
__platform_memcpy(dir + sizeof(size_t), src, size);
|
||||
Arg* argNew = arg_setMem(NULL, name, src, size);
|
||||
args_pushArg(self, argNew);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user