1 #include <string.h> 2 #include <stdio.h> 3 4 void func_ignore(int a, int b, int c) 5 { 6 printf("%d\n", a + b + c); 7 } 8 9 void func_intptr(int *i) 10 { 11 printf("%d\n", *i); 12 } 13 14 void func_intptr_ret(int *i) 15 { 16 *i = 42; 17 } 18 19 int func_strlen(char* p) 20 { 21 strcpy(p, "Hello world"); 22 return strlen(p); 23 } 24 25 int func_arg0(char *p) 26 { 27 strcpy(p, "Hello another world!"); 28 return strlen(p); 29 } 30 31 void func_strfixed(char* p) 32 { 33 strcpy(p, "Hello world"); 34 } 35 36 void func_string(char* p) 37 { 38 printf("%s\n", p); 39 } 40 41 void func_ppp(int*** ppp) 42 { 43 printf("%d\n", ***ppp); 44 } 45 46 void func_stringp(char** sP) 47 { 48 printf("%s\n", *sP); 49 } 50 51 void func_enum(int x) 52 { 53 printf("enum: %d\n", x); 54 } 55 56 void func_short(short x1, short x2) 57 { 58 printf("short: %hd %hd\n", x1, x2); 59 } 60 61 void func_ushort(unsigned short x1, unsigned short x2) 62 { 63 printf("ushort: %hu %hu\n", x1, x2); 64 } 65 66 float func_float(float f1, float f2) 67 { 68 printf("%f %f\n", f1, f2); 69 return f1; 70 } 71 72 double func_double(double f1, double f2) 73 { 74 printf("%f %f\n", f1, f2); 75 return f2; 76 } 77 78 void func_typedef(int x) 79 { 80 printf("typedef'd enum: %d\n", x); 81 } 82 83 void func_arrayi(int* a, int N) 84 { 85 int i; 86 printf("array[int]: "); 87 for (i = 0; i < N; i++) 88 printf("%d ", a[i]); 89 printf("\n"); 90 } 91 92 void func_arrayf(float* a, int N) 93 { 94 int i; 95 printf("array[float]: "); 96 for (i = 0; i < N; i++) 97 printf("%f ", a[i]); 98 printf("\n"); 99 } 100 101 struct test_struct { 102 int simple; 103 int alen; 104 int slen; 105 struct { int a; int b; }* array; 106 struct { int a; int b; } seq[3]; 107 char* str; 108 char* outer_str; 109 }; 110 111 void func_struct(struct test_struct* x) 112 { 113 char buf[100]; 114 int i; 115 116 printf("struct: "); 117 118 printf("%d, [", x->simple); 119 for (i = 0; i < x->alen; i++) { 120 printf("%d/%d", x->array[i].a, x->array[i].b); 121 if (i < x->alen - 1) 122 printf(" "); 123 } 124 printf("] ["); 125 for (i = 0; i < 3; i++) { 126 printf("%d/%d", x->seq[i].a, x->seq[i].b); 127 if (i < 2) 128 printf(" "); 129 } 130 printf("] "); 131 132 strncpy(buf, x->str, x->slen); 133 buf[x->slen] = '\0'; 134 printf("%s\n", buf); 135 } 136 137 void func_work (char *x) 138 { 139 *x = 'x'; 140 } 141 142 void func_call (char *x, char* y, void (*cb) (char *)) 143 { 144 cb (y); 145 *x = (*y)++; 146 } 147 148 struct S2 { 149 float f; 150 char a; 151 char b; 152 }; 153 154 struct S3 { 155 char a[6]; 156 float f; 157 }; 158 159 struct S2 160 func_struct_2(int i, struct S3 s3, double d) 161 { 162 return (struct S2){ s3.f, s3.a[1], s3.a[2] }; 163 } 164 165 struct S4 { 166 long a; 167 long b; 168 long c; 169 long d; 170 }; 171 172 struct S4 173 func_struct_large(struct S4 a, struct S4 b) 174 { 175 return (struct S4){ a.a + b.a, a.b + b.b, a.c + b.c, a.d + b.d }; 176 } 177 178 struct S5 { 179 char a; 180 char b; 181 long c; 182 long d; 183 }; 184 185 struct S5 186 func_struct_large2(struct S5 a, struct S5 b) 187 { 188 return (struct S5){ a.a + b.a, a.b + b.b, a.c + b.c, a.d + b.d }; 189 } 190 191 struct S6 { 192 long a; 193 long b; 194 char c; 195 char d; 196 }; 197 198 struct S6 199 func_struct_large3(struct S6 a, struct S6 b) 200 { 201 return (struct S6){ a.a + b.a, a.b + b.b, a.c + b.c, a.d + b.d }; 202 } 203 204 void 205 func_many_args(int a, int b, long c, double d, char e, int f, float g, char h, 206 int i, double j, int k, double l, char m, int n, short o, int p, 207 char q, float r, float s, double t, long u, float v, float w, 208 float x, float y) 209 { 210 } 211 212 void 213 func_lens(int a, long b, short c, long d) 214 { 215 } 216 217 int 218 func_bool(int a, int b) 219 { 220 return !b; 221 } 222 223 void 224 func_hide(int a, int b, int c, int d, int e, int f) 225 { 226 } 227 228 struct func_hide_struct { 229 int a; int b; int c; int d; int e; int f; int g; int h; 230 }; 231 232 void 233 func_hide_struct(struct func_hide_struct s) 234 { 235 } 236 237 long * 238 func_short_enums(short values[]) 239 { 240 static long retvals[4]; 241 retvals[0] = values[0]; 242 retvals[1] = values[1]; 243 retvals[2] = values[2]; 244 retvals[3] = values[3]; 245 return retvals; 246 } 247 248 long 249 func_negative_enum(short a, unsigned short b, int c, unsigned d, 250 long e, unsigned long f) 251 { 252 return -1; 253 } 254 255 void 256 func_charp_string(char *p) 257 { 258 } 259 260 struct struct_empty {}; 261 struct struct_size1 { char a; }; 262 struct struct_size2 { short a; }; 263 struct struct_size4 { int a; }; 264 struct struct_size8 { int a; int b; }; 265 266 struct struct_empty 267 func_struct_empty(struct struct_empty e) 268 { 269 return e; 270 } 271 272 struct struct_size1 273 func_struct_size1(struct struct_size1 e) 274 { 275 return e; 276 } 277 278 struct struct_size2 279 func_struct_size2(struct struct_size2 e) 280 { 281 return e; 282 } 283 284 struct struct_size4 285 func_struct_size4(struct struct_size4 e) 286 { 287 return e; 288 } 289 290 struct struct_size8 291 func_struct_size8(struct struct_size8 e) 292 { 293 return e; 294 } 295 296 void 297 func_printf(char *format, ...) 298 { 299 } 300 301 void 302 func_sprintf(char *str, char *format, ...) 303 { 304 } 305