summaryrefslogtreecommitdiff
path: root/Lib/perl5
diff options
context:
space:
mode:
authorErez Geva <ErezGeva2@gmail.com>2022-07-04 02:14:21 +0200
committerErez Geva <ErezGeva2@gmail.com>2022-07-09 13:52:43 +0200
commitadb85d3d050958051aa88f01f51b71b8632096be (patch)
treed47555ddabe69e11c1ede2d7a7bf952d6972e3fb /Lib/perl5
parent22a4355f340e9a844d5e5d8d0528d767c4808ebb (diff)
downloadswig-adb85d3d050958051aa88f01f51b71b8632096be.tar.gz
Add std::unique_ptr<type> to Perl5.
Signed-off-by: Erez Geva <ErezGeva2@gmail.com>
Diffstat (limited to 'Lib/perl5')
-rw-r--r--Lib/perl5/std_unique_ptr.i19
1 files changed, 19 insertions, 0 deletions
diff --git a/Lib/perl5/std_unique_ptr.i b/Lib/perl5/std_unique_ptr.i
new file mode 100644
index 000000000..163c7c2d1
--- /dev/null
+++ b/Lib/perl5/std_unique_ptr.i
@@ -0,0 +1,19 @@
+/* -----------------------------------------------------------------------------
+ * std_unique_ptr.i
+ *
+ * The typemaps here allow handling functions returning std::unique_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).
+ * ----------------------------------------------------------------------------- */
+
+%define %unique_ptr(TYPE)
+%typemap (out) std::unique_ptr< TYPE > %{
+ %set_output(SWIG_NewPointerObj($1.release(), $descriptor(TYPE *), SWIG_POINTER_OWN | %newpointer_flags));
+%}
+%template() std::unique_ptr< TYPE >;
+%enddef
+
+namespace std {
+ template <class T> class unique_ptr {};
+}