SourceForge!
PFE 0.33.70


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]