1 ///////////////////////////////////////////////////////////////////////////////
3 // This file describes the interface of the constraint logic compiler
6 ///////////////////////////////////////////////////////////////////////////////
7 #ifndef constraint_logic_compiler_h
8 #define constraint_logic_compiler_h
12 ///////////////////////////////////////////////////////////////////////////////
14 // Forward datatype declarations
16 ///////////////////////////////////////////////////////////////////////////////
17 datatype Ty // Type expressions
19 and Exp // Expressions
20 and Decl // Prop declarations
21 and Def // Definitions
22 and Stmt // Statements
23 and Instness // Instantiatedness
24 and Determinism // Determinism of a predicate
27 ///////////////////////////////////////////////////////////////////////////////
29 // Internals of the constraint compiler.
31 ///////////////////////////////////////////////////////////////////////////////
32 class ConstraintCompilerInternal
34 ConstraintCompilerInternal (const ConstraintCompilerInternal&);
35 void operator = (const ConstraintCompilerInternal&);
37 friend class ConstraintCompiler;
40 ////////////////////////////////////////////////////////////////////////////
44 ////////////////////////////////////////////////////////////////////////////
45 HashTable rule_map; // mapping from functor name to clauses
46 HashTable typing_map; // mapping from functor name to type
47 HashTable instness_map; // mapping from id to instness type
48 HashTable det_map; // mapping from id to determinism.
51 ////////////////////////////////////////////////////////////////////////////
53 // Constructor and destructor
55 ////////////////////////////////////////////////////////////////////////////
56 ConstraintCompilerInternal(Id);
57 ~ConstraintCompilerInternal();