#FEATURE by cg
authorClaus Gittinger <cg@exept.de>
Sun, 12 Feb 2017 16:25:59 +0100
changeset 21406 c8b4c0f96850
parent 21405 c8d42cd75d89
child 21407 6ce47a4b5aba
#FEATURE by cg class: ExternalBytes changed: #setAddress:size: also allow subclasses of externalAddress as argument.
ExternalBytes.st
--- 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