equal
deleted
inserted
replaced
134 } else { |
134 } else { |
135 nInstVars = _intVal(_ClassInstPtr(self)->c_ninstvars); |
135 nInstVars = _intVal(_ClassInstPtr(self)->c_ninstvars); |
136 instsize = OHDR_SIZE + __OBJS2BYTES__(nInstVars) + len + 1; |
136 instsize = OHDR_SIZE + __OBJS2BYTES__(nInstVars) + len + 1; |
137 } |
137 } |
138 |
138 |
139 PROTECT_CONTEXT |
139 __PROTECT_CONTEXT__ |
140 _qNew(newString, instsize, SENDER); |
140 _qNew(newString, instsize, SENDER); |
141 UNPROTECT_CONTEXT |
141 __UNPROTECT_CONTEXT__ |
142 if (newString == nil) goto fail; |
142 if (newString == nil) goto fail; |
143 _InstPtr(newString)->o_class = self; |
143 _InstPtr(newString)->o_class = self; |
144 __qSTORE(newString, self); |
144 __qSTORE(newString, self); |
145 |
145 |
146 if (nInstVars) { |
146 if (nInstVars) { |
1376 |
1376 |
1377 index1 += n; |
1377 index1 += n; |
1378 } |
1378 } |
1379 if (index1 <= len) { |
1379 if (index1 <= len) { |
1380 count = len - index1 + 1; |
1380 count = len - index1 + 1; |
1381 PROTECT_CONTEXT |
1381 __PROTECT_CONTEXT__ |
1382 sz = OHDR_SIZE + count + 1; |
1382 sz = OHDR_SIZE + count + 1; |
1383 _qNew(newString, sz, SENDER); |
1383 _qNew(newString, sz, SENDER); |
1384 UNPROTECT_CONTEXT |
1384 __UNPROTECT_CONTEXT__ |
1385 if (newString != nil) { |
1385 if (newString != nil) { |
1386 _InstPtr(newString)->o_class = String; |
1386 _InstPtr(newString)->o_class = String; |
1387 dstp = _stringVal(newString); |
1387 dstp = _stringVal(newString); |
1388 #ifdef FAST_MEMCPY |
1388 #ifdef FAST_MEMCPY |
1389 bcopy(_stringVal(self) + index1 - 1, dstp, count); |
1389 bcopy(_stringVal(self) + index1 - 1, dstp, count); |
1440 index1 += n; |
1440 index1 += n; |
1441 index2 += n; |
1441 index2 += n; |
1442 } |
1442 } |
1443 if (index2 <= len) { |
1443 if (index2 <= len) { |
1444 count = index2 - index1 + 1; |
1444 count = index2 - index1 + 1; |
1445 PROTECT_CONTEXT |
1445 __PROTECT_CONTEXT__ |
1446 sz = OHDR_SIZE + count + 1; |
1446 sz = OHDR_SIZE + count + 1; |
1447 _qNew(newString, sz, SENDER); |
1447 _qNew(newString, sz, SENDER); |
1448 UNPROTECT_CONTEXT |
1448 __UNPROTECT_CONTEXT__ |
1449 if (newString != nil) { |
1449 if (newString != nil) { |
1450 _InstPtr(newString)->o_class = String; |
1450 _InstPtr(newString)->o_class = String; |
1451 dstp = _stringVal(newString); |
1451 dstp = _stringVal(newString); |
1452 #ifdef FAST_MEMCPY |
1452 #ifdef FAST_MEMCPY |
1453 bcopy(_stringVal(self) + index1 - 1, dstp, count); |
1453 bcopy(_stringVal(self) + index1 - 1, dstp, count); |
1470 } |
1470 } |
1471 /* |
1471 /* |
1472 * allow empty copy |
1472 * allow empty copy |
1473 */ |
1473 */ |
1474 if (index1 > index2) { |
1474 if (index1 > index2) { |
1475 PROTECT_CONTEXT |
1475 __PROTECT_CONTEXT__ |
1476 _qNew(newString, OHDR_SIZE+1, SENDER); |
1476 _qNew(newString, OHDR_SIZE+1, SENDER); |
1477 UNPROTECT_CONTEXT |
1477 __UNPROTECT_CONTEXT__ |
1478 if (newString != nil) { |
1478 if (newString != nil) { |
1479 _InstPtr(newString)->o_class = String; |
1479 _InstPtr(newString)->o_class = String; |
1480 __stringVal(newString)[0] = '\0'; |
1480 __stringVal(newString)[0] = '\0'; |
1481 RETURN ( newString ); |
1481 RETURN ( newString ); |
1482 } |
1482 } |
1509 offs = __OBJS2BYTES__(_intVal(_ClassInstPtr(cls)->c_ninstvars)); |
1509 offs = __OBJS2BYTES__(_intVal(_ClassInstPtr(cls)->c_ninstvars)); |
1510 sz -= offs; |
1510 sz -= offs; |
1511 } else |
1511 } else |
1512 offs = 0; |
1512 offs = 0; |
1513 |
1513 |
1514 PROTECT_CONTEXT |
1514 __PROTECT_CONTEXT__ |
1515 _qNew(newString, sz, SENDER); |
1515 _qNew(newString, sz, SENDER); |
1516 UNPROTECT_CONTEXT |
1516 __UNPROTECT_CONTEXT__ |
1517 if (newString) { |
1517 if (newString) { |
1518 _InstPtr(newString)->o_class = String; |
1518 _InstPtr(newString)->o_class = String; |
1519 dstp = _stringVal(newString); |
1519 dstp = _stringVal(newString); |
1520 #ifdef FAST_MEMCPY |
1520 #ifdef FAST_MEMCPY |
1521 sz = sz - OHDR_SIZE - 1 - 1; |
1521 sz = sz - OHDR_SIZE - 1 - 1; |
2192 ! ! |
2192 ! ! |
2193 |
2193 |
2194 !String class methodsFor:'documentation'! |
2194 !String class methodsFor:'documentation'! |
2195 |
2195 |
2196 version |
2196 version |
2197 ^ '$Header: /cvs/stx/stx/libbasic/String.st,v 1.58 1996-01-04 11:12:03 cg Exp $' |
2197 ^ '$Header: /cvs/stx/stx/libbasic/String.st,v 1.59 1996-01-04 17:02:20 cg Exp $' |
2198 ! ! |
2198 ! ! |