use arg_set/get_Mem

This commit is contained in:
lyon1998 2022-04-18 11:56:29 +08:00
parent 933fad80c5
commit 174f594534
3 changed files with 36 additions and 7 deletions

View File

@ -153,6 +153,20 @@ Arg* arg_setContent(Arg* self, uint8_t* content, uint32_t size) {
return content_setContent(self, content, size);
}
void* arg_getMem(Arg* self) {
return content_getContent(self) + sizeof(size_t);
}
size_t arg_getMemSize(Arg* self) {
size_t mem_size = 0;
void* content = (void*)arg_getContent(self);
if (NULL == content) {
return 0;
}
__platform_memcpy(&mem_size, content, sizeof(size_t));
return mem_size;
}
Arg* arg_setStruct(Arg* self,
char* name,
void* struct_ptr,

View File

@ -113,6 +113,8 @@ int64_t arg_getInt(Arg* self);
float arg_getFloat(Arg* self);
void* arg_getPtr(Arg* self);
char* arg_getStr(Arg* self);
void* arg_getMem(Arg* self);
size_t arg_getMemSize(Arg* self);
Arg* arg_copy(Arg* argToBeCopy);
#define arg_getContent(self) ((uint8_t*)content_getContent((self)))

View File

@ -112,17 +112,31 @@ char* args_getStr(Args* self, char* name) {
}
void* args_getMem(Args* self, char* name) {
return (void*)args_getStr(self, name) + sizeof(size_t);
if (NULL == self) {
return NULL;
}
Arg* arg = args_getArg(self, name);
if (NULL == arg) {
return NULL;
}
if (NULL == arg_getContent(arg)) {
return NULL;
}
return (char*)arg_getMem(arg);
}
size_t args_getMemSize(Args* self, char* name) {
size_t mem_size = 0;
void* content = (void*)args_getStr(self, name);
if (NULL == content) {
if (NULL == self) {
return 0;
}
__platform_memcpy(&mem_size, content, sizeof(size_t));
return mem_size;
Arg* arg = args_getArg(self, name);
if (NULL == arg) {
return 0;
}
if (NULL == arg_getContent(arg)) {
return 0;
}
return arg_getMemSize(arg);
}
int32_t args_setInt(Args* self, char* name, int64_t int64In) {
@ -500,4 +514,3 @@ Args* New_args(Args* args) {
Args* self = New_link(NULL);
return self;
}