diff -r 13e76c6b4a52 -r 6976d9b69e01 ExternalAddress.st --- a/ExternalAddress.st Tue Apr 09 17:41:30 2002 +0200 +++ b/ExternalAddress.st Tue Apr 09 20:58:14 2002 +0200 @@ -10,6 +10,8 @@ hereby transferred. " +"{ Package: 'stx:libbasic' }" + Object subclass:#ExternalAddress instanceVariableNames:'address*' classVariableNames:'' @@ -112,6 +114,18 @@ ^ self == ExternalAddress "Modified: / 11.6.1998 / 17:12:40 / cg" +! + +pointerSize + "answer the size in bytes of a pointer" + +%{ /* NOCONTEXT */ + RETURN(__mkSmallInteger(sizeof(void *))); +%}. + + " + self pointerSize + " ! ! !ExternalAddress methodsFor:'accessing'! @@ -200,13 +214,37 @@ !ExternalAddress methodsFor:'converting'! +asExternalAddress + "convert to an ExternalAddress. + Useful to convert subclasses" + +%{ /* NOCONTEXT */ + + if (__qClass(self) == @global(ExternalAddress)) { + RETURN(self) + } + RETURN(__MKEXTERNALADDRESS(__INST(address_))); +%}. + + " + (ExternalAddress newAddress:16r12345678) asExternalAddress + " +! + asExternalBytes "return an ExternalBytes object pointing to where the receiver points to. Use of this is not recommended; primitives which return externalAddresses dont think that access to the memory is required/useful, while primitives which do think so should return an externalBytes instance right away." - ^ ExternalBytes address:(self address) +%{ /* NOCONTEXT */ + + RETURN(__MKEXTERNALBYTES(__INST(address_))); +%} + + " + (ExternalAddress newAddress:16r12345678) asExternalBytes + " ! ! !ExternalAddress methodsFor:'printing & storing'! @@ -240,5 +278,5 @@ !ExternalAddress class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libbasic/ExternalAddress.st,v 1.15 1999-09-03 12:33:50 ps Exp $' + ^ '$Header: /cvs/stx/stx/libbasic/ExternalAddress.st,v 1.16 2002-04-09 18:58:14 stefan Exp $' ! !