From 20d53d27f60fa40cad13c4a9fb18b656303a2956 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Fri, 28 Dec 2018 13:39:24 +0200 Subject: GLK: ALAN2: Adapt C-style enums / structs --- engines/glk/alan2/types.h | 116 +++++++++++++++++++++++----------------------- 1 file changed, 59 insertions(+), 57 deletions(-) (limited to 'engines/glk/alan2/types.h') diff --git a/engines/glk/alan2/types.h b/engines/glk/alan2/types.h index aefe4517ae..7da9e1dc58 100644 --- a/engines/glk/alan2/types.h +++ b/engines/glk/alan2/types.h @@ -66,7 +66,7 @@ namespace Alan2 { // TYPES // Amachine variables -typedef struct CurVars { +struct CurVars { int vrb; int obj; int loc; @@ -74,18 +74,18 @@ typedef struct CurVars { int tick; int score; int visits; -} CurVars; +}; // The various tables -typedef struct WrdElem { // Dictionary +struct WrdElem { // Dictionary Aaddr wrd; // ACODE address to string Aword wordClass; // Word class Aword code; Aaddr adjrefs; // Address to reference list Aaddr nounrefs; // Address to reference list -} WrdElem; +}; -typedef struct ActElem { // ACTOR TABLE +struct ActElem { // ACTOR TABLE Aword loc; // Location Abool describe; // Description flag Aaddr nam; // Address to name printing code @@ -97,21 +97,21 @@ typedef struct ActElem { // ACTOR TABLE Aword count; Aaddr vrbs; Aaddr dscr; // Address of description code -} ActElem; +}; -typedef struct ScrElem { // SCRIPT TABLE +struct ScrElem { // SCRIPT TABLE Aword code; // Script number Aaddr dscr; // Optional description statements Aaddr steps; // Address to steps -} ScrElem; +}; -typedef struct StepElem { // STEP TABLE +struct StepElem { // STEP TABLE Aword after; // After how many ticks? Aaddr exp; // Address to expression saying when Aaddr stm; // Address to the actual code -} StepElem; +}; -typedef struct LocElem { // LOCATION TABLE +struct LocElem { // LOCATION TABLE Aaddr nams; // Address of name printing code Aaddr dscr; // Address of description code Aaddr does; // Address of does code @@ -119,66 +119,66 @@ typedef struct LocElem { // LOCATION TABLE Aaddr atrs; // Address of attribute list Aaddr exts; // Address of exit list Aaddr vrbs; // Address of local verb list -} LocElem; +}; -typedef struct ExtElem { // EXIT TABLE structure +struct ExtElem { // EXIT TABLE structure Abool done; // Flag for reverse/convert process Aword code; // Direction code Aaddr checks; // Address of check table Aaddr action; // Address of action code Aword next; // Number of next location -} ExtElem; +}; -typedef struct ChkElem { // CHECK TABLE +struct ChkElem { // CHECK TABLE Aaddr exp; // ACODE address to expression code Aaddr stms; // ACODE address to statement code -} ChkElem; +}; -typedef struct VrbElem { // VERB TABLE +struct VrbElem { // VERB TABLE Aword code; // Code for the verb Aaddr alts; // Address to alternatives -} VrbElem; +}; -typedef struct StxElem { // SYNTAX TABLE +struct StxElem { // SYNTAX TABLE Aword code; // Code for verb word Aaddr elms; // Address to element tables -} StxElem; +}; -typedef struct ElmElem26 { // ELEMENT TABLES +struct ElmElem26 { // ELEMENT TABLES Aword code; // Code for this element, 0 -> parameter Abool multiple; // May be multiple (if parameter) Aaddr next; // Address to next element table ... // ... or class check if EOS -} ElmElem26; +}; -typedef struct ElmElem { // ELEMENT TABLES +struct ElmElem { // ELEMENT TABLES Aword code; // Code for this element, 0 -> parameter Aword flags; // Flags for multiple/omni (if parameter) // CHANGED: v2.7 from Abool for multiple Aaddr next; // Address to next element table ... // ... or class check if EOS -} ElmElem; +}; -typedef struct ClaElem { // CLASS DEFINITION TABLE +struct ClaElem { // CLASS DEFINITION TABLE Aword code; // Parameter number Aword classes; // Parameter classes Aaddr stms; // Exception statements -} ClaElem; +}; -typedef struct AltElem { // VERB ALTERNATIVE TABLE +struct AltElem { // VERB ALTERNATIVE TABLE Abool done; // Flag for patching (reverse/convert) process Aword param; // Parameter number Aword qual; // Verb execution qualifier Aaddr checks; // Address of the check table Aaddr action; // Address of the action code -} AltElem; +}; -typedef struct AtrElem { // ATTRIBUTE LIST +struct AtrElem { // ATTRIBUTE LIST Aword val; // Its value Aaddr stradr; // Address to the name -} AtrElem; +}; -typedef struct ObjElem25 { // OBJECT TABLE of 2.5 format +struct ObjElem25 { // OBJECT TABLE of 2.5 format Aword loc; // Current location Abool describe; // Describe flag Aaddr atrs; // Address of attribute list @@ -186,9 +186,9 @@ typedef struct ObjElem25 { // OBJECT TABLE of 2.5 format Aaddr vrbs; // Address to local verb table Aaddr dscr1; // Address to Aword description code Aaddr dscr2; // Address to short description code -} ObjElem25; +}; -typedef struct ObjElem { // OBJECT TABLE +struct ObjElem { // OBJECT TABLE Aword loc; // Current location Abool describe; // Describe flag Aaddr atrs; // Address of attribute list @@ -198,73 +198,75 @@ typedef struct ObjElem { // OBJECT TABLE Aaddr art; // Article printing code? Else use default // INTRODUCED: v2.6 Aaddr dscr2; // Address to short description code -} ObjElem; +}; -typedef struct CntElem { // CONTAINER TABLE +struct CntElem { // CONTAINER TABLE Aaddr lims; // Address to limit check code Aaddr header; // Address to header code Aaddr empty; // Address to empty code Aword parent; // Object or actor index Aaddr nam; // Address to statement printing name -} CntElem; +}; -typedef struct LimElem { // LIMIT Type +struct LimElem { // LIMIT Type Aword atr; // Attribute that limits Aword val; // And the limiting value Aaddr stms; // Statements if fail -} LimElem; +}; -typedef struct RulElem { // RULE TABLE +struct RulElem { // RULE TABLE Abool run; // Is rule already run? Aaddr exp; // Address to expression code Aaddr stms; // Address to run -} RulElem; +}; -typedef struct EvtElem { // EVENT TABLE +struct EvtElem { // EVENT TABLE Aaddr stradr; // Address to name string Aaddr code; // Address of code to run -} EvtElem; +}; -typedef struct EvtqElem { // EVENT QUEUE ELEMENT +struct EvtqElem { // EVENT QUEUE ELEMENT int time; int event; int where; -} EvtqElem; +}; -typedef struct IniElem { // STRING INITIALISATION TABLE +struct IniElem { // STRING INITIALISATION TABLE Aword fpos; // File position Aword len; // Length Aword adr; // Where to store the string -} IniElem; +}; -typedef struct MsgElem26 { // MESSAGE TABLE +struct MsgElem26 { // MESSAGE TABLE Aword fpos; // File position Aword len; // Length of message -} MsgElem26; +}; -typedef struct MsgElem { // MESSAGE TABLE +struct MsgElem { // MESSAGE TABLE Aaddr stms; // Address to statements // Changed v2.7 from fpos+len in .dat -} MsgElem; +}; - -typedef struct ParamElem { // PARAMETER +struct ParamElem { // PARAMETER Aword code; // Code for this parameter (0=multiple) Aword firstWord; // Index to first word used by player Aword lastWord; // d:o to last -} ParamElem; +}; -typedef enum Type {TYPNUM, TYPSTR} Type; +enum Type { + TYPNUM, + TYPSTR +}; -typedef struct LitElem { // LITERAL +struct LitElem { // LITERAL Type type; Aptr value; -} LitElem; +}; #define MAXPARAMS 9 #define MAXENTITY (_vm->header->actmax) } // End of namespace Alan2 -} // Engine of namespace GLK +} // End of namespace Glk #endif -- cgit v1.2.3