diff --git a/examples/lib/lib_test/functions.h b/examples/lib/lib_test/functions.h index 0eb8aff..86a1959 100644 --- a/examples/lib/lib_test/functions.h +++ b/examples/lib/lib_test/functions.h @@ -10,7 +10,9 @@ extern "C" { #endif -//Int +// Int +// === +// By Value void func_V_args_V(); int func_Pi_args_V(); @@ -24,13 +26,20 @@ void func_V_args_pPi(unsigned int* const arg1_pP); int func_Pi_args_Pi_pPi_pPi(int arg1_P,unsigned int* const arg2_pP, int* arg3_pP); // Char +// ==== +// By Value char func_Pc_args_V(); void func_V_args_Pc(char arg1_Pc); char func_Pc_args_Pc(char arg1_Pc); -void func_V_args_pPc(char* arg1_pPc); +// Char* +char* func_pPcStr_args_V(); + +void func_V_args_pPcChr(char* arg1_pPc); + +void func_V_args_pPcStr(char* arg1_pPc); char func_Pc_args_Pc_pPc_pPc(char arg1_Pc,char* arg2_pPc,char* arg3_pPc); @@ -46,11 +55,35 @@ 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_pppPc_args_V(); //DONE + +void func_V_args_ppPc(char** arg1_ppPc); // + +char*** func_pppPc_args_pppPc(char*** arg1_ppPc); + +char*** func_pppPc_args_pppPc_ppPc(char*** arg1_ppPc,char** arg2_ppPc); + +// Structs +// ======= +// By value +struct _PS func__PS_args_V(); //DONE + +TTAPS func_TTAPS_args_V(); //DONE + +// By pointer +TAPS* func_pTAPS_args_V(); //DONE + +TAPS** func_ppTAPS_args_V(); //DONE + +TAPS*** func_pppTAPS_args_V(); //DONE + +void func_V_args_pTAPS(TAPS* arg1_pTAPS); //DONE + +TAPS** func_ppTAPS_args_ppTAPS(TAPS** arg1_ppTAPS); + +TAPS*** func_pppTAPS_args_pppTAPS(TAPS*** arg1_pppTAPS); -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 2e5bc2f..be2e28c 100644 --- a/examples/lib/lib_test/lib_test.c +++ b/examples/lib/lib_test/lib_test.c @@ -17,7 +17,7 @@ int func_Pi_args_V() { } void func_V_args_Pi(int arg1_P) { - printf("%i", arg1_P); + printf("DEBUG: %i\n", arg1_P); } int func_Pi_args_Pi(int arg1_P) { @@ -40,17 +40,30 @@ char func_Pc_args_V() { } void func_V_args_Pc(char arg1_Pc) { - printf("%c", arg1_Pc); + printf("DEBUG: %c\n", arg1_Pc); } char func_Pc_args_Pc(char arg1_Pc) { return toupper(arg1_Pc); } -void func_V_args_pPc(char* arg1_pPc) { +// Char* +char* func_pPcStr_args_V() { + char *ret = (char*) calloc(4,sizeof (char)); + strcpy(ret,"pEp"); + return ret; +} + +void func_V_args_pPcChr(char* arg1_pPc) { *arg1_pPc = toupper(*arg1_pPc); } +void func_V_args_pPcStr(char* arg1_pPc) { + for(int i = 0; arg1_pPc[i] != '\0'; i++) { + arg1_pPc[i] = toupper(arg1_pPc[i]); + } +} + char func_Pc_args_Pc_pPc_pPc(char arg1_Pc,char* arg2_pPc,char* arg3_pPc){ *arg2_pPc = toupper(*arg2_pPc); *arg3_pPc = toupper(*arg3_pPc); @@ -63,45 +76,128 @@ const char* func_pPcc_args_V() { } void func_V_args_pPcc(const char* arg1_pPcc) { - printf("%s", arg1_pPcc); + printf("DEBUG: %s\n", arg1_pPcc); } const char* func_pPcc_args_pPcc(const char* arg1_pPcc) { - return strdup(arg1_pPcc); + return arg1_pPcc; } const char* func_pPcc_args_pPcc_pPcc(const char* arg1_pPcc,const char* arg2_pPcc) { - printf("%s", arg1_pPcc); - printf("%s", arg2_pPcc); - return strdup(arg1_pPcc); + printf("DEBUG: %s\n", arg1_pPcc); + printf("DEBUG: %s\n", arg2_pPcc); + return arg1_pPcc; } // String-by-ref (char**) char** func_ppPc_args_V() { - char* ret = (char*)calloc(23,sizeof(char)); - ret = "pEp"; - return &ret; + char* ret = (char*)calloc(4,sizeof(char)); + strcpy(ret,"pEp"); + char** pp_ret = (char**)calloc(1,sizeof(char**)); + pp_ret = &ret; + return pp_ret; +} + +char*** func_pppPc_args_V() { + char* ret = (char*)calloc(4,sizeof(char)); + strcpy(ret,"pEp"); + char** pp_ret = (char**)calloc(1,sizeof(char**)); + pp_ret = &ret; + char*** ppp_ret = (char***)calloc(1,sizeof(char***)); + ppp_ret = &pp_ret; + return ppp_ret; } void func_V_args_ppPc(char** arg1_ppPc) { - *arg1_ppPc = (char*) calloc(23, sizeof (char)); - *arg1_ppPc = "pEp"; + *arg1_ppPc = NULL; + char* newstr = (char*) calloc(4,sizeof (char )); + strcpy(newstr,"pEp"); + *arg1_ppPc = newstr; } -char** func_ppPc_args_ppPc(char** arg1_ppPc) { - *arg1_ppPc = (char*) calloc(23, sizeof (char)); - *arg1_ppPc = "pEp"; +char*** func_pppPc_args_pppPc(char*** arg1_ppPc) { + **arg1_ppPc = NULL; + char* newstr = (char*) calloc(4,sizeof (char )); + strcpy(newstr,"pEp"); + **arg1_ppPc = newstr; 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"; +char*** func_pppPc_args_pppPc_ppPc(char*** arg1_ppPc,char** arg2_ppPc) { + **arg1_ppPc = NULL; + *arg2_ppPc = NULL; + char* newstr = (char*) calloc(4,sizeof (char )); + strcpy(newstr,"pEp"); + **arg1_ppPc = newstr; + *arg2_ppPc = newstr; return arg1_ppPc; } +struct _PS func__PS_args_V() { + struct _PS* ret = (struct _PS*)malloc(sizeof(struct _PS)); + ret->field__P_1=23; + ret->field__P_2=23; + return *ret; +} + +TTAPS func_TTAPS_args_V() { + TTAPS* ret = (TTAPS*)malloc(sizeof(TTAPS)); + ret->field__P_1=23; + ret->field__P_2=23; + return *ret; +} + +TAPS* func_pTAPS_args_V() { + TAPS* ret = (TAPS*)malloc(sizeof(TAPS)); + ret->field__P_1 = 23; + ret->field__P_2 = 23; + return ret; +} + +TAPS** func_ppTAPS_args_V() { + TAPS* ret = (TAPS*)malloc(sizeof(TAPS)); + ret->field__P_1 = 23; + ret->field__P_2 = 23; + TAPS** pp_ret = (TAPS**) malloc(sizeof (TAPS**)); + pp_ret = &ret; + return pp_ret; +} + +TAPS*** func_pppTAPS_args_V() { + TAPS* ret = (TAPS*)malloc(sizeof(TAPS)); + ret->field__P_1 = 23; + ret->field__P_2 = 23; + TAPS** pp_ret = (TAPS**) malloc(sizeof (TAPS**)); + pp_ret = &ret; + TAPS*** ppp_ret = (TAPS***) malloc(sizeof (TAPS***)); + ppp_ret = &pp_ret; + return ppp_ret; + +} + +void func_V_args_pTAPS(TAPS* arg1_pTAPS) { + arg1_pTAPS->field__P_1 = 23; + arg1_pTAPS->field__P_2 = 23; +} + +TAPS** func_ppTAPS_args_ppTAPS(TAPS** arg1_ppTAPS) { + *arg1_ppTAPS = NULL; + TAPS* newstr = (TAPS*) malloc(sizeof (TAPS)); + newstr->field__P_1 = 23; + newstr->field__P_2 = 23; + *arg1_ppTAPS = newstr; + return arg1_ppTAPS; +} + +TAPS*** func_pppTAPS_args_pppTAPS(TAPS*** arg1_pppTAPS) { + **arg1_pppTAPS = NULL; + TAPS* newstr = (TAPS*) malloc(sizeof (TAPS)); + newstr->field__P_1 = 23; + newstr->field__P_2 = 23; + **arg1_pppTAPS = newstr; + return arg1_pppTAPS; +} + // Variables // =========