File: director_stl.i

package info (click to toggle)
swig1.3 1.3.24-1
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 19,336 kB
  • ctags: 10,604
  • sloc: cpp: 27,917; ansic: 24,160; yacc: 4,412; python: 4,255; java: 4,156; makefile: 3,735; sh: 3,552; cs: 2,250; ruby: 2,150; lisp: 1,605; tcl: 1,136; perl: 980; php: 879; ml: 825
file content (75 lines) | stat: -rw-r--r-- 1,728 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
%module(directors="1") director_stl

%include "std_string.i"
%include "std_pair.i"
%include "std_vector.i"

#ifndef SWIG_STD_DEFAULT_INSTANTIATION
%template() std::vector<double>;
%template() std::vector<int>;
%template() std::vector<std::string>;
%template() std::pair<std::string, int>;
%template() std::pair<int,double>;
%template() std::pair<double,int>;
#endif

%feature("director") Foo;

%feature("director:except") {
  if ($error != NULL) {
    throw Swig::DirectorMethodException();
  }
}

%exception {
  try { $action }
  catch (...) { SWIG_fail; }
}

%inline 
{
class Foo {
public:
  virtual ~Foo() {}

  virtual std::string& bar(std::string& s) 
  {
    return s;
  }
  

  virtual std::string ping(std::string s) = 0;
  virtual std::string pong(const std::string& s) 
  { return std::string("Foo::pong:") + s + ":" + ping(s); }

  std::string tping(std::string s) { return ping(s); }
  std::string tpong(const std::string& s) { return pong(s); }
  
  virtual std::pair<double, int>
  pident(const std::pair<double, int>& p) { return p; }

  virtual std::vector<int>
  vident(const std::vector<int>& p) { return p; }

  virtual std::vector<int>
  vsecond(const std::vector<int>& p, const std::vector<int>& s) { return s; }    

  std::pair<double, int>
  tpident(const std::pair<double, int>& p) { return pident(p); }

  std::vector<int>
  tvident(const std::vector<int>& p) { return vident(p); }

  virtual std::vector<int>
  tvsecond(const std::vector<int>& p, const std::vector<int>& s) { return vsecond(p,s); }


  virtual std::vector<std::string>
  vidents(const std::vector<std::string>& p) { return p; }

  std::vector<std::string>
  tvidents(const std::vector<std::string>& p) { return vidents(p); }
  
};

}