2 ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2001.
3 ** See ../LICENSE for license information.
14 ** These two are needed in symtable.c
17 /*@constant int HT_MAXINDEX; @*/
18 # define HT_MAXINDEX 255
20 /* simply use the lower-order bits by masking out the higher order bits */
23 # include "ltokenList.h"
27 TAG_ENUM, TAG_STRUCT, TAG_UNION, TAG_FWDSTRUCT, TAG_FWDUNION
30 # include "importNode.h"
31 # include "importNodeList.h"
33 extern void checkBrackets (ltoken p_lb, ltoken p_rb);
35 # include "sortList.h"
36 # include "lsymbolList.h"
38 # include "lsymbolSet.h"
42 ** added pointer indirects to all typedefs, except as noted
46 # include "pairNode.h"
47 # include "pairNodeList.h"
49 # include "declaratorNode.h"
50 # include "declaratorNodeList.h"
52 # include "declaratorInvNode.h"
53 # include "declaratorInvNodeList.h"
55 # include "typeExpr.h" /* also defines abstDeclaratorNode */
57 # include "arrayQualNode.h"
60 # include "varNodeList.h"
62 # include "quantifierNode.h"
63 # include "quantifierNodeList.h"
65 # include "storeRefNode.h"
66 # include "storeRefNodeList.h"
68 # include "modifyNode.h"
70 # include "letDeclNode.h"
71 # include "letDeclNodeList.h"
73 # include "programNode.h"
74 # include "programNodeList.h"
76 # include "lclPredicateNode.h"
77 # include "exposedNode.h"
80 TK_ABSTRACT, TK_EXPOSED, TK_UNION
83 # include "CTypesNode.h"
85 # include "initDeclNode.h"
86 # include "initDeclNodeList.h"
88 # include "constDeclarationNode.h"
91 QLF_NONE, QLF_CONST, QLF_VOLATILE
94 # include "varDeclarationNode.h"
95 # include "varDeclarationNodeList.h"
97 # include "globalList.h"
99 # include "claimNode.h"
101 # include "fcnNode.h"
102 # include "fcnNodeList.h"
104 # include "iterNode.h"
106 # include "abstBodyNode.h"
107 # include "abstractNode.h"
109 # include "stDeclNode.h"
110 # include "stDeclNodeList.h"
112 # include "taggedUnionNode.h"
113 # include "typeNode.h"
115 # include "strOrUnionNode.h"
116 # include "enumSpecNode.h"
118 # include "lclTypeSpecNode.h"
119 # include "typeNamePack.h"
121 # include "typeNameNode.h"
122 # include "typeNameNodeList.h" /* this is a list of typeNameNode's */
124 # include "opFormNode.h"
126 # include "quantifiedTermNode.h"
129 TRM_LITERAL, TRM_CONST, TRM_VAR,
130 TRM_ZEROARY, TRM_APPLICATION, TRM_QUANTIFIER,
131 TRM_UNCHANGEDALL, TRM_UNCHANGEDOTHERS,
135 # include "sigNode.h"
136 # include "sigNodeSet.h"
138 # include "signNode.h"
139 # include "nameNode.h"
142 # include "lslOpSet.h"
144 # include "replaceNode.h"
145 # include "replaceNodeList.h"
147 # include "renamingNode.h"
149 # include "traitRefNode.h"
150 # include "traitRefNodeList.h"
152 # include "exportNode.h"
153 # include "privateNode.h"
155 # include "interfaceNode.h"
156 # include "interfaceNodeList.h" /* note: interfaceList --> interfaceNodeList */
158 # include "termNode.h"
159 # include "termNodeList.h"
160 # include "stmtNode.h"
162 /* The following are for parsing LSL signatures */
164 # include "sortSetList.h"
165 # include "lslOpList.h"
167 /* function prototypes for parsing LSL signatures */
169 extern /*@only@*/ lslOp
170 makelslOpNode (/*@only@*/ /*@null@*/ nameNode p_name,
171 /*@dependent@*/ sigNode p_s);
173 extern /*@only@*/ cstring lslOp_unparse (lslOp p_x);
177 (/*@+enumint@*/ (((unsigned) ((x)+1) << 1) + (y)) & HT_MAXINDEX /*@=enumint@*/)
179 extern void abstract_init (void);
180 extern void resetImports (cstring p_current) ;
182 extern interfaceNodeList
183 consInterfaceNode (/*@only@*/ interfaceNode p_n, /*@returned@*/ interfaceNodeList p_ns);
185 /* evs 8 Sept 1993 changed to importNodeList */
186 extern /*@only@*/ interfaceNode
187 makeInterfaceNodeImports (/*@only@*/ importNodeList p_x);
189 extern /*@only@*/ nameNode
190 makeNameNodeForm (/*@only@*/ /*@null@*/ opFormNode p_opform) /*@*/ ;
191 extern /*@only@*/ nameNode
192 makeNameNodeId (/*@only@*/ ltoken p_opid) /*@*/ ;
193 extern /*@only@*/ interfaceNode
194 makeInterfaceNodeUses (/*@only@*/ traitRefNodeList p_x) /*@*/ ;
195 extern /*@only@*/ interfaceNode
196 interfaceNode_makeConst (/*@only@*/ constDeclarationNode p_x) /*@*/ ;
197 extern /*@only@*/ interfaceNode
198 interfaceNode_makeVar (/*@only@*/ varDeclarationNode p_x) /*@*/ ;
199 extern /*@only@*/ interfaceNode
200 interfaceNode_makeType (/*@only@*/ typeNode p_x) /*@*/ ;
201 extern /*@only@*/ interfaceNode
202 interfaceNode_makeFcn (/*@only@*/ fcnNode p_x) /*@*/ ;
203 extern /*@only@*/ interfaceNode
204 interfaceNode_makeClaim (/*@only@*/ claimNode p_x) /*@*/ ;
205 extern /*@only@*/ interfaceNode interfaceNode_makeIter (/*@only@*/ iterNode p_x) /*@*/ ;
206 extern /*@only@*/ interfaceNode interfaceNode_makePrivConst(/*@only@*/ constDeclarationNode p_x) /*@*/ ;
207 extern /*@only@*/ interfaceNode
208 interfaceNode_makePrivVar(/*@only@*/ varDeclarationNode p_x) /*@*/ ;
209 extern /*@only@*/ interfaceNode
210 interfaceNode_makePrivType(/*@only@*/ typeNode p_x) /*@*/ ;
211 extern /*@only@*/ interfaceNode
212 interfaceNode_makePrivFcn(/*@only@*/ fcnNode p_x) /*@*/ ;
213 extern /*@only@*/ typeNode makeAbstractTypeNode (/*@only@*/ abstractNode p_x) /*@*/ ;
214 extern /*@only@*/ typeNode makeExposedTypeNode (/*@only@*/ exposedNode p_x) /*@*/ ;
216 extern /*@only@*/ traitRefNode
217 makeTraitRefNode(/*@only@*/ ltokenList p_fl, /*@null@*/ /*@only@*/ renamingNode p_r) /*@*/ ;
219 extern /*@only@*/ cstring printLeaves2 (ltokenList p_f) /*@*/ ;
220 extern /*@only@*/ cstring printRawLeaves2 (ltokenList p_f) /*@*/ ;
221 extern /*@only@*/ cstring sigNode_unparseText (/*@null@*/ sigNode p_n) /*@*/ ;
223 extern /*@only@*/ renamingNode
224 makeRenamingNode (/*@only@*/ typeNameNodeList p_n,
225 /*@only@*/ replaceNodeList p_r) /*@*/ ;
226 extern /*@only@*/ replaceNode
227 makeReplaceNode (/*@only@*/ ltoken p_t, /*@only@*/ typeNameNode p_tn, bool p_is_ctype,
228 /*@only@*/ ltoken p_ct,
229 /*@null@*/ /*@only@*/ nameNode p_nn,
230 /*@null@*/ /*@only@*/ sigNode p_sn) /*@*/ ;
232 extern /*@only@*/ sigNode
233 makesigNode (/*@only@*/ ltoken p_t, /*@only@*/ ltokenList p_domain, /*@only@*/ ltoken p_range) /*@*/ ;
235 extern /*@only@*/ replaceNode
236 makeReplaceNameNode (/*@only@*/ ltoken p_t, /*@only@*/ typeNameNode p_tn,
237 /*@only@*/ nameNode p_nn) /*@*/ ;
239 extern /*@only@*/ opFormNode
240 makeOpFormNode(/*@only@*/ ltoken p_t, opFormKind p_k,
241 opFormUnion p_u, /*@only@*/ ltoken p_close) /*@*/ ;
243 extern /*@only@*/ typeNameNode
244 makeTypeNameNode (bool p_isObj, /*@only@*/ lclTypeSpecNode p_t,
245 /*@only@*/ abstDeclaratorNode p_n) /*@*/ ;
246 extern /*@only@*/ typeNameNode
247 makeTypeNameNodeOp (/*@only@*/ opFormNode p_n) /*@*/ ;
249 extern /*@only@*/ lclTypeSpecNode
250 makeLclTypeSpecNodeConj (/*@only@*/ /*@null@*/ lclTypeSpecNode p_a,
251 /*@only@*/ /*@null@*/ lclTypeSpecNode p_b) /*@*/ ;
253 extern /*@only@*/ lclTypeSpecNode
254 makeLclTypeSpecNodeType(/*@only@*/ /*@null@*/ CTypesNode p_x) /*@*/ ;
256 extern /*@only@*/ lclTypeSpecNode
257 makeLclTypeSpecNodeSU(/*@only@*/ /*@null@*/ strOrUnionNode p_x) /*@*/ ;
259 extern /*@only@*/ lclTypeSpecNode
260 makeLclTypeSpecNodeEnum(/*@only@*/ /*@null@*/ enumSpecNode p_x) /*@*/ ;
262 extern /*@only@*/ lclTypeSpecNode
263 lclTypeSpecNode_addQual (/*@only@*/ lclTypeSpecNode p_n, qual p_q)
266 extern /*@only@*/ enumSpecNode
267 makeEnumSpecNode (/*@only@*/ ltoken p_t, /*@only@*/ ltoken p_optTagId, /*@owned@*/ ltokenList p_enums);
269 extern /*@only@*/ enumSpecNode
270 makeEnumSpecNode2 (/*@only@*/ ltoken p_t, /*@only@*/ ltoken p_tagid);
272 extern /*@only@*/ strOrUnionNode
273 makestrOrUnionNode (/*@only@*/ ltoken p_str, suKind p_k,
274 /*@only@*/ ltoken p_opttagid, /*@only@*/ stDeclNodeList p_x);
276 extern /*@only@*/ strOrUnionNode
277 makeForwardstrOrUnionNode (/*@only@*/ ltoken p_str, suKind p_k,
278 /*@only@*/ ltoken p_tagid);
280 extern /*@only@*/ stDeclNode
281 makestDeclNode (/*@only@*/ lclTypeSpecNode p_s,
282 /*@only@*/ declaratorNodeList p_x);
283 extern /*@only@*/ constDeclarationNode
284 makeConstDeclarationNode (/*@only@*/ lclTypeSpecNode p_t,
285 /*@only@*/ initDeclNodeList p_decls);
286 extern /*@only@*/ varDeclarationNode
287 makeVarDeclarationNode (/*@only@*/ lclTypeSpecNode p_t,
288 /*@only@*/ initDeclNodeList p_x,
289 bool p_isGlobal, bool p_isPrivate);
291 extern varDeclarationNode makeFileSystemNode (void);
292 extern varDeclarationNode makeInternalStateNode (void);
294 extern /*@only@*/ initDeclNode
295 makeInitDeclNode (/*@only@*/ declaratorNode p_d, /*@null@*/ /*@only@*/ termNode p_x);
297 extern /*@only@*/ abstractNode
298 makeAbstractNode (/*@only@*/ ltoken p_t, /*@only@*/ ltoken p_name,
299 bool p_isMutable, bool p_isRefCounted,
300 /*@only@*/ abstBodyNode p_a);
302 extern /*@unused@*/ /*@only@*/ cstring abstBodyNode_unparseExposed (abstBodyNode p_n);
304 extern /*@only@*/ exposedNode
305 makeExposedNode (/*@only@*/ ltoken p_t, /*@only@*/ lclTypeSpecNode p_s,
306 /*@only@*/ declaratorInvNodeList p_d);
308 extern /*@only@*/ declaratorInvNode
309 makeDeclaratorInvNode (/*@only@*/ declaratorNode p_d,
310 /*@only@*/ abstBodyNode p_b);
312 extern /*@only@*/ fcnNode
313 fcnNode_fromDeclarator (/*@only@*/ /*@null@*/ lclTypeSpecNode p_t,
314 /*@only@*/ declaratorNode p_d);
316 extern /*@only@*/ fcnNode
317 makeFcnNode (qual p_specQual,
318 /*@only@*/ /*@null@*/ lclTypeSpecNode p_t,
319 /*@only@*/ declaratorNode p_d,
320 /*@only@*/ /*@null@*/ globalList p_g,
321 /*@only@*/ /*@null@*/ varDeclarationNodeList p_privateinits,
322 /*@only@*/ /*@null@*/ letDeclNodeList p_lets,
323 /*@only@*/ /*@null@*/ lclPredicateNode p_checks,
324 /*@only@*/ /*@null@*/ lclPredicateNode p_requires,
325 /*@only@*/ /*@null@*/ modifyNode p_m,
326 /*@only@*/ /*@null@*/ lclPredicateNode p_ensures,
327 /*@only@*/ /*@null@*/ lclPredicateNode p_claims);
329 extern /*@only@*/ iterNode
330 makeIterNode (/*@only@*/ ltoken p_id, /*@only@*/ paramNodeList p_p);
332 extern /*@only@*/ claimNode
333 makeClaimNode (/*@only@*/ ltoken p_id,
334 /*@only@*/ paramNodeList p_p,
335 /*@only@*/ /*@null@*/ globalList p_g,
336 /*@only@*/ /*@null@*/ letDeclNodeList p_lets,
337 /*@only@*/ /*@null@*/ lclPredicateNode p_requires,
338 /*@only@*/ /*@null@*/ programNode p_b,
339 /*@only@*/ /*@null@*/ lclPredicateNode p_ensures);
341 extern /*@only@*/ lclPredicateNode
342 makeIntraClaimNode (/*@only@*/ ltoken p_t, /*@only@*/ lclPredicateNode p_n);
344 extern /*@only@*/ lclPredicateNode
345 makeRequiresNode (/*@only@*/ ltoken p_t, /*@only@*/ lclPredicateNode p_n);
347 extern /*@only@*/ lclPredicateNode
348 makeChecksNode (/*@only@*/ ltoken p_t, /*@only@*/ lclPredicateNode p_n);
350 extern /*@only@*/ lclPredicateNode
351 makeEnsuresNode (/*@only@*/ ltoken p_t, /*@only@*/ lclPredicateNode p_n);
353 extern /*@only@*/ lclPredicateNode
354 makeLclPredicateNode (/*@only@*/ ltoken p_t, /*@only@*/ termNode p_n,
355 lclPredicateKind p_k);
357 extern /*@only@*/ stmtNode
358 makeStmtNode (/*@only@*/ ltoken p_varId,
359 /*@only@*/ ltoken p_fcnId, /*@only@*/ termNodeList p_v);
361 extern /*@only@*/ programNode
362 makeProgramNodeAction (/*@only@*/ programNodeList p_x, actionKind p_k);
364 extern /*@only@*/ programNode
365 makeProgramNode (/*@only@*/ stmtNode p_x);
367 extern /*@only@*/ storeRefNode
368 makeStoreRefNodeTerm (/*@only@*/ termNode p_t);
370 extern /*@only@*/ storeRefNode
371 makeStoreRefNodeType (/*@only@*/ lclTypeSpecNode p_t, bool p_isObj);
373 extern /*@only@*/ modifyNode
374 makeModifyNodeSpecial (/*@only@*/ ltoken p_t, bool p_modifiesNothing);
376 extern storeRefNode makeStoreRefNodeInternal (void);
377 extern storeRefNode makeStoreRefNodeSystem (void);
379 extern /*@only@*/ modifyNode
380 makeModifyNodeRef (/*@only@*/ ltoken p_t, /*@only@*/ storeRefNodeList p_y);
382 extern /*@only@*/ letDeclNode
383 makeLetDeclNode(/*@only@*/ ltoken p_varid, /*@null@*/ /*@only@*/ lclTypeSpecNode p_t,
384 /*@only@*/ termNode p_term);
386 extern /*@only@*/ abstBodyNode
387 makeAbstBodyNode (/*@only@*/ ltoken p_t, /*@only@*/ fcnNodeList p_f);
389 extern /*@only@*/ abstBodyNode
390 makeExposedBodyNode (/*@only@*/ ltoken p_t, /*@only@*/ lclPredicateNode p_inv);
392 extern /*@only@*/ abstBodyNode
393 makeAbstBodyNode2 (/*@only@*/ ltoken p_t, /*@only@*/ ltokenList p_ops);
395 extern paramNode markYieldParamNode (/*@returned@*/ paramNode p_p);
397 extern /*@only@*/ arrayQualNode
398 makeArrayQualNode (/*@only@*/ ltoken p_t, /*@null@*/ /*@only@*/ termNode p_term);
400 extern /*@only@*/ quantifierNode
401 makeQuantifierNode (/*@only@*/ varNodeList p_v, /*@only@*/ ltoken p_quant);
403 extern /*@only@*/ varNode
404 makeVarNode (/*@only@*/ ltoken p_varid, bool p_isObj, /*@only@*/ lclTypeSpecNode p_t);
406 extern /*@only@*/ typeExpr makeTypeExpr (/*@only@*/ ltoken p_t);
408 extern /*@only@*/ declaratorNode
409 makeDeclaratorNode (/*@only@*/ typeExpr p_t);
411 extern /*@only@*/ typeExpr
412 makeFunctionNode (/*@null@*/ /*@only@*/ typeExpr p_x, /*@only@*/ paramNodeList p_p);
414 extern /*@only@*/ typeExpr
415 makePointerNode (/*@only@*/ ltoken p_star, /*@null@*/ /*@only@*/ /*@returned@*/ typeExpr p_x);
417 extern /*@only@*/ typeExpr
418 makeArrayNode (/*@only@*/ /*@returned@*/ /*@null@*/ typeExpr p_x,
419 /*@only@*/ arrayQualNode p_a);
421 extern /*@only@*/ paramNode
422 makeParamNode (/*@only@*/ lclTypeSpecNode p_t, /*@only@*/ typeExpr p_d);
424 extern /*@only@*/ termNode
425 makeIfTermNode (/*@only@*/ ltoken p_ift, /*@only@*/ termNode p_ifn,
426 /*@only@*/ ltoken p_thent, /*@only@*/ termNode p_thenn,
427 /*@only@*/ ltoken p_elset, /*@only@*/ termNode p_elsen);
429 extern /*@only@*/ termNode
430 makeQuantifiedTermNode (/*@only@*/ quantifierNodeList p_qn,
431 /*@only@*/ ltoken p_open,
432 /*@only@*/ termNode p_t, /*@only@*/ ltoken p_close);
434 extern /*@only@*/ termNode
435 makeInfixTermNode (/*@only@*/ termNode p_x, /*@only@*/ ltoken p_op,
436 /*@only@*/ termNode p_y);
438 extern /*@only@*/ termNode
439 makePostfixTermNode (/*@returned@*/ /*@only@*/ termNode p_secondary,
440 /*@only@*/ ltokenList p_postfixops);
442 extern /*@only@*/ termNode
443 makePostfixTermNode2 (/*@only@*/ /*@returned@*/ termNode p_secondary,
444 /*@only@*/ ltoken p_postfixop);
446 extern /*@only@*/ termNode
447 makePrefixTermNode (/*@only@*/ ltoken p_op, /*@only@*/ termNode p_arg);
449 extern /*@exposed@*/ termNode
450 CollapseInfixTermNode (/*@returned@*/ termNode p_secondary, termNodeList p_infix);
452 extern /*@only@*/ termNode
453 makeMatchedNode (/*@only@*/ ltoken p_open,
454 /*@only@*/ termNodeList p_args, /*@only@*/ ltoken p_close);
456 extern /*@only@*/ termNode
457 makeSqBracketedNode (/*@only@*/ ltoken p_lbracket,
458 /*@only@*/ termNodeList p_args,
459 /*@only@*/ ltoken p_rbracket);
461 extern /*@only@*/ termNode
462 updateSqBracketedNode (/*@null@*/ /*@only@*/ termNode p_left,
463 /*@only@*/ /*@returned@*/ termNode p_t,
464 /*@null@*/ /*@only@*/ termNode p_right);
467 updateMatchedNode (/*@null@*/ /*@only@*/ termNode p_left, /*@returned@*/ termNode p_t,
468 /*@null@*/ /*@only@*/ termNode p_right);
470 extern /*@only@*/ termNode
471 makeSimpleTermNode (/*@only@*/ ltoken p_varid);
472 extern /*@only@*/ termNode
473 makeSelectTermNode (/*@only@*/ termNode p_pri, /*@only@*/ ltoken p_select,
474 /*@dependent@*/ ltoken p_id);
475 extern /*@only@*/ termNode
476 makeMapTermNode (/*@only@*/ termNode p_pri, /*@only@*/ ltoken p_map,
477 /*@dependent@*/ ltoken p_id);
478 extern /*@only@*/ termNode
479 makeLiteralTermNode (/*@only@*/ ltoken p_tok, sort p_s);
481 extern /*@only@*/ termNode
482 makeUnchangedTermNode1 (/*@only@*/ ltoken p_op, /*@only@*/ ltoken p_all);
483 extern /*@only@*/ termNode
484 makeUnchangedTermNode2 (/*@only@*/ ltoken p_op, /*@only@*/ storeRefNodeList p_x);
485 extern /*@only@*/ termNode
486 makeSizeofTermNode(/*@only@*/ ltoken p_op, /*@only@*/ lclTypeSpecNode p_type);
487 extern /*@only@*/ termNode
488 makeOpCallTermNode (/*@only@*/ ltoken p_op, /*@only@*/ ltoken p_open,
489 /*@only@*/ termNodeList p_args, /*@only@*/ ltoken p_close);
491 extern sort sigNode_rangeSort (sigNode p_sig);
493 extern /*@only@*/ sortList sigNode_domain (sigNode p_sig);
495 extern bool sameNameNode (/*@null@*/ nameNode p_n1, /*@null@*/ nameNode p_n2);
497 extern /*@only@*/ CTypesNode
498 makeCTypesNode (/*@null@*/ /*@only@*/ CTypesNode p_ctypes, /*@only@*/ ltoken p_ct);
500 extern /*@only@*/ CTypesNode
501 makeTypeSpecifier (/*@only@*/ ltoken p_typedefname) ;
503 extern bool sigNode_equal (sigNode p_n1, sigNode p_n2);
505 extern sort lclTypeSpecNode2sort(lclTypeSpecNode p_type);
507 extern sort typeExpr2ptrSort(sort p_base, /*@null@*/ typeExpr p_t);
509 /* should be tagKind, instead of int */
510 extern lsymbol checkAndEnterTag(tagKind p_k, /*@only@*/ ltoken p_opttagid);
511 extern void enteringFcnScope(lclTypeSpecNode p_t, declaratorNode p_d, globalList p_g);
512 extern void enteringClaimScope (paramNodeList p_params, globalList p_g);
514 extern /*@observer@*/ ltoken nameNode_errorToken (/*@null@*/ nameNode p_nn);
515 extern /*@observer@*/ ltoken termNode_errorToken (/*@null@*/ termNode p_n);
516 extern /*@observer@*/ ltoken lclTypeSpecNode_errorToken (/*@null@*/ lclTypeSpecNode p_t);
518 extern opFormUnion opFormUnion_createAnyOp (ltoken p_t);
519 extern opFormUnion opFormUnion_createMiddle (int p_middle);
520 extern void LCLBuiltins (void);
521 extern /*@only@*/ paramNode paramNode_elipsis (void);
523 pushInfixOpPartNode (/*@returned@*/ termNodeList p_x, /*@only@*/ ltoken p_op,
524 /*@only@*/ termNode p_secondary);
525 extern /*@only@*/ cstring declaratorNode_unparseCode (declaratorNode p_x);
527 extern /*@only@*/ cstring typeExpr_name (/*@null@*/ typeExpr p_x);
529 extern void setExposedType (lclTypeSpecNode p_s);
530 extern void declareForwardType (declaratorNode p_declare);
532 extern /*@only@*/ declaratorNode declaratorNode_copy (declaratorNode p_x);
534 extern bool lslOp_equal (lslOp p_x, lslOp p_y);
536 extern void lsymbol_setbool (lsymbol p_s) /*@modifies internalState@*/ ;
537 extern lsymbol lsymbol_getbool (void);
538 extern lsymbol lsymbol_getBool (void);
539 extern lsymbol lsymbol_getTRUE (void);
540 extern lsymbol lsymbol_getFALSE (void);
544 # error "Multiple include"