PFE 0.33.71

Homepage
SourceForge
Download
Documentation
-Overview
-The PFE Manual
old manual / (book)
-ChangeLog
-Authors
-License (LGPL)
-Wordsets / (book)
-Functions .. (book)
-Dp of ANS Forth
-The 4thTutor
-Forthprimer.pdf
- Old Wordsets
- Old Words List
Forth Links
* Forth Repository
* Taygeta Compilation
* TinyBoot FirmWare
* FiCL, Free Forth
* Research Vienna
* Research Bournemouth
* zForth WebRing
Other Links
* Tektronix/MPT
* Forth Org. (FIG)
* Forth Inc.
* MPE Ltd. Forths
* SF Win32Forth
* PD Win32Forth
* Neil Bawd

generated
(C) Guido U. Draheim
guidod@gmx.de

## STRUCT

> - simple struct implementation

`STRUCT``( "name" -- here zero-offset )``` => `"EXTENSIONS"`

  begin definition of a new structure (mpe.000)

        : STRUCT CREATE  !CSP
          HERE
          0 DUP ,
        DOES>
          @
        ;

  primitive code = [p4_struct]

`END-STRUCT``( here some-offset -- )``` => `"EXTENSIONS"`

  terminate definition of a new structure (mpe.000)

        : END-STRUCT  SWAP !  ?CSP ;

  primitive code = [p4_end_struct]

`SUBRECORD``( outer-offset "name" -- outer-offset here zero-offset )``` => `"EXTENSIONS"`

  begin definition of a subrecord (mpe.000)

        : STRUCT CREATE
          HERE
          0 DUP ,
        DOES>
          @
        ;

  primitive code = [p4_subrecord]

`END-SUBRECORD``( outer-offset here some-offset -- outer-offset+some )``` => `"EXTENSIONS"`

  end definition of a subrecord (mpe.000)

        : END-SUBRECORD  TUCK SWAP !  + ;

  primitive code = [p4_end_subrecord]

`ARRAY-OF``( some-offset n len "name" -- some-offset )``` => `"EXTENSIONS"`

  a `FIELD`-array

        : ARRAY-OF * FIELD ;

  primitive code = [p4_array_of]

`VARIANT``( outer-offset "name" -- outer-offset here zero-offset )``` => `"EXTENSIONS"`

  Variant records describe an alternative view of the current record or subrecord from the start to the current point. The variant need not be of the same length, but the larger is taken

        : VARIANT SUBRECORD ;

  primitive code = [p4_variant]

`END-VARIANT``( outer-offset here some-offset -- outer-offset )``` => `"EXTENSIONS"`

  terminate definition of a new variant (mpe.000)

        : END-STRUCT  TUCK SWAP !  2DUP < IF NIP ELSE DROP THEN ;

  primitive code = [p4_end_variant]

`INSTANCE``( len "name" -- )``` => `"EXTENSIONS"`

  Create a named instance of a named structure.

        : INSTANCE  CREATE ALLOT ;

  primitive code = [p4_instance]

`INSTANCE-ADDR``( len -- addr )``` => `"EXTENSIONS"`

  Create nameless instance of a structure and return base address.

        : INSTANCE-ADDR  HERE SWAP ALLOT ;

  primitive code = [p4_instance_addr]

`ENDSTRUCTURE``( here some-offset -- )``` => `"EXTENSIONS"`

  finalize a previously started `STRUCTURE` definition

        : ENDSTRUCTURE  SWAP !  ?CSP ;

  primitive code = [p4_endstructure]

`SIZEOF``( "name" -- size )``` => `"EXTENSIONS"`

  get the size-value from a previous structure definition

        : SIZEOF   ' >BODY @  STATE @ IF [COMPILE] LITERAL THEN ; IMMEDIATE

  compiling word = [p4_sizeof]

`CHAR%``` => `"EXTENSIONS"`

  (no description)

  primitive code = [p4_char_mod]

`CELL%``` => `"EXTENSIONS"`

  (no description)

  primitive code = [p4_cell_mod]

`WCHAR%``` => `"EXTENSIONS"`

  (no description)

  primitive code = [p4_wchar_mod]

`DOUBLE%``` => `"EXTENSIONS"`

  (no description)

  primitive code = [p4_double_mod]

`FLOAT%``` => `"EXTENSIONS"`

  (no description)

  primitive code = [p4_float_mod]

`SFLOAT%``` => `"EXTENSIONS"`

  (no description)

  primitive code = [p4_sfloat_mod]

`DFLOAT%``` => `"EXTENSIONS"`

  (no description)

  primitive code = [p4_dfloat_mod]