ast2 enum support

This commit is contained in:
Ganesh Viswanathan 2020-03-23 14:02:40 -05:00
commit cadf16293d
5 changed files with 200 additions and 9 deletions

View file

@ -43,6 +43,54 @@ typedef struct A22 { int **f1; int *f2[123+132]; } A22;
union U1 {int f1; float f2; };
typedef union U2 { int **f1; int abc[123+132]; } U2;
// Enums
// Issue #159
#define NK_FLAG(x) (1 << (x))
enum nk_panel_type {
NK_PANEL_NONE = 0,
NK_PANEL_WINDOW = NK_FLAG(0),
NK_PANEL_GROUP = NK_FLAG(1),
NK_PANEL_POPUP = NK_FLAG(2),
NK_PANEL_CONTEXTUAL = NK_FLAG(4),
NK_PANEL_COMBO = NK_FLAG(5),
NK_PANEL_MENU = NK_FLAG(6),
NK_PANEL_TOOLTIP = NK_FLAG(7)
};
enum nk_panel_set {
NK_PANEL_SET_NONBLOCK = NK_PANEL_CONTEXTUAL|NK_PANEL_COMBO|NK_PANEL_MENU|NK_PANEL_TOOLTIP,
NK_PANEL_SET_POPUP = NK_PANEL_SET_NONBLOCK|NK_PANEL_POPUP,
NK_PANEL_SET_SUB = NK_PANEL_SET_POPUP|NK_PANEL_GROUP
};
// Issue #171
typedef enum VSColorFamily {
/* all planar formats */
cmGray = 1000000,
cmRGB = 2000000,
cmYUV = 3000000,
cmYCoCg = 4000000,
/* special for compatibility */
cmCompat = 9000000
} VSColorFamily;
typedef enum VSPresetFormat {
pfNone = 0,
pfGray8 = cmGray + 10,
pfGray16,
pfYUV420P8 = cmYUV + 10,
pfYUV422P8,
pfRGB24 = cmRGB + 10,
pfRGB27,
/* test */
pfCompatBGR32 = cmCompat + 10,
pfCompatYUY2
} VSPresetFormat;
// Anonymous
//typedef struct { char a1; };
@ -101,6 +149,54 @@ typedef struct A22 { int **f1; int *f2[123+132]; } A22;
union U1 {int f1; float f2; };
typedef union U2 { int **f1; int abc[123+132]; } U2;
// Enums
// Issue #159
#define NK_FLAG(x) (1 << (x))
enum nk_panel_type {
NK_PANEL_NONE = 0,
NK_PANEL_WINDOW = NK_FLAG(0),
NK_PANEL_GROUP = NK_FLAG(1),
NK_PANEL_POPUP = NK_FLAG(2),
NK_PANEL_CONTEXTUAL = NK_FLAG(4),
NK_PANEL_COMBO = NK_FLAG(5),
NK_PANEL_MENU = NK_FLAG(6),
NK_PANEL_TOOLTIP = NK_FLAG(7)
};
enum nk_panel_set {
NK_PANEL_SET_NONBLOCK = NK_PANEL_CONTEXTUAL|NK_PANEL_COMBO|NK_PANEL_MENU|NK_PANEL_TOOLTIP,
NK_PANEL_SET_POPUP = NK_PANEL_SET_NONBLOCK|NK_PANEL_POPUP,
NK_PANEL_SET_SUB = NK_PANEL_SET_POPUP|NK_PANEL_GROUP
};
// Issue #171
typedef enum VSColorFamily {
/* all planar formats */
cmGray = 1000000,
cmRGB = 2000000,
cmYUV = 3000000,
cmYCoCg = 4000000,
/* special for compatibility */
cmCompat = 9000000
} VSColorFamily;
typedef enum VSPresetFormat {
pfNone = 0,
pfGray8 = cmGray + 10,
pfGray16,
pfYUV420P8 = cmYUV + 10,
pfYUV422P8,
pfRGB24 = cmRGB + 10,
pfRGB27,
/* test */
pfCompatBGR32 = cmCompat + 10,
pfCompatYUY2
} VSPresetFormat;
// Anonymous
//typedef struct { char a1; };

View file

@ -12,7 +12,7 @@ cOverride:
type
A1* = A0
cImport("include/tast2.h", flags="-d -f:ast2")
cImport("include/tast2.h", flags="-d -f:ast2 -ENK_")
proc testFields(t: typedesc, fields: Table[string, string] = initTable[string, string]()) =
var
@ -86,4 +86,21 @@ assert U1 is object
assert sizeof(U1) == sizeof(cfloat)
assert U2 is object
assert sizeof(U2) == 256 * sizeof(cint)
assert sizeof(U2) == 256 * sizeof(cint)
assert PANEL_WINDOW == 1
assert PANEL_GROUP == 2
assert PANEL_POPUP == 4
assert PANEL_CONTEXTUAL == 16
assert PANEL_COMBO == 32
assert PANEL_MENU == 64
assert PANEL_TOOLTIP == 128
assert PANEL_SET_NONBLOCK == 240
assert PANEL_SET_POPUP == 244
assert PANEL_SET_SUB == 246
assert cmGray == 1000000
assert pfGray16 == 1000011
assert pfYUV422P8 == pfYUV420P8 + 1
assert pfRGB27 == cmRGB.VSPresetFormat + 11
assert pfCompatYUY2 == pfCompatBGR32 + 1