diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/library_sdl.js | 187 | ||||
| -rw-r--r-- | src/settings.js | 428 | ||||
| -rw-r--r-- | src/struct_info.json | 191 | 
3 files changed, 253 insertions, 553 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" +            ] +        }      }  ]  | 
