Test cases for cOverride

This commit is contained in:
Ganesh Viswanathan 2019-10-21 21:42:09 -05:00
commit 5f9a59fcc6
3 changed files with 74 additions and 0 deletions

View file

@ -75,3 +75,11 @@ void *multiline2(void) {
}
void multiline3(void) {}
int weirdfunc(char ***apple) {
return 1;
}
int weirdfunc2(char **apple) {
return 2;
}

View file

@ -167,6 +167,31 @@ enum
TDEFL_BOGUS_3 = TDEFL_OUT_BUF_SIZE / TDEFL_BOGUS_1
};
// cOverride
struct foo { int foo[8][1]; };
typedef struct tagBITMAPINFOHEADER{
int biClrImportant;
} BITMAPINFOHEADER, * pBITMAPINFOHEADER;
#define BIT 123u
#define BIT2 123u
#define BIT3 123
typedef int ABC;
typedef int DEF;
typedef struct {
int **f1;
} GHI;
struct JKL {
int **f1;
};
#ifdef __cplusplus
}
#endif

View file

@ -20,6 +20,27 @@ cPlugin:
else:
sym.name = sym.name.strip(chars={'_'})
cOverride:
type
BITMAPINFOHEADER* {.bycopy.} = object
biClrImportant*: int
Random = object
ABC = pointer
GHI = object
f2: ptr ptr cint
JKL = object
f2: ptr ptr cint
const
BIT* = 1
proc weirdfunc(apple: ptr ptr ptr cchar): int {.importc.}
proc weirdfunc2(mango: ptr ptr cchar): int {.importc.}
cImport cSearchPath "test.h"
check TEST_INT == 512
@ -183,3 +204,23 @@ var
arr: array[5, cint]
check test_array_param(arr) == nil
# cOverride
var
ca = weirdfunc
cb: BITMAPINFOHEADER
cc = weirdfunc2
cd: ABC
ce: DEF
cf: GHI
cg: JKL
cd = nil
ce = 5
cf.f2 = nil
cg.f2 = nil
doAssert BIT == 1
doAssert ca(nil) == 1
doAssert cc(nil) == 2