aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormax99x <max99x@gmail.com>2011-07-30 16:12:36 +0300
committermax99x <max99x@gmail.com>2011-07-30 16:12:36 +0300
commitee54249f11b9e4048dfc459bd8e432617c81d4e1 (patch)
tree31fbaebf1bb090e40c4d7767e76be00f691b4c61 /src
parentaf695b99f5e5308a27c19b956489a702461683da (diff)
Fixed ctype.h implementation; added test for it.
Diffstat (limited to 'src')
-rw-r--r--src/library.js74
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;
},