summaryrefslogtreecommitdiff
path: root/Examples/test-suite/smart_pointer_templatevariables.i
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/smart_pointer_templatevariables.i')
-rw-r--r--Examples/test-suite/smart_pointer_templatevariables.i39
1 files changed, 39 insertions, 0 deletions
diff --git a/Examples/test-suite/smart_pointer_templatevariables.i b/Examples/test-suite/smart_pointer_templatevariables.i
new file mode 100644
index 0000000..fd705eb
--- /dev/null
+++ b/Examples/test-suite/smart_pointer_templatevariables.i
@@ -0,0 +1,39 @@
+%module smart_pointer_templatevariables
+
+%inline %{
+template <class _CharT>
+struct basic_string {
+ int npos;
+};
+
+template<class T>
+struct Ptr {
+ Ptr(T *p = 0) : ptr(p) {}
+ ~Ptr() { delete ptr; }
+ T *operator->() const { return ptr; }
+private:
+ T *ptr;
+};
+
+template <typename KernelPixelT>
+struct DiffImContainer {
+ int id;
+// static members seem to be can of worms. Note that SWIG wraps them as non-static members. Why?
+// Note CHANGES entry 10/14/2003. Static const variables are not wrapped as constants but as a read only variable. Why?
+// static short xyz;
+// static const short constvar = 555;
+};
+//template<typename KernelPixelT> short DiffImContainer<KernelPixelT>::xyz = 0;
+
+DiffImContainer<double>* create(int id, short xyz) {
+ DiffImContainer<double> *d = new DiffImContainer<double>();
+ d->id = id;
+// DiffImContainer<double>::xyz = xyz;
+ return d;
+}
+%}
+
+%template(BasicString) basic_string<char>;
+%template(DiffImContainer_D) DiffImContainer<double>;
+%template(DiffImContainerPtr_D) Ptr<DiffImContainer<double> >;
+