equal
deleted
inserted
replaced
396 |
396 |
397 |byteIndex bitIndex0 byte| |
397 |byteIndex bitIndex0 byte| |
398 |
398 |
399 %{ /* NOCONTEXT */ |
399 %{ /* NOCONTEXT */ |
400 |
400 |
401 REGISTER int indx; |
401 if (__isSmallInteger(index) |
402 REGISTER int byte; |
402 && (__qClass(self) == @global(ByteArray))) { |
403 int nIndex; |
403 int indx; |
404 REGISTER OBJ slf; |
404 |
405 REGISTER OBJ cls; |
405 indx = __intVal(index) - 1; |
406 |
406 if (indx >= 0) { |
407 if (0 /* __isSmallInteger(index) */) { |
407 int byteIndex; |
408 indx = __intVal(index) - 1; |
408 int bitIndex; |
409 slf = self; |
409 int nIndex; |
410 |
410 |
411 byte = indx / 8; |
411 byteIndex = indx / 8; |
412 indx = indx % 8; |
412 bitIndex = indx % 8; |
413 |
413 |
414 if ((cls = __qClass(slf)) != @global(ByteArray)) { |
414 nIndex = __byteArraySize(self); |
415 if (indx < 0) goto badIndex; |
415 if ((unsigned)byteIndex < (unsigned)nIndex) { |
416 byte += __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars)); |
416 __ByteArrayInstPtr(self)->ba_element[byteIndex] |= (1 << bitIndex); |
417 } |
417 RETURN (self); |
418 nIndex = __byteArraySize(slf); |
418 } |
419 if ((unsigned)byte < (unsigned)nIndex) { |
419 } |
420 __ByteArrayInstPtr(slf)->ba_element[byte] |= (1 << indx); |
420 } |
421 RETURN (slf); |
|
422 } |
|
423 } |
|
424 badIndex: ; |
|
425 %}. |
421 %}. |
426 byteIndex := ((index-1) // 8) + 1. |
422 byteIndex := ((index-1) // 8) + 1. |
427 bitIndex0 := ((index-1) \\ 8). |
423 bitIndex0 := ((index-1) \\ 8). |
428 byte := self at:byteIndex. |
424 byte := self at:byteIndex. |
429 byte := byte bitOr:(1 bitShift:bitIndex0). |
425 byte := byte bitOr:(1 bitShift:bitIndex0). |
432 " |
428 " |
433 #[0 0 0 0] copy bitSetAt:1 |
429 #[0 0 0 0] copy bitSetAt:1 |
434 #[0 0 0 0] copy bitSetAt:7 |
430 #[0 0 0 0] copy bitSetAt:7 |
435 #[0 0 0 0] copy bitSetAt:8 |
431 #[0 0 0 0] copy bitSetAt:8 |
436 #[0 0 0 0] copy bitSetAt:9 |
432 #[0 0 0 0] copy bitSetAt:9 |
437 " |
433 #[0 0 0 0] copy bitSetAt:32 |
438 " |
434 #[0 0 0 0] copy bitSetAt:33 |
|
435 #[0 0 0 0] copy bitSetAt:0 |
|
436 " |
|
437 " |
439 #[ 0 0 0 0 ] bitSetAt:1 |
438 #[ 0 0 0 0 ] bitSetAt:1 |
440 #[ 0 0 0 0 ] bitSetAt:4 |
439 #[ 0 0 0 0 ] bitSetAt:4 |
441 #[ 0 0 0 0 ] bitSetAt:8 |
440 #[ 0 0 0 0 ] bitSetAt:8 |
442 #[ 0 0 0 0 ] bitSetAt:9 |
441 #[ 0 0 0 0 ] bitSetAt:9 |
443 #[ 0 0 0 0 ] bitSetAt:10 |
442 #[ 0 0 0 0 ] bitSetAt:10 |
444 #[ 0 0 0 0 ] bitSetAt:11 |
443 #[ 0 0 0 0 ] bitSetAt:11 |
445 " |
444 " |
446 |
|
447 |
|
448 |
|
449 ! ! |
445 ! ! |
450 |
446 |
451 !ByteArray methodsFor:'accessing-bytes'! |
447 !ByteArray methodsFor:'accessing-bytes'! |
452 |
448 |
453 byteAt:index |
449 byteAt:index |