Changeset 447

Show
Ignore:
Timestamp:
08/08/07 04:40:40 (1 year ago)
Author:
krobillard
Message:

ur_makeBinary() now takes pointer argument.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/thune/thread_safe/encoding.c

    r387 r447  
    8787                    case UR_ENC_UTF16: 
    8888                        count >>= 1; 
    89                         strN = ur_makeBinary( count );  
    90                         bin = ur_binPtr( strN ); 
     89                        strN = ur_makeBinary( count, &bin );  
    9190                        bin->used = copyUtf16ToAscii( bin->ptr.c, 
    9291                                                      (uint16_t*) cpA, count ); 
     
    114113                { 
    115114                    case UR_ENC_ASCII: 
    116                         strN = ur_makeBinary( count * 2 );  
    117                         bin = ur_binPtr( strN ); 
     115                        strN = ur_makeBinary( count * 2, &bin );  
    118116                        bin->used = copyAsciiToUtf16( bin->ptr.u16, 
    119117                                                      cpA, count ); 
  • branches/thune/thread_safe/eval.c

    r442 r447  
    12421242                UString* str; 
    12431243 
    1244                 binN = ur_makeBinary( 0 ); 
    1245                 str  = ur_binPtr( binN ); 
     1244                binN = ur_makeBinary( 0, &str ); 
    12461245 
    12471246                ur_toStr( val, str, 0 ); 
     
    16441643    if( ! ur_is(tos, UT_STRING) ) 
    16451644    { 
    1646         UIndex strN = ur_makeBinary( 0 ); 
    1647         ur_toStrNatural( ut, tos, ur_binPtr(strN), 0 ); 
     1645        UString* bin; 
     1646        UIndex strN = ur_makeBinary( 0, &bin ); 
     1647        ur_toStrNatural( ut, tos, bin, 0 ); 
    16481648        ur_initString(tos, strN, 0); 
    16491649    } 
  • branches/thune/thread_safe/files.c

    r439 r447  
    386386                } 
    387387 
    388                 binN = ur_makeBinary( size /*+ OR_CTERM_LEN*/ ); 
    389                 buf = ur_binPtr( binN ); 
     388                binN = ur_makeBinary( size /*+ OR_CTERM_LEN*/, &buf ); 
    390389 
    391390                fp = fileOpen( fn, FILE_READ_BINARY ); 
     
    669668            blen = len + (len / 99) + 600; 
    670669 
    671             binN = ur_makeBinary( blen /*+ 4*/ ); 
    672             bin = ur_binPtr( binN ); 
     670            binN = ur_makeBinary( blen /*+ 4*/, &bin ); 
    673671 
    674672            if( len > 0 ) 
     
    725723        strm.avail_in  = len; 
    726724 
    727         strN = ur_makeBinary( (len < BUF_LOW) ? BUF_LOW : len ); 
    728         str = ur_binPtr(strN); 
     725        strN = ur_makeBinary( (len < BUF_LOW) ? BUF_LOW : len, &str ); 
    729726        strm.next_out  = str->ptr.c; 
    730727        strm.avail_out = str->avail; 
     
    825822                UBinary* bin; 
    826823 
    827                 binN = ur_makeBinary( 20 ); 
    828                 bin = ur_binPtr( binN ); 
     824                binN = ur_makeBinary( 20, &bin ); 
    829825                bin->used = 20; 
    830826 
  • branches/thune/thread_safe/make.c

    r445 r447  
    115115  Size is the number of bytes to reserve.  Used is set to 0. 
    116116*/ 
    117 UIndex ur_makeBinaryT( UThread* ut, int size
     117UIndex ur_makeBinaryT( UThread* ut, int size, UBinary** binPtr
    118118{ 
    119119    UBinary* ptr; 
     
    148148 
    149149    ur_arrayInit( ptr, sizeof(char), size ); 
     150    if( binPtr ) 
     151        *binPtr = ptr; 
    150152    return ur_binN( ptr ); 
    151153} 
     
    167169 
    168170        size = cpB - cpA; 
    169         binN = ur_makeBinary( size ); 
     171        binN = ur_makeBinary( size, &bin ); 
    170172        if( size ) 
    171173        { 
    172             bin = ur_binPtr( binN ); 
    173174            memCpy( bin->ptr.b, cpA, size ); 
    174175            bin->used = size; 
     
    627628    if( len == 0 ) 
    628629    { 
    629         return ur_makeBinary( 0 ); 
     630        return ur_makeBinary( 0, 0 ); 
    630631    } 
    631632 
     
    638639    } 
    639640 
    640     strN = ur_makeBinary( len + UR_CTERM_LEN ); 
    641     str = ur_binPtr( strN ); 
     641    strN = ur_makeBinary( len + UR_CTERM_LEN, &str ); 
    642642 
    643643    cp  = txt; 
     
    685685    UArray* bin; 
    686686 
    687     binN = ur_makeBinary( size * sizeof(int32_t) ); 
    688     bin = ur_binPtr( binN ); 
     687    binN = ur_makeBinary( size * sizeof(int32_t), &bin ); 
    689688    bin->avail /= sizeof(int32_t); 
    690689 
     
    903902            bits = bin->ptr.b; 
    904903 
    905             binN = ur_makeBinary( bin->used ); 
    906             bin  = ur_binPtr( binN ); 
     904            binN = ur_makeBinary( bin->used, &bin ); 
    907905            bin->used = len; 
    908906            memCpy( bin->ptr.b, bits, len ); 
     
    914912    } 
    915913 
    916     binN = ur_makeBinary( len ); 
    917     bin = ur_binPtr( binN ); 
     914    binN = ur_makeBinary( len, &bin ); 
    918915    bin->used = len; 
    919916    bits = bin->ptr.b; 
     
    16151612 
    16161613        case UT_BINARY: 
     1614        { 
     1615            UIndex binN; 
     1616            UBinary* bin; 
     1617 
    16171618            if( ur_is(tos, UT_INT) ) 
    16181619            { 
    1619                 UIndex binN; 
    1620                 binN = ur_makeBinary( ur_int(tos) ); 
     1620                binN = ur_makeBinary( ur_int(tos), &bin ); 
    16211621 
    16221622                if( argc == 2 ) 
    16231623                { 
    1624                     UBinary* bin = ur_binPtr( binN ); 
    16251624                    int32_t n = ur_int( ur_s_prev(tos) ); 
    16261625                    bin->used = ur_int(tos); 
     
    16471646                    } 
    16481647                } 
    1649  
    1650                 ur_initType(res, UT_BINARY); 
    1651                 ur_setSeries(res, binN, 0); 
     1648                goto init_bin; 
    16521649            } 
    16531650            else if( ur_stringSlice(ut, tos, &spA, &spB) ) 
    16541651            { 
    1655                 UIndex binN; 
    1656                 binN = ur_makeBinary( 0 ); 
     1652                binN = ur_makeBinary( 0, &bin ); 
    16571653                if( spA ) 
    1658                     ur_readBinary( ur_binPtr( binN ), spA, spB ); 
    1659                 ur_initType(res, UT_BINARY); 
    1660                 ur_setSeries(res, binN, 0); 
    1661             } 
     1654                    ur_readBinary( bin, spA, spB ); 
     1655init_bin: 
     1656                ur_initBinary(res, binN, 0); 
     1657            } 
     1658        } 
    16621659            break; 
    16631660 
    16641661        case UT_STRING: 
     1662        { 
     1663            UIndex binN; 
     1664 
    16651665            if( ur_is(tos, UT_INT) ) 
    16661666            { 
    1667                 UIndex binN; 
    1668                 binN = ur_makeBinary( ur_int(tos) ); 
    1669                 ur_initType(res, UT_STRING); 
    1670                 //ur_setEncoding(res, UR_ENC_ASCII); 
    1671                 ur_setSeries(res, binN, 0); 
     1667                binN = ur_makeBinary( ur_int(tos), 0 ); 
     1668                goto init_str; 
    16721669            } 
    16731670            else if( ur_is(tos, UT_BLOCK) ) 
    16741671            { 
    1675                 UIndex binN; 
    16761672                UString* str; 
    1677                 
    1678                 binN = ur_makeBinary(0); 
    1679                 str  = ur_binPtr(binN); 
    1680  
     1673                binN = ur_makeBinary(0, &str); 
    16811674                ur_toStr( tos, str, 0 ); 
    1682  
    1683                 ur_initType(res, UT_STRING); 
    1684                 //ur_setEncoding(res, UR_ENC_ASCII); 
    1685                 ur_setSeries(res, binN, 0); 
     1675                goto init_str; 
    16861676            } 
    16871677            else if( ur_stringSlice(ut, tos, &spA, &spB) ) 
    16881678            { 
    1689                 UIndex binN; 
    1690  
    16911679                if( spA ) 
    16921680                    binN = ur_makeString( spA, spB - spA ); 
    16931681                else 
    1694                     binN = ur_makeBinary( 0 ); 
    1695  
    1696                 ur_initType(res, UT_STRING); 
    1697                 //ur_setEncoding(res, UR_ENC_ASCII); 
    1698                 ur_setSeries(res, binN, 0); 
    1699             } 
     1682                    binN = ur_makeBinary( 0, 0 ); 
     1683init_str: 
     1684                ur_initString( res, binN, 0 ); 
     1685            } 
     1686        } 
    17001687            break; 
    17011688 
  • branches/thune/thread_safe/net.c

    r389 r447  
    258258        { 
    259259            UIndex binN; 
     260            UBinary* bin; 
    260261 
    261262            ur_initType(val, UT_INT);       // SV_FD 
    262263            ur_int(val) = socket; 
    263264 
    264             binN = ur_makeBinary( sizeof(struct sockaddr) ); 
     265            binN = ur_makeBinary( sizeof(struct sockaddr), &bin ); 
    265266            if( spec ) 
    266267            { 
    267                 UBinary* bin = ur_binPtr( binN ); 
    268268                bin->used = sizeof(addr); 
    269269                memCpy( bin->ptr.v, &addr, sizeof(addr) ); 
  • branches/thune/thread_safe/series.c

    r446 r447  
    22452245{ 
    22462246    UBinary* orig; 
     2247    UBinary* copy; 
    22472248    UIndex copyN; 
    22482249    int len; 
     
    22552256        len = part; 
    22562257 
    2257     copyN = ur_makeBinary( len * elemSize ); 
     2258    copyN = ur_makeBinary( len * elemSize, &copy ); 
    22582259    if( len > 0 ) 
    22592260    { 
    2260         UBinary* copy = ur_binPtr( copyN ); 
    22612261        memCpy( copy->ptr.b, 
    22622262                orig->ptr.b + (val->series.it * elemSize), 
  • branches/thune/thread_safe/thread.c

    r431 r447  
    7171 
    7272        { 
    73         UIndex binN = ur_makeBinary( 0 ); 
     73        UIndex binN = ur_makeBinary( 0, 0 ); 
    7474        assert( binN == BIN_THREAD_TMP ); 
    7575        //ur_hold( ut, UT_BINARY, binN );       // Hardcoded in recycle 
     
    238238    //(void) exceptionType; 
    239239 
    240     strN = ur_makeBinary( MAX_ERR_LEN ); 
    241     str = ur_binPtr( strN ); 
     240    strN = ur_makeBinary( MAX_ERR_LEN, &str ); 
    242241 
    243242    va_start( arg, fmt ); 
  • branches/thune/thread_safe/tokenize.c

    r442 r447  
    839839                if( ch == '}' ) 
    840840                { 
     841                    UBinary* bin; 
     842 
    841843                    if( tn & 1 ) 
    842844                        goto binary_err; 
    843845 
    844                     tn = ur_makeBinary( 0 ); 
    845                     ur_readBinary( ur_binPtr(tn), token + 2, it ); 
     846                    tn = ur_makeBinary( 0, &bin ); 
     847                    ur_readBinary( bin, token + 2, it ); 
    846848 
    847849                    cell = ur_appendCell( BLOCK, UT_BINARY ); 
  • branches/thune/thread_safe/unix/os.c

    r432 r447  
    7373        assert( len > 0 ); 
    7474 
    75         binN = ur_makeBinary( len + 1 ); 
    76         str = ur_binPtr( binN ); 
     75        binN = ur_makeBinary( len + 1, &str ); 
    7776        str->used = len; 
    7877        memCpy( str->ptr.c, tmp, len ); 
  • branches/thune/thread_safe/urlan.c

    r442 r447  
    668668    ur_pushContext( ut, (UCell*) &ur_thrGlobal ); 
    669669 
    670     ur_makeBinary( 0 );       // 0 - BIN_THREAD_TMP 
     670    ur_makeBinary( 0, 0 );       // 0 - BIN_THREAD_TMP 
    671671} 
    672672 
  • branches/thune/thread_safe/urlan.h

    r442 r447  
    548548UCell*  ur_makePort( UThread*, UPortDevice* dev, UCell* res ); 
    549549UIndex  ur_makeBlockT( UThread*, int size, UBlock** ptr ); 
    550 UIndex  ur_makeBinaryT( UThread*, int size ); 
     550UIndex  ur_makeBinaryT( UThread*, int size, UBinary** ptr ); 
    551551UIndex  ur_makeBinaryFrom( UThread*, const UCell* ); 
    552552UIndex  ur_makeStringT( UThread*, const char* txt, int len ); 
     
    615615 
    616616#define ur_makeBlock(size)              ur_makeBlockT(ut,size,0)     
    617 #define ur_makeBinary(size)             ur_makeBinaryT(ut,size
     617#define ur_makeBinary(size,ptr)         ur_makeBinaryT(ut,size,ptr
    618618#define ur_makeString(txt,len)          ur_makeStringT(ut,txt,len) 
    619619#define ur_makeVector(size,ptr)         ur_makeVectorT(ut,size,ptr) 
     
    664664 
    665665#define ur_setSeries(c,sn,sit) \ 
    666     (c)->series.n = sn; \ 
    667     (c)->series.it = sit 
     666    (c)->series.n = sn; \ 
     667    (c)->series.it = sit; 
    668668 
    669669#define ur_bindType(c)      (c->word.flags & UR_FLAG_BIND_MASK) 
  • branches/thune/thread_safe/win32/os.c

    r439 r447  
    6868        assert( len > 0 ); 
    6969 
    70         binN = ur_makeBinary( len + 1 ); 
    71         str = ur_binPtr( binN ); 
     70        binN = ur_makeBinary( len + 1, &str ); 
    7271        str->used = len; 
    7372        memCpy( str->ptr.c, tmp, len );