summaryrefslogtreecommitdiff
path: root/tiger-compiler/tcsh/src/helper.hh
diff options
context:
space:
mode:
Diffstat (limited to 'tiger-compiler/tcsh/src/helper.hh')
-rw-r--r--tiger-compiler/tcsh/src/helper.hh16
1 files changed, 16 insertions, 0 deletions
diff --git a/tiger-compiler/tcsh/src/helper.hh b/tiger-compiler/tcsh/src/helper.hh
new file mode 100644
index 0000000..cdbf760
--- /dev/null
+++ b/tiger-compiler/tcsh/src/helper.hh
@@ -0,0 +1,16 @@
+#ifndef SWIG_HELPER_H
+#define SWIG_HELPER_H
+
+#define STCONVERT(TYPE, TYPENAME) \
+void operator()(const TYPE & e) override \
+{ \
+ result = SWIG_NewPointerObj(SWIG_as_voidptr(&e), SWIGTYPE_ ## TYPENAME, 0); \
+}
+
+#define IFTYPECONVERT(TYPE, TYPENAME) \
+if (const TYPE* d = dynamic_cast<const TYPE*>(&e); d != nullptr) \
+{ \
+ result = SWIG_NewPointerObj(SWIG_as_voidptr(&e), SWIGTYPE_ ## TYPENAME, 0); \
+}
+
+#endif /* ! SWIG_HELPER_H */