Marging from types 404:415, changes: Massive
authorDejan Jovanović <dejan.jovanovic@gmail.com>
Wed, 14 Apr 2010 19:06:53 +0000 (19:06 +0000)
committerDejan Jovanović <dejan.jovanovic@gmail.com>
Wed, 14 Apr 2010 19:06:53 +0000 (19:06 +0000)
commitf8ca588548491146fffbf22b2e9082986504211c
tree980553ffdb2b275a1e203c6e87743a01d1d5e5bc
parent7c83d004874a46efe36d58717f7a4d72553b3693
Marging from types 404:415, changes: Massive

* Types are now represented as nodes in the attribute table and are managed, i.e. you can say
    Type booleanType = d_nodeManager->booleanType();
    Type t = d_nodeManager->mkFunctionType(booleanType, booleanType);
    FunctionType ft = (FunctionType)t;
    Assert(ft.getArgTypes()[0], booleanType);
* The attributes now have a table for Nodes and a table for TNodes (both should be used with caution)
* Changes the way nodes are extracted from NodeBuilder, added several methods to
  extract a Node, NodeValue, or Node*, with corresponding methods for extraction
* Used the above in the construction of Expr and Type objects
* The NodeManager now destroys the attributes in the destructor by pausing the
  garbage collection
* To achive destruction a flag d_inDesctruction has been added to loosen the assertion
  in NodeValue::dec() (there might be -refcount TNodes leftover)
* Beginnings of the Bitvector constants using GMP

Not yet in tiptop phase, needs more documentation, and Types should be pulled out to TypeNodes eventually. Also, the types are currently defined in the builting_kinds, and I need to add these to the theory specific definitions with special 'type' constructs.

I hate branching and merging.
46 files changed:
.cproject
.project
src/context/cdmap.h
src/expr/Makefile.am
src/expr/attribute.cpp
src/expr/attribute.h
src/expr/attribute_internals.h
src/expr/builtin_kinds
src/expr/command.h
src/expr/declaration_scope.cpp
src/expr/declaration_scope.h
src/expr/expr_manager_scope.h [new file with mode: 0644]
src/expr/expr_manager_template.cpp
src/expr/expr_manager_template.h
src/expr/expr_template.cpp
src/expr/expr_template.h
src/expr/node.h
src/expr/node_builder.h
src/expr/node_manager.cpp
src/expr/node_manager.h
src/expr/type.cpp
src/expr/type.h
src/expr/type_constant.h [new file with mode: 0644]
src/parser/cvc/Cvc.g
src/parser/parser_state.cpp
src/parser/parser_state.h
src/parser/smt/Smt.g
src/theory/bv/kinds
src/theory/theory_engine.h
src/util/Makefile.am
src/util/bitvector.cpp [new file with mode: 0644]
src/util/bitvector.h [new file with mode: 0644]
src/util/gmp_util.h [new file with mode: 0644]
src/util/integer.cpp
src/util/integer.h
src/util/rational.h
test/unit/expr/attribute_black.h
test/unit/expr/attribute_white.h
test/unit/expr/declaration_scope_black.h
test/unit/expr/expr_public.h
test/unit/expr/node_black.h
test/unit/expr/node_builder_black.h
test/unit/expr/node_manager_black.h
test/unit/parser/parser_white.h
test/unit/theory/theory_black.h
test/unit/theory/theory_uf_white.h