X-Git-Url: http://git.subgeniuskitty.com/pforth/.git/blobdiff_plain/ee8dc9e9e0f59b8e38dec3732caefe9f3af2b431..c1a87b8298475c3fdd007b14a1413d2a6fd0fa61:/fth/member.fth diff --git a/fth/member.fth b/fth/member.fth index 3ff53d7..ceccc55 100644 --- a/fth/member.fth +++ b/fth/member.fth @@ -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 )