diff options
author | max99x <max99x@gmail.com> | 2011-07-30 16:12:36 +0300 |
---|---|---|
committer | max99x <max99x@gmail.com> | 2011-07-30 16:12:36 +0300 |
commit | ee54249f11b9e4048dfc459bd8e432617c81d4e1 (patch) | |
tree | 31fbaebf1bb090e40c4d7767e76be00f691b4c61 /src | |
parent | af695b99f5e5308a27c19b956489a702461683da (diff) |
Fixed ctype.h implementation; added test for it.
Diffstat (limited to 'src')
-rw-r--r-- | src/library.js | 74 |
1 files changed, 64 insertions, 10 deletions
diff --git a/src/library.js b/src/library.js index 87879856..0342dbb4 100644 --- a/src/library.js +++ b/src/library.js @@ -3701,14 +3701,13 @@ LibraryManager.library = { return chr == ' '.charCodeAt(0) || chr == '\t'.charCodeAt(0); }, iscntrl: function(chr) { - return (chr >= 0 && chr <= 0x1F) || chr === 0x7F; + return (0 <= chr && chr <= 0x1F) || chr === 0x7F; }, - isprint__deps: ['iscntrl'], isprint: function(chr) { - return !_iscntrl(chr); + return 0x1F < chr && chr < 0x7F; }, isgraph: 'isprint', - // Lookup table for glibc ctype implementation. + // Lookup tables for glibc ctype implementation. __ctype_b_loc: function() { // http://refspecs.freestandards.org/LSB_3.0.0/LSB-Core-generic/LSB-Core-generic/baselib---ctype-b-loc.html var me = ___ctype_b_loc; @@ -3732,12 +3731,67 @@ LibraryManager.library = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0 ]; - me.ret = allocate([allocate(values, 'i16', ALLOC_STATIC)+256], 'void*', ALLOC_STATIC); -#if USE_TYPED_ARRAYS == 0 - assert(HEAP[HEAP[me.ret]] == 2); - assert(HEAP[HEAP[me.ret]-2] == 0); - assert(HEAP[HEAP[me.ret]+18] == 8195); -#endif + var i16size = {{{ Runtime.getNativeFieldSize('i16') }}}; + var arr = _malloc(values.length * i16size); + for (var i = 0; i < values.length; i++) { + {{{ makeSetValue('arr', 'i * i16size', 'values[i]', 'i16') }}} + } + me.ret = allocate([arr + 128 * i16size], 'i16*', ALLOC_STATIC); + } + return me.ret; + }, + __ctype_tolower_loc: function() { + // http://refspecs.freestandards.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/libutil---ctype-tolower-loc.html + var me = ___ctype_tolower_loc; + if (!me.ret) { + var values = [ + 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157, + 158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187, + 188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217, + 218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247, + 248,249,250,251,252,253,254,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32, + 33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,97,98,99,100,101,102,103, + 104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,91,92,93,94,95,96,97,98,99,100,101,102,103, + 104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133, + 134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163, + 164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193, + 194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, + 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253, + 254,255 + ]; + var i32size = {{{ Runtime.getNativeFieldSize('i32') }}}; + var arr = _malloc(values.length * i32size); + for (var i = 0; i < values.length; i++) { + {{{ makeSetValue('arr', 'i * i32size', 'values[i]', 'i32') }}} + } + me.ret = allocate([arr + 128 * i32size], 'i32*', ALLOC_STATIC); + } + return me.ret; + }, + __ctype_toupper_loc: function() { + // http://refspecs.freestandards.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/libutil---ctype-toupper-loc.html + var me = ___ctype_toupper_loc; + if (!me.ret) { + var values = [ + 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157, + 158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187, + 188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217, + 218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247, + 248,249,250,251,252,253,254,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32, + 33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72, + 73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80, + 81,82,83,84,85,86,87,88,89,90,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144, + 145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174, + 175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204, + 205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234, + 235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 + ]; + var i32size = {{{ Runtime.getNativeFieldSize('i32') }}}; + var arr = _malloc(values.length * i32size); + for (var i = 0; i < values.length; i++) { + {{{ makeSetValue('arr', 'i * i32size', 'values[i]', 'i32') }}} + } + me.ret = allocate([arr + 128 * i32size], 'i32*', ALLOC_STATIC); } return me.ret; }, |