| /* This interface checks whether SWIG supports the new double angled brackets |
| in the template syntax without having a space in between. This feature was |
| introduced in new C++11 standard. |
| */ |
| %module cpp11_template_double_brackets |
| %inline %{ |
| #include <map> |
| std::map<int,std::map<int, double>> map1; |
| std::map< int,std::map<int, double> > map2; |
| |
| std::map<int,std::map<int, std::map<int, double>>> map3; |
| std::map<int,std::map<int, std::map<int, std::map<int, double>>>> map4; |
| %} |
| |
| // Check streaming operators are still okay |
| %rename(ExtractionOperator) operator>>; |
| %rename(InsertionOperator) operator<<; |
| |
| %inline %{ |
| class ABC { |
| public: |
| int a; |
| int operator>>(ABC &) { return 0; } |
| int operator<<(ABC &) { return 0; } |
| }; |
| |
| class DEF { |
| public: |
| int a; |
| int operator<<(DEF &) { return 0; } |
| int operator>>(DEF &) { return 0; } |
| }; |
| |
| |
| template<class T> |
| class ABC2 { |
| public: |
| int a; |
| |
| template<typename U> |
| U operator>>(ABC &); |
| |
| template<typename U> |
| U operator<<(ABC &); |
| }; |
| %} |
| |
| // Test shifts are still working |
| %inline %{ |
| int shift_init1 = 4 << 2 >> 1; |
| int shift_init2 = 4 >> 2 << 1 << 1 >> 2; |
| %} |
| |