diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2018-05-28 10:35:17 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-28 10:35:17 -0500 |
commit | 74c1ad7e4a8e93316b7555ac8a1b88ee777335e2 (patch) | |
tree | 3f9c1b691a87a8cbbc73cc5bf46d23638d016856 /src/expr | |
parent | a08914e449c3df26322551a968b4edee12a615f9 (diff) |
Builtin evaluation functions for sygus (#1991)
Diffstat (limited to 'src/expr')
-rw-r--r-- | src/expr/datatype.cpp | 9 | ||||
-rw-r--r-- | src/expr/datatype.h | 7 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/expr/datatype.cpp b/src/expr/datatype.cpp index d697a6aaf..f19955d19 100644 --- a/src/expr/datatype.cpp +++ b/src/expr/datatype.cpp @@ -77,6 +77,11 @@ size_t Datatype::indexOf(Expr item) { item.getType().isSelector(), item, "arg must be a datatype constructor, selector, or tester"); + return indexOfInternal(item); +} + +size_t Datatype::indexOfInternal(Expr item) +{ TNode n = Node::fromExpr(item); if( item.getKind()==kind::APPLY_TYPE_ASCRIPTION ){ return indexOf( item[0] ); @@ -91,6 +96,10 @@ size_t Datatype::cindexOf(Expr item) { PrettyCheckArgument(item.getType().isSelector(), item, "arg must be a datatype selector"); + return cindexOfInternal(item); +} +size_t Datatype::cindexOfInternal(Expr item) +{ TNode n = Node::fromExpr(item); if( item.getKind()==kind::APPLY_TYPE_ASCRIPTION ){ return cindexOf( item[0] ); diff --git a/src/expr/datatype.h b/src/expr/datatype.h index 826711897..990548979 100644 --- a/src/expr/datatype.h +++ b/src/expr/datatype.h @@ -615,6 +615,13 @@ public: */ static size_t cindexOf(Expr item) CVC4_PUBLIC; + /** + * Same as above, but without checks. These methods should be used by + * internal (Node-level) code. + */ + static size_t indexOfInternal(Expr item); + static size_t cindexOfInternal(Expr item); + /** The type for iterators over constructors. */ typedef DatatypeConstructorIterator iterator; /** The (const) type for iterators over constructors. */ |