Move datatype index constant to its own file (#4859)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Sat, 8 Aug 2020 01:22:55 +0000 (20:22 -0500)
committerGitHub <noreply@github.com>
Sat, 8 Aug 2020 01:22:55 +0000 (20:22 -0500)
Towards removing the Expr-level datatype.

Moves DatatypeIndex to its own file, which is the only thing that is necessary remaining from expr/datatype.h.

Also updates the datatype kinds file in preparation for the removal.

src/expr/CMakeLists.txt
src/expr/datatype.cpp
src/expr/datatype.h
src/expr/datatype_index.cpp [new file with mode: 0644]
src/expr/datatype_index.h [new file with mode: 0644]
src/theory/datatypes/kinds
src/theory/quantifiers/sygus/ce_guided_single_inv_sol.cpp
src/theory/quantifiers/sygus/ce_guided_single_inv_sol.h

index bad2f1f424abea539901214931b296ef2ec1a077..993df2594de12a25e399521a6f1787fbcbd2b49f 100644 (file)
@@ -73,6 +73,8 @@ libcvc4_add_sources(
   variable_type_map.h
   datatype.h
   datatype.cpp
+  datatype_index.h
+  datatype_index.cpp
   dtype.h
   dtype.cpp
   dtype_cons.h
index f8712e20e6987bd5bc94699ea6596b644fa8193e..a9ac3fbbf980f2502341efeaeb5a30f8647b1910 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "base/check.h"
 #include "expr/attribute.h"
+#include "expr/datatype.h"
 #include "expr/dtype.h"
 #include "expr/expr_manager.h"
 #include "expr/expr_manager_scope.h"
@@ -851,12 +852,6 @@ void DatatypeConstructorArg::toStream(std::ostream& out) const
   out << t;
 }
 
-DatatypeIndexConstant::DatatypeIndexConstant(unsigned index) : d_index(index) {}
-std::ostream& operator<<(std::ostream& out, const DatatypeIndexConstant& dic) {
-  return out << "index_" << dic.getIndex();
-}
-
-
 std::string Datatype::getName() const
 {
   ExprManagerScope ems(*d_em);
index 54095050fdc5655173ea646e0b44348c71f0b90a..0deb20d8f7d9e584984b89192587feef7133f2aa 100644 (file)
@@ -36,6 +36,7 @@ namespace CVC4 {
 #include "base/exception.h"
 #include "expr/expr.h"
 #include "expr/type.h"
+#include "expr/datatype_index.h"
 #include "util/hash.h"
 
 
@@ -908,51 +909,6 @@ struct CVC4_PUBLIC DatatypeHashFunction {
 };/* struct DatatypeHashFunction */
 
 
-
-/* stores an index to Datatype residing in NodeManager */
-class CVC4_PUBLIC DatatypeIndexConstant {
- public:
-  DatatypeIndexConstant(unsigned index);
-
-  unsigned getIndex() const { return d_index; }
-  bool operator==(const DatatypeIndexConstant& uc) const
-  {
-    return d_index == uc.d_index;
-  }
-  bool operator!=(const DatatypeIndexConstant& uc) const
-  {
-    return !(*this == uc);
-  }
-  bool operator<(const DatatypeIndexConstant& uc) const
-  {
-    return d_index < uc.d_index;
-  }
-  bool operator<=(const DatatypeIndexConstant& uc) const
-  {
-    return d_index <= uc.d_index;
-  }
-  bool operator>(const DatatypeIndexConstant& uc) const
-  {
-    return !(*this <= uc);
-  }
-  bool operator>=(const DatatypeIndexConstant& uc) const
-  {
-    return !(*this < uc);
-  }
-private:
-  const unsigned d_index;
-};/* class DatatypeIndexConstant */
-
-std::ostream& operator<<(std::ostream& out, const DatatypeIndexConstant& dic) CVC4_PUBLIC;
-
-struct CVC4_PUBLIC DatatypeIndexConstantHashFunction {
-  inline size_t operator()(const DatatypeIndexConstant& dic) const {
-    return IntegerHashFunction()(dic.getIndex());
-  }
-};/* struct DatatypeIndexConstantHashFunction */
-
-
-
 // FUNCTION DECLARATIONS FOR OUTPUT STREAMS
 
 std::ostream& operator<<(std::ostream& os, const Datatype& dt) CVC4_PUBLIC;
diff --git a/src/expr/datatype_index.cpp b/src/expr/datatype_index.cpp
new file mode 100644 (file)
index 0000000..988965b
--- /dev/null
@@ -0,0 +1,36 @@
+/*********************                                                        */
+/*! \file datatype_index.cpp
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2020 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A class representing an index to a datatype living in NodeManager.
+ **/
+#include "expr/datatype_index.h"
+
+#include <sstream>
+#include <string>
+#include "util/integer.h"
+
+using namespace std;
+
+namespace CVC4 {
+
+DatatypeIndexConstant::DatatypeIndexConstant(unsigned index) : d_index(index) {}
+std::ostream& operator<<(std::ostream& out, const DatatypeIndexConstant& dic)
+{
+  return out << "index_" << dic.getIndex();
+}
+
+size_t DatatypeIndexConstantHashFunction::operator()(
+    const DatatypeIndexConstant& dic) const
+{
+  return IntegerHashFunction()(dic.getIndex());
+}
+
+}  // namespace CVC4
diff --git a/src/expr/datatype_index.h b/src/expr/datatype_index.h
new file mode 100644 (file)
index 0000000..f871129
--- /dev/null
@@ -0,0 +1,71 @@
+/*********************                                                        */
+/*! \file datatype_index.h
+ ** \verbatim
+ ** Top contributors (to current version):
+ **   Andrew Reynolds, Morgan Deters, Tim King
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2009-2020 by the authors listed in the file AUTHORS
+ ** in the top-level source directory) and their institutional affiliations.
+ ** All rights reserved.  See the file COPYING in the top-level source
+ ** directory for licensing information.\endverbatim
+ **
+ ** \brief A class representing an index to a datatype living in NodeManager.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef CVC4__DATATYPE_INDEX_H
+#define CVC4__DATATYPE_INDEX_H
+
+#include <iosfwd>
+#include "util/hash.h"
+
+namespace CVC4 {
+
+/* stores an index to Datatype residing in NodeManager */
+class CVC4_PUBLIC DatatypeIndexConstant
+{
+ public:
+  DatatypeIndexConstant(unsigned index);
+
+  unsigned getIndex() const { return d_index; }
+  bool operator==(const DatatypeIndexConstant& uc) const
+  {
+    return d_index == uc.d_index;
+  }
+  bool operator!=(const DatatypeIndexConstant& uc) const
+  {
+    return !(*this == uc);
+  }
+  bool operator<(const DatatypeIndexConstant& uc) const
+  {
+    return d_index < uc.d_index;
+  }
+  bool operator<=(const DatatypeIndexConstant& uc) const
+  {
+    return d_index <= uc.d_index;
+  }
+  bool operator>(const DatatypeIndexConstant& uc) const
+  {
+    return !(*this <= uc);
+  }
+  bool operator>=(const DatatypeIndexConstant& uc) const
+  {
+    return !(*this < uc);
+  }
+
+ private:
+  const unsigned d_index;
+}; /* class DatatypeIndexConstant */
+
+std::ostream& operator<<(std::ostream& out,
+                         const DatatypeIndexConstant& dic) CVC4_PUBLIC;
+
+struct CVC4_PUBLIC DatatypeIndexConstantHashFunction
+{
+  size_t operator()(const DatatypeIndexConstant& dic) const;
+}; /* struct DatatypeIndexConstantHashFunction */
+
+}  // namespace CVC4
+
+#endif /* CVC4__DATATYPE_H */
index e3c09b63510f0f8ca0f539329bcc92d6b2f167ed..4b80529d2068938e71139ab43a47956c871cf98b 100644 (file)
@@ -45,11 +45,11 @@ constant DATATYPE_TYPE \
     "a datatype type index"
 cardinality DATATYPE_TYPE \
     "%TYPE%.getDType().getCardinality(%TYPE%)" \
-    "expr/datatype.h"
+    "expr/dtype.h"
 well-founded DATATYPE_TYPE \
     "%TYPE%.getDType().isWellFounded()" \
     "%TYPE%.getDType().mkGroundTerm(%TYPE%)" \
-    "expr/datatype.h"
+    "expr/dtype.h"
 
 enumerator DATATYPE_TYPE \
     "::CVC4::theory::datatypes::DatatypesEnumerator" \
@@ -58,11 +58,11 @@ enumerator DATATYPE_TYPE \
 operator PARAMETRIC_DATATYPE 1: "parametric datatype"
 cardinality PARAMETRIC_DATATYPE \
     "%TYPE%.getDType().getCardinality(%TYPE%)" \
-    "expr/datatype.h"
+    "expr/dtype.h"
 well-founded PARAMETRIC_DATATYPE \
     "%TYPE%.getDType().isWellFounded()" \
     "%TYPE%.getDType().mkGroundTerm(%TYPE%)" \
-    "expr/datatype.h"
+    "expr/dtype.h"
 
 enumerator PARAMETRIC_DATATYPE \
     "::CVC4::theory::datatypes::DatatypesEnumerator" \
index d6d854c441db31a5183488fba90a9498bce26bc8..b89015b000ef9aaf06bbd010163a4e735ee44094 100644 (file)
@@ -14,7 +14,6 @@
  **/
 #include "theory/quantifiers/sygus/ce_guided_single_inv_sol.h"
 
-#include "expr/datatype.h"
 #include "expr/dtype.h"
 #include "expr/node_algorithm.h"
 #include "options/quantifiers_options.h"
index 847fd2d9b824c212d2d0b676d082faf67e10f17e..23df6f3d5e861ca935b46b9d9231831ce560a904 100644 (file)
@@ -21,6 +21,7 @@
 #include <vector>
 
 #include "context/cdhashmap.h"
+#include "expr/dtype.h"
 #include "expr/node.h"
 
 namespace CVC4 {