summaryrefslogtreecommitdiff
path: root/src/expr
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2018-05-28 10:35:17 -0500
committerGitHub <noreply@github.com>2018-05-28 10:35:17 -0500
commit74c1ad7e4a8e93316b7555ac8a1b88ee777335e2 (patch)
tree3f9c1b691a87a8cbbc73cc5bf46d23638d016856 /src/expr
parenta08914e449c3df26322551a968b4edee12a615f9 (diff)
Builtin evaluation functions for sygus (#1991)
Diffstat (limited to 'src/expr')
-rw-r--r--src/expr/datatype.cpp9
-rw-r--r--src/expr/datatype.h7
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. */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback