diff options
author | ngld <ngld@tproxy.de> | 2013-09-17 00:44:38 +0200 |
---|---|---|
committer | ngld <ngld@tproxy.de> | 2013-09-17 00:44:38 +0200 |
commit | 29a62bd92e056800c7bf8f91fbe4c9fc948bf035 (patch) | |
tree | 27653cf2a0f62ac79e448523d9a098f21dde4751 | |
parent | 1600df2e360d0bbfd9195b3523dd3d0b440fe62a (diff) |
Updated library_sdl.js
-rw-r--r-- | src/library_sdl.js | 187 | ||||
-rw-r--r-- | src/settings.js | 428 | ||||
-rw-r--r-- | src/struct_info.json | 191 | ||||
-rw-r--r-- | tools/gen_struct_info.py | 2 | ||||
-rw-r--r-- | tools/shared.py | 2 |
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): |