[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 : pazsan 1.3 : extend-structure ( n "name" -- struct-sys n ) \ Gforth
29 :     \g extend an existing structure
30 :     >r 0 value lastxt >body r> ;
31 :    
32 : anton 1.1 : begin-structure ( "name" -- struct-sys 0 ) \ X:structures
33 : pazsan 1.3 0 extend-structure ;
34 : anton 1.1
35 :     : end-structure ( struct-sys +n -- ) \ X:structures
36 :     swap ! ;
37 :    
38 :     : cfield: ( u1 "name" -- u2 ) \ X:structures
39 :     1 +field ;
40 :    
41 :     : field: ( u1 "name" -- u2 ) \ X:structures
42 :     aligned cell +field ;
43 :    
44 :     : 2field: ( u1 "name" -- u2 ) \ gforth
45 :     aligned 2 cells +field ;
46 :    
47 :     : ffield: ( u1 "name" -- u2 ) \ X:structures
48 :     faligned 1 floats +field ;
49 :    
50 :     : sffield: ( u1 "name" -- u2 ) \ X:structures
51 :     sfaligned 1 sfloats +field ;
52 :    
53 :     : dffield: ( u1 "name" -- u2 ) \ X:structures
54 :     dfaligned 1 dfloats +field ;

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help