summaryrefslogtreecommitdiff
path: root/Lib/java/std_auto_ptr.i
diff options
context:
space:
mode:
authorWilliam S Fulton <wsf@fultondesigns.co.uk>2022-07-19 20:26:18 +0100
committerWilliam S Fulton <wsf@fultondesigns.co.uk>2022-07-19 20:26:18 +0100
commit8b654afdefd1f21b0665d6cca7b5725aefc6b797 (patch)
treef8341a69db6760e71e0412a38e642934e8728e24 /Lib/java/std_auto_ptr.i
parent6e67efa33dbaf0bc4b218af5729f9ea980a70034 (diff)
parent1b63af0f2c3d28bbaaa8856d7046b0b22c898609 (diff)
downloadswig-8b654afdefd1f21b0665d6cca7b5725aefc6b797.tar.gz
Merge branch 'unique_ptr-inputs'
* unique_ptr-inputs: std::unique_ptr std::auto_ptr tidyup Add support for std::auto_ptr inputs Cosmetic formatting and doc updates in std_unique_ptr.i files Add Perl support for std::unique_ptr inputs Add Ruby support for std::unique_ptr inputs Add Python support for std::unique_ptr inputs Add C# support std::unique_ptr inputs Java unique_ptr test ownership enhancement to test Java unique_ptr enhance test for double release SWIGTYPE && input typemaps now assume object has been moved Add Java support for std::unique<T> for input parameters. Closes #692 Conflicts: CHANGES.current
Diffstat (limited to 'Lib/java/std_auto_ptr.i')
-rw-r--r--Lib/java/std_auto_ptr.i34
1 files changed, 22 insertions, 12 deletions
diff --git a/Lib/java/std_auto_ptr.i b/Lib/java/std_auto_ptr.i
index 0eb5fe155..6d65f0451 100644
--- a/Lib/java/std_auto_ptr.i
+++ b/Lib/java/std_auto_ptr.i
@@ -1,29 +1,39 @@
/* -----------------------------------------------------------------------------
* std_auto_ptr.i
*
- * The typemaps here allow handling functions returning std::auto_ptr<>,
- * which is the most common use of this type. If you have functions taking it
- * as parameter, these typemaps can't be used for them and you need to do
- * something else (e.g. use shared_ptr<> which SWIG supports fully).
+ * SWIG library file for handling std::auto_ptr.
+ * Memory ownership is passed from the std::auto_ptr C++ layer to the proxy
+ * class when returning a std::auto_ptr from a function.
+ * Memory ownership is passed from the proxy class to the std::auto_ptr in the
+ * C++ layer when passed as a parameter to a wrapped function.
* ----------------------------------------------------------------------------- */
%define %auto_ptr(TYPE)
+
%typemap (jni) std::auto_ptr< TYPE > "jlong"
%typemap (jtype) std::auto_ptr< TYPE > "long"
%typemap (jstype) std::auto_ptr< TYPE > "$typemap(jstype, TYPE)"
+%typemap(in) std::auto_ptr< TYPE > (TYPE *auto_temp)
+%{ auto_temp = *(TYPE **)&$input;
+ $1.reset(auto_temp); %}
+
+%typemap(javain) std::auto_ptr< TYPE > "$typemap(jstype, TYPE).swigRelease($javainput)"
+
%typemap (out) std::auto_ptr< TYPE > %{
- jlong lpp = 0;
- *(TYPE **) &lpp = $1.release();
- $result = lpp;
+ jlong lpp = 0;
+ *(TYPE **) &lpp = $1.release();
+ $result = lpp;
%}
+
%typemap(javaout) std::auto_ptr< TYPE > {
- long cPtr = $jnicall;
- return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true);
- }
+ long cPtr = $jnicall;
+ return (cPtr == 0) ? null : new $typemap(jstype, TYPE)(cPtr, true);
+ }
+
%template() std::auto_ptr< TYPE >;
%enddef
namespace std {
- template <class T> class auto_ptr {};
-}
+ template <class T> class auto_ptr {};
+}