Changeset 25 for trunk/orca/series.c
- Timestamp:
- 02/06/06 23:30:15 (3 years ago)
- Files:
-
- 1 modified
-
trunk/orca/series.c (modified) (82 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/orca/series.c
r1 r25 119 119 { 120 120 len = 0; 121 if( a1->series.i ndex)121 if( a1->series.it ) 122 122 { 123 123 OBlock* blk = orBLOCK(a1); 124 OValue* it = blk->values + a1->series.i ndex;124 OValue* it = blk->values + a1->series.it; 125 125 while( it->LIST_NEXT > 0 ) 126 126 { … … 134 134 len = orSeriesUsed(a1); 135 135 if( len > -1 ) 136 len -= a1->series.i ndex;136 len -= a1->series.it; 137 137 } 138 138 … … 147 147 { 148 148 OBlock* blk = orBLOCK(a1); 149 a1->series.i ndex= blk->values->LIST_NEXT;149 a1->series.it = blk->values->LIST_NEXT; 150 150 } 151 151 else if( orIsSeries(a1->type) ) 152 a1->series.i ndex= 0;152 a1->series.it = 0; 153 153 else 154 154 orError( "head expected series argument" ); … … 160 160 if( a1->type == OT_LIST ) 161 161 { 162 a1->series.i ndex= LIST_TAIL;162 a1->series.it = LIST_TAIL; 163 163 } 164 164 else … … 166 166 int len = orSeriesUsed(a1); 167 167 if( len > -1 ) 168 a1->series.i ndex= len;168 a1->series.it = len; 169 169 else 170 170 orError( "tail expected series argument" ); … … 178 178 { 179 179 OBlock* blk = orBLOCK(a1); 180 OValue* it = blk->values + a1->series.i ndex;180 OValue* it = blk->values + a1->series.it; 181 181 if( it->LIST_PREV > 0 ) 182 a1->series.i ndex= it->LIST_PREV;182 a1->series.it = it->LIST_PREV; 183 183 } 184 184 else if( orIsSeries(a1->type) ) 185 185 { 186 if( a1->series.i ndex> 0 )187 --a1->series.i ndex;186 if( a1->series.it > 0 ) 187 --a1->series.it; 188 188 } 189 189 else … … 198 198 if( a1->type == OT_LIST ) 199 199 { 200 if( a1->series.i ndex)200 if( a1->series.it ) 201 201 { 202 202 OBlock* blk = orBLOCK(a1); 203 OValue* it = blk->values + a1->series.i ndex;203 OValue* it = blk->values + a1->series.it; 204 204 if( it->LIST_NEXT > 0 ) 205 a1->series.i ndex= it->LIST_NEXT;205 a1->series.it = it->LIST_NEXT; 206 206 } 207 207 } … … 209 209 { 210 210 int len = orSeriesUsed(a1); 211 if( a1->series.i ndex< len )212 ++a1->series.i ndex;211 if( a1->series.it < len ) 212 ++a1->series.it; 213 213 } 214 214 } … … 223 223 else if( orIsSeries(a1->type) ) 224 224 { 225 orResult( OT_INTEGER, a1->series.i ndex+ 1 );225 orResult( OT_INTEGER, a1->series.it + 1 ); 226 226 return; 227 227 } … … 237 237 { 238 238 OBlock* blk = orBLOCK(a1); 239 OValue* it = blk->values + a1->series.i ndex;239 OValue* it = blk->values + a1->series.it; 240 240 if( it->LIST_PREV == LIST_HEAD ) 241 241 logic = OR_TRUE; … … 243 243 else 244 244 { 245 if( a1->series.i ndex== 0 )245 if( a1->series.it == 0 ) 246 246 logic = OR_TRUE; 247 247 } … … 257 257 if( a1->type == OT_LIST ) 258 258 { 259 if( a1->series.i ndex== LIST_TAIL )259 if( a1->series.it == LIST_TAIL ) 260 260 logic = OR_TRUE; 261 261 } … … 265 265 if( len > -1) 266 266 { 267 if( a1->series.i ndex>= len )267 if( a1->series.it >= len ) 268 268 logic = OR_TRUE; 269 269 } … … 283 283 { 284 284 OBlock* blk = orBLOCK(a1); 285 if( a1->series.i ndex< blk->used )286 blk->used = a1->series.i ndex;285 if( a1->series.it < blk->used ) 286 blk->used = a1->series.it; 287 287 } 288 288 break; … … 295 295 { 296 296 OString* str = orSTRING(a1); 297 if( a1->series.i ndex< str->used )298 str->used = a1->series.i ndex;297 if( a1->series.it < str->used ) 298 str->used = a1->series.it; 299 299 } 300 300 break; … … 316 316 { 317 317 OArray* arr = orDEC_ARRAY(a1); 318 if( a1->series.i ndex< arr->used )319 arr->used = a1->series.i ndex;318 if( a1->series.it < arr->used ) 319 arr->used = a1->series.it; 320 320 } 321 321 break; … … 324 324 { 325 325 OArray* arr = orINT_ARRAY(a1); 326 if( a1->series.i ndex< arr->used )327 arr->used = a1->series.i ndex;326 if( a1->series.it < arr->used ) 327 arr->used = a1->series.it; 328 328 } 329 329 break; … … 392 392 ipos = orStrChars( s1, a1 ); 393 393 394 if( a1->series.i ndex< used )394 if( a1->series.it < used ) 395 395 { 396 396 copyReverseC( s1->charArray + used - 1, ipos - 1, … … 401 401 402 402 s1->used += len; 403 a1->series.i ndex+= len;403 a1->series.it += len; 404 404 } 405 405 } … … 431 431 432 432 // Must get ipos after orArrayReserve. 433 ipos = s1->values + a1->series.i ndex;433 ipos = s1->values + a1->series.it; 434 434 435 435 copyReverseV( s1->values + used - 1, ipos - 1, 436 436 s1->values + used ); 437 437 ++s1->used; 438 ++a1->series.i ndex;438 ++a1->series.it; 439 439 *ipos = *a2; 440 440 } … … 445 445 OBlock* s2 = orBLOCK(a2); 446 446 int used = s1->used; 447 int srcLen = s2->used - a2->series.i ndex;447 int srcLen = s2->used - a2->series.it; 448 448 449 449 orArrayReserve( s1, sizeof(OValue), used + srcLen ); 450 450 451 451 // Must get ipos after orArrayReserve. 452 ipos = s1->values + a1->series.i ndex;453 454 if( a1->series.i ndex< used )452 ipos = s1->values + a1->series.it; 453 454 if( a1->series.it < used ) 455 455 { 456 456 copyReverseV( s1->values + used - 1, ipos - 1, … … 458 458 } 459 459 460 copyV( s2->values + a2->series.i ndex,460 copyV( s2->values + a2->series.it, 461 461 s2->values + s2->used, 462 462 ipos ); 463 463 464 464 s1->used += srcLen; 465 a1->series.i ndex+= srcLen;465 a1->series.it += srcLen; 466 466 } 467 467 break; … … 479 479 { 480 480 OString* tmp; 481 OValue* it = blk->values + a2->series.i ndex;481 OValue* it = blk->values + a2->series.it; 482 482 OValue* end = blk->values + blk->used; 483 483 484 assert( a2->series.i ndex<= blk->used );484 assert( a2->series.it <= blk->used ); 485 485 486 486 orRefPush( OT_BLOCK, a2->index ); … … 507 507 { 508 508 OString* s2 = orSTRING(a2); 509 stringInsert( a1, s2->charArray + a2->series.i ndex,510 s2->used - a2->series.i ndex);509 stringInsert( a1, s2->charArray + a2->series.it, 510 s2->used - a2->series.it ); 511 511 } 512 512 else if( a2->type == OT_CHAR ) … … 523 523 524 524 case OT_LIST: 525 if( a1->series.i ndex)525 if( a1->series.it ) 526 526 { 527 527 OBlock* lst = orBLOCK( a1 ); 528 OValue* node = lst->values + a1->series.i ndex;528 OValue* node = lst->values + a1->series.it; 529 529 530 530 if( node->LIST_PREV < 0 ) … … 533 533 if( (a2->type != OT_BLOCK) || orRefineSet(REF_INS_ONLY) ) 534 534 { 535 orListInsertValue( lst, a1->series.i ndex, a2 );535 orListInsertValue( lst, a1->series.it, a2 ); 536 536 } 537 537 else 538 538 { 539 539 OBlock* blk = orBLOCK( a2 ); 540 OValue* it = blk->values + a2->series.i ndex;540 OValue* it = blk->values + a2->series.it; 541 541 OValue* end = blk->values + blk->used; 542 542 543 543 while( it != end ) 544 544 { 545 orListInsertValue( lst, a1->series.i ndex, it );545 orListInsertValue( lst, a1->series.it, it ); 546 546 ++it; 547 547 } … … 595 595 { 596 596 OBlock* arr = orBLOCK(a1); 597 orArrayErase( arr, sizeof(OValue), a1->series.i ndex, len );597 orArrayErase( arr, sizeof(OValue), a1->series.it, len ); 598 598 } 599 599 break; … … 606 606 { 607 607 OString* arr = orSTRING(a1); 608 orArrayErase( arr, sizeof(char), a1->series.i ndex, len );608 orArrayErase( arr, sizeof(char), a1->series.it, len ); 609 609 } 610 610 break; … … 614 614 { 615 615 OArray* arr = orDEC_ARRAY(a1); 616 orArrayErase( arr, sizeof(double), a1->series.i ndex, len );616 orArrayErase( arr, sizeof(double), a1->series.it, len ); 617 617 } 618 618 break; … … 621 621 { 622 622 OArray* arr = orINT_ARRAY(a1); 623 orArrayErase( arr, sizeof(int32_t), a1->series.i ndex, len );623 orArrayErase( arr, sizeof(int32_t), a1->series.it, len ); 624 624 } 625 625 break; … … 631 631 OValue* it; 632 632 OBlock* blk = orBLOCK(a1); 633 OValue* node = blk->values + a1->series.i ndex;633 OValue* node = blk->values + a1->series.it; 634 634 635 635 if( node->LIST_LINKED ) … … 648 648 649 649 node->LIST_FREE = blk->values->LIST_FREE; 650 blk->values->LIST_FREE = a1->series.i ndex;650 blk->values->LIST_FREE = a1->series.it; 651 651 652 652 /* … … 660 660 661 661 // Result. 662 a1->series.i ndex= nextI;662 a1->series.it = nextI; 663 663 } 664 664 else … … 691 691 { 692 692 OBlock* blk = orBLOCK( ser ); 693 n += ser->series.i ndex;693 n += ser->series.it; 694 694 if( (n > -1) && (n < blk->used) ) 695 695 { … … 706 706 { 707 707 OString* str = orSTRING( ser ); 708 n += ser->series.i ndex;708 n += ser->series.it; 709 709 if( (n > -1) && (n < str->used) ) 710 710 { … … 719 719 { 720 720 OBinary* str = orSTRING( ser ); 721 n += ser->series.i ndex;721 n += ser->series.it; 722 722 if( (n > -1) && (n < str->used) ) 723 723 { … … 748 748 749 749 case OT_LIST: 750 if( ser->series.i ndex)750 if( ser->series.it ) 751 751 { 752 752 OBlock* blk = orBLOCK( ser ); 753 OValue* it = blk->values + ser->series.i ndex;753 OValue* it = blk->values + ser->series.it; 754 754 755 755 while( it->LIST_NEXT > 0 ) … … 793 793 { 794 794 OArray* arr = orDEC_ARRAY( ser ); 795 n += ser->series.i ndex;795 n += ser->series.it; 796 796 if( (n > -1) && (n < arr->used) ) 797 797 { … … 806 806 { 807 807 OArray* arr = orINT_ARRAY( ser ); 808 n += ser->series.i ndex;808 n += ser->series.it; 809 809 if( (n > -1) && (n < arr->used) ) 810 810 { … … 860 860 { 861 861 OBlock* blk = orBLOCK(a1); 862 if( (blk->used - a1->series.i ndex) < 1 )862 if( (blk->used - a1->series.it) < 1 ) 863 863 break; 864 864 orCopyV( result, blk->values[ blk->used - 1 ] ); … … 873 873 { 874 874 OString* str = orSTRING(a1); 875 if( (str->used - a1->series.i ndex) < 1 )875 if( (str->used - a1->series.it) < 1 ) 876 876 break; 877 877 orSetTF( result, OT_CHAR ); … … 905 905 { 906 906 OArray* arr = orDEC_ARRAY(a1); 907 if( (arr->used - a1->series.i ndex) < 1 )907 if( (arr->used - a1->series.it) < 1 ) 908 908 break; 909 909 orSetTF( result, OT_DECIMAL ); … … 915 915 { 916 916 OArray* arr = orINT_ARRAY(a1); 917 if( (arr->used - a1->series.i ndex) < 1 )917 if( (arr->used - a1->series.it) < 1 ) 918 918 break; 919 919 orSetTF( result, OT_INTEGER ); … … 966 966 range = rval->integer; 967 967 else 968 range = rval->series.i ndex;968 range = rval->series.it; 969 969 970 970 if( range > used ) … … 976 976 } 977 977 978 if( (range < 1) || (range < a1->series.i ndex) )978 if( (range < 1) || (range < a1->series.it) ) 979 979 { 980 980 orError( "Invalid range %d", range ); … … 998 998 if( range ) 999 999 { 1000 reverseV( blk->values + a1->series.i ndex,1000 reverseV( blk->values + a1->series.it, 1001 1001 blk->values + range ); 1002 a1->series.i ndex= range;1002 a1->series.it = range; 1003 1003 } 1004 1004 } … … 1016 1016 if( range ) 1017 1017 { 1018 reverseC( str->charArray + a1->series.i ndex,1018 reverseC( str->charArray + a1->series.it, 1019 1019 str->charArray + range ); 1020 a1->series.i ndex= range;1020 a1->series.it = range; 1021 1021 } 1022 1022 } … … 1054 1054 if( n ) 1055 1055 { 1056 n += a1->series.i ndex;1056 n += a1->series.it; 1057 1057 if( n < 0 ) 1058 1058 n = 0; 1059 1059 else if( n > len ) 1060 1060 n = len; 1061 a1->series.i ndex= n;1061 a1->series.it = n; 1062 1062 } 1063 1063 return; … … 1089 1089 used = orSeriesUsed( a1 ); 1090 1090 1091 n += a1->series.i ndex;1091 n += a1->series.it; 1092 1092 if( n < 0 ) 1093 1093 n = 0; 1094 1094 else if( n > used ) 1095 1095 n = used; 1096 a1->series.i ndex= n;1096 a1->series.it = n; 1097 1097 } 1098 1098 … … 1150 1150 n = a2->integer ? 0 : 1; 1151 1151 1152 n += a1->series.i ndex;1152 n += a1->series.it; 1153 1153 if( n < 0 ) 1154 1154 goto bad_index; … … 1249 1249 1250 1250 blk = orBLOCK(a1); 1251 it = blk->values + a1->series.i ndex;1251 it = blk->values + a1->series.it; 1252 1252 end = blk->values + blk->used; 1253 1253 while( it != end ) … … 1282 1282 1283 1283 str = orSTRING(a1); 1284 it = str->charArray + a1->series.i ndex;1284 it = str->charArray + a1->series.it; 1285 1285 end = str->charArray + str->used; 1286 1286 while( it != end ) … … 1316 1316 int len; 1317 1317 1318 orig = ((OArray*) storage->buf) + val->series. which;1319 data = orig->charArray + (val->series.i ndex* elemSize);1320 len = orig->used - val->series.i ndex;1318 orig = ((OArray*) storage->buf) + val->series.n; 1319 data = orig->charArray + (val->series.it * elemSize); 1320 len = orig->used - val->series.it; 1321 1321 1322 1322 if( len > part ) … … 1332 1332 } 1333 1333 1334 val->series. which= copyN;1335 val->series.i ndex= 0;1334 val->series.n = copyN; 1335 val->series.it = 0; 1336 1336 } 1337 1337 … … 1360 1360 1361 1361 orig = orBLOCK(val); 1362 it = orig->values + val->series.i ndex;1363 len = orig->used - val->series.i ndex;1362 it = orig->values + val->series.it; 1363 len = orig->used - val->series.it; 1364 1364 1365 1365 if( len > part ) … … 1393 1393 1394 1394 val->index = blkN; 1395 val->series.i ndex= 0;1395 val->series.it = 0; 1396 1396 } 1397 1397 break; … … 1415 1415 1416 1416 orig = orSTRING(val); 1417 it = orig->charArray + val->series.i ndex;1418 len = orig->used - val->series.i ndex;1417 it = orig->charArray + val->series.it; 1418 len = orig->used - val->series.it; 1419 1419 1420 1420 if( len > part ) … … 1431 1431 1432 1432 val->index = strN; 1433 val->series.i ndex= 0;1433 val->series.it = 0; 1434 1434 } 1435 1435 #endif … … 1467 1467 if( (a1->type == OT_BITSET) || (a1->type == OT_MATRIX) ) 1468 1468 { 1469 OString* arr = orCopyString( a1->index, a1->series.i ndex);1469 OString* arr = orCopyString( a1->index, a1->series.it ); 1470 1470 orSetSeries( a1, orStringN(arr), 0 ); 1471 1471 } … … 1480 1480 part = rng->integer; 1481 1481 else if( orIsSeries(rng->type) && orIsSeries(a1->type) ) 1482 part = rng->series.i ndex - a1->series.index;1482 part = rng->series.it - a1->series.it; 1483 1483 else 1484 1484 part = 0x7fffffff; … … 1524 1524 assert( a1->index != a2->index ); 1525 1525 1526 assert( a1->series.i ndex<= s1->used );1527 assert( a2->series.i ndex<= s2->used );1528 1529 len2 = s2->used - a2->series.i ndex;1526 assert( a1->series.it <= s1->used ); 1527 assert( a2->series.it <= s2->used ); 1528 1529 len2 = s2->used - a2->series.it; 1530 1530 if( len2 > 0 ) 1531 1531 {
