Changeset 20896

Show
Ignore:
Timestamp:
10/07/08 17:37:38 (6 weeks ago)
Author:
fujidig
Message:

getstr を実装

Location:
lang/javascript/hsp-on-js/trunk/src
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/hsp-on-js/trunk/src/builtin-funcs.js

    r20704 r20896  
    285285                v.setbyte(offset + 2, val >> 16); 
    286286                v.setbyte(offset + 3, val >> 24); 
     287        }, 
     288        0x1d: function getstr(v, src, index, separator, length) { 
     289                this.scanArgs(arguments, 'vvNNN'); 
     290                index = index ? index.toIntValue()._value : 0; 
     291                separator = separator ? separator.toIntValue()._value & 0xff : 0; 
     292                length = length ? length.toIntValue()._value : 1024; 
     293                var result = ""; 
     294                var i = 0; 
     295                var c; 
     296                while(i < length) { 
     297                        c = src.getbyte(index + i); 
     298                        if(c == 0) break; 
     299                        i ++; 
     300                        if(c == separator) { 
     301                                break; 
     302                        } 
     303                        if(c == 13) { 
     304                                if(src.getbyte(index + i) == 10) i ++; 
     305                                break; 
     306                        } 
     307                        result += String.fromCharCode(c); 
     308                        if((0x81 <= c && c <= 0x9F) || (0xE0 <= c && c <= 0xFC)) { 
     309                                result += String.fromCharCode(src.getbyte(index + i)); 
     310                                i ++; 
     311                        } 
     312                } 
     313                v.assign(new StrValue(result)); 
     314                this.strsize = new IntValue(i); 
     315                this.stat.assign(0, new IntValue(c)); 
    287316        }, 
    288317        0x20: function memcpy(destVar, srcVar, length, destOffset, srcOffset) { 
  • lang/javascript/hsp-on-js/trunk/src/run-in-shell.js

    r20845 r20896  
    2121function main(){ 
    2222        var data = [ 
    23 '\x48\x53\x50\x33\x01\x03\x00\x00\x05\x00\x00\x00\x87\x01\x00\x00', 
    24 '\x60\x00\x00\x00\xc6\x00\x00\x00\x26\x01\x00\x00\x25\x00\x00\x00', 
    25 '\x4b\x01\x00\x00\x08\x00\x00\x00\x53\x01\x00\x00\x34\x00\x00\x00', 
    26 '\x87\x01\x00\x00\x00\x00\x00\x00\x87\x01\x00\x00\x00\x00\x00\x00', 
    27 '\x87\x01\x00\x00\x00\x00\x00\x00\x87\x01\x00\x00\x00\x00\x00\x00', 
    28 '\x87\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 
    29 '\x09\x20\x0f\x00\x02\x00\x06\x00\x01\x20\x00\x00\x00\x00\x08\x00', 
    30 '\x04\x80\x20\xa1\x07\x00\x0f\x20\x0a\x00\x01\x00\x01\x00\x01\x40', 
    31 '\x00\x00\x04\x00\x01\x00\x00\x00\x00\x00\x08\x20\x21\x00\x01\x00', 
    32 '\x01\x00\x04\x40\x2a\x00\x01\x40\x00\x00\x09\x20\x0f\x00\x02\x00', 
    33 '\x0e\x00\x01\x20\x02\x00\x00\x00\x08\x00\x0d\x00\x08\x00\x00\x00', 
    34 '\x28\x00\x04\x80\xff\xff\xff\xff\x00\x00\x29\x00\x0f\x20\x04\x00', 
    35 '\x07\x00\x00\x00\x04\x00\x64\x00\x01\x20\x03\x00\x00\x00\x08\x00', 
    36 '\x0d\x00\x02\x00\x00\x00\x28\x00\x01\x00\x01\x00\x00\x00\x29\x00', 
    37 '\x0f\x20\x05\x00\x01\x20\x04\x00\x00\x00\x08\x00\x0d\x00\x08\x00', 
    38 '\x00\x00\x28\x00\x04\x80\xff\xff\xff\xff\x00\x00\x29\x00\x09\x20', 
    39 '\x0f\x00\x0d\x00\x00\x00\x00\x00\x28\x00\x01\x00\x04\x00\x01\x00', 
    40 '\x02\x00\x00\x00\x01\x00\x00\x00\x29\x00\x0f\x20\x11\x00\x0f\x20', 
    41 '\x00\x00\x07\x00\x01\x00\x74\x2e\x68\x73\x70\x00\x70\x72\x65\x70', 
    42 '\x61\x72\x65\x00\x73\x74\x61\x72\x74\x00\x73\x69\x7a\x65\x00\x61', 
    43 '\x00\x73\x74\x00\x6c\x65\x6e\x00\x65\x64\x00\x42\x00\x00\x00\x5d', 
    44 '\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x04\x07\x0a\x08\x04\x0d', 
    45 '\x06\x0c\x02\x0d\x0e\x00\x06\xfd\x14\x00\x00\x00\x00\xfd\x19\x00', 
    46 '\x00\x01\x00\xfd\x1b\x00\x00\x02\x00\xfd\x1e\x00\x00\x03\x00\xfd', 
    47 '\x22\x00\x00\x04\x00\xff\xff' 
     23'\x48\x53\x50\x33\x01\x03\x00\x00\x03\x00\x00\x00\x4b\x01\x00\x00', 
     24'\x60\x00\x00\x00\x88\x00\x00\x00\xe8\x00\x00\x00\x34\x00\x00\x00', 
     25'\x1c\x01\x00\x00\x08\x00\x00\x00\x24\x01\x00\x00\x27\x00\x00\x00', 
     26'\x4b\x01\x00\x00\x00\x00\x00\x00\x4b\x01\x00\x00\x00\x00\x00\x00', 
     27'\x4b\x01\x00\x00\x00\x00\x00\x00\x4b\x01\x00\x00\x00\x00\x00\x00', 
     28'\x4b\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 
     29'\x01\x20\x00\x00\x00\x00\x08\x00\x02\x00\x06\x00\x01\x20\x01\x00', 
     30'\x00\x00\x08\x00\x04\x00\x00\x00\x0f\x20\x04\x00\x07\x00\x00\x00', 
     31'\x04\x00\x04\x00\x08\x20\x1d\x00\x01\x00\x02\x00\x01\x40\x00\x00', 
     32'\x01\x40\x01\x00\x04\x40\x2c\x00\x01\x20\x01\x00\x00\x00\x00\x00', 
     33'\x0e\x00\x06\x00\x09\x20\x0f\x00\x02\x00\x12\x00\x01\x00\x02\x00', 
     34'\x00\x00\x00\x00\x09\x20\x0f\x00\x02\x00\x18\x00\x0e\x00\x06\x00', 
     35'\x00\x00\x00\x00\x09\x20\x0f\x00\x02\x00\x23\x00\x0e\x00\x03\x00', 
     36'\x00\x00\x00\x00\x09\x20\x0f\x00\x0f\x20\x05\x00\x0f\x20\x11\x00', 
     37'\x0f\x20\x00\x00\x07\x00\x01\x00\x74\x2e\x68\x73\x70\x00\x41\x42', 
     38'\x43\x2c\x44\x45\x46\x2c\x45\x46\x47\x00\x6c\x6e\x20\x3d\x20\x00', 
     39'\x73\x74\x72\x73\x69\x7a\x65\x20\x3d\x20\x00\x73\x74\x61\x74\x20', 
     40'\x3d\x20\x00\x62\x75\x66\x00\x69\x00\x6c\x6e\x00\x3e\x00\x00\x00', 
     41'\x3e\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x00\x06\x06\x00\x06\x0a', 
     42'\x06\x08\x08\x08\x02\x02\x06\xfd\x2b\x00\x00\x00\x00\xfd\x2f\x00', 
     43'\x00\x01\x00\xfd\x31\x00\x00\x02\x00\xff\xff' 
    4844        ].join(''); 
    4945 
  • lang/javascript/hsp-on-js/trunk/src/str-value.js

    r20687 r20896  
    77} 
    88 
     9StrValue.prototype = new Value; 
     10 
    911StrValue.EMPTY_STR = new StrValue(''); 
    1012StrValue.of = function of(str) { 
     
    1416        return new StrValue(str); 
    1517} 
    16  
    17 StrValue.prototype = new Value; 
    1818 
    1919Utils.objectExtend(StrValue.prototype, { 
  • lang/javascript/hsp-on-js/trunk/src/t.hsp

    r20845 r20896  
    1 mes "prepare" 
    2 size = 500000 
    3 sdim a, size + 1 
    4 memset a, '*', size 
    5 mes "start" 
    6 st = gettime(-1) 
    7 repeat 100 
    8         len = strlen(a) 
     1buf = "ABC,DEF,EFG" 
     2i = 0 
     3 
     4repeat 4 
     5        getstr ln, buf, i, ',' 
     6        i += strsize 
     7        mes "ln = " + ln 
     8        mes "strsize = " + strsize 
     9        mes "stat = " + stat 
     10        mes 
    911loop 
    10 ed = gettime(-1) 
    11 mes int(ed - st) 
    12