%rename(apply) CVC4::ExprHashFunction::operator()(CVC4::Expr) const;
#endif /* SWIGPYTHON */
+#ifdef SWIGJAVA
+%typemap(javabody) CVC4::Expr %{
+ private long swigCPtr;
+ protected boolean swigCMemOwn;
+
+ protected $javaclassname(long cPtr, boolean cMemoryOwn) {
+ swigCMemOwn = cMemoryOwn;
+ swigCPtr = cPtr;
+ this.em = SmtEngine.mkRef(getExprManager()); // keep ref to em in SWIG proxy class
+ }
+
+ protected static long getCPtr($javaclassname obj) {
+ return (obj == null) ? 0 : obj.swigCPtr;
+ }
+%}
+%javamethodmodifiers CVC4::Expr::operator=(const Expr&) "protected";
+%typemap(javacode) CVC4::Expr %{
+ // a ref is kept here to keep Java GC from collecting the ExprManager
+ // before the Expr
+ private Object em;
+
+ public Expr assign(Expr e) {
+ Expr r = assignInternal(e);
+ this.em = SmtEngine.mkRef(getExprManager()); // keep ref to em in SWIG proxy class
+ return r;
+ }
+%}
+%typemap(javaconstruct) Expr {
+ this($imcall, true);
+ this.em = SmtEngine.mkRef(getExprManager()); // keep ref to em in SWIG proxy class
+ }
+%typemap(javadestruct, methodname="delete", methodmodifiers="public synchronized") CVC4::Expr {
+ SmtEngine.dlRef(em);
+ em = null;
+ if (swigCPtr != 0) {
+ if (swigCMemOwn) {
+ swigCMemOwn = false;
+ CVC4JNI.delete_Expr(swigCPtr);
+ }
+ swigCPtr = 0;
+ }
+ }
+#endif /* SWIGJAVA */
+
%ignore CVC4::operator<<(std::ostream&, const Expr&);
%ignore CVC4::operator<<(std::ostream&, const TypeCheckingException&);
%ignore CVC4::expr::operator<<(std::ostream&, ExprDag);
%ignore CVC4::expr::operator<<(std::ostream&, ExprSetLanguage);
-%rename(assign) CVC4::Expr::operator=(const Expr&);
+%rename(assignInternal) CVC4::Expr::operator=(const Expr&);
%rename(equals) CVC4::Expr::operator==(const Expr&) const;
%ignore CVC4::Expr::operator!=(const Expr&) const;
%rename(less) CVC4::Expr::operator<(const Expr&) const;
// before the ExprManager
private Object options;
%}
-%typemap(javaconstruct) CVC4::ExprManager {
+%typemap(javaconstruct) ExprManager {
this($imcall, true);
this.options = SmtEngine.mkRef(options); // keep ref to options in SWIG proxy class
}
%rename(apply) CVC4::TypeHashFunction::operator()(const CVC4::Type&) const;
#endif /* SWIGPYTHON */
+#ifdef SWIGJAVA
+%typemap(javabody) CVC4::Type %{
+ private long swigCPtr;
+ protected boolean swigCMemOwn;
+
+ protected $javaclassname(long cPtr, boolean cMemoryOwn) {
+ swigCMemOwn = cMemoryOwn;
+ swigCPtr = cPtr;
+ this.em = SmtEngine.mkRef(getExprManager()); // keep ref to em in SWIG proxy class
+ }
+
+ protected static long getCPtr($javaclassname obj) {
+ return (obj == null) ? 0 : obj.swigCPtr;
+ }
+%}
+%javamethodmodifiers CVC4::Type::operator=(const Type&) "protected";
+%typemap(javacode) CVC4::Type %{
+ // a ref is kept here to keep Java GC from collecting the ExprManager
+ // before the Type
+ private Object em;
+
+ public Type assign(Type t) {
+ Type r = assignInternal(t);
+ this.em = SmtEngine.mkRef(getExprManager()); // keep ref to em in SWIG proxy class
+ return r;
+ }
+%}
+%typemap(javaconstruct) Type {
+ this($imcall, true);
+ this.em = SmtEngine.mkRef(getExprManager()); // keep ref to em in SWIG proxy class
+ }
+%typemap(javadestruct, methodname="delete", methodmodifiers="public synchronized") CVC4::Type {
+ SmtEngine.dlRef(em);
+ em = null;
+ if (swigCPtr != 0) {
+ if (swigCMemOwn) {
+ swigCMemOwn = false;
+ CVC4JNI.delete_Type(swigCPtr);
+ }
+ swigCPtr = 0;
+ }
+ }
+#endif /* SWIGJAVA */
%ignore CVC4::operator<<(std::ostream&, const Type&);
-%rename(assign) CVC4::Type::operator=(const Type&);
+%rename(assignInternal) CVC4::Type::operator=(const Type&);
%rename(equals) CVC4::Type::operator==(const Type&) const;
%ignore CVC4::Type::operator!=(const Type&) const;
%rename(less) CVC4::Type::operator<(const Type&) const;
}
}
%}
-%typemap(javaconstruct) CVC4::SmtEngine {
+%typemap(javaconstruct) SmtEngine {
this($imcall, true);
emRef = mkRef(em); // keep ref to expr manager in SWIG proxy class
}