Removing the Record iterator from the swig interface. Moving the cvc4 autogen include...
authorTim King <taking@google.com>
Wed, 16 Dec 2015 17:36:16 +0000 (12:36 -0500)
committerTim King <taking@google.com>
Wed, 16 Dec 2015 17:36:46 +0000 (12:36 -0500)
src/expr/record.h
src/expr/record.i
src/main/interactive_shell.cpp

index 2cd7defe94ead31dcbec0923ea57d14432d0a491..d30536fb04ca559fd35c59b2825bc381d2f1de1e 100644 (file)
@@ -29,7 +29,7 @@
 namespace CVC4 {
 // This forward delcartion is required to resolve a cicular dependency with
 // Record which is a referenced in a Kind file.
-class CVC4_PUBLIC Type;
+class Type;
 } /* namespace CVC4 */
 
 namespace CVC4 {
index 283f01106c70ecb7c8ccacc9d9038ed43c2a9131..695ff105b9ba4d1d0067191d433d19464308e3e3 100644 (file)
       jenv->SetObjectArrayElement($result, 1, jenv->NewObject(clazz, methodid, reinterpret_cast<long>(new CVC4::Type($1.second)), true));
     };
 
-// Instead of Record::begin() and end(), create an
-// iterator() method on the Java side that returns a Java-style
-// Iterator.
-%ignore CVC4::Record::begin() const;
-%ignore CVC4::Record::end() const;
-%extend CVC4::Record {
-  CVC4::Type find(std::string name) const {
-    CVC4::Record::const_iterator i;
-    for(i = $self->begin(); i != $self->end(); ++i) {
-      if((*i).first == name) {
-        return (*i).second;
-      }
-    }
-    return CVC4::Type();
-  }
-
-  CVC4::JavaIteratorAdapter<CVC4::Record> iterator() {
-    return CVC4::JavaIteratorAdapter<CVC4::Record>(*$self);
-  }
-}
-
-// Record is "iterable" on the Java side
-%typemap(javainterfaces) CVC4::Record "java.lang.Iterable<Object[]>";
-
-// the JavaIteratorAdapter should not be public, and implements Iterator
-%typemap(javaclassmodifiers) CVC4::JavaIteratorAdapter<CVC4::Record> "class";
-%typemap(javainterfaces) CVC4::JavaIteratorAdapter<CVC4::Record> "java.util.Iterator<Object[]>";
-// add some functions to the Java side (do it here because there's no way to do these in C++)
-%typemap(javacode) CVC4::JavaIteratorAdapter<CVC4::Record> "
-  public void remove() {
-    throw new java.lang.UnsupportedOperationException();
-  }
-
-  public Object[] next() {
-    if(hasNext()) {
-      return getNext();
-    } else {
-      throw new java.util.NoSuchElementException();
-    }
-  }
-"
-// 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 "bindings/java_iterator_adapter.h"
 %include "bindings/java_stream_adapters.h"
 
-%template(JavaIteratorAdapter_Record) CVC4::JavaIteratorAdapter<CVC4::Record>;
 
 #endif /* SWIGJAVA */
index da2813e24e2b341827f7e04f7f71f1fe766dbab2..7b146b3b01e743b3496f03b9b458d9164be71201 100644 (file)
@@ -26,6 +26,9 @@
 #include <utility>
 #include <vector>
 
+//This must go before HAVE_LIBREADLINE.
+#include "cvc4autoconfig.h"
+
 #if HAVE_LIBREADLINE
 #  include <readline/readline.h>
 #  include <readline/history.h>
@@ -36,7 +39,6 @@
 
 
 #include "base/output.h"
-#include "cvc4autoconfig.h"
 #include "options/language.h"
 #include "options/main_options.h"
 #include "options/options.h"