summaryrefslogtreecommitdiff
path: root/share/swig/2.0.11/guile/cplusplus.i
diff options
context:
space:
mode:
Diffstat (limited to 'share/swig/2.0.11/guile/cplusplus.i')
-rw-r--r--share/swig/2.0.11/guile/cplusplus.i22
1 files changed, 22 insertions, 0 deletions
diff --git a/share/swig/2.0.11/guile/cplusplus.i b/share/swig/2.0.11/guile/cplusplus.i
new file mode 100644
index 0000000..d5d65ef
--- /dev/null
+++ b/share/swig/2.0.11/guile/cplusplus.i
@@ -0,0 +1,22 @@
+/* -----------------------------------------------------------------------------
+ * cplusplus.i
+ *
+ * SWIG typemaps for C++
+ * ----------------------------------------------------------------------------- */
+
+%typemap(guile,out) string, std::string {
+ $result = SWIG_str02scm(const_cast<char*>($1.c_str()));
+}
+%typemap(guile,in) string, std::string {
+ $1 = SWIG_scm2str($input);
+}
+
+%typemap(guile,out) complex, complex<double>, std::complex<double> {
+ $result = scm_make_rectangular( scm_from_double ($1.real ()),
+ scm_from_double ($1.imag ()) );
+}
+%typemap(guile,in) complex, complex<double>, std::complex<double> {
+ $1 = std::complex<double>( scm_to_double (scm_real_part ($input)),
+ scm_to_double (scm_imag_part ($input)) );
+}
+