aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorngld <ngld@tproxy.de>2013-09-17 00:44:38 +0200
committerngld <ngld@tproxy.de>2013-09-17 00:44:38 +0200
commit29a62bd92e056800c7bf8f91fbe4c9fc948bf035 (patch)
tree27653cf2a0f62ac79e448523d9a098f21dde4751
parent1600df2e360d0bbfd9195b3523dd3d0b440fe62a (diff)
Updated library_sdl.js
-rw-r--r--src/library_sdl.js187
-rw-r--r--src/settings.js428
-rw-r--r--src/struct_info.json191
-rw-r--r--tools/gen_struct_info.py2
-rw-r--r--tools/shared.py2
5 files changed, 255 insertions, 555 deletions
diff --git a/src/library_sdl.js b/src/library_sdl.js
index 116bf547..e9d5a1d9 100644
--- a/src/library_sdl.js
+++ b/src/library_sdl.js
@@ -35,7 +35,7 @@ var LibrarySDL = {
volume: 1.0
},
mixerFrequency: 22050,
- mixerFormat: 0x8010, // AUDIO_S16LSB
+ mixerFormat: {{{ cDefine('AUDIO_S16LSB') }}}, //0x8010, // AUDIO_S16LSB
mixerNumChannels: 2,
mixerChunkSize: 1024,
channelMinimumNumber: 0,
@@ -151,89 +151,12 @@ var LibrarySDL = {
305: 224, // ctrl
308: 226, // alt
},
-
- structs: {
- Rect: Runtime.generateStructInfo([
- ['i32', 'x'], ['i32', 'y'], ['i32', 'w'], ['i32', 'h'],
- ]),
- PixelFormat: Runtime.generateStructInfo([
- ['i32', 'format'],
- ['void*', 'palette'], ['i8', 'BitsPerPixel'], ['i8', 'BytesPerPixel'],
- ['i8', 'padding1'], ['i8', 'padding2'],
- ['i32', 'Rmask'], ['i32', 'Gmask'], ['i32', 'Bmask'], ['i32', 'Amask'],
- ['i8', 'Rloss'], ['i8', 'Gloss'], ['i8', 'Bloss'], ['i8', 'Aloss'],
- ['i8', 'Rshift'], ['i8', 'Gshift'], ['i8', 'Bshift'], ['i8', 'Ashift']
- ]),
- KeyboardEvent: Runtime.generateStructInfo([
- ['i32', 'type'],
- ['i32', 'windowID'],
- ['i8', 'state'],
- ['i8', 'repeat'],
- ['i8', 'padding2'],
- ['i8', 'padding3'],
- ['i32', 'keysym']
- ]),
- keysym: Runtime.generateStructInfo([
- ['i32', 'scancode'],
- ['i32', 'sym'],
- ['i16', 'mod'],
- ['i32', 'unicode']
- ]),
- TextInputEvent: Runtime.generateStructInfo([
- ['i32', 'type'],
- ['i32', 'windowID'],
- ['b256', 'text'],
- ]),
- MouseMotionEvent: Runtime.generateStructInfo([
- ['i32', 'type'],
- ['i32', 'windowID'],
- ['i8', 'state'],
- ['i8', 'padding1'],
- ['i8', 'padding2'],
- ['i8', 'padding3'],
- ['i32', 'x'],
- ['i32', 'y'],
- ['i32', 'xrel'],
- ['i32', 'yrel']
- ]),
- MouseButtonEvent: Runtime.generateStructInfo([
- ['i32', 'type'],
- ['i32', 'windowID'],
- ['i8', 'button'],
- ['i8', 'state'],
- ['i8', 'padding1'],
- ['i8', 'padding2'],
- ['i32', 'x'],
- ['i32', 'y']
- ]),
- ResizeEvent: Runtime.generateStructInfo([
- ['i32', 'type'],
- ['i32', 'w'],
- ['i32', 'h']
- ]),
- AudioSpec: Runtime.generateStructInfo([
- ['i32', 'freq'],
- ['i16', 'format'],
- ['i8', 'channels'],
- ['i8', 'silence'],
- ['i16', 'samples'],
- ['i32', 'size'],
- ['void*', 'callback'],
- ['void*', 'userdata']
- ]),
- version: Runtime.generateStructInfo([
- ['i8', 'major'],
- ['i8', 'minor'],
- ['i8', 'patch']
- ])
- },
-
loadRect: function(rect) {
return {
- x: {{{ makeGetValue('rect + SDL.structs.Rect.x', '0', 'i32') }}},
- y: {{{ makeGetValue('rect + SDL.structs.Rect.y', '0', 'i32') }}},
- w: {{{ makeGetValue('rect + SDL.structs.Rect.w', '0', 'i32') }}},
- h: {{{ makeGetValue('rect + SDL.structs.Rect.h', '0', 'i32') }}}
+ x: {{{ makeGetValue('rect + ' + C_STRUCTS.SDL_Rect.x, '0', 'i32') }}},
+ y: {{{ makeGetValue('rect + ' + C_STRUCTS.SDL_Rect.y, '0', 'i32') }}},
+ w: {{{ makeGetValue('rect + ' + C_STRUCTS.SDL_Rect.w, '0', 'i32') }}},
+ h: {{{ makeGetValue('rect + ' + C_STRUCTS.SDL_Rect.h, '0', 'i32') }}}
};
},
@@ -281,15 +204,15 @@ var LibrarySDL = {
{{{ makeSetValue('surf+Runtime.QUANTUM_SIZE*14', '0', '1', 'i32') }}}
- {{{ makeSetValue('pixelFormat + SDL.structs.PixelFormat.format', '0', '-2042224636', 'i32') }}} // SDL_PIXELFORMAT_RGBA8888
- {{{ makeSetValue('pixelFormat + SDL.structs.PixelFormat.palette', '0', '0', 'i32') }}} // TODO
- {{{ makeSetValue('pixelFormat + SDL.structs.PixelFormat.BitsPerPixel', '0', 'bpp * 8', 'i8') }}}
- {{{ makeSetValue('pixelFormat + SDL.structs.PixelFormat.BytesPerPixel', '0', 'bpp', 'i8') }}}
+ {{{ makeSetValue('pixelFormat + ' + C_STRUCTS.SDL_PixelFormat.format, '0', '-2042224636', 'i32') }}} // SDL_PIXELFORMAT_RGBA8888
+ {{{ makeSetValue('pixelFormat + ' + C_STRUCTS.SDL_PixelFormat.palette, '0', '0', 'i32') }}} // TODO
+ {{{ makeSetValue('pixelFormat + ' + C_STRUCTS.SDL_PixelFormat.BitsPerPixel, '0', 'bpp * 8', 'i8') }}}
+ {{{ makeSetValue('pixelFormat + ' + C_STRUCTS.SDL_PixelFormat.BytesPerPixel, '0', 'bpp', 'i8') }}}
- {{{ makeSetValue('pixelFormat + SDL.structs.PixelFormat.Rmask', '0', 'rmask || 0x000000ff', 'i32') }}}
- {{{ makeSetValue('pixelFormat + SDL.structs.PixelFormat.Gmask', '0', 'gmask || 0x0000ff00', 'i32') }}}
- {{{ makeSetValue('pixelFormat + SDL.structs.PixelFormat.Bmask', '0', 'bmask || 0x00ff0000', 'i32') }}}
- {{{ makeSetValue('pixelFormat + SDL.structs.PixelFormat.Amask', '0', 'amask || 0xff000000', 'i32') }}}
+ {{{ makeSetValue('pixelFormat + ' + C_STRUCTS.SDL_PixelFormat.Rmask, '0', 'rmask || 0x000000ff', 'i32') }}}
+ {{{ makeSetValue('pixelFormat + ' + C_STRUCTS.SDL_PixelFormat.Gmask, '0', 'gmask || 0x0000ff00', 'i32') }}}
+ {{{ makeSetValue('pixelFormat + ' + C_STRUCTS.SDL_PixelFormat.Bmask, '0', 'bmask || 0x00ff0000', 'i32') }}}
+ {{{ makeSetValue('pixelFormat + ' + C_STRUCTS.SDL_PixelFormat.Amask, '0', 'amask || 0xff000000', 'i32') }}}
// Decide if we want to use WebGL or not
var useWebGL = (flags & 0x04000000) != 0; // SDL_OPENGL
@@ -608,7 +531,7 @@ var LibrarySDL = {
makeCEvent: function(event, ptr) {
if (typeof event === 'number') {
// This is a pointer to a native C event that was SDL_PushEvent'ed
- _memcpy(ptr, event, SDL.structs.KeyboardEvent.__size__); // XXX
+ _memcpy(ptr, event, {{{ C_STRUCTS.SDL_KeyboardEvent.__size__ }}}); // XXX
return;
}
@@ -631,52 +554,52 @@ var LibrarySDL = {
scan = SDL.scanCodes[key] || key;
}
- {{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.type', 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}}
- {{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.state', 'down ? 1 : 0', 'i8') }}}
- {{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.repeat', '0', 'i8') }}} // TODO
- {{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.keysym + SDL.structs.keysym.scancode', 'scan', 'i32') }}}
- {{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.keysym + SDL.structs.keysym.sym', 'key', 'i32') }}}
- {{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.keysym + SDL.structs.keysym.mod', 'SDL.modState', 'i16') }}}
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_KeyboardEvent.type, 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}}
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_KeyboardEvent.state, 'down ? 1 : 0', 'i8') }}}
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_KeyboardEvent.repeat, '0', 'i8') }}} // TODO
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_KeyboardEvent.keysym + C_STRUCTS.SDL_Keysym.scancode, 'scan', 'i32') }}}
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_KeyboardEvent.keysym + C_STRUCTS.SDL_Keysym.sym, 'key', 'i32') }}}
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_KeyboardEvent.keysym + C_STRUCTS.SDL_Keysym.mod, 'SDL.modState', 'i16') }}}
// some non-character keys (e.g. backspace and tab) won't have keypressCharCode set, fill in with the keyCode.
- {{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.keysym + SDL.structs.keysym.unicode', 'event.keypressCharCode || key', 'i32') }}}
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_KeyboardEvent.keysym + C_STRUCTS.SDL_Keysym.unicode, 'event.keypressCharCode || key', 'i32') }}}
break;
}
case 'keypress': {
- {{{ makeSetValue('ptr', 'SDL.structs.TextInputEvent.type', 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}}
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_TextInputEvent.type, 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}}
// Not filling in windowID for now
var cStr = intArrayFromString(String.fromCharCode(event.charCode));
for (var i = 0; i < cStr.length; ++i) {
- {{{ makeSetValue('ptr', 'SDL.structs.TextInputEvent.text + i', 'cStr[i]', 'i8') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_TextInputEvent.text + ' + i', 'cStr[i]', 'i8') }}};
}
break;
}
case 'mousedown': case 'mouseup': case 'mousemove': {
if (event.type != 'mousemove') {
var down = event.type === 'mousedown';
- {{{ makeSetValue('ptr', 'SDL.structs.MouseButtonEvent.type', 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}};
- {{{ makeSetValue('ptr', 'SDL.structs.MouseButtonEvent.button', 'event.button+1', 'i8') }}}; // DOM buttons are 0-2, SDL 1-3
- {{{ makeSetValue('ptr', 'SDL.structs.MouseButtonEvent.state', 'down ? 1 : 0', 'i8') }}};
- {{{ makeSetValue('ptr', 'SDL.structs.MouseButtonEvent.x', 'Browser.mouseX', 'i32') }}};
- {{{ makeSetValue('ptr', 'SDL.structs.MouseButtonEvent.y', 'Browser.mouseY', 'i32') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_MouseButtonEvent.type, 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_MouseButtonEvent.button, 'event.button+1', 'i8') }}}; // DOM buttons are 0-2, SDL 1-3
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_MouseButtonEvent.state, 'down ? 1 : 0', 'i8') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_MouseButtonEvent.x, 'Browser.mouseX', 'i32') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_MouseButtonEvent.y, 'Browser.mouseY', 'i32') }}};
} else {
- {{{ makeSetValue('ptr', 'SDL.structs.MouseMotionEvent.type', 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}};
- {{{ makeSetValue('ptr', 'SDL.structs.MouseMotionEvent.state', 'SDL.buttonState', 'i8') }}};
- {{{ makeSetValue('ptr', 'SDL.structs.MouseMotionEvent.x', 'Browser.mouseX', 'i32') }}};
- {{{ makeSetValue('ptr', 'SDL.structs.MouseMotionEvent.y', 'Browser.mouseY', 'i32') }}};
- {{{ makeSetValue('ptr', 'SDL.structs.MouseMotionEvent.xrel', 'Browser.mouseMovementX', 'i32') }}};
- {{{ makeSetValue('ptr', 'SDL.structs.MouseMotionEvent.yrel', 'Browser.mouseMovementY', 'i32') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_MouseMotionEvent.type, 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_MouseMotionEvent.state, 'SDL.buttonState', 'i8') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_MouseMotionEvent.x, 'Browser.mouseX', 'i32') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_MouseMotionEvent.y, 'Browser.mouseY', 'i32') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_MouseMotionEvent.xrel, 'Browser.mouseMovementX', 'i32') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_MouseMotionEvent.yrel, 'Browser.mouseMovementY', 'i32') }}};
}
break;
}
case 'unload': {
- {{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.type', 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_KeyboardEvent.type, 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}};
break;
}
case 'resize': {
- {{{ makeSetValue('ptr', 'SDL.structs.KeyboardEvent.type', 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}};
- {{{ makeSetValue('ptr', 'SDL.structs.ResizeEvent.w', 'event.w', 'i32') }}};
- {{{ makeSetValue('ptr', 'SDL.structs.ResizeEvent.h', 'event.h', 'i32') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_KeyboardEvent.type, 'SDL.DOMEventToSDLEvent[event.type]', 'i32') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_ResizeEvent.w, 'event.w', 'i32') }}};
+ {{{ makeSetValue('ptr', C_STRUCTS.SDL_ResizeEvent.h, 'event.h', 'i32') }}};
break;
}
default: throw 'Unhandled SDL event: ' + event.type;
@@ -740,10 +663,10 @@ var LibrarySDL = {
SDL_Linked_Version: function() {
if (SDL.version === null) {
- SDL.version = _malloc(SDL.structs.version.__size__);
- {{{ makeSetValue('SDL.version + SDL.structs.version.major', '0', '1', 'i8') }}}
- {{{ makeSetValue('SDL.version + SDL.structs.version.minor', '0', '3', 'i8') }}}
- {{{ makeSetValue('SDL.version + SDL.structs.version.patch', '0', '0', 'i8') }}}
+ SDL.version = _malloc({{{ C_STRUCTS.SDL_version.__size__ }}});
+ {{{ makeSetValue('SDL.version + ' + C_STRUCTS.SDL_version.major, '0', '1', 'i8') }}}
+ {{{ makeSetValue('SDL.version + ' + C_STRUCTS.SDL_version.minor, '0', '3', 'i8') }}}
+ {{{ makeSetValue('SDL.version + ' + C_STRUCTS.SDL_version.patch, '0', '0', 'i8') }}}
}
return SDL.version;
},
@@ -1459,24 +1382,24 @@ var LibrarySDL = {
SDL.allocateChannels(32);
SDL.audio = {
- freq: {{{ makeGetValue('desired', 'SDL.structs.AudioSpec.freq', 'i32', 0, 1) }}},
- format: {{{ makeGetValue('desired', 'SDL.structs.AudioSpec.format', 'i16', 0, 1) }}},
- channels: {{{ makeGetValue('desired', 'SDL.structs.AudioSpec.channels', 'i8', 0, 1) }}},
- samples: {{{ makeGetValue('desired', 'SDL.structs.AudioSpec.samples', 'i16', 0, 1) }}},
- callback: {{{ makeGetValue('desired', 'SDL.structs.AudioSpec.callback', 'void*', 0, 1) }}},
- userdata: {{{ makeGetValue('desired', 'SDL.structs.AudioSpec.userdata', 'void*', 0, 1) }}},
+ freq: {{{ makeGetValue('desired', C_STRUCTS.SDL_AudioSpec.freq, 'i32', 0, 1) }}},
+ format: {{{ makeGetValue('desired', C_STRUCTS.SDL_AudioSpec.format, 'i16', 0, 1) }}},
+ channels: {{{ makeGetValue('desired', C_STRUCTS.SDL_AudioSpec.channels, 'i8', 0, 1) }}},
+ samples: {{{ makeGetValue('desired', C_STRUCTS.SDL_AudioSpec.samples, 'i16', 0, 1) }}},
+ callback: {{{ makeGetValue('desired', C_STRUCTS.SDL_AudioSpec.callback, 'void*', 0, 1) }}},
+ userdata: {{{ makeGetValue('desired', C_STRUCTS.SDL_AudioSpec.userdata, 'void*', 0, 1) }}},
paused: true,
timer: null
};
if (obtained) {
- {{{ makeSetValue('obtained', 'SDL.structs.AudioSpec.freq', 'SDL.audio.freq', 'i32') }}}; // no good way for us to know if the browser can really handle this
- {{{ makeSetValue('obtained', 'SDL.structs.AudioSpec.format', 33040, 'i16') }}}; // float, signed, 16-bit
- {{{ makeSetValue('obtained', 'SDL.structs.AudioSpec.channels', 'SDL.audio.channels', 'i8') }}};
- {{{ makeSetValue('obtained', 'SDL.structs.AudioSpec.silence', makeGetValue('desired', 'SDL.structs.AudioSpec.silence', 'i8', 0, 1), 'i8') }}}; // unclear if browsers can provide this
- {{{ makeSetValue('obtained', 'SDL.structs.AudioSpec.samples', 'SDL.audio.samples', 'i16') }}};
- {{{ makeSetValue('obtained', 'SDL.structs.AudioSpec.callback', 'SDL.audio.callback', '*') }}};
- {{{ makeSetValue('obtained', 'SDL.structs.AudioSpec.userdata', 'SDL.audio.userdata', '*') }}};
+ {{{ makeSetValue('obtained', C_STRUCTS.SDL_AudioSpec.freq, 'SDL.audio.freq', 'i32') }}}; // no good way for us to know if the browser can really handle this
+ {{{ makeSetValue('obtained', C_STRUCTS.SDL_AudioSpec.format, 33040, 'i16') }}}; // float, signed, 16-bit
+ {{{ makeSetValue('obtained', C_STRUCTS.SDL_AudioSpec.channels, 'SDL.audio.channels', 'i8') }}};
+ {{{ makeSetValue('obtained', C_STRUCTS.SDL_AudioSpec.silence, makeGetValue('desired', C_STRUCTS.SDL_AudioSpec.silence, 'i8', 0, 1), 'i8') }}}; // unclear if browsers can provide this
+ {{{ makeSetValue('obtained', C_STRUCTS.SDL_AudioSpec.samples, 'SDL.audio.samples', 'i16') }}};
+ {{{ makeSetValue('obtained', C_STRUCTS.SDL_AudioSpec.callback, 'SDL.audio.callback', '*') }}};
+ {{{ makeSetValue('obtained', C_STRUCTS.SDL_AudioSpec.userdata, 'SDL.audio.userdata', '*') }}};
}
var totalSamples = SDL.audio.samples*SDL.audio.channels;
diff --git a/src/settings.js b/src/settings.js
index 15bca4db..8d9d4634 100644
--- a/src/settings.js
+++ b/src/settings.js
@@ -440,425 +440,11 @@ var DEBUG_TAGS_SHOWING = [];
// A cached set of defines, generated from the header files. This
// lets the emscripten libc (library.js) see the right values.
-// If you modify the headers or use different ones, you will need
-// to override this.
-var C_DEFINES = {
- 'ABDAY_1': '131072',
- 'ABDAY_2': '131073',
- 'ABDAY_3': '131074',
- 'ABDAY_4': '131075',
- 'ABDAY_5': '131076',
- 'ABDAY_6': '131077',
- 'ABDAY_7': '131078',
- 'ABMON_1': '131086',
- 'ABMON_10': '131095',
- 'ABMON_11': '131096',
- 'ABMON_12': '131097',
- 'ABMON_2': '131087',
- 'ABMON_3': '131088',
- 'ABMON_4': '131089',
- 'ABMON_5': '131090',
- 'ABMON_6': '131091',
- 'ABMON_7': '131092',
- 'ABMON_8': '131093',
- 'ABMON_9': '131094',
- 'AF_INET': '2',
- 'AF_INET6': '10',
- 'AF_UNSPEC': '0',
- 'AI_ADDRCONFIG': '32',
- 'AI_ALL': '16',
- 'AI_CANONNAME': '2',
- 'AI_NUMERICHOST': '4',
- 'AI_NUMERICSERV': '1024',
- 'AI_PASSIVE': '1',
- 'AI_V4MAPPED': '8',
- 'ALT_DIGITS': '131119',
- 'AM_STR': '131110',
- 'CLOCKS_PER_SEC': '1000000',
- 'CODESET': '14',
- 'CRNCYSTR': '262159',
- 'DAY_1': '131079',
- 'DAY_2': '131080',
- 'DAY_3': '131081',
- 'DAY_4': '131082',
- 'DAY_5': '131083',
- 'DAY_6': '131084',
- 'DAY_7': '131085',
- 'D_FMT': '131113',
- 'D_T_FMT': '131112',
- 'E2BIG': '7',
- 'EACCES': '13',
- 'EADDRINUSE': '98',
- 'EADDRNOTAVAIL': '99',
- 'EADV': '68',
- 'EAFNOSUPPORT': '97',
- 'EAGAIN': '11',
- 'EAI_BADFLAGS': '-1',
- 'EAI_FAMILY': '-6',
- 'EAI_NONAME': '-2',
- 'EAI_OVERFLOW': '-12',
- 'EAI_SERVICE': '-8',
- 'EAI_SOCKTYPE': '-7',
- 'EALREADY': '114',
- 'EBADE': '52',
- 'EBADF': '9',
- 'EBADFD': '77',
- 'EBADMSG': '74',
- 'EBADR': '53',
- 'EBADRQC': '56',
- 'EBADSLT': '57',
- 'EBFONT': '59',
- 'EBUSY': '16',
- 'ECANCELED': '125',
- 'ECHILD': '10',
- 'ECHRNG': '44',
- 'ECOMM': '70',
- 'ECONNABORTED': '103',
- 'ECONNREFUSED': '111',
- 'ECONNRESET': '104',
- 'EDEADLK': '35',
- 'EDEADLOCK': '35',
- 'EDESTADDRREQ': '89',
- 'EDOM': '33',
- 'EDOTDOT': '73',
- 'EDQUOT': '122',
- 'EEXIST': '17',
- 'EFAULT': '14',
- 'EFBIG': '27',
- 'EHOSTDOWN': '112',
- 'EHOSTUNREACH': '113',
- 'EIDRM': '43',
- 'EILSEQ': '84',
- 'EINPROGRESS': '115',
- 'EINTR': '4',
- 'EINVAL': '22',
- 'EIO': '5',
- 'EISCONN': '106',
- 'EISDIR': '21',
- 'EL2HLT': '51',
- 'EL2NSYNC': '45',
- 'EL3HLT': '46',
- 'EL3RST': '47',
- 'ELIBACC': '79',
- 'ELIBBAD': '80',
- 'ELIBEXEC': '83',
- 'ELIBMAX': '82',
- 'ELIBSCN': '81',
- 'ELNRNG': '48',
- 'ELOOP': '40',
- 'EMFILE': '24',
- 'EMLINK': '31',
- 'EMSGSIZE': '90',
- 'EMULTIHOP': '72',
- 'ENAMETOOLONG': '36',
- 'ENETDOWN': '100',
- 'ENETRESET': '102',
- 'ENETUNREACH': '101',
- 'ENFILE': '23',
- 'ENOANO': '55',
- 'ENOBUFS': '105',
- 'ENOCSI': '50',
- 'ENODATA': '61',
- 'ENODEV': '19',
- 'ENOENT': '2',
- 'ENOEXEC': '8',
- 'ENOLCK': '37',
- 'ENOLINK': '67',
- 'ENOMEDIUM': '123',
- 'ENOMEM': '12',
- 'ENOMSG': '42',
- 'ENONET': '64',
- 'ENOPKG': '65',
- 'ENOPROTOOPT': '92',
- 'ENOSPC': '28',
- 'ENOSR': '63',
- 'ENOSTR': '60',
- 'ENOSYS': '38',
- 'ENOTBLK': '15',
- 'ENOTCONN': '107',
- 'ENOTDIR': '20',
- 'ENOTEMPTY': '39',
- 'ENOTRECOVERABLE': '131',
- 'ENOTSOCK': '88',
- 'ENOTSUP': '95',
- 'ENOTTY': '25',
- 'ENOTUNIQ': '76',
- 'ENXIO': '6',
- 'EOF': '-1',
- 'EOPNOTSUPP': '95',
- 'EOVERFLOW': '75',
- 'EOWNERDEAD': '130',
- 'EPERM': '1',
- 'EPFNOSUPPORT': '96',
- 'EPIPE': '32',
- 'EPROTO': '71',
- 'EPROTONOSUPPORT': '93',
- 'EPROTOTYPE': '91',
- 'ERA': '131116',
- 'ERANGE': '34',
- 'ERA_D_FMT': '131118',
- 'ERA_D_T_FMT': '131120',
- 'ERA_T_FMT': '131121',
- 'EREMCHG': '78',
- 'EREMOTE': '66',
- 'EROFS': '30',
- 'ESHUTDOWN': '108',
- 'ESOCKTNOSUPPORT': '94',
- 'ESPIPE': '29',
- 'ESRCH': '3',
- 'ESRMNT': '69',
- 'ESTALE': '116',
- 'ESTRPIPE': '86',
- 'ETIME': '62',
- 'ETIMEDOUT': '110',
- 'ETOOMANYREFS': '109',
- 'ETXTBSY': '26',
- 'EUNATCH': '49',
- 'EUSERS': '87',
- 'EWOULDBLOCK': '11',
- 'EXDEV': '18',
- 'EXFULL': '54',
- 'FIONREAD': '21531',
- 'FP_INFINITE': '1',
- 'FP_NAN': '0',
- 'FP_NORMAL': '4',
- 'FP_ZERO': '2',
- 'F_DUPFD': '0',
- 'F_GETFD': '1',
- 'F_GETFL': '3',
- 'F_GETLK': '12',
- 'F_GETLK64': '12',
- 'F_GETOWN': '9',
- 'F_SETFD': '2',
- 'F_SETFL': '4',
- 'F_SETLK': '13',
- 'F_SETLK64': '13',
- 'F_SETLKW': '14',
- 'F_SETLKW64': '14',
- 'F_SETOWN': '8',
- 'F_UNLCK': '2',
- 'INADDR_LOOPBACK': '2130706433',
- 'IPPROTO_TCP': '6',
- 'IPPROTO_UDP': '17',
- 'MAP_PRIVATE': '2',
- 'MON_1': '131098',
- 'MON_10': '131107',
- 'MON_11': '131108',
- 'MON_12': '131109',
- 'MON_2': '131099',
- 'MON_3': '131100',
- 'MON_4': '131101',
- 'MON_5': '131102',
- 'MON_6': '131103',
- 'MON_7': '131104',
- 'MON_8': '131105',
- 'MON_9': '131106',
- 'NI_NAMEREQD': '8',
- 'NI_NUMERICHOST': '1',
- 'NOEXPR': '327681',
- 'O_ACCMODE': '2097155',
- 'O_APPEND': '1024',
- 'O_CREAT': '64',
- 'O_EXCL': '128',
- 'O_NOFOLLOW': '131072',
- 'O_RDONLY': '0',
- 'O_RDWR': '2',
- 'O_SYNC': '1052672',
- 'O_TRUNC': '512',
- 'O_WRONLY': '1',
- 'PM_STR': '131111',
- 'POLLERR': '8',
- 'POLLHUP': '16',
- 'POLLIN': '1',
- 'POLLNVAL': '32',
- 'POLLOUT': '4',
- 'POLLPRI': '2',
- 'POLLRDNORM': '64',
- 'RADIXCHAR': '65536',
- 'R_OK': '4',
- 'SEEK_END': '2',
- 'SEEK_SET': '0',
- 'SOCK_DGRAM': '2',
- 'SOCK_STREAM': '1',
- 'S_IALLUGO': '4095',
- 'S_IFBLK': '24576',
- 'S_IFCHR': '8192',
- 'S_IFDIR': '16384',
- 'S_IFIFO': '4096',
- 'S_IFLNK': '40960',
- 'S_IFMT': '61440',
- 'S_IFREG': '32768',
- 'S_IFSOCK': '49152',
- 'S_IRUGO': '292',
- 'S_IRWXO': '7',
- 'S_IRWXUGO': '511',
- 'S_ISVTX': '512',
- 'S_IWUGO': '146',
- 'S_IXUGO': '73',
- 'THOUSEP': '65537',
- 'T_FMT': '131114',
- 'T_FMT_AMPM': '131115',
- 'W_OK': '2',
- 'X_OK': '1',
- 'YESEXPR': '327680',
- '_CS_GNU_LIBC_VERSION': '2',
- '_CS_GNU_LIBPTHREAD_VERSION': '3',
- '_CS_PATH': '0',
- '_CS_POSIX_V6_ILP32_OFF32_CFLAGS': '1116',
- '_CS_POSIX_V6_ILP32_OFF32_LDFLAGS': '1117',
- '_CS_POSIX_V6_ILP32_OFF32_LIBS': '1118',
- '_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS': '1120',
- '_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS': '1121',
- '_CS_POSIX_V6_ILP32_OFFBIG_LIBS': '1122',
- '_CS_POSIX_V6_LP64_OFF64_CFLAGS': '1124',
- '_CS_POSIX_V6_LP64_OFF64_LDFLAGS': '1125',
- '_CS_POSIX_V6_LP64_OFF64_LIBS': '1126',
- '_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS': '1128',
- '_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS': '1129',
- '_CS_POSIX_V6_LPBIG_OFFBIG_LIBS': '1130',
- '_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS': '1',
- '_PC_2_SYMLINKS': '20',
- '_PC_ALLOC_SIZE_MIN': '18',
- '_PC_ASYNC_IO': '10',
- '_PC_CHOWN_RESTRICTED': '6',
- '_PC_FILESIZEBITS': '13',
- '_PC_LINK_MAX': '0',
- '_PC_MAX_CANON': '1',
- '_PC_MAX_INPUT': '2',
- '_PC_NAME_MAX': '3',
- '_PC_NO_TRUNC': '7',
- '_PC_PATH_MAX': '4',
- '_PC_PIPE_BUF': '5',
- '_PC_PRIO_IO': '11',
- '_PC_REC_INCR_XFER_SIZE': '14',
- '_PC_REC_MAX_XFER_SIZE': '15',
- '_PC_REC_MIN_XFER_SIZE': '16',
- '_PC_REC_XFER_ALIGN': '17',
- '_PC_SOCK_MAXBUF': '12',
- '_PC_SYMLINK_MAX': '19',
- '_PC_SYNC_IO': '9',
- '_PC_VDISABLE': '8',
- '_SC_2_CHAR_TERM': '95',
- '_SC_2_C_BIND': '47',
- '_SC_2_C_DEV': '48',
- '_SC_2_FORT_DEV': '49',
- '_SC_2_FORT_RUN': '50',
- '_SC_2_LOCALEDEF': '52',
- '_SC_2_PBS': '168',
- '_SC_2_PBS_ACCOUNTING': '169',
- '_SC_2_PBS_CHECKPOINT': '175',
- '_SC_2_PBS_LOCATE': '170',
- '_SC_2_PBS_MESSAGE': '171',
- '_SC_2_PBS_TRACK': '172',
- '_SC_2_SW_DEV': '51',
- '_SC_2_UPE': '97',
- '_SC_2_VERSION': '46',
- '_SC_ADVISORY_INFO': '132',
- '_SC_AIO_LISTIO_MAX': '23',
- '_SC_AIO_MAX': '24',
- '_SC_AIO_PRIO_DELTA_MAX': '25',
- '_SC_ARG_MAX': '0',
- '_SC_ASYNCHRONOUS_IO': '12',
- '_SC_ATEXIT_MAX': '87',
- '_SC_BARRIERS': '133',
- '_SC_BC_BASE_MAX': '36',
- '_SC_BC_DIM_MAX': '37',
- '_SC_BC_SCALE_MAX': '38',
- '_SC_BC_STRING_MAX': '39',
- '_SC_CHILD_MAX': '1',
- '_SC_CLK_TCK': '2',
- '_SC_CLOCK_SELECTION': '137',
- '_SC_COLL_WEIGHTS_MAX': '40',
- '_SC_CPUTIME': '138',
- '_SC_DELAYTIMER_MAX': '26',
- '_SC_EXPR_NEST_MAX': '42',
- '_SC_FSYNC': '15',
- '_SC_GETGR_R_SIZE_MAX': '69',
- '_SC_GETPW_R_SIZE_MAX': '70',
- '_SC_HOST_NAME_MAX': '180',
- '_SC_IOV_MAX': '60',
- '_SC_IPV6': '235',
- '_SC_JOB_CONTROL': '7',
- '_SC_LINE_MAX': '43',
- '_SC_LOGIN_NAME_MAX': '71',
- '_SC_MAPPED_FILES': '16',
- '_SC_MEMLOCK': '17',
- '_SC_MEMLOCK_RANGE': '18',
- '_SC_MEMORY_PROTECTION': '19',
- '_SC_MESSAGE_PASSING': '20',
- '_SC_MONOTONIC_CLOCK': '149',
- '_SC_MQ_OPEN_MAX': '27',
- '_SC_MQ_PRIO_MAX': '28',
- '_SC_NGROUPS_MAX': '3',
- '_SC_NPROCESSORS_ONLN': '84',
- '_SC_OPEN_MAX': '4',
- '_SC_PAGE_SIZE': '30',
- '_SC_PRIORITIZED_IO': '13',
- '_SC_PRIORITY_SCHEDULING': '10',
- '_SC_RAW_SOCKETS': '236',
- '_SC_READER_WRITER_LOCKS': '153',
- '_SC_REALTIME_SIGNALS': '9',
- '_SC_REGEXP': '155',
- '_SC_RE_DUP_MAX': '44',
- '_SC_RTSIG_MAX': '31',
- '_SC_SAVED_IDS': '8',
- '_SC_SEMAPHORES': '21',
- '_SC_SEM_NSEMS_MAX': '32',
- '_SC_SEM_VALUE_MAX': '33',
- '_SC_SHARED_MEMORY_OBJECTS': '22',
- '_SC_SHELL': '157',
- '_SC_SIGQUEUE_MAX': '34',
- '_SC_SPAWN': '159',
- '_SC_SPIN_LOCKS': '154',
- '_SC_SPORADIC_SERVER': '160',
- '_SC_STREAM_MAX': '5',
- '_SC_SYMLOOP_MAX': '173',
- '_SC_SYNCHRONIZED_IO': '14',
- '_SC_THREADS': '67',
- '_SC_THREAD_ATTR_STACKADDR': '77',
- '_SC_THREAD_ATTR_STACKSIZE': '78',
- '_SC_THREAD_CPUTIME': '139',
- '_SC_THREAD_DESTRUCTOR_ITERATIONS': '73',
- '_SC_THREAD_KEYS_MAX': '74',
- '_SC_THREAD_PRIORITY_SCHEDULING': '79',
- '_SC_THREAD_PRIO_INHERIT': '80',
- '_SC_THREAD_PRIO_PROTECT': '81',
- '_SC_THREAD_PROCESS_SHARED': '82',
- '_SC_THREAD_SAFE_FUNCTIONS': '68',
- '_SC_THREAD_SPORADIC_SERVER': '161',
- '_SC_THREAD_STACK_MIN': '75',
- '_SC_THREAD_THREADS_MAX': '76',
- '_SC_TIMEOUTS': '164',
- '_SC_TIMERS': '11',
- '_SC_TIMER_MAX': '35',
- '_SC_TRACE': '181',
- '_SC_TRACE_EVENT_FILTER': '182',
- '_SC_TRACE_EVENT_NAME_MAX': '242',
- '_SC_TRACE_INHERIT': '183',
- '_SC_TRACE_LOG': '184',
- '_SC_TRACE_NAME_MAX': '243',
- '_SC_TRACE_SYS_MAX': '244',
- '_SC_TRACE_USER_EVENT_MAX': '245',
- '_SC_TTY_NAME_MAX': '72',
- '_SC_TYPED_MEMORY_OBJECTS': '165',
- '_SC_TZNAME_MAX': '6',
- '_SC_V6_ILP32_OFF32': '176',
- '_SC_V6_ILP32_OFFBIG': '177',
- '_SC_V6_LP64_OFF64': '178',
- '_SC_V6_LPBIG_OFFBIG': '179',
- '_SC_VERSION': '29',
- '_SC_XBS5_ILP32_OFF32': '125',
- '_SC_XBS5_ILP32_OFFBIG': '126',
- '_SC_XBS5_LP64_OFF64': '127',
- '_SC_XBS5_LPBIG_OFFBIG': '128',
- '_SC_XOPEN_CRYPT': '92',
- '_SC_XOPEN_ENH_I18N': '93',
- '_SC_XOPEN_LEGACY': '129',
- '_SC_XOPEN_REALTIME': '130',
- '_SC_XOPEN_REALTIME_THREADS': '131',
- '_SC_XOPEN_SHM': '94',
- '_SC_XOPEN_STREAMS': '246',
- '_SC_XOPEN_UNIX': '91',
- '_SC_XOPEN_VERSION': '89'
-};
+// The list of defines was moved into struct_info.json in the same directory.
+// That file is automatically parsed by tools/gen_struct_info.py.
+// If you modify the headers, just clear your cache and emscripten libc should see
+// the new values.
+// NOTE: Right now this value is ignored.
+// TODO: See compiler.js (Should this var be deprecated?)
+var C_DEFINES = {};
diff --git a/src/struct_info.json b/src/struct_info.json
index 5b969603..2b095a8c 100644
--- a/src/struct_info.json
+++ b/src/struct_info.json
@@ -1,4 +1,7 @@
[
+ // ===========================================
+ // libc
+ // ===========================================
{
"file": "libc/dirent.h",
"defines": [],
@@ -818,5 +821,193 @@
"MAP_PRIVATE"
],
"structs": {}
+ },
+
+ // ===========================================
+ // SDL
+ // ===========================================
+ {
+ "file": "SDL/SDL_rect.h",
+ "defines": [],
+ "structs": {
+ "SDL_Rect": [
+ "x",
+ "y",
+ "w",
+ "h"
+ ]
+ }
+ },
+ {
+ "file": "SDL/SDL_keyboard.h",
+ "defines": [],
+ "structs": {
+ "SDL_Keysym": [
+ "scancode",
+ "sym",
+ "mod",
+ "unicode"
+ ]
+ }
+ },
+ {
+ "file": "SDL/SDL_pixels.h",
+ "defines": [],
+ "structs": {
+ "SDL_Palette": [
+ "ncolors",
+ "colors",
+ "version",
+ "refcount"
+ ],
+ "SDL_PixelFormat": [
+ "format",
+ "palette",
+ "BitsPerPixel",
+ "BytesPerPixel",
+ "padding",
+ "Rmask",
+ "Gmask",
+ "Bmask",
+ "Amask",
+ "Rloss",
+ "Gloss",
+ "Bloss",
+ "Aloss",
+ "Rshift",
+ "Gshift",
+ "Bshift",
+ "Ashift",
+ "refcount",
+ "next"
+ ],
+ "SDL_Color": [
+ "r",
+ "g",
+ "b",
+ "unused"
+ ]
+ }
+ },
+ {
+ "file": "SDL/SDL_events.h",
+ "defines": [],
+ "structs": {
+ "SDL_KeyboardEvent": [
+ "type",
+ "windowID",
+ "state",
+ "repeat",
+ "padding2",
+ "padding3",
+ "keysym"
+ ],
+ "SDL_TextInputEvent": [
+ "type",
+ "windowID",
+ "text"
+ ],
+ "SDL_MouseMotionEvent": [
+ "type",
+ "windowID",
+ "state",
+ "padding1",
+ "padding2",
+ "padding3",
+ "x",
+ "y",
+ "xrel",
+ "yrel"
+ ],
+ "SDL_MouseButtonEvent": [
+ "type",
+ "windowID",
+ "button",
+ "state",
+ "padding1",
+ "padding2",
+ "x",
+ "y"
+ ],
+ "SDL_ResizeEvent": [
+ "type",
+ "w",
+ "h"
+ ]
+ }
+ },
+ {
+ "file": "SDL_audio.h",
+ "defines": [
+ "SDL_AUDIO_MASK_BITSIZE",
+ "SDL_AUDIO_MASK_DATATYPE",
+ "SDL_AUDIO_MASK_ENDIAN",
+ "SDL_AUDIO_MASK_SIGNED",
+ "AUDIO_U8",
+ "AUDIO_S8",
+ "AUDIO_U16LSB",
+ "AUDIO_S16LSB",
+ "AUDIO_U16MSB",
+ "AUDIO_S16MSB",
+ "AUDIO_U16",
+ "AUDIO_S16",
+ "AUDIO_S32LSB",
+ "AUDIO_S32MSB",
+ "AUDIO_S32",
+ "AUDIO_F32LSB",
+ "AUDIO_F32MSB",
+ "AUDIO_F32",
+ "AUDIO_U16SYS",
+ "AUDIO_S16SYS",
+ "AUDIO_S32SYS",
+ "AUDIO_F32SYS",
+ "SDL_AUDIO_ALLOW_FREQUENCY_CHANGE",
+ "SDL_AUDIO_ALLOW_FORMAT_CHANGE",
+ "SDL_AUDIO_ALLOW_CHANNELS_CHANGE",
+ "SDL_AUDIO_ALLOW_ANY_CHANGE",
+ "SDL_MIX_MAXVOLUME"
+ ],
+ "structs": {
+ "SDL_AudioCVT": [
+ "needed",
+ "src_format",
+ "dst_format",
+ "rate_incr",
+ "buf",
+ "len",
+ "len_cvt",
+ "len_mult",
+ "len_ratio",
+ "filters",
+ "filter_index"
+ ],
+ "SDL_AudioSpec": [
+ "freq",
+ "format",
+ "channels",
+ "silence",
+ "samples",
+ "padding",
+ "size",
+ "callback",
+ "userdata"
+ ]
+ }
+ },
+ {
+ "file": "SDL_version.h",
+ "defines": [
+ "SDL_MAJOR_VERSION",
+ "SDL_MINOR_VERSION",
+ "SDL_PATCHLEVEL",
+ "SDL_COMPILEDVERSION"
+ ],
+ "structs": {
+ "SDL_version": [
+ "major",
+ "minor",
+ "patch"
+ ]
+ }
}
]
diff --git a/tools/gen_struct_info.py b/tools/gen_struct_info.py
index 203a18ec..ccc4aee6 100644
--- a/tools/gen_struct_info.py
+++ b/tools/gen_struct_info.py
@@ -226,7 +226,7 @@ else:
walker.structs = resolve_delayed(walker.structs)
with open(path, 'r') as stream:
- defines = re.findall(r'(?:^|\n)#define\s+([A-Z|_]+)\s.*', stream.read())
+ defines = re.findall(r'(?:^|\n)\s*#define\s+([A-Z|_|0-9]+)\s.*', stream.read())
return {
'file': path,
diff --git a/tools/shared.py b/tools/shared.py
index 76802eaa..554813ee 100644
--- a/tools/shared.py
+++ b/tools/shared.py
@@ -1452,7 +1452,7 @@ class Building:
Cache.ensure()
import gen_struct_info
- gen_struct_info.main(['-o', info_path, path_from_root('src/struct_info.json')])
+ gen_struct_info.main(['-qo', info_path, path_from_root('src/struct_info.json')])
@staticmethod
def preprocess(infile, outfile):