From 5a048a19d3a39805f4dcdcc7a8628f9016aecaab Mon Sep 17 00:00:00 2001 From: heck Date: Tue, 26 Jan 2021 03:34:11 +0100 Subject: [PATCH] lib_test - add funcs and tests for char** (string-by-ref) --- examples/lib/lib_test/functions.h | 7 +++++++ examples/lib/lib_test/lib_test.c | 28 ++++++++++++++++++++++++++++ examples/lib/lib_test/main.c | 30 ++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) diff --git a/examples/lib/lib_test/functions.h b/examples/lib/lib_test/functions.h index adb8e14..0eb8aff 100644 --- a/examples/lib/lib_test/functions.h +++ b/examples/lib/lib_test/functions.h @@ -44,6 +44,13 @@ const char* func_pPcc_args_pPcc(const char* arg1_pPcc); const char* func_pPcc_args_pPcc_pPcc(const char* arg1_pPcc,const char* arg2_pPcc); // String-by-ref (char**) +char** func_ppPc_args_V(); + +void func_V_args_ppPc(char** arg1_ppPc); + +char** func_ppPc_args_ppPc(char** arg1_ppPc); + +char** func_ppPc_args_ppPc_ppPc(char** arg1_ppPc,char** arg2_ppPc); diff --git a/examples/lib/lib_test/lib_test.c b/examples/lib/lib_test/lib_test.c index ec043db..2e5bc2f 100644 --- a/examples/lib/lib_test/lib_test.c +++ b/examples/lib/lib_test/lib_test.c @@ -1,6 +1,7 @@ #include "lib_test.h" #include +#include #include #include @@ -75,6 +76,33 @@ const char* func_pPcc_args_pPcc_pPcc(const char* arg1_pPcc,const char* arg2_pPcc return strdup(arg1_pPcc); } +// String-by-ref (char**) +char** func_ppPc_args_V() { + char* ret = (char*)calloc(23,sizeof(char)); + ret = "pEp"; + return &ret; +} + +void func_V_args_ppPc(char** arg1_ppPc) { + *arg1_ppPc = (char*) calloc(23, sizeof (char)); + *arg1_ppPc = "pEp"; +} + +char** func_ppPc_args_ppPc(char** arg1_ppPc) { + *arg1_ppPc = (char*) calloc(23, sizeof (char)); + *arg1_ppPc = "pEp"; + return arg1_ppPc; +} + +char** func_ppPc_args_ppPc_ppPc(char** arg1_ppPc,char** arg2_ppPc) { + *arg1_ppPc = (char*) calloc(23, sizeof (char)); + *arg1_ppPc = "pEp"; + *arg2_ppPc = (char*) calloc(23, sizeof (char)); + *arg2_ppPc = "pEp"; + return arg1_ppPc; +} + + // Variables // ========= // _V = Void diff --git a/examples/lib/lib_test/main.c b/examples/lib/lib_test/main.c index 11a36eb..8446da0 100644 --- a/examples/lib/lib_test/main.c +++ b/examples/lib/lib_test/main.c @@ -101,4 +101,34 @@ int main() { const char* ret = func_pPcc_args_pPcc_pPcc(in,in2); assert(!strcmp(ret, in)); } + + // String-by-ref (char**) + { + printf("testing: func_ppPc_args_V\n"); + char** ret = func_ppPc_args_V(); + assert(!strcmp(*ret, "pEp")); + } + { + printf("testing: func_V_args_ppPc\n"); + char* in = NULL; + func_V_args_ppPc(&in); + assert(!strcmp(in, "pEp")); + } + { + printf("testing: func_ppPc_args_ppPc\n"); + char* in = NULL; + char** out = func_ppPc_args_ppPc(&in); + assert(!strcmp(in, "pEp")); + assert(!strcmp(*out, "pEp")); + } + { + printf("testing: func_ppPc_args_ppPc_ppPc\n"); + char* in = NULL; + char* in2 = NULL; + char** out = func_ppPc_args_ppPc_ppPc(&in,&in2); + assert(!strcmp(in, "pEp")); + assert(!strcmp(in2, "pEp")); + assert(!strcmp(*out, "pEp")); + } + }