From e6c064e209a8af31961b825a6e8332d105f2dcda Mon Sep 17 00:00:00 2001 From: Vincent Couvert Date: Mon, 30 May 2011 14:00:48 +0000 Subject: [PATCH] Make li_std_*.cpptest work, thanks to Tcl example git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/branches/gsoc2009-sploving@12726 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- Lib/scilab/std_deque.i | 1 + Lib/scilab/std_except.i | 1 + Lib/scilab/std_map.i | 71 +++++++++++++++++++++++++++++++++++++++++ Lib/scilab/std_pair.i | 34 ++++++++++++++++++++ 4 files changed, 107 insertions(+) create mode 100644 Lib/scilab/std_deque.i create mode 100644 Lib/scilab/std_except.i create mode 100644 Lib/scilab/std_map.i create mode 100644 Lib/scilab/std_pair.i diff --git a/Lib/scilab/std_deque.i b/Lib/scilab/std_deque.i new file mode 100644 index 000000000..cb98f6c2f --- /dev/null +++ b/Lib/scilab/std_deque.i @@ -0,0 +1 @@ +%include diff --git a/Lib/scilab/std_except.i b/Lib/scilab/std_except.i new file mode 100644 index 000000000..af98428f6 --- /dev/null +++ b/Lib/scilab/std_except.i @@ -0,0 +1 @@ +%include diff --git a/Lib/scilab/std_map.i b/Lib/scilab/std_map.i new file mode 100644 index 000000000..e36cc96f2 --- /dev/null +++ b/Lib/scilab/std_map.i @@ -0,0 +1,71 @@ +// +// SWIG typemaps for std::map +// Luigi Ballabio +// Jan. 2003 +// +// Common implementation + +%include + +// ------------------------------------------------------------------------ +// std::map +// ------------------------------------------------------------------------ + +%{ +#include +#include +#include +%} + +// exported class + +namespace std { + + template class map { + // add typemaps here + public: + map(); + map(const map &); + + unsigned int size() const; + bool empty() const; + void clear(); + %extend { + const T& get(const K& key) throw (std::out_of_range) { + std::map::iterator i = self->find(key); + if (i != self->end()) + return i->second; + else + throw std::out_of_range("key not found"); + } + void set(const K& key, const T& x) { + (*self)[key] = x; + } + void del(const K& key) throw (std::out_of_range) { + std::map::iterator i = self->find(key); + if (i != self->end()) + self->erase(i); + else + throw std::out_of_range("key not found"); + } + bool has_key(const K& key) { + std::map::iterator i = self->find(key); + return i != self->end(); + } + } + }; + +// Legacy macros (deprecated) +%define specialize_std_map_on_key(K,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_key ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_value(T,CHECK,CONVERT_FROM,CONVERT_TO) +#warning "specialize_std_map_on_value ignored - macro is deprecated and no longer necessary" +%enddef + +%define specialize_std_map_on_both(K,CHECK_K,CONVERT_K_FROM,CONVERT_K_TO, T,CHECK_T,CONVERT_T_FROM,CONVERT_T_TO) +#warning "specialize_std_map_on_both ignored - macro is deprecated and no longer necessary" +%enddef + +} diff --git a/Lib/scilab/std_pair.i b/Lib/scilab/std_pair.i new file mode 100644 index 000000000..1448d6524 --- /dev/null +++ b/Lib/scilab/std_pair.i @@ -0,0 +1,34 @@ +/* ----------------------------------------------------------------------------- + * std_pair.i + * + * Typemaps for std::pair + * ----------------------------------------------------------------------------- */ + +%include +%include + +// ------------------------------------------------------------------------ +// std::pair +// ------------------------------------------------------------------------ + +%{ +#include +%} + +namespace std { + + template struct pair { + + pair(); + pair(T first, U second); + pair(const pair& p); + + template pair(const pair &p); + + T first; + U second; + }; + + // add specializations here + +}