some Java bindings fixes (fixes Debian build problems)
authorMorgan Deters <mdeters@cs.nyu.edu>
Thu, 28 Mar 2013 03:42:13 +0000 (23:42 -0400)
committerMorgan Deters <mdeters@cs.nyu.edu>
Thu, 28 Mar 2013 03:42:13 +0000 (23:42 -0400)
src/cvc4.i
src/expr/command.i
src/expr/expr.i
src/util/record.i

index ebb8cbd6345dab72521bac95ba1f2e7aa8b04c5c..965452b8440efb2daeb6397f412a4dab8cc4c515 100644 (file)
@@ -66,6 +66,8 @@ std::set<JavaInputStreamAdapter*> CVC4::JavaInputStreamAdapter::s_adapters;
 %template(vectorDatatypeType) std::vector< CVC4::DatatypeType >;
 %template(vectorSExpr) std::vector< CVC4::SExpr >;
 %template(vectorString) std::vector< std::string >;
+%template(vectorPairStringType) std::vector< std::pair< std::string, CVC4::Type > >;
+%template(pairStringType) std::pair< std::string, CVC4::Type >;
 %template(setType) std::set< CVC4::Type >;
 %template(hashmapExpr) std::hash_map< CVC4::Expr, CVC4::Expr, CVC4::ExprHashFunction >;
 
index 6085a444f27ff48e4451a5453ed85183d3d6b983..76c8fa674bb1a5fb39c7371fda2bcf3ed2fbba16 100644 (file)
 // getNext() just allows C++ iterator access from Java-side next(), make it private
 %javamethodmodifiers CVC4::JavaIteratorAdapter<CVC4::CommandSequence>::getNext() "private";
 
+// map the types appropriately
+%typemap(jni) CVC4::CommandSequence::const_iterator::value_type "jobject";
+%typemap(jtype) CVC4::CommandSequence::const_iterator::value_type "edu.nyu.acsys.CVC4.Command";
+%typemap(jstype) CVC4::CommandSequence::const_iterator::value_type "edu.nyu.acsys.CVC4.Command";
+%typemap(javaout) CVC4::CommandSequence::const_iterator::value_type { return $jnicall; }
+
 #endif /* SWIGJAVA */
 
 %include "expr/command.h"
index 92ab517b13e1ab38090366018b55e05eaecb3cde..977345a63bbe26afb263b641729e8e5ef1b07bfe 100644 (file)
@@ -72,6 +72,12 @@ namespace CVC4 {
 // getNext() just allows C++ iterator access from Java-side next(), make it private
 %javamethodmodifiers CVC4::JavaIteratorAdapter<CVC4::Expr>::getNext() "private";
 
+// map the types appropriately
+%typemap(jni) CVC4::Expr::const_iterator::value_type "jobject";
+%typemap(jtype) CVC4::Expr::const_iterator::value_type "edu.nyu.acsys.CVC4.Expr";
+%typemap(jstype) CVC4::Expr::const_iterator::value_type "edu.nyu.acsys.CVC4.Expr";
+%typemap(javaout) CVC4::Expr::const_iterator::value_type { return $jnicall; }
+
 #endif /* SWIGJAVA */
 
 %include "expr/expr.h"
index 2805d2fdf3998abf35c089564ac90a19f57170c0..368519f5b2f85d99f4c4b43e2a3f15728ff8fbb8 100644 (file)
@@ -19,6 +19,8 @@
 %ignore CVC4::Record::operator!=(const Record&) const;
 %rename(getField) CVC4::Record::operator[](size_t) const;
 
+#ifdef SWIGJAVA
+
 // These Object arrays are always of two elements, the first is a String and the second a
 // Type.  (On the C++ side, it is a std::pair<std::string, Type>.)
 %typemap(jni) std::pair<std::string, CVC4::Type> "jobjectArray";
@@ -33,8 +35,6 @@
       jenv->SetObjectArrayElement($result, 1, jenv->NewObject(clazz, methodid, reinterpret_cast<long>(new CVC4::Type($1.second)), true));
     };
 
-#ifdef SWIGJAVA
-
 // Instead of Record::begin() and end(), create an
 // iterator() method on the Java side that returns a Java-style
 // Iterator.
 // getNext() just allows C++ iterator access from Java-side next(), make it private
 %javamethodmodifiers CVC4::JavaIteratorAdapter<CVC4::Record>::getNext() "private";
 
+// map the types appropriately.  for records, the "payload" of the iterator is an Object[].
+// These Object arrays are always of two elements, the first is a String and the second a
+// Type.  (On the C++ side, it is a std::pair<std::string, SExpr>.)
+%typemap(jni) CVC4::Record::const_iterator::value_type = std::pair<std::string, CVC4::Type>;
+%typemap(jtype) CVC4::Record::const_iterator::value_type = std::pair<std::string, CVC4::Type>;
+%typemap(jstype) CVC4::Record::const_iterator::value_type = std::pair<std::string, CVC4::Type>;
+%typemap(javaout) CVC4::Record::const_iterator::value_type = std::pair<std::string, CVC4::Type>;
+%typemap(out) CVC4::Record::const_iterator::value_type = std::pair<std::string, CVC4::Type>;
+
 #endif /* SWIGJAVA */
 
 %include "util/record.h"