#FEATURE by cg
class: ExternalBytes
changed: #setAddress:size:
also allow subclasses of externalAddress as argument.
--- a/ExternalBytes.st Sun Feb 12 12:34:34 2017 +0100
+++ b/ExternalBytes.st Sun Feb 12 16:25:59 2017 +0100
@@ -15,7 +15,7 @@
UninterpretedBytes subclass:#ExternalBytes
instanceVariableNames:'address* size'
- classVariableNames:'AllocatedInstances Lobby DebugMalloc TraceMalloc'
+ classVariableNames:'AllocatedInstances DebugMalloc Lobby TraceMalloc'
poolDictionaries:''
category:'System-Support'
!
@@ -774,6 +774,7 @@
"
! !
+
!ExternalBytes methodsFor:'accessing'!
address
@@ -1275,27 +1276,29 @@
%}
!
-setAddress:aNumber size:sz
+setAddress:aNumberOrExternalAddress size:sz
"set the start address and size"
%{ /* NOCONTEXT */
if (__INST(address_) == nil) {
- if (aNumber == nil) {
- __INST(address_) = nil;
- } else {
- if (__isSmallInteger(aNumber)) {
- __INST(address_) = (OBJ) __intVal(aNumber);
- } else if(__isInteger(aNumber)) {
- __INST(address_) = (OBJ) __unsignedLongIntVal(aNumber);
- } else if(__isExternalAddress(aNumber)) {
- __INST(address_) = __externalAddressVal(aNumber);
- }
- }
- __INST(size) = sz;
- RETURN (self);
+ if (aNumberOrExternalAddress == nil) {
+ __INST(address_) = nil;
+ } else {
+ if (__isSmallInteger(aNumberOrExternalAddress)) {
+ __INST(address_) = (OBJ) __intVal(aNumberOrExternalAddress);
+ } else if(__isInteger(aNumberOrExternalAddress)) {
+ __INST(address_) = (OBJ) __unsignedLongIntVal(aNumberOrExternalAddress);
+ } else if(__isExternalAddressLike(aNumberOrExternalAddress)) {
+ __INST(address_) = __externalAddressVal(aNumberOrExternalAddress);
+ }
+ }
+ __INST(size) = sz;
+ RETURN (self);
}
%}.
^ self error:'cannot change address'
+
+ "Modified: / 12-02-2017 / 16:22:47 / cg"
!
setSize:sz