[gforth] / gforth / struct0x.fs  

gforth: gforth/struct0x.fs


1 : anton 1.1 \ implementation of Forth 200x structures
2 :    
3 :     \ Copyright (C) 2007 Free Software Foundation, Inc.
4 :    
5 :     \ This file is part of Gforth.
6 :    
7 :     \ Gforth is free software; you can redistribute it and/or
8 :     \ modify it under the terms of the GNU General Public License
9 : anton 1.2 \ as published by the Free Software Foundation, either version 3
10 : anton 1.1 \ of the License, or (at your option) any later version.
11 :    
12 :     \ This program is distributed in the hope that it will be useful,
13 :     \ but WITHOUT ANY WARRANTY; without even the implied warranty of
14 :     \ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 :     \ GNU General Public License for more details.
16 :    
17 :     \ You should have received a copy of the GNU General Public License
18 : anton 1.2 \ along with this program. If not, see http://www.gnu.org/licenses/.
19 : anton 1.1
20 :     : +field ( n1 n2 "name" -- n3 ) \ X:structures plus-field
21 :     over if
22 :     (field) over ,
23 :     else
24 :     create dozerofield
25 :     then
26 :     + ;
27 :    
28 :     : begin-structure ( "name" -- struct-sys 0 ) \ X:structures
29 :     0 value lastxt >body 0 ;
30 :    
31 :     : end-structure ( struct-sys +n -- ) \ X:structures
32 :     swap ! ;
33 :    
34 :     : cfield: ( u1 "name" -- u2 ) \ X:structures
35 :     1 +field ;
36 :    
37 :     : field: ( u1 "name" -- u2 ) \ X:structures
38 :     aligned cell +field ;
39 :    
40 :     : 2field: ( u1 "name" -- u2 ) \ gforth
41 :     aligned 2 cells +field ;
42 :    
43 :     : ffield: ( u1 "name" -- u2 ) \ X:structures
44 :     faligned 1 floats +field ;
45 :    
46 :     : sffield: ( u1 "name" -- u2 ) \ X:structures
47 :     sfaligned 1 sfloats +field ;
48 :    
49 :     : dffield: ( u1 "name" -- u2 ) \ X:structures
50 :     dfaligned 1 dfloats +field ;

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help