# HG changeset patch # User Claus Gittinger # Date 1486913159 -3600 # Node ID c8b4c0f96850267e8f34a5a03633e6135302aae5 # Parent c8d42cd75d89e5ec0845f77c07a0819ac7258ccf #FEATURE by cg class: ExternalBytes changed: #setAddress:size: also allow subclasses of externalAddress as argument. diff -r c8d42cd75d89 -r c8b4c0f96850 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