X-Git-Url: http://git.subgeniuskitty.com/pforth/.git/blobdiff_plain/49a54f16c613407ada65dee32493f4878d199aa1..189c9185ac57697d23484fb8c50c5d0b062c7ccd:/fth/member.fth diff --git a/fth/member.fth b/fth/member.fth index 5aa84bd..ceccc55 100644 --- a/fth/member.fth +++ b/fth/member.fth @@ -6,7 +6,7 @@ \ the Object Development Environment. \ \ Author: Phil Burk -\ Copyright 1994 3DO, Phil Burk, Larry Polansky, Devid Rosenboom +\ Copyright 1994 3DO, Phil Burk, Larry Polansky, David Rosenboom \ \ The pForth software code is dedicated to the public domain, \ and any third party may reproduce, distribute and modify @@ -41,12 +41,18 @@ decimal ; \ Variables shared with object oriented code. - VARIABLE OB-STATE ( Compilation state. ) - VARIABLE OB-CURRENT-CLASS ( ABS_CLASS_BASE of current class ) - 1 constant OB_DEF_CLASS ( defining a class ) - 2 constant OB_DEF_STRUCT ( defining a structure ) +VARIABLE OB-STATE ( Compilation state. ) +VARIABLE OB-CURRENT-CLASS ( ABS_CLASS_BASE of current class ) +1 constant OB_DEF_CLASS ( defining a class ) +2 constant OB_DEF_STRUCT ( defining a structure ) -4 constant OB_OFFSET_SIZE +\ A member contains: +\ cell size of data in bytes (1, 2, cell) +\ cell offset within structure + +cell 1- constant CELL_MASK +cell negate constant -CELL +cell constant OB_OFFSET_SIZE : OB.OFFSET@ ( member_def -- offset ) @ ; : OB.OFFSET, ( value -- ) , ; @@ -60,7 +66,7 @@ decimal ABS ( -- |+-b| ) ob-current-class @ ( -- b addr-space) tuck @ ( as #b c , current space needed ) - over 3 and 0= ( multiple of four? ) + over CELL_MASK and 0= ( multiple of cell? ) IF aligned ELSE @@ -147,7 +153,7 @@ decimal \ Aliases : APTR ( -- ) long ; -: RPTR ( -- ) -4 bytes ; \ relative relocatable pointer 00001 +: RPTR ( -- ) -cell bytes ; \ relative relocatable pointer 00001 : ULONG ( -- ) long ; : STRUCT ( -- , define a structure as an ivar )