Ver Fonte

add ARG_TYPE_MEM

lyon1998 há 3 anos atrás
pai
commit
a2dd87c8a8
4 ficheiros alterados com 15 adições e 6 exclusões
  1. 2 0
      port/linux/test/object-test.cpp
  2. 10 0
      src/dataArg.c
  3. 2 0
      src/dataArg.h
  4. 1 6
      src/dataArgs.c

+ 2 - 0
port/linux/test/object-test.cpp

@@ -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);
 }
 

+ 10 - 0
src/dataArg.c

@@ -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);

+ 2 - 0
src/dataArg.h

@@ -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

+ 1 - 6
src/dataArgs.c

@@ -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);
 }