/*
** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2003.
** See ../LICENSE for license information.
*/
/*
** functionConstraint.h
*/
# ifndef FCNCONSTRAINT_H
# define FcNCONSTRAINT_H
typedef enum
{
FCT_BUFFER, FCT_METASTATE, FCT_CONJUNCT
} functionConstraintKind ;
struct s_functionConstraint {
functionConstraintKind kind;
union {
/*@only@*/ constraintList buffer;
/*@only@*/ metaStateConstraint metastate;
struct { functionConstraint op1; functionConstraint op2; } conjunct;
} constraint;
} ;
/*@constant null functionConstraint functionConstraint_undefined; @*/
# define functionConstraint_undefined ((functionConstraint) NULL)
extern /*@falsewhennull@*/ bool functionConstraint_isDefined (functionConstraint) /*@*/ ;
# define functionConstraint_isDefined(p_info) ((p_info) != NULL)
extern /*@falsewhennull@*/ bool functionConstraint_isBufferConstraint (/*@sef@*/ functionConstraint) /*@*/ ;
# define functionConstraint_isBufferConstraint(p_con) (((p_con) != NULL) && ((p_con)->kind == FCT_BUFFER))
extern void functionConstraint_addBufferConstraints (functionConstraint p_node, /*@only@*/ constraintList)
/*@modifies p_node@*/ ;
extern /*@nullwhentrue@*/ bool functionConstraint_isUndefined (functionConstraint) /*@*/ ;
# define functionConstraint_isUndefined(p_info) ((p_info) == NULL)
extern functionConstraint functionConstraint_copy (functionConstraint) /*@*/ ;
extern functionConstraint
functionConstraint_createBufferConstraint (/*@only@*/ constraintList) ;
extern functionConstraint
functionConstraint_createMetaStateConstraint (/*@only@*/ metaStateConstraint) ;
extern bool functionConstraint_hasBufferConstraint (functionConstraint) /*@*/ ;
extern bool functionConstraint_hasMetaStateConstraint (functionConstraint) /*@*/ ;
extern functionConstraint
functionConstraint_conjoin (/*@only@*/ functionConstraint, /*@only@*/ functionConstraint) ;
extern /*@only@*/ constraintList functionConstraint_getBufferConstraints (functionConstraint) /*@*/ ;
extern /*@only@*/ metaStateConstraintList functionConstraint_getMetaStateConstraints (functionConstraint) /*@*/ ;
extern cstring functionConstraint_unparse (functionConstraint) /*@*/ ;
extern void functionConstraint_free (/*@only@*/ functionConstraint) ;
# else
# error "Multiple include"
# endif
syntax highlighted by Code2HTML, v. 0.9.1