--- gforth/compat/struct.fs 1997/06/23 15:54:02 1.3 +++ gforth/compat/struct.fs 1999/02/22 21:39:43 1.6 @@ -23,9 +23,11 @@ \ from MEMORY : \ allocate -: nalign ( addr1 n -- addr2 ) -\ addr2 is the aligned version of addr1 wrt the alignment size n - 1- tuck + swap invert and ; +: naligned ( addr1 n -- addr2 ) + \ addr2 is the aligned version of addr1 wrt the alignment size n + 1- tuck + swap invert and ; + +: nalign naligned ; \ old name, obsolete : dofield ( -- ) does> ( name execution: addr1 -- addr2 ) @@ -37,8 +39,8 @@ does> ( name execution: -- ) drop ; : create-field ( align1 offset1 align size "name" -- align2 offset2 ) - create rot dup , ( align1 align size offset1 ) - + >r nalign r> ; + create swap rot over nalign dup , ( align1 size align offset ) + rot + >r nalign r> ; : field ( align1 offset1 align size "name" -- align2 offset2 ) \ name execution: addr1 -- addr2 @@ -66,6 +68,12 @@ does> ( name execution: -- ) cell% 2* 2constant double% \ memory allocation words +: %alignment ( align size -- align ) + drop ; + +: %size ( align size -- size ) + nip ; + : %align ( align size -- ) drop here swap nalign here - allot ;