/[ascend]/trunk/base/generic/compiler/statement.h
ViewVC logotype

Diff of /trunk/base/generic/compiler/statement.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 300 by johnpye, Tue Jan 17 05:48:00 2006 UTC revision 301 by johnpye, Mon Feb 20 07:39:14 2006 UTC
# Line 45  Line 45 
45    
46  extern void AddContext(struct StatementList *slist ,unsigned int c);  extern void AddContext(struct StatementList *slist ,unsigned int c);
47  /**<  /**<
  *  <!--  AddContext(slist,c)                                          -->  
48   *   *
49   *  Adds the given context flags, c, to the statements in the list   *  Adds the given context flags, c, to the statements in the list
50   *  using the | operator, so that existing context   *  using the | operator, so that existing context
# Line 68  extern void AddContext(struct StatementL Line 67  extern void AddContext(struct StatementL
67    
68  extern unsigned int SlistHasWhat(struct StatementList *slist);  extern unsigned int SlistHasWhat(struct StatementList *slist);
69  /**<  /**<
  *  <!--  unsigned int SlistHasWhat(slist);                            -->  
70   *  Returns an unsigned with the low bits set according to whether or   *  Returns an unsigned with the low bits set according to whether or
71   *  not there is a statement of the indicated class in the slist given.   *  not there is a statement of the indicated class in the slist given.
72   *  The value is determined by examining the list, not by looking up   *  The value is determined by examining the list, not by looking up
# Line 79  extern unsigned int SlistHasWhat(struct Line 77  extern unsigned int SlistHasWhat(struct
77  extern struct Statement *CreateALIASES(struct VariableList *vl,  extern struct Statement *CreateALIASES(struct VariableList *vl,
78                                         struct Name *n);                                         struct Name *n);
79  /**<  /**<
  *  <!--  struct Statement *CreateALIASES(vl,n)                        -->  
  *  <!--  struct VariableList *vl;                                     -->  
  *  <!--  struct Name *n;                                              -->  
80   *  Create an ALIASES statement.   *  Create an ALIASES statement.
81   *  Initializes the reference count to one.   *  Initializes the reference count to one.
82   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
# Line 97  extern struct Statement *CreateARR(struc Line 92  extern struct Statement *CreateARR(struc
92                                     int intset,                                     int intset,
93                                     struct Set *setvals);                                     struct Set *setvals);
94  /**<  /**<
  *  <!--  struct Statement *CreateARR(aname,il,setname,intset,setvals) -->  
  *  <!--  struct VariableList *avlname;                                -->  
  *  <!--  struct VariableList *il;                                     -->  
  *  <!--  struct VariableList *setvlname;                              -->  
  *  <!--  int intset;                                                  -->  
  *  <!--  struct Set *setvals;                                         -->  
95   *  Create a compound ALIASES-IS_A statement.   *  Create a compound ALIASES-IS_A statement.
96   *  VariableListLength(avlname) and VariableListLength(setname) should   *  VariableListLength(avlname) and VariableListLength(setname) should
97   *  be 1.   *  be 1.
# Line 125  extern struct Statement *CreateISA(struc Line 114  extern struct Statement *CreateISA(struc
114                                     struct Set *ta,                                     struct Set *ta,
115                                     symchar *st);                                     symchar *st);
116  /**<  /**<
  *  <!--  struct Statement *CreateISA(vl,t,ta,st)                      -->  
  *  <!--  struct VariableList *vl;                                     -->  
  *  <!--  struct Set *ta;                                              -->  
  *  <!--  const char *t,*st;                                           -->  
117   *  Initializes the reference count to one.   *  Initializes the reference count to one.
118   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
119   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
# Line 145  extern struct Statement *CreateWILLBE(st Line 130  extern struct Statement *CreateWILLBE(st
130                                        symchar *st,                                        symchar *st,
131                                        struct Expr *cv);                                        struct Expr *cv);
132  /**<  /**<
  *  <!--  struct Statement *CreateWILLBE(vl,t,ta,st,cv)                -->  
  *  <!--  struct VariableList *vl;                                     -->  
  *  <!--  struct Set *ta;                                              -->  
  *  <!--  const char *t,*st;                                           -->  
  *  <!--  struct Expr *cv;                                             -->  
133   *  Initializes the reference count to one.   *  Initializes the reference count to one.
134   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
135   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
# Line 165  extern struct Statement *CreateIRT(struc Line 145  extern struct Statement *CreateIRT(struc
145                                     symchar *t,                                     symchar *t,
146                                     struct Set *ta);                                     struct Set *ta);
147  /**<  /**<
  *  <!--  struct Statement *CreateIRT(vl,t,ta)                         -->  
  *  <!--  struct VariableList *vl;                                     -->  
  *  <!--  const char *t;                                               -->  
  *  <!--  struct Set *ta;                                              -->  
148   *  Create an IS_REFINED_TO statement node.   *  Create an IS_REFINED_TO statement node.
149   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
150   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
# Line 180  extern struct Statement *CreateIRT(struc Line 156  extern struct Statement *CreateIRT(struc
156    
157  extern struct Statement *CreateAA(struct VariableList *vl);  extern struct Statement *CreateAA(struct VariableList *vl);
158  /**<  /**<
  *  <!--  struct Statement *CreateAA(vl)                               -->  
  *  <!--  struct VariableList *vl;                                     -->  
159   *  Create an ARE_ALIKE statement node.   *  Create an ARE_ALIKE statement node.
160   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
161   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
# Line 191  extern struct Statement *CreateAA(struct Line 165  extern struct Statement *CreateAA(struct
165    
166  extern struct Statement *CreateATS(struct VariableList *vl);  extern struct Statement *CreateATS(struct VariableList *vl);
167  /**<  /**<
  *  <!--  struct Statement *CreateATS(vl)                              -->  
  *  <!--  struct VariableList *vl;                                     -->  
168   *  Create an ARE_THE_SAME statement node.   *  Create an ARE_THE_SAME statement node.
169   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
170   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
# Line 208  extern struct Statement *CreateFIX(struc Line 180  extern struct Statement *CreateFIX(struc
180    
181  extern struct Statement *CreateWBTS(struct VariableList *vl);  extern struct Statement *CreateWBTS(struct VariableList *vl);
182  /**<  /**<
  *  <!--  struct Statement *CreateWBTS(vl)                             -->  
  *  <!--  struct VariableList *vl;                                     -->  
183   *  Create an WILL_BE_THE_SAME statement node.   *  Create an WILL_BE_THE_SAME statement node.
184   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
185   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
# Line 219  extern struct Statement *CreateWBTS(stru Line 189  extern struct Statement *CreateWBTS(stru
189    
190  extern struct Statement *CreateWNBTS(struct VariableList *vl);  extern struct Statement *CreateWNBTS(struct VariableList *vl);
191  /**<  /**<
  *  <!--  struct Statement *CreateWNBTS(vl)                            -->  
  *  <!--  struct VariableList *vl;                                     -->  
192   *  Create an WILL_NOT_BE_THE_SAME statement node.   *  Create an WILL_NOT_BE_THE_SAME statement node.
193   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
194   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
# Line 234  extern struct Statement *CreateFOR(symch Line 202  extern struct Statement *CreateFOR(symch
202                                     enum ForOrder order,                                     enum ForOrder order,
203                                     enum ForKind kind);                                     enum ForKind kind);
204  /**<  /**<
  *  <!--  struct Statement *CreateFOR(index,expr,stmts,order,kind)     -->  
  *  <!--  struct Expr *expr;                                           -->  
  *  <!--  const char *index;                                           -->  
  *  <!--  struct StatementList *stmts;                                 -->  
  *  <!--  enum ForOrder order;                                         -->  
  *  <!--  enum ForKind kind;                                           -->  
  *  
205   *  Create a FOR statement node.   *  Create a FOR statement node.
206   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
207   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
# Line 254  extern struct Statement *CreateFOR(symch Line 215  extern struct Statement *CreateFOR(symch
215  extern struct Statement *CreateREL(struct Name *n,  extern struct Statement *CreateREL(struct Name *n,
216                                     struct Expr *relation);                                     struct Expr *relation);
217  /**<  /**<
  *  <!--  struct Statement *CreateREL(n,relation);                     -->  
  *  <!--  struct Name *n;                                              -->  
  *  <!--  struct Expr *relation;                                       -->  
218   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
219   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
220   */   */
# Line 264  extern struct Statement *CreateREL(struc Line 222  extern struct Statement *CreateREL(struc
222  extern struct Statement *CreateLOGREL(struct Name *n,  extern struct Statement *CreateLOGREL(struct Name *n,
223                                        struct Expr *logrel);                                        struct Expr *logrel);
224  /**<  /**<
  *  <!--  struct Statement *CreateLOGREL(n,logrel);                    -->  
  *  <!--  struct Name *n;                                              -->  
  *  <!--  struct Expr *logrel;                                         -->  
225   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
226   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
227   */   */
# Line 292  extern struct Statement *CreateEXTERN(in Line 247  extern struct Statement *CreateEXTERN(in
247  extern struct Statement *CreateFlow(enum FlowControl fc,  extern struct Statement *CreateFlow(enum FlowControl fc,
248                                      CONST char *msgtext);                                      CONST char *msgtext);
249  /**<  /**<
  *  <!--  struct Statement *CreateFlow(fc,msgtext);                    -->  
250   *  Create a BREAK, CONTINUE, FALL_THROUGH, RETURN, STOP as   *  Create a BREAK, CONTINUE, FALL_THROUGH, RETURN, STOP as
251   *  indicated by fc. If msgtext is not NULL, it is   *  indicated by fc. If msgtext is not NULL, it is
252   *  converted to a bracechar and stored as the message.   *  converted to a bracechar and stored as the message.
# Line 303  extern struct Statement *CreateREF(struc Line 257  extern struct Statement *CreateREF(struc
257                                     symchar *st,                                     symchar *st,
258                                     int mode);                                     int mode);
259  /**<  /**<
  *  <!--  struct Statement *CreateREF(vl,ref_name,st,mode)             -->  
  *  <!--  struct VariableList *vl;                                     -->  
  *  <!--  const char *ref_name;                                        -->  
  *  <!--  const char *settype;                                         -->  
  *  <!--  int mode; -- 0 = copy semantics; (_IS_)                      -->  
  *  <!--          --  1 = pure reference semantics; (_REFERS_)         -->  
260   *  Creates a new REFERENCE type statement. ref_name is the name of   *  Creates a new REFERENCE type statement. ref_name is the name of
261   *  the type or prototype being referred to.   *  the type or prototype being referred to.
262   *  Initializes the reference count to one.   *  Initializes the reference count to one.
# Line 323  extern struct Statement *CreateREF(struc Line 271  extern struct Statement *CreateREF(struc
271    
272  extern void SetRelationName(struct Statement *stat, struct Name *n);  extern void SetRelationName(struct Statement *stat, struct Name *n);
273  /**<  /**<
  *  <!--  void SetRelationName(stat,n)                                 -->  
  *  <!--  struct Statement *stat;                                      -->  
  *  <!--  struct Name *n;                                              -->  
274   *  This procedure provides a mechanism for unnamed relations to be named.   *  This procedure provides a mechanism for unnamed relations to be named.
275   *  It should only be called on relation statements that are unnamed.  It   *  It should only be called on relation statements that are unnamed.  It
276   *  will name the relation with the name provided.   *  will name the relation with the name provided.
# Line 333  extern void SetRelationName(struct State Line 278  extern void SetRelationName(struct State
278    
279  extern void SetLogicalRelName(struct Statement *stat, struct Name *n);  extern void SetLogicalRelName(struct Statement *stat, struct Name *n);
280  /**<  /**<
  *  <!--  void SetLogicalRelName(stat,n)                               -->  
  *  <!--  struct Statement *stat;                                      -->  
  *  <!--  struct Name *n;                                              -->  
281   *  This procedure provides a mechanism for unnamed relations to be named.   *  This procedure provides a mechanism for unnamed relations to be named.
282   *  It should only be called on logcial relation statements that are unnamed.   *  It should only be called on logcial relation statements that are unnamed.
283   *  It will name the logical relation with the name provided.   *  It will name the logical relation with the name provided.
# Line 344  extern void SetLogicalRelName(struct Sta Line 286  extern void SetLogicalRelName(struct Sta
286    
287  extern struct Statement *CreateRUN(struct Name *n, struct Name *type);  extern struct Statement *CreateRUN(struct Name *n, struct Name *type);
288  /**<  /**<
  *  <!--  struct Statement *CreateRUN(n,type)                          -->  
  *  <!--  struct Name *n;                                              -->  
  *  <!--  struct Name *type;                                           -->  
289   *  Create a run statement with procedure name n, and/or class type.   *  Create a run statement with procedure name n, and/or class type.
290   *  If type is non NULL, then so called 'class access is to be used to   *  If type is non NULL, then so called 'class access is to be used to
291   *  access the procedure. This is equivalent to the "::" in some object   *  access the procedure. This is equivalent to the "::" in some object
# Line 357  extern struct Statement *CreateRUN(struc Line 296  extern struct Statement *CreateRUN(struc
296    
297  extern struct Statement *CreateCALL(symchar *n, struct Set *arglist);  extern struct Statement *CreateCALL(symchar *n, struct Set *arglist);
298  /**<  /**<
  *  <!--  struct Statement *CreateCALL(n,argList)                      -->  
  *  <!--  symchar *n;                                                  -->  
  *  <!--  struct Set * argList;                                        -->  
299   *  Create a CALL statement with name n and arguments argList.   *  Create a CALL statement with name n and arguments argList.
300   *  argList may be NULL.   *  argList may be NULL.
301   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
# Line 379  extern struct Statement *CreateIF(struct Line 315  extern struct Statement *CreateIF(struct
315                                    struct StatementList *ifblock,                                    struct StatementList *ifblock,
316                                    struct StatementList *elseblock);                                    struct StatementList *elseblock);
317  /**<  /**<
  *  <!--  struct Statement *CreateIF(ex,ifblock,elseblock)             -->  
  *  <!--  struct Expr *ex;                                             -->  
  *  <!--  struct StatementList *ifblock,*elseblock;                    -->  
318   *  Create an IF-THEN-ELSE structure.  If the else block is omitted,   *  Create an IF-THEN-ELSE structure.  If the else block is omitted,
319   *  pass in NULL for elseblock.   *  pass in NULL for elseblock.
320   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
# Line 391  extern struct Statement *CreateIF(struct Line 324  extern struct Statement *CreateIF(struct
324  extern struct Statement *CreateWhile(struct Expr *test,  extern struct Statement *CreateWhile(struct Expr *test,
325                                       struct StatementList *body);                                       struct StatementList *body);
326  /**<  /**<
  *  <!--  struct Statement *CreateWhile(test,body)                     -->  
  *  <!--  struct Expr *test;                                           -->  
  *  <!--  struct StatementList *body;                                  -->  
327   *  Create a WHILE-DO structure.   *  Create a WHILE-DO structure.
328   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
329   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
# Line 403  extern struct Statement *CreateWHEN(stru Line 333  extern struct Statement *CreateWHEN(stru
333                                      struct VariableList *vlist,                                      struct VariableList *vlist,
334                                      struct WhenList *wl);                                      struct WhenList *wl);
335  /**<  /**<
  *  <!--  struct Statement *CreateWHEN(wname,vlist,wl)                 -->  
  *  <!--  struct Name *wname;                                          -->  
  *  <!--  struct VariableList *vlist;                                  -->  
  *  <!--  struct WhenList *wl;                                         -->  
336   *  Crease a WHEN statement structure.   *  Crease a WHEN statement structure.
337   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
338   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
# Line 414  extern struct Statement *CreateWHEN(stru Line 340  extern struct Statement *CreateWHEN(stru
340    
341  extern struct Statement *CreateFNAME(struct Name *name);  extern struct Statement *CreateFNAME(struct Name *name);
342  /**<  /**<
  *  <!--  struct Statement *CreateFNAME(name)                          -->  
343   *  Crease a FNAME statement structure.   *  Crease a FNAME statement structure.
344   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
345   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
# Line 424  extern struct Statement *CreateFNAME(str Line 349  extern struct Statement *CreateFNAME(str
349  extern struct Statement *CreateSWITCH(struct VariableList *v,  extern struct Statement *CreateSWITCH(struct VariableList *v,
350                                        struct SwitchList *sw);                                        struct SwitchList *sw);
351  /**<  /**<
  *  <!--  struct Statement *CreateSWITCH(v,sw)                         -->  
  *  <!--  struct VariableList *v;                                      -->  
  *  <!--  struct SelectList *sw;                                       -->  
352   *  Crease a SWITCH statement structure.   *  Crease a SWITCH statement structure.
353   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
354   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
# Line 434  extern struct Statement *CreateSWITCH(st Line 356  extern struct Statement *CreateSWITCH(st
356    
357  extern struct Statement *CreateCOND(struct StatementList *stat);  extern struct Statement *CreateCOND(struct StatementList *stat);
358  /**<  /**<
  *  <!--  struct Statement *CreateCOND(stat)                           -->  
  *  <!--  struct StatementList *stmts;                                 -->  
359   *  Create a CONDITIONAL statement structure.   *  Create a CONDITIONAL statement structure.
360   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
361   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
# Line 444  extern struct Statement *CreateCOND(stru Line 364  extern struct Statement *CreateCOND(stru
364  extern struct Statement *CreateSELECT(struct VariableList *v,  extern struct Statement *CreateSELECT(struct VariableList *v,
365                                        struct SelectList *sel);                                        struct SelectList *sel);
366  /**<  /**<
  *  <!--  struct Statement *CreateSELECT(v,sel)                        -->  
  *  <!--  struct VariableList *v;                                      -->  
  *  <!--  struct SelectList *sel;                                      -->  
367   *  Crease a SELECT statement structure.   *  Crease a SELECT statement structure.
368   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
369   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
# Line 455  extern struct Statement *CreateSELECT(st Line 372  extern struct Statement *CreateSELECT(st
372  extern struct Statement *CreateASSIGN(struct Name *n,  extern struct Statement *CreateASSIGN(struct Name *n,
373                                        struct Expr *rhs);                                        struct Expr *rhs);
374  /**<  /**<
  *  <!--  struct Statement *CreateASSIGN(n,rhs);                       -->  
  *  <!--  struct Name *n;                                              -->  
  *  <!--  struct Expr *rhs;                                            -->  
375   *  Create a default assignment statement node.   *  Create a default assignment statement node.
376   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
377   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
# Line 465  extern struct Statement *CreateASSIGN(st Line 379  extern struct Statement *CreateASSIGN(st
379    
380  extern struct Statement *CreateCASSIGN(struct Name *n, struct Expr *rhs);  extern struct Statement *CreateCASSIGN(struct Name *n, struct Expr *rhs);
381  /**<  /**<
  *  <!--  struct Statement *CreateCASSIGN(n,rhs);                      -->  
  *  <!--  struct Name *n;                                              -->  
  *  <!--  struct Expr *rhs;                                            -->  
382   *  Create a structural assignment statement node.   *  Create a structural assignment statement node.
383   *  The statement's module is set to the current open module.   *  The statement's module is set to the current open module.
384   *  The statement's line number is set to the current line number.   *  The statement's line number is set to the current line number.
# Line 486  extern struct Statement *CreateCASSIGN(s Line 397  extern struct Statement *CreateCASSIGN(s
397   */   */
398  extern enum stat_t StatementTypeF(CONST struct Statement *s);  extern enum stat_t StatementTypeF(CONST struct Statement *s);
399  /**<  /**<
  *  <!--  macro StatementType(s)                                       -->  
  *  <!--  enum stat_t StatementTypeF(s)                                -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the statement type of s.                              -->  
400   *  Implementation function for StatementType().  Do not call this   *  Implementation function for StatementType().  Do not call this
401   *  function directly - use StatementType() instead.   *  function directly - use StatementType() instead.
402   */   */
# Line 507  extern enum stat_t StatementTypeF(CONST Line 414  extern enum stat_t StatementTypeF(CONST
414   */   */
415  extern struct module_t *StatementModuleF(CONST struct Statement *s);  extern struct module_t *StatementModuleF(CONST struct Statement *s);
416  /**<  /**<
417   *  <!--  macro StatementModule(s)                                     -->   *  Return the module that statement s was defined in.
  *  <!--  struct module_t *StatementModuleF(s)                         -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the module that statement s was defined in.           -->  
418   *  Implementation function for StatementModule().  Do not call this   *  Implementation function for StatementModule().  Do not call this
419   *  function directly - use StatementModule() instead.   *  function directly - use StatementModule() instead.
420   */   */
# Line 528  extern struct module_t *StatementModuleF Line 432  extern struct module_t *StatementModuleF
432   */   */
433  extern unsigned long StatementLineNumF(CONST struct Statement *s);  extern unsigned long StatementLineNumF(CONST struct Statement *s);
434  /**<  /**<
435   *  <!--  macro StatementLineNum(s)                                    -->   *  Return the line number where statement s was defined.
  *  <!--  unsigned long StatementLineNumF(s)                           -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the line number where statement s was defined.        -->  
436   *  Implementation function for StatementLineNum().  Do not call this   *  Implementation function for StatementLineNum().  Do not call this
437   *  function directly - use StatementLineNum() instead.   *  function directly - use StatementLineNum() instead.
438   */   */
# Line 554  extern unsigned long StatementLineNumF(C Line 455  extern unsigned long StatementLineNumF(C
455   */   */
456  extern struct Statement *CopyStatementF(struct Statement *s);  extern struct Statement *CopyStatementF(struct Statement *s);
457  /**<  /**<
  *  <!--  struct Statement *CopyStatementF(s)                          -->  
  *  <!--  struct Statement *s;                                         -->  
  *  <!--  Make a new reference to statement s.  This does not actually make a new -->  
  *  <!--  copy in memory of the data in s: it only increases the reference count. -->  
  *  <!--  If you need to modify the statement, you should use CopyToModify which  -->  
  *  <!--  is defined below.                                            -->  
  *  <!--  You don't need to worry about the count overflowing unless the user is  -->  
  *  <!--  utterly insane.                                              -->  
458   *  Implementation function for CopyStatement().  Do not call this   *  Implementation function for CopyStatement().  Do not call this
459   *  function directly - use CopyStatement() instead.   *  function directly - use CopyStatement() instead.
460   */   */
461    
462  extern void DestroyStatement(struct Statement *s);  extern void DestroyStatement(struct Statement *s);
463  /**<  /**<
  *  <!--  void DeleteStatement(s)                                      -->  
  *  <!--  struct Statement *s;                                         -->  
464   *  Delete a reference to statement s.  This make not actually deallocate   *  Delete a reference to statement s.  This make not actually deallocate
465   *  the memory associated with s if there are still other references to   *  the memory associated with s if there are still other references to
466   *  the statement.  If there aren't any, remaining references it deallocates   *  the statement.  If there aren't any, remaining references it deallocates
# Line 578  extern void DestroyStatement(struct Stat Line 469  extern void DestroyStatement(struct Stat
469    
470  extern struct Statement *CopyToModify(struct Statement *s);  extern struct Statement *CopyToModify(struct Statement *s);
471  /**<  /**<
  *  <!--  struct Statement *CopyToModify(s)                            -->  
  *  <!--  struct Statement *s;                                         -->  
472   *  This will always make a new separate copy of the statement, so that   *  This will always make a new separate copy of the statement, so that
473   *  it can be modified.  The statement reference count is initialize to   *  it can be modified.  The statement reference count is initialize to
474   *  one.   *  one.
# Line 600  extern struct Statement *CopyToModify(st Line 489  extern struct Statement *CopyToModify(st
489   */   */
490  extern unsigned int GetStatContextF(CONST struct Statement *s);  extern unsigned int GetStatContextF(CONST struct Statement *s);
491  /**<  /**<
  *  <!--  bits = GetStatContext(s);                                    -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Returns the context bits of the statement.                   -->  
  *  <!--  If statement is of a type that doesn't have context bits,    -->  
  *  <!--  returns context_MODEL and issues warning message.            -->  
492   *  Implementation function for GetStatContext().  Do not call this   *  Implementation function for GetStatContext().  Do not call this
493   *  function directly - use GetStatContext() instead.   *  function directly - use GetStatContext() instead.
494   */   */
# Line 665  extern unsigned int GetStatContextF(CONS Line 549  extern unsigned int GetStatContextF(CONS
549    
550  extern void SetStatContext(struct Statement *s, unsigned int bits);  extern void SetStatContext(struct Statement *s, unsigned int bits);
551  /**<  /**<
  *  <!--  SetStatContext(s,bits)                                       -->  
552   *  Sets the context field of a statement to the value, bits, given.   *  Sets the context field of a statement to the value, bits, given.
553   *  E.g. to turn on the FOR context bit,   *  E.g. to turn on the FOR context bit,
554   *  This function should only be used at parse time, and probably not   *  This function should only be used at parse time, and probably not
# Line 676  extern void SetStatContext(struct Statem Line 559  extern void SetStatContext(struct Statem
559    
560  extern void MarkStatContext(struct Statement *s, unsigned int bits);  extern void MarkStatContext(struct Statement *s, unsigned int bits);
561  /**<  /**<
  *  <!--  MarkStatContext(s,bits)                                      -->  
562   *  Adds the context bits given in bits to the context field of the   *  Adds the context bits given in bits to the context field of the
563   *  statement given.   *  statement given.
564   *  E.g. to turn on the FOR context bit,   *  E.g. to turn on the FOR context bit,
# Line 689  extern void MarkStatContext(struct State Line 571  extern void MarkStatContext(struct State
571    
572  extern struct VariableList *GetStatVarList(CONST struct Statement *s);  extern struct VariableList *GetStatVarList(CONST struct Statement *s);
573  /**<  /**<
  *  <!--  struct VariableList *GetStatVarListF(s)                      -->  
  *  <!--  const struct Statement *s;                                   -->  
574   *  Returns the variable list of a   *  Returns the variable list of a
575   *  IS_A, IS_REFINED_TO, WILL_BE, WILL_BE_THE_SAME,   *  IS_A, IS_REFINED_TO, WILL_BE, WILL_BE_THE_SAME,
576   *  ARE_ALIKE, ARE_THE_SAME, ALIASES or ALIASES-ISA(ARR) statement.   *  ARE_ALIKE, ARE_THE_SAME, ALIASES or ALIASES-ISA(ARR) statement.
# Line 716  extern struct VariableList *GetStatVarLi Line 596  extern struct VariableList *GetStatVarLi
596   */   */
597  extern symchar *GetStatTypeF(CONST struct Statement *s);  extern symchar *GetStatTypeF(CONST struct Statement *s);
598  /**<  /**<
  *  <!--  macro GetStatType(s)                                         -->  
  *  <!--  symchar *GetStatTypeF(s)                                     -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the type field of an IS_A, WILL_BE, or IS_REFINED_TO statement. -->  
  *  <!--  It must be passed one of these types of statement.           -->  
  *  <!--  Other statements will return NULL or crash.                  -->  
  *  <!--  See also GetStatTypeDesc, type_desc.h.                       -->  
599   *  Implementation function for GetStatType().  Do not call this   *  Implementation function for GetStatType().  Do not call this
600   *  function directly - use GetStatType() instead.   *  function directly - use GetStatType() instead.
601   */   */
# Line 743  extern symchar *GetStatTypeF(CONST struc Line 616  extern symchar *GetStatTypeF(CONST struc
616   */   */
617  extern CONST struct Set *GetStatTypeArgsF(CONST struct Statement *s);  extern CONST struct Set *GetStatTypeArgsF(CONST struct Statement *s);
618  /**<  /**<
  *  <!--  macro GetStatTypeArgs(s)                                     -->  
  *  <!--  const struct Set *GetStatTypeArgsF(s)                        -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the typeargs field of an IS_A, WILL_BE or IS_REFINED_TO statement. -->  
  *  <!--  It must be passed one of these types of statement.           -->  
  *  <!--  Proper WILLBE statements should always return NULL.          -->  
  *  <!--  Other statements will return NULL or crash.                  -->  
619   *  Implementation function for GetStatTypeArgs().  Do not call this   *  Implementation function for GetStatTypeArgs().  Do not call this
620   *  function directly - use GetStatTypeArgs() instead.   *  function directly - use GetStatTypeArgs() instead.
621   */   */
622    
623  extern unsigned int GetStatNeedsArgs(CONST struct Statement *s);  extern unsigned int GetStatNeedsArgs(CONST struct Statement *s);
624  /**<  /**<
  *  <!--  len = GetStatNeedsArgs(s);                                   -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  unsigned int len;                                            -->  
625   *  Returns the number of arguments required to satisfy the type of the   *  Returns the number of arguments required to satisfy the type of the
626   *  ISA or IRT statement given. Note that this number is not necessarily   *  ISA or IRT statement given. Note that this number is not necessarily
627   *  the number of arguments actually in the statement as the user wrote it.   *  the number of arguments actually in the statement as the user wrote it.
# Line 780  extern unsigned int GetStatNeedsArgs(CON Line 643  extern unsigned int GetStatNeedsArgs(CON
643   */   */
644  extern symchar *GetStatSetTypeF(CONST struct Statement *s);  extern symchar *GetStatSetTypeF(CONST struct Statement *s);
645  /**<  /**<
  *  <!--  macro GetStatSetType(s)                                      -->  
  *  <!--  symchar *GetStatSetTypeF(s)                                  -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the type of set for an IS_A, WILL_BE.                 -->  
  *  <!--  Often this will be NULL, which                               -->  
  *  <!--  means that there is no "OF" part to the IS_A/WILL_BE.        -->  
646   *  Implementation function for GetStatSetType().  Do not call this   *  Implementation function for GetStatSetType().  Do not call this
647   *  function directly - use GetStatSetType() instead.   *  function directly - use GetStatSetType() instead.
648   */   */
# Line 804  extern symchar *GetStatSetTypeF(CONST st Line 661  extern symchar *GetStatSetTypeF(CONST st
661   */   */
662  extern CONST struct Expr *GetStatCheckValueF(CONST struct Statement *s);  extern CONST struct Expr *GetStatCheckValueF(CONST struct Statement *s);
663  /**<  /**<
  *  <!--  macro GetStatCheckValue(s)                                   -->  
  *  <!--  const struct Expr *GetStatCheckValueF(s)                     -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the value expression for a WILLBE.  Often this will be NULL, -->  
  *  <!--  which means that there is no WITH_VALUE part to the WILL_BE. -->  
664   *  Implementation function for GetStatCheckValue().  Do not call this   *  Implementation function for GetStatCheckValue().  Do not call this
665   *  function directly - use GetStatCheckValue() instead.   *  function directly - use GetStatCheckValue() instead.
666   */   */
# Line 829  extern CONST struct Expr *GetStatCheckVa Line 681  extern CONST struct Expr *GetStatCheckVa
681   */   */
682  extern CONST struct Name *AliasStatNameF(CONST struct Statement *s);  extern CONST struct Name *AliasStatNameF(CONST struct Statement *s);
683  /**<  /**<
  *  <!--  macro AliasStatName(s)                                       -->  
  *  <!--  struct Name *AliasStatNameF(s)                               -->  
  *  <!--  Return the Name RHS from a simple ALIASES statement.         -->  
  *  <!--  See stattypes.h for meaning of Name.                         -->  
684   *  Implementation function for AliasStatName().  Do not call this   *  Implementation function for AliasStatName().  Do not call this
685   *  function directly - use AliasStatName() instead.   *  function directly - use AliasStatName() instead.
686   */   */
# Line 860  extern CONST struct Name *AliasStatNameF Line 708  extern CONST struct Name *AliasStatNameF
708   */   */
709  extern CONST struct VariableList *ArrayStatAvlNamesF(CONST struct Statement *s);  extern CONST struct VariableList *ArrayStatAvlNamesF(CONST struct Statement *s);
710  /**<  /**<
  *  <!--  macro ArrayStatAvlNames(s)                                   -->  
  *  <!--  CONST struct VariableList *ArrayStatAvlNamesF(s)             -->  
  *  <!--  Return the LHS (new array(s)) being defined from an ARR statement. -->  
  *  <!--  See stattypes.h for meaning of vlist.                        -->  
  *  <!--  syntax is currently:                                         -->  
  *  
  *  <!--  AvlNames ALIASES (VarList)                                   -->  
  *  <!--  WHERE SetName IS_A set OF IntSet WITH_VALUE (SetValues);     -->  
  *  
  *  <!--  while the standard ALIASES statement is just:                -->  
  *  
  *  <!--  VarList ALIASES Name;                                        -->  
711   *  Implementation function for ArrayStatAvlNames().  Do not call this   *  Implementation function for ArrayStatAvlNames().  Do not call this
712   *  function directly - use ArrayStatAvlNames() instead.   *  function directly - use ArrayStatAvlNames() instead.
713   */   */
# Line 889  extern CONST struct VariableList *ArrayS Line 725  extern CONST struct VariableList *ArrayS
725   */   */
726  extern CONST struct VariableList *ArrayStatSetNameF(CONST struct Statement *s);  extern CONST struct VariableList *ArrayStatSetNameF(CONST struct Statement *s);
727  /**<  /**<
  *  <!--  macro ArrayStatSetName(s)                                    -->  
  *  <!--  struct VariableList *ArrayStatSetNameF(s)                    -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the name of set for an ARR statement.                 -->  
728   *  Implementation function for ArrayStatSetName().  Do not call this   *  Implementation function for ArrayStatSetName().  Do not call this
729   *  function directly - use ArrayStatSetName() instead.   *  function directly - use ArrayStatSetName() instead.
730   */   */
# Line 912  extern CONST struct VariableList *ArrayS Line 744  extern CONST struct VariableList *ArrayS
744   */   */
745  extern int ArrayStatIntSetF(CONST struct Statement *s);  extern int ArrayStatIntSetF(CONST struct Statement *s);
746  /**<  /**<
  *  <!--  macro ArrayStatIntSet(s)                                     -->  
  *  <!--  int ArrayStatIntSetF(s)                                      -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  
  *  <!--  Return 0 or 1 corresponding to set being defined as symbol or integer. -->  
  *  <!--  It must be passed an ARR statement.                          -->  
  *  <!--  Other statements will return goop or crash.                  -->  
747   *  Implementation function for ArrayStatIntSet().  Do not call this   *  Implementation function for ArrayStatIntSet().  Do not call this
748   *  function directly - use ArrayStatIntSet() instead.   *  function directly - use ArrayStatIntSet() instead.
749   */   */
# Line 939  extern int ArrayStatIntSetF(CONST struct Line 764  extern int ArrayStatIntSetF(CONST struct
764   */   */
765  extern CONST struct Set *ArrayStatSetValuesF(CONST struct Statement *s);  extern CONST struct Set *ArrayStatSetValuesF(CONST struct Statement *s);
766  /**<  /**<
  *  <!--  macro ArrayStatSetValues(s)                                  -->  
  *  <!--  struct Set *ArrayStatSetValuesF(s)                           -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  
  *  <!--  Return the user proposed set of values to use for array names. -->  
  *  <!--  It must be passed an ARR statement. May be empty/NULL set.   -->  
  *  <!--  (this is the list after WITH_VALUE)                           -->  
  *  <!--  Other statements will return goop or crash.                  -->  
767   *  Implementation function for ArrayStatSetValues().  Do not call this   *  Implementation function for ArrayStatSetValues().  Do not call this
768   *  function directly - use ArrayStatSetValues() instead.   *  function directly - use ArrayStatSetValues() instead.
769   */   */
# Line 966  extern CONST struct Set *ArrayStatSetVal Line 783  extern CONST struct Set *ArrayStatSetVal
783   */   */
784  extern symchar *ForStatIndexF(CONST struct Statement *s);  extern symchar *ForStatIndexF(CONST struct Statement *s);
785  /**<  /**<
  *  <!--  macro ForStatIndex(s)                                        -->  
  *  <!--  symchar *ForStatIndexF(s)                                    -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the FOR index variable identifier.                    -->  
786   *  Implementation function for ForStatIndex().  Do not call this   *  Implementation function for ForStatIndex().  Do not call this
787   *  function directly - use ForStatIndex() instead.   *  function directly - use ForStatIndex() instead.
788   */   */
# Line 987  extern symchar *ForStatIndexF(CONST stru Line 800  extern symchar *ForStatIndexF(CONST stru
800   */   */
801  extern struct Expr *ForStatExprF(CONST struct Statement *s);  extern struct Expr *ForStatExprF(CONST struct Statement *s);
802  /**<  /**<
  *  <!--  macro ForStatExpr(s)                                         -->  
  *  <!--  struct Expr *ForStatExprF(s)                                 -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the expression of values that the index variable takes. -->  
803   *  Implementation function for ForStatExpr().  Do not call this   *  Implementation function for ForStatExpr().  Do not call this
804   *  function directly - use ForStatExpr() instead.   *  function directly - use ForStatExpr() instead.
805   */   */
# Line 1008  extern struct Expr *ForStatExprF(CONST s Line 817  extern struct Expr *ForStatExprF(CONST s
817   */   */
818  extern struct StatementList *ForStatStmtsF(CONST struct Statement *s);  extern struct StatementList *ForStatStmtsF(CONST struct Statement *s);
819  /**<  /**<
  *  <!--  macro ForStatStmts(s)                                        -->  
  *  <!--  struct StatementList *ForStatStmtsF(s)                       -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the list of statements that are in the body of the FOR construct. -->  
820   *  Implementation function for ForStatStmts().  Do not call this   *  Implementation function for ForStatStmts().  Do not call this
821   *  function directly - use ForStatStmts() instead.   *  function directly - use ForStatStmts() instead.
822   */   */
# Line 1029  extern struct StatementList *ForStatStmt Line 834  extern struct StatementList *ForStatStmt
834   */   */
835  extern enum ForKind ForLoopKindF(CONST struct Statement *s);  extern enum ForKind ForLoopKindF(CONST struct Statement *s);
836  /**<  /**<
  *  <!--  macro ForLoopKind(s)                                         -->  
  *  <!--  enum ForOrder ForLoopKindF(s)                                -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the kind of the FOR construct.                        -->  
837   *  Implementation function for ForLoopKind().  Do not call this   *  Implementation function for ForLoopKind().  Do not call this
838   *  function directly - use ForLoopKind() instead.   *  function directly - use ForLoopKind() instead.
839   */   */
# Line 1051  extern enum ForKind ForLoopKindF(CONST s Line 852  extern enum ForKind ForLoopKindF(CONST s
852   */   */
853  extern enum ForOrder ForLoopOrderF(CONST struct Statement *s);  extern enum ForOrder ForLoopOrderF(CONST struct Statement *s);
854  /**<  /**<
  *  <!--  macro ForLoopOrder(s)                                        -->  
  *  <!--  enum ForOrder ForLoopOrderF(s)                               -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the order of the FOR construct.  For declarative this -->  
  *  <!--  should always be random.                                     -->  
855   *  Implementation function for ForLoopOrder().  Do not call this   *  Implementation function for ForLoopOrder().  Do not call this
856   *  function directly - use ForLoopOrder() instead.   *  function directly - use ForLoopOrder() instead.
857   */   */
# Line 1183  extern unsigned ForContainsIllegalF(CONS Line 979  extern unsigned ForContainsIllegalF(CONS
979   */   */
980  extern struct Name *DefaultStatVarF(CONST struct Statement *s);  extern struct Name *DefaultStatVarF(CONST struct Statement *s);
981  /**<  /**<
  *  <!--  macro DefaultStatVar(s)                                      -->  
  *  <!--  struct Name *DefaultStatVarF(s)                              -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the name structure which is the left hand side of the -->  
  *  <!--  default assignment.                                          -->  
982   *  Implementation function for DefaultStatVar().  Do not call this   *  Implementation function for DefaultStatVar().  Do not call this
983   *  function directly - use DefaultStatVar() instead.   *  function directly - use DefaultStatVar() instead.
984   */   */
# Line 1205  extern struct Name *DefaultStatVarF(CONS Line 996  extern struct Name *DefaultStatVarF(CONS
996   */   */
997  extern struct Expr *DefaultStatRHSF(CONST struct Statement *s);  extern struct Expr *DefaultStatRHSF(CONST struct Statement *s);
998  /**<  /**<
  *  <!--  macro DefaultStatRHS(s)                                      -->  
  *  <!--  struct Expr *DefaultStatRHSF(s)                              -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the right hand side expression of the default assignment. -->  
999   *  Implementation function for DefaultStatRHS().  Do not call this   *  Implementation function for DefaultStatRHS().  Do not call this
1000   *  function directly - use DefaultStatRHS() instead.   *  function directly - use DefaultStatRHS() instead.
1001   */   */
# Line 1227  extern struct Expr *DefaultStatRHSF(CONS Line 1014  extern struct Expr *DefaultStatRHSF(CONS
1014   */   */
1015  extern struct Name *AssignStatVarF(CONST struct Statement *s);  extern struct Name *AssignStatVarF(CONST struct Statement *s);
1016  /**<  /**<
  *  <!--  macro AssignStatVar(s)                                       -->  
  *  <!--  struct Name *AssignStatVarF(s)                               -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the name structure which is the left hand side of the -->  
  *  <!--  structural assignment.                                       -->  
1017   *  Implementation function for AssignStatVar().  Do not call this   *  Implementation function for AssignStatVar().  Do not call this
1018   *  function directly - use AssignStatVar() instead.   *  function directly - use AssignStatVar() instead.
1019   */   */
# Line 1249  extern struct Name *AssignStatVarF(CONST Line 1031  extern struct Name *AssignStatVarF(CONST
1031   */   */
1032  extern struct Expr *AssignStatRHSF(CONST struct Statement *s);  extern struct Expr *AssignStatRHSF(CONST struct Statement *s);
1033  /**<  /**<
  *  <!--  macro AssignStatRHS(s)                                       -->  
  *  <!--  struct Expr *AssignStatRHSF(s)                               -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the right hand side expression of the structural assignment. -->  
1034   *  Implementation function for AssignStatRHS().  Do not call this   *  Implementation function for AssignStatRHS().  Do not call this
1035   *  function directly - use AssignStatRHS() instead.   *  function directly - use AssignStatRHS() instead.
1036   */   */
# Line 1272  extern struct Expr *AssignStatRHSF(CONST Line 1050  extern struct Expr *AssignStatRHSF(CONST
1050   */   */
1051  extern struct Name *RelationStatNameF(CONST struct Statement *s);  extern struct Name *RelationStatNameF(CONST struct Statement *s);
1052  /**<  /**<
  *  <!--  macro RelationStatName(s)                                    -->  
  *  <!--  struct Name *RelationStatNameF(s)                            -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the name of the relation.                             -->  
1053   *  Implementation function for RelationStatName().  Do not call this   *  Implementation function for RelationStatName().  Do not call this
1054   *  function directly - use RelationStatName() instead.   *  function directly - use RelationStatName() instead.
1055   */   */
# Line 1293  extern struct Name *RelationStatNameF(CO Line 1067  extern struct Name *RelationStatNameF(CO
1067   */   */
1068  extern struct Expr *RelationStatExprF(CONST struct Statement *s);  extern struct Expr *RelationStatExprF(CONST struct Statement *s);
1069  /**<  /**<
  *  <!--  macro RelationStatExpr(s)                                    -->  
  *  <!--  struct Expr *RelationStatExprF(s)                            -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the relation expression.                              -->  
1070   *  Implementation function for RelationStatExpr().  Do not call this   *  Implementation function for RelationStatExpr().  Do not call this
1071   *  function directly - use RelationStatExpr() instead.   *  function directly - use RelationStatExpr() instead.
1072   */   */
# Line 1314  extern struct Expr *RelationStatExprF(CO Line 1084  extern struct Expr *RelationStatExprF(CO
1084   */   */
1085  extern struct Name *LogicalRelStatNameF(CONST struct Statement *s);  extern struct Name *LogicalRelStatNameF(CONST struct Statement *s);
1086  /**<  /**<
  *  <!--  macro LogicalRelStatName(s)                                  -->  
  *  <!--  struct Name *LogicalRelStatNameF(s)                          -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the name of the logical relation.                     -->  
1087   *  Implementation function for LogicalRelStatName().  Do not call this   *  Implementation function for LogicalRelStatName().  Do not call this
1088   *  function directly - use LogicalRelStatName() instead.   *  function directly - use LogicalRelStatName() instead.
1089   */   */
# Line 1335  extern struct Name *LogicalRelStatNameF( Line 1101  extern struct Name *LogicalRelStatNameF(
1101   */   */
1102  extern struct Expr *LogicalRelStatExprF(CONST struct Statement *s);  extern struct Expr *LogicalRelStatExprF(CONST struct Statement *s);
1103  /**<  /**<
  *  <!--  macro LogicalRelStatExpr(s)                                  -->  
  *  <!--  struct Expr *LogicalRelStatExprF(s)                          -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the logical relation expression.                      -->  
1104   *  Implementation function for LogicalRelStatExpr().  Do not call this   *  Implementation function for LogicalRelStatExpr().  Do not call this
1105   *  function directly - use LogicalRelStatExpr() instead.   *  function directly - use LogicalRelStatExpr() instead.
1106   */   */
# Line 1359  extern struct Expr *LogicalRelStatExprF( Line 1121  extern struct Expr *LogicalRelStatExprF(
1121   */   */
1122  extern int ExternalStatModeF(CONST struct Statement *s);  extern int ExternalStatModeF(CONST struct Statement *s);
1123  /**<  /**<
  *  <!--  macro ExternalStatMode(s)                                    -->  
  *  <!--  int ExternalStatModeF(s)                                     -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the external statement's mode.                        -->  
  *  <!--  0 = Procedural, 1 = Glassbox Declarative, 2 = Blackbox Declarative. -->  
1124   *  Implementation function for ExternalStatMode().  Do not call this   *  Implementation function for ExternalStatMode().  Do not call this
1125   *  function directly - use ExternalStatMode() instead.   *  function directly - use ExternalStatMode() instead.
1126   */   */
# Line 1381  extern int ExternalStatModeF(CONST struc Line 1138  extern int ExternalStatModeF(CONST struc
1138   */   */
1139  extern struct Name *ExternalStatNameF(CONST struct Statement *s);  extern struct Name *ExternalStatNameF(CONST struct Statement *s);
1140  /**<  /**<
  *  <!--  macro ExternalStatName(s)                                    -->  
  *  <!--  struct Name *ExternalStatNameF(s)                            -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the external statement's name.                        -->  
1141   *  Implementation function for ExternalStatName().  Do not call this   *  Implementation function for ExternalStatName().  Do not call this
1142   *  function directly - use ExternalStatName() instead.   *  function directly - use ExternalStatName() instead.
1143   */   */
# Line 1402  extern struct Name *ExternalStatNameF(CO Line 1155  extern struct Name *ExternalStatNameF(CO
1155   */   */
1156  extern struct Name *ExternalStatDataF(CONST struct Statement *s);  extern struct Name *ExternalStatDataF(CONST struct Statement *s);
1157  /**<  /**<
  *  <!--  macro ExternalStatData(s)                                    -->  
  *  <!--  struct Name *ExternalStatDataF(s)                            -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the external statement's name of its additional data. -->  
1158   *  Implementation function for ExternalStatData().  Do not call this   *  Implementation function for ExternalStatData().  Do not call this
1159   *  function directly - use ExternalStatData() instead.   *  function directly - use ExternalStatData() instead.
1160   */   */
# Line 1426  extern struct Name *ExternalStatDataF(CO Line 1175  extern struct Name *ExternalStatDataF(CO
1175   */   */
1176  extern struct Name *ExternalStatScopeF(CONST struct Statement *s);  extern struct Name *ExternalStatScopeF(CONST struct Statement *s);
1177  /**<  /**<
  *  <!--  macro ExternalStatScope(s)                                   -->  
  *  <!--  struct Name *ExternalStatScopeF(s)                           -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the external statement's name of its scope. This may be NULL.  -->  
  *  <!--  If it is NULL, then the external relation (at this time assumed to be -->  
  *  <!--  a glassbox, will added at the scope that it was found; otherwise it   -->  
  *  <!--  will be added at the given scope.                            -->  
1178   *  Implementation function for ExternalStatScope().  Do not call this   *  Implementation function for ExternalStatScope().  Do not call this
1179   *  function directly - use ExternalStatScope() instead.   *  function directly - use ExternalStatScope() instead.
1180   */   */
# Line 1450  extern struct Name *ExternalStatScopeF(C Line 1192  extern struct Name *ExternalStatScopeF(C
1192   */   */
1193  extern struct VariableList *ExternalStatVlistF(CONST struct Statement *s);  extern struct VariableList *ExternalStatVlistF(CONST struct Statement *s);
1194  /**<  /**<
  *  <!--  macro ExternalStatVlist(s)                                   -->  
  *  <!--  struct VariableList *ExternalStatVlist(s)                    -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the external statement's variable list -- the argument list. -->  
1195   *  Implementation function for ExternalStatVlist().  Do not call this   *  Implementation function for ExternalStatVlist().  Do not call this
1196   *  function directly - use ExternalStatVlist() instead.   *  function directly - use ExternalStatVlist() instead.
1197   */   */
# Line 1472  extern struct VariableList *ExternalStat Line 1210  extern struct VariableList *ExternalStat
1210   */   */
1211  extern CONST char *ExternalStatFuncNameF(CONST struct Statement *s);  extern CONST char *ExternalStatFuncNameF(CONST struct Statement *s);
1212  /**<  /**<
  *  <!--  macro ExternalStatFuncName(s)                                -->  
  *  <!--  struct Name *ExternalStatFuncNameF(s)                        -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the external statement's function call                -->  
  *  <!--  name. -- the name invoked with.                              -->  
1213   *  Implementation function for ExternalStatFuncName().  Do not call this   *  Implementation function for ExternalStatFuncName().  Do not call this
1214   *  function directly - use ExternalStatFuncName() instead.   *  function directly - use ExternalStatFuncName() instead.
1215   */   */
# Line 1498  extern CONST char *ExternalStatFuncNameF Line 1231  extern CONST char *ExternalStatFuncNameF
1231   */   */
1232  extern int ReferenceStatModeF(CONST struct Statement *s);  extern int ReferenceStatModeF(CONST struct Statement *s);
1233  /**<  /**<
  *  <!--  macro ReferenceStatMode(s)                                   -->  
  *  <!--  int ReferenceStatModeF(s)                                    -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the mode of the refernce statement. Mode at the moment:        -->  
  *  <!--  0 => copy/clone semantics; 1 => pure reference semantics, such as in  -->  
  *  <!--  languages with pointers. Value semantics is handled by ISA statements -->  
1234   *  Implementation function for ReferenceStatMode().  Do not call this   *  Implementation function for ReferenceStatMode().  Do not call this
1235   *  function directly - use ReferenceStatMode() instead.   *  function directly - use ReferenceStatMode() instead.
1236   */   */
# Line 1524  extern int ReferenceStatModeF(CONST stru Line 1251  extern int ReferenceStatModeF(CONST stru
1251   */   */
1252  extern symchar *ReferenceStatNameF(CONST struct Statement *s);  extern symchar *ReferenceStatNameF(CONST struct Statement *s);
1253  /**<  /**<
  *  <!--  macro ReferenceStatName(s)                                   -->  
  *  <!--  const char *ReferenceStatNameF(s)                            -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the name of the thing being referred to. This name is a simple     -->  
  *  <!--  such as a type description. Later this may become accept a fully qulafied -->  
  *  <!--  id., and will depend upon the semantics of how it was invoked.            -->  
  *  <!--  This name may alternatively be called the *referee*          -->  
1254   *  Implementation function for ReferenceStatName().  Do not call this   *  Implementation function for ReferenceStatName().  Do not call this
1255   *  function directly - use ReferenceStatName() instead.   *  function directly - use ReferenceStatName() instead.
1256   */   */
# Line 1551  extern symchar *ReferenceStatNameF(CONST Line 1271  extern symchar *ReferenceStatNameF(CONST
1271  extern symchar *ReferenceStatSetTypeF(CONST struct Statement *s);  extern symchar *ReferenceStatSetTypeF(CONST struct Statement *s);
1272  #endif  #endif
1273  /**<  /**<
  *  <!--  macro ReferenceStatSetType(s)                                -->  
  *  <!--  symchar *ReferenceStatSetType(s)                             -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the type of set for a REF statement. This may be NULL, which -->  
  *  <!--  means that there is no "OF" part to the _IS_ statement.      -->  
  *  <!--  Eg:   foo[thing] _IS_ set OF barobject;   -- not NULL          -->  
  *  <!--            foo_other  _IS_ bar_other;      -- NULL.             -->  
1274   *  Implementation function for ReferenceStatSetType().  Do not call this   *  Implementation function for ReferenceStatSetType().  Do not call this
1275   *  function directly - use ReferenceStatSetType() instead.   *  function directly - use ReferenceStatSetType() instead.
1276   */   */
# Line 1575  extern symchar *ReferenceStatSetTypeF(CO Line 1288  extern symchar *ReferenceStatSetTypeF(CO
1288   */   */
1289  extern struct VariableList *ReferenceStatVlistF(CONST struct Statement *s);  extern struct VariableList *ReferenceStatVlistF(CONST struct Statement *s);
1290  /**<  /**<
  *  <!--  macro ReferenceStatVlist(s)                                  -->  
  *  <!--  struct VariableList *ReferenceStatVlistF(s)                  -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the list of variables/models that refer to the given reference. -->  
1291   *  Implementation function for ReferenceStatVlist().  Do not call this   *  Implementation function for ReferenceStatVlist().  Do not call this
1292   *  function directly - use ReferenceStatVlist() instead.   *  function directly - use ReferenceStatVlist() instead.
1293   */   */
# Line 1598  extern struct VariableList *ReferenceSta Line 1307  extern struct VariableList *ReferenceSta
1307   */   */
1308  extern struct Name *RunStatNameF(CONST struct Statement *s);  extern struct Name *RunStatNameF(CONST struct Statement *s);
1309  /**<  /**<
  *  <!--  macro RunStatName(s)                                         -->  
  *  <!--  struct Name *RunStatNameF(s)                                 -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Returns the name pointer of a run statement.                 -->  
1310   *  Implementation function for RunStatName().  Do not call this   *  Implementation function for RunStatName().  Do not call this
1311   *  function directly - use RunStatName() instead.   *  function directly - use RunStatName() instead.
1312   */   */
# Line 1621  extern struct Name *RunStatNameF(CONST s Line 1326  extern struct Name *RunStatNameF(CONST s
1326   */   */
1327  extern struct Name *RunStatAccessF(CONST struct Statement *s);  extern struct Name *RunStatAccessF(CONST struct Statement *s);
1328  /**<  /**<
  *  <!--  macro RunStatAccess(s)                                       -->  
  *  <!--  char *RunStatAccessF(s)                                      -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Returns the type access of a RUN statement. This is to allow the       -->  
  *  <!--  use of syntax such as: RUN A::b where 'B' is a class/model/atom, and b -->  
  *  <!--  is a name of procedure within that class/atom/model.         -->  
1329   *  Implementation function for RunStatAccess().  Do not call this   *  Implementation function for RunStatAccess().  Do not call this
1330   *  function directly - use RunStatAccess() instead.   *  function directly - use RunStatAccess() instead.
1331   */   */
# Line 1663  extern struct VariableList *FixStatVarsF Line 1362  extern struct VariableList *FixStatVarsF
1362   */   */
1363  extern struct Set *CallStatArgsF(CONST struct Statement *s);  extern struct Set *CallStatArgsF(CONST struct Statement *s);
1364  /**<  /**<
  *  <!--  macro CallStatArgs(s)                                        -->  
  *  <!--  struct Set *CallStatArgs(s)                                  -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the call statement's argument list.                   -->  
1365   *  Implementation function for CallStatArgs().  Do not call this   *  Implementation function for CallStatArgs().  Do not call this
1366   *  function directly - use CallStatArgs() instead.   *  function directly - use CallStatArgs() instead.
1367   */   */
# Line 1684  extern struct Set *CallStatArgsF(CONST s Line 1379  extern struct Set *CallStatArgsF(CONST s
1379   */   */
1380  extern symchar *CallStatIdF(CONST struct Statement *s);  extern symchar *CallStatIdF(CONST struct Statement *s);
1381  /**<  /**<
  *  <!--  macro CallStatId(s)                                          -->  
  *  <!--  symchar *CallStatId(s)                                       -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the call statement's function id.                     -->  
1382   *  Implementation function for CallStatId().  Do not call this   *  Implementation function for CallStatId().  Do not call this
1383   *  function directly - use CallStatId() instead.   *  function directly - use CallStatId() instead.
1384   */   */
# Line 1707  extern symchar *CallStatIdF(CONST struct Line 1398  extern symchar *CallStatIdF(CONST struct
1398   */   */
1399  extern struct Expr *WhileStatExprF(CONST struct Statement *s);  extern struct Expr *WhileStatExprF(CONST struct Statement *s);
1400  /**<  /**<
  *  <!--  macro WhileStatExpr(s)                                       -->  
  *  <!--  struct Expr *WhileStatExprF(s)                               -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the WHILE expression.                                 -->  
1401   *  Implementation function for WhileStatExpr().  Do not call this   *  Implementation function for WhileStatExpr().  Do not call this
1402   *  function directly - use WhileStatExpr() instead.   *  function directly - use WhileStatExpr() instead.
1403   */   */
# Line 1728  extern struct Expr *WhileStatExprF(CONST Line 1415  extern struct Expr *WhileStatExprF(CONST
1415   */   */
1416  extern struct StatementList *WhileStatBlockF(CONST struct Statement *s);  extern struct StatementList *WhileStatBlockF(CONST struct Statement *s);
1417  /**<  /**<
  *  <!--  macro WhileStatBlock(s)                                      -->  
  *  <!--  struct StatementList *WhileStatBlockF(s)                     -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the block of a while statement.                       -->  
1418   *  Implementation function for WhileStatBlock().  Do not call this   *  Implementation function for WhileStatBlock().  Do not call this
1419   *  function directly - use WhileStatBlock() instead.   *  function directly - use WhileStatBlock() instead.
1420   */   */
# Line 1782  extern struct Expr *AssertStatExprF(CONS Line 1465  extern struct Expr *AssertStatExprF(CONS
1465   */   */
1466  extern struct Expr *IfStatExprF(CONST struct Statement *s);  extern struct Expr *IfStatExprF(CONST struct Statement *s);
1467  /**<  /**<
  *  <!--  macro IfStatExpr(s)                                          -->  
  *  <!--  struct Expr *IfStatExprF(s)                                  -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the IF expression.                                    -->  
1468   *  Implementation function for IfStatExpr().  Do not call this   *  Implementation function for IfStatExpr().  Do not call this
1469   *  function directly - use IfStatExpr() instead.   *  function directly - use IfStatExpr() instead.
1470   */   */
# Line 1803  extern struct Expr *IfStatExprF(CONST st Line 1482  extern struct Expr *IfStatExprF(CONST st
1482   */   */
1483  extern struct StatementList *IfStatThenF(CONST struct Statement *s);  extern struct StatementList *IfStatThenF(CONST struct Statement *s);
1484  /**<  /**<
  *  <!--  macro IfStatThen(s)                                          -->  
  *  <!--  struct StatementList *IfStatThenF(s)                         -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the then block of an if statement.                    -->  
1485   *  Implementation function for IfStatThen().  Do not call this   *  Implementation function for IfStatThen().  Do not call this
1486   *  function directly - use IfStatThen() instead.   *  function directly - use IfStatThen() instead.
1487   */   */
# Line 1825  extern struct StatementList *IfStatThenF Line 1500  extern struct StatementList *IfStatThenF
1500   */   */
1501  extern struct StatementList *IfStatElseF(CONST struct Statement *s);  extern struct StatementList *IfStatElseF(CONST struct Statement *s);
1502  /**<  /**<
  *  <!--  macro IfStatElse(s)                                          -->  
  *  <!--  struct StatementList *IfStatElseF(s)                         -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the else block of an if statement.                    -->  
  *  <!--  This is NULL if the else was omitted.                        -->  
1503   *  Implementation function for IfStatElse().  Do not call this   *  Implementation function for IfStatElse().  Do not call this
1504   *  function directly - use IfStatElse() instead.   *  function directly - use IfStatElse() instead.
1505   */   */
# Line 1849  extern struct StatementList *IfStatElseF Line 1519  extern struct StatementList *IfStatElseF
1519   */   */
1520  extern struct Name *WhenStatNameF(CONST struct Statement *s);  extern struct Name *WhenStatNameF(CONST struct Statement *s);
1521  /**<  /**<
  *  <!--  macro WhenStatName(s)                                        -->  
  *  <!--  struct Name *WhenStatName(s)                                 -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the name of a WHEN node.                              -->  
1522   *  Implementation function for WhenStatName().  Do not call this   *  Implementation function for WhenStatName().  Do not call this
1523   *  function directly - use WhenStatName() instead.   *  function directly - use WhenStatName() instead.
1524   */   */
1525    
1526  extern void SetWhenName(struct Statement *s, struct Name *n);  extern void SetWhenName(struct Statement *s, struct Name *n);
1527  /**<  /**<
  *  <!--  void SetWhenName(s,n)                                        -->  
  *  <!--  struct Statement *s;                                         -->  
  *  <!--  struct Name *n;                                              -->  
1528   *  This procedure provides a mechanism for unnamed whens to be named.   *  This procedure provides a mechanism for unnamed whens to be named.
1529   */   */
1530    
# Line 1878  extern void SetWhenName(struct Statement Line 1541  extern void SetWhenName(struct Statement
1541   */   */
1542  extern struct VariableList *WhenStatVLF(CONST struct Statement *s);  extern struct VariableList *WhenStatVLF(CONST struct Statement *s);
1543  /**<  /**<
  *  <!--  macro WhenStatVL(s)                                          -->  
  *  <!--  struct VariableList *WhenStatVLF(s)                          -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the variable list part of a WHEN statement.           -->  
1544   *  Implementation function for WhenStatVL().  Do not call this   *  Implementation function for WhenStatVL().  Do not call this
1545   *  function directly - use WhenStatVL() instead.   *  function directly - use WhenStatVL() instead.
1546   */   */
# Line 1900  extern struct VariableList *WhenStatVLF( Line 1559  extern struct VariableList *WhenStatVLF(
1559   */   */
1560  extern struct WhenList *WhenStatCasesF(CONST struct Statement *s);  extern struct WhenList *WhenStatCasesF(CONST struct Statement *s);
1561  /**<  /**<
  *  <!--  macro WhenStatCases(s)                                       -->  
  *  <!--  struct WhenList *WhenStatCasesF(s)                           -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the list of cases of a WHEN statement. To obtain the  -->  
  *  <!--  statement list in each of the CASEs, see when.h              -->  
1562   *  Implementation function for WhenStatCases().  Do not call this   *  Implementation function for WhenStatCases().  Do not call this
1563   *  function directly - use WhenStatCases() instead.   *  function directly - use WhenStatCases() instead.
1564   */   */
# Line 1936  extern int CompareWhenStatements(CONST s Line 1590  extern int CompareWhenStatements(CONST s
1590   */   */
1591  extern struct Name *FnameStatF(CONST struct Statement *s);  extern struct Name *FnameStatF(CONST struct Statement *s);
1592  /**<  /**<
  *  <!--  macro FnameStatcases(s)                                      -->  
  *  <!--  struct Name *FnameStatF(s)                                   -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the name of a model or relation (inside WHEN statement) -->  
1593   *  Implementation function for FnameStat().  Do not call this   *  Implementation function for FnameStat().  Do not call this
1594   *  function directly - use FnameStat() instead.   *  function directly - use FnameStat() instead.
1595   */   */
# Line 1959  extern struct Name *FnameStatF(CONST str Line 1609  extern struct Name *FnameStatF(CONST str
1609   */   */
1610  extern struct StatementList *CondStatListF(CONST struct Statement *s);  extern struct StatementList *CondStatListF(CONST struct Statement *s);
1611  /**<  /**<
  *  <!--  macro CondStatList(s)                                        -->  
  *  <!--  struct StatementList *CondStatListF(s)                       -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the list of statements in a Conditional statement.    -->  
1612   *  Implementation function for CondStatList().  Do not call this   *  Implementation function for CondStatList().  Do not call this
1613   *  function directly - use CondStatList() instead.   *  function directly - use CondStatList() instead.
1614   */   */
# Line 2012  extern unsigned CondContainsLogRelations Line 1658  extern unsigned CondContainsLogRelations
1658   */   */
1659  extern struct VariableList *SelectStatVLF(CONST struct Statement *s);  extern struct VariableList *SelectStatVLF(CONST struct Statement *s);
1660  /**<  /**<
  *  <!--  macro SelectStatVL(s)                                        -->  
  *  <!--  struct VariableList *SelectStatVLF(s)                        -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the set part of a SELECT statement.                   -->  
1661   *  Implementation function for SelectStatVL().  Do not call this   *  Implementation function for SelectStatVL().  Do not call this
1662   *  function directly - use SelectStatVL() instead.   *  function directly - use SelectStatVL() instead.
1663   */   */
# Line 2033  extern struct VariableList *SelectStatVL Line 1675  extern struct VariableList *SelectStatVL
1675   */   */
1676  extern int SelectStatNumberStatsF(CONST struct Statement *s);  extern int SelectStatNumberStatsF(CONST struct Statement *s);
1677  /**<  /**<
  *  <!--  macro SelectStatNumberStats(s)                               -->  
  *  <!--  int SelectStatNumberStatsF(s)                                -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the number of statements inside a SELECT statement.   -->  
1678   *  Implementation function for SelectStatNumberStats().  Do not call this   *  Implementation function for SelectStatNumberStats().  Do not call this
1679   *  function directly - use SelectStatNumberStats() instead.   *  function directly - use SelectStatNumberStats() instead.
1680   */   */
# Line 2055  extern int SelectStatNumberStatsF(CONST Line 1693  extern int SelectStatNumberStatsF(CONST
1693   */   */
1694  extern struct SelectList *SelectStatCasesF(CONST struct Statement *s);  extern struct SelectList *SelectStatCasesF(CONST struct Statement *s);
1695  /**<  /**<
  *  <!--  macro SelectStatCases(s)                                     -->  
  *  <!--  struct SelectList *SelectStatCasesF(s)                       -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the list of cases of a SELECT statement. To obtain the -->  
  *  <!--  statement list in each of the CASEs, see select.h            -->  
1696   *  Implementation function for SelectStatCases().  Do not call this   *  Implementation function for SelectStatCases().  Do not call this
1697   *  function directly - use SelectStatCases() instead.   *  function directly - use SelectStatCases() instead.
1698   */   */
# Line 2199  extern unsigned SelectContainsIllegalF(C Line 1832  extern unsigned SelectContainsIllegalF(C
1832   */   */
1833  extern struct VariableList *SwitchStatVLF(CONST struct Statement *s);  extern struct VariableList *SwitchStatVLF(CONST struct Statement *s);
1834  /**<  /**<
  *  <!--  macro SwitchStatVL(s)                                        -->  
  *  <!--  struct VariableList *SwitchStatVLF(s)                        -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the set part of a SWITCH statement.                   -->  
1835   *  Implementation function for SwitchStatVL().  Do not call this   *  Implementation function for SwitchStatVL().  Do not call this
1836   *  function directly - use SwitchStatVL() instead.   *  function directly - use SwitchStatVL() instead.
1837   */   */
# Line 2221  extern struct VariableList *SwitchStatVL Line 1850  extern struct VariableList *SwitchStatVL
1850   */   */
1851  extern struct SwitchList *SwitchStatCasesF(CONST struct Statement *s);  extern struct SwitchList *SwitchStatCasesF(CONST struct Statement *s);
1852  /**<  /**<
  *  <!--  macro SwitchStatCases(s)                                     -->  
  *  <!--  struct SwitchList *SwitchStatCasesF(s)                       -->  
  *  <!--  const struct Statement *s;                                   -->  
  *  <!--  Return the list of cases of a SWITCH statement. To obtain the -->  
  *  <!--  statement list in each of the CASEs, see switch.h            -->  
1853   *  Implementation function for SwitchStatCases().  Do not call this   *  Implementation function for SwitchStatCases().  Do not call this
1854   *  function directly - use SwitchStatCases() instead.   *  function directly - use SwitchStatCases() instead.
1855   */   */
# Line 2248  extern int CompareSwitchStatements(CONST Line 1872  extern int CompareSwitchStatements(CONST
1872  extern int CompareStatements(CONST struct Statement *s1,  extern int CompareStatements(CONST struct Statement *s1,
1873                               CONST struct Statement *s2);                               CONST struct Statement *s2);
1874  /**<  /**<
  *  <!--  CompareStatements(s1,s2);                                    -->  
1875   *  Returns -1,0,1 as s1 is <, ==, > s2.   *  Returns -1,0,1 as s1 is <, ==, > s2.
1876   *  s1 < s2 if type(s1) < type(s2), exception: NULL > all statements.   *  s1 < s2 if type(s1) < type(s2), exception: NULL > all statements.
1877   *  For statements of the same type, compared according to   *  For statements of the same type, compared according to
# Line 2263  extern int CompareStatements(CONST struc Line 1886  extern int CompareStatements(CONST struc
1886  extern int CompareISStatements(CONST struct Statement *s1,  extern int CompareISStatements(CONST struct Statement *s1,
1887                                 CONST struct Statement *s2);                                 CONST struct Statement *s2);
1888  /**<  /**<
  *  <!--  CompareISStatements(s1,s2);                                  -->  
1889   *  s1 and s2 must be StateIS or some of the StateARE based statements, i.e.   *  s1 and s2 must be StateIS or some of the StateARE based statements, i.e.
1890   *  IS_A WILL_BE IS_REFINED_TO WILL_BE_THE_SAME statements, or   *  IS_A WILL_BE IS_REFINED_TO WILL_BE_THE_SAME statements, or
1891   *  s1 and s2 must be relations.   *  s1 and s2 must be relations.

Legend:
Removed from v.300  
changed lines
  Added in v.301

john.pye@anu.edu.au
ViewVC Help
Powered by ViewVC 1.1.22