2 ** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2001.
3 ** See ../LICENSE for license information.
6 ** functionConstraint.h
9 # ifndef FCNCONSTRAINT_H
10 # define FcNCONSTRAINT_H
14 FCT_BUFFER, FCT_METASTATE, FCT_CONJUNCT
15 } functionConstraintKind ;
17 struct s_functionConstraint {
18 functionConstraintKind kind;
20 /*@only@*/ constraintList buffer;
21 /*@only@*/ metaStateConstraint metastate;
22 struct { functionConstraint op1; functionConstraint op2; } conjunct;
26 /*@constant null functionConstraint functionConstraint_undefined; @*/
27 # define functionConstraint_undefined ((functionConstraint) NULL)
29 extern /*@falsenull@*/ bool functionConstraint_isDefined (functionConstraint) /*@*/ ;
30 # define functionConstraint_isDefined(p_info) ((p_info) != NULL)
32 extern /*@truenull@*/ bool functionConstraint_isUndefined (functionConstraint) /*@*/ ;
33 # define functionConstraint_isUndefined(p_info) ((p_info) == NULL)
35 extern functionConstraint functionConstraint_copy (functionConstraint) /*@*/ ;
37 extern functionConstraint
38 functionConstraint_createBufferConstraint (/*@only@*/ constraintList) ;
40 extern functionConstraint
41 functionConstraint_createMetaStateConstraint (/*@only@*/ metaStateConstraint) ;
43 extern bool functionConstraint_hasBufferConstraint (functionConstraint) /*@*/ ;
44 extern bool functionConstraint_hasMetaStateConstraint (functionConstraint) /*@*/ ;
46 extern functionConstraint
47 functionConstraint_conjoin (/*@only@*/ functionConstraint, /*@only@*/ functionConstraint) ;
49 extern /*@only@*/ constraintList functionConstraint_getBufferConstraints (functionConstraint) /*@*/ ;
50 extern /*@only@*/ metaStateConstraintList functionConstraint_getMetaStateConstraints (functionConstraint) /*@*/ ;
52 extern cstring functionConstraint_unparse (functionConstraint) /*@*/ ;
53 extern void functionConstraint_free (/*@only@*/ functionConstraint) ;
56 # error "Multiple include"