The nim code attached compile and runs under amd64 both windows and linux, but
when compiling under windows/x86/xp the nim compiler output:
nimcache\enumtest.c: In function 'enumtestInit000':
nimcache\enumtest.c:261:2: error: duplicate case value case
((Eventgroups95004) 256):
^
nimcache\enumtest.c:219:2: error: previously used here case
((Eventgroups95004) 0):
^
nimcache\enumtest.c:268:2: error: duplicate case value case
((Eventgroups95004) 512):
^
nimcache\enumtest.c:219:2: error: previously used here case
((Eventgroups95004) 0):
^
nimcache\enumtest.c:296:2: error: duplicate case value case
((Eventgroups95004) 1024):
^
nimcache\enumtest.c:219:2: error: previously used here case
((Eventgroups95004) 0):
^
nimcache\enumtest.c:303:2: error: duplicate case value case
((Eventgroups95004) 2048):
^
nimcache\enumtest.c:219:2: error: previously used here case
((Eventgroups95004) 0):
^
nimcache\enumtest.c:310:2: error: duplicate case value case
((Eventgroups95004) 8192):
^
nimcache\enumtest.c:219:2: error: previously used here case
((Eventgroups95004) 0):
^
It seems something wrong with the translated C code definiton:
typedef NU8 Eventgroups95004
under amd64 is was:
typedef NI64 Eventgroups95004
but I'm not sure
type
EVENT_GROUPS* = enum
HANDLE_INITIALIZATION = 0x00000000, ## #* attached/detached
HANDLE_MOUSE = 0x00000001, ## #* mouse events
HANDLE_KEY = 0x00000002, ## #* key events
HANDLE_FOCUS = 0x00000004, ## #* focus events, if this flag is set it
also means that element it attached to is focusable
HANDLE_SCROLL = 0x00000008, ## #* scroll events
HANDLE_TIMER = 0x00000010, ## #* timer event
HANDLE_SIZE = 0x00000020, ## #* size changed event
HANDLE_DRAW = 0x00000040, ## #* drawing request (event)
HANDLE_DATA_ARRIVED = 0x00000080, ## #* requested data () has been
delivered
HANDLE_BEHAVIOR_EVENT = 0x00000100, ## #* logical, synthetic events:
## #
BUTTON_CLICK, HYPERLINK_CLICK, etc.,
## #
a.k.a. notifications from intrinsic behaviors
HANDLE_METHOD_CALL = 0x00000200, ## #* behavior specific methods
HANDLE_SCRIPTING_METHOD_CALL = 0x00000400, ## #* behavior specific
methods
HANDLE_TISCRIPT_METHOD_CALL = 0x00000800, ## #* behavior specific
methods using direct tiscript::value's
HANDLE_EXCHANGE = 0x00001000, ## #* system drag-n-drop
HANDLE_GESTURE = 0x00002000, ## #* touch input events
HANDLE_ALL = 0x0000FFFF, ## # all of them
SUBSCRIPTIONS_REQUEST = 0xFFFFFFFF ## #* special value for getting
subscription flags
echo HANDLE_INITIALIZATION, "\t", ord(HANDLE_INITIALIZATION)
echo HANDLE_MOUSE, "\t", ord(HANDLE_MOUSE)
echo HANDLE_KEY, "\t", ord(HANDLE_KEY)
echo HANDLE_FOCUS, "\t", ord(HANDLE_FOCUS)
echo HANDLE_SCROLL, "\t", ord(HANDLE_SCROLL)
echo HANDLE_TIMER, "\t", ord(HANDLE_TIMER)
echo HANDLE_SIZE, "\t", ord(HANDLE_SIZE)
echo HANDLE_DRAW, "\t", ord(HANDLE_DRAW)
echo HANDLE_DATA_ARRIVED, "\t", ord(HANDLE_DATA_ARRIVED)
echo HANDLE_BEHAVIOR_EVENT, "\t", ord(HANDLE_BEHAVIOR_EVENT)
echo HANDLE_METHOD_CALL, "\t", ord(HANDLE_METHOD_CALL)
echo HANDLE_SCRIPTING_METHOD_CALL, "\t", ord(HANDLE_SCRIPTING_METHOD_CALL)
echo HANDLE_TISCRIPT_METHOD_CALL, "\t", ord(HANDLE_TISCRIPT_METHOD_CALL)
echo HANDLE_EXCHANGE, "\t", ord(HANDLE_EXCHANGE)
echo HANDLE_GESTURE, "\t", ord(HANDLE_GESTURE)
echo HANDLE_ALL, "\t", ord(HANDLE_ALL)
echo SUBSCRIPTIONS_REQUEST, "\t", ord(SUBSCRIPTIONS_REQUEST)
var v = 0
# var v:EVENT_GROUPS = HANDLE_INITIALIZATION
case EVENT_GROUPS(v)
of HANDLE_INITIALIZATION:
echo HANDLE_INITIALIZATION, "\t", ord(HANDLE_INITIALIZATION)
of HANDLE_MOUSE:
echo HANDLE_MOUSE, "\t", ord(HANDLE_MOUSE)
of HANDLE_KEY:
echo HANDLE_KEY, "\t", ord(HANDLE_KEY)
of HANDLE_FOCUS:
echo HANDLE_FOCUS, "\t", ord(HANDLE_FOCUS)
of HANDLE_DRAW:
echo HANDLE_DRAW, "\t", ord(HANDLE_DRAW)
of HANDLE_TIMER:
echo HANDLE_TIMER, "\t", ord(HANDLE_TIMER)
of HANDLE_BEHAVIOR_EVENT:
echo HANDLE_BEHAVIOR_EVENT, "\t", ord(HANDLE_BEHAVIOR_EVENT)
of HANDLE_METHOD_CALL:
echo HANDLE_METHOD_CALL, "\t", ord(HANDLE_METHOD_CALL)
of HANDLE_DATA_ARRIVED:
echo HANDLE_DATA_ARRIVED, "\t", ord(HANDLE_DATA_ARRIVED)
of HANDLE_SCROLL:
echo HANDLE_SCROLL, "\t", ord(HANDLE_SCROLL)
of HANDLE_SIZE:
echo HANDLE_SIZE, "\t", ord(HANDLE_SIZE)
of HANDLE_SCRIPTING_METHOD_CALL:
echo HANDLE_SCRIPTING_METHOD_CALL, "\t",
ord(HANDLE_SCRIPTING_METHOD_CALL)
of HANDLE_TISCRIPT_METHOD_CALL:
echo HANDLE_TISCRIPT_METHOD_CALL, "\t", ord(HANDLE_TISCRIPT_METHOD_CALL)
of HANDLE_GESTURE:
echo HANDLE_GESTURE, "\t", ord(HANDLE_GESTURE)
else:
echo "else"