Use uintptr_t for pointer casts in Swig files (#1278)
authorAndres Noetzli <andres.noetzli@gmail.com>
Thu, 26 Oct 2017 02:50:08 +0000 (19:50 -0700)
committerGitHub <noreply@github.com>
Thu, 26 Oct 2017 02:50:08 +0000 (19:50 -0700)
CVC4's Swig interface files were casting pointers to longs in multiple
instances. The problem with that is that on certain platforms *cough*
Windows/MinGW *cough* long is only 32-bit even when compiling a 64-bit
executable (they use the LLP64 data model). This made the compilation of
language bindings fail with MinGW. This commit changes the types to
uintptr_t defined in Swig's stdint.i.

src/cvc4.i
src/expr/record.i
src/util/statistics.i

index f07f9fba359f8879cc18cf579790fc23a7f098cd..e1138649ca5f47c3df6a6087aa1d60e64db51883 100644 (file)
@@ -125,7 +125,7 @@ std::set<JavaInputStreamAdapter*> CVC4::JavaInputStreamAdapter::s_adapters;
   assert(clazz != NULL && jenv->ExceptionOccurred() == NULL);
   jmethodID method = jenv->GetMethodID(clazz, "<init>", "(JZ)V");
   assert(method != NULL && jenv->ExceptionOccurred() == NULL);
-  jthrowable t = static_cast<jthrowable>(jenv->NewObject(clazz, method, reinterpret_cast<long>(new $1_type($1)), true));
+  jthrowable t = static_cast<jthrowable>(jenv->NewObject(clazz, method, reinterpret_cast<uintptr_t>(new $1_type($1)), true));
   assert(t != NULL && jenv->ExceptionOccurred() == NULL);
   int status = jenv->Throw(t);
   assert(status == 0);
@@ -142,7 +142,7 @@ std::set<JavaInputStreamAdapter*> CVC4::JavaInputStreamAdapter::s_adapters;
   assert(clazz != NULL && jenv->ExceptionOccurred() == NULL);
   jmethodID method = jenv->GetMethodID(clazz, "<init>", "(JZ)V");
   assert(method != NULL && jenv->ExceptionOccurred() == NULL);
-  jthrowable t = static_cast<jthrowable>(jenv->NewObject(clazz, method, reinterpret_cast<long>(new $1_type($1)), true));
+  jthrowable t = static_cast<jthrowable>(jenv->NewObject(clazz, method, reinterpret_cast<uintptr_t>(new $1_type($1)), true));
   assert(t != NULL && jenv->ExceptionOccurred() == NULL);
   int status = jenv->Throw(t);
   assert(status == 0);
index d5b018f72a5a6d639afd5458b7db510423d0f3b1..6133114cda74fb12c3c5b309b9cd93ede755d99a 100644 (file)
@@ -9,6 +9,8 @@
 #endif /* SWIGJAVA */
 %}
 
+%include "stdint.i"
+
 %rename(equals) CVC4::RecordUpdate::operator==(const RecordUpdate&) const;
 %ignore CVC4::RecordUpdate::operator!=(const RecordUpdate&) const;
 
@@ -35,7 +37,7 @@
       jenv->SetObjectArrayElement($result, 0, jenv->NewStringUTF($1.first.c_str()));
       jclass clazz = jenv->FindClass("edu/nyu/acsys/CVC4/Type");
       jmethodID methodid = jenv->GetMethodID(clazz, "<init>", "(JZ)V");
-      jenv->SetObjectArrayElement($result, 1, jenv->NewObject(clazz, methodid, reinterpret_cast<long>(new CVC4::Type($1.second)), true));
+      jenv->SetObjectArrayElement($result, 1, jenv->NewObject(clazz, methodid, reinterpret_cast<uintptr_t>(new CVC4::Type($1.second)), true));
     };
 
 
index bd3a4eeb963390a05845960c1009be3dc2bb6209..9ff6757d85b4c01e18ce35016f9f91dde456b479 100644 (file)
@@ -9,6 +9,8 @@
 #endif /* SWIGJAVA */
 %}
 
+%include "stdint.i"
+
 %rename(assign) CVC4::Statistics::operator=(const StatisticsBase&);
 %rename(assign) CVC4::Statistics::operator=(const Statistics& stats);
 
@@ -62,7 +64,7 @@
       jenv->SetObjectArrayElement($result, 0, jenv->NewStringUTF($1.first.c_str()));
       jclass clazz = jenv->FindClass("edu/nyu/acsys/CVC4/SExpr");
       jmethodID methodid = jenv->GetMethodID(clazz, "<init>", "(JZ)V");
-      jenv->SetObjectArrayElement($result, 1, jenv->NewObject(clazz, methodid, reinterpret_cast<long>(new CVC4::SExpr($1.second)), true));
+      jenv->SetObjectArrayElement($result, 1, jenv->NewObject(clazz, methodid, reinterpret_cast<uintptr_t>(new CVC4::SExpr($1.second)), true));
     };
 
 #endif /* SWIGJAVA */