import source from 1.3.40
[external/swig.git] / Examples / test-suite / redefined.i
1 %module redefined
2
3 %warnfilter(SWIGWARN_RUBY_WRONG_NAME) agua;
4
5 /* no redundant warnings */
6 %warnfilter(SWIGWARN_PARSE_REDUNDANT);
7
8 #if 1
9  //
10  // All these repeated declarations are not redefinitions,
11  // and they are valid C++ code, therefore, we skip 
12  // swig redefined warnings.
13  //
14 %define uja
15   aju;
16 %enddef
17
18 %define uja
19   aju;
20 %enddef
21
22 %constant int agua = 0;
23 %constant int agua = 0;
24
25 %inline %{
26
27 #define REDUNDANT 1
28 #define REDUNDANT 1
29
30 #define MACROREP(x) x
31 #define MACROREP(x) x
32
33   class Hello;
34   class Hello;
35   
36   typedef int Int;
37   typedef int Int;
38
39   inline int hello(int);
40   int hello(int) { return 0; }
41   
42   struct B;
43   
44   struct A
45   {
46     typedef int Int;
47     friend int foo(A*, B*);    
48   };
49
50   struct B
51   {
52     typedef int Int;
53     friend int foo(A*, B*);
54   };
55
56   inline int foo(A*, B*) { return 0; }
57   
58 %}
59
60
61 #else
62
63 //
64 // the %extend and %rename directive ALWAYS emit redefined warnings,
65 // since they are not C/C++/CPP standard.
66 //
67 %extend Hello {
68   int hi(int) { return 0; }
69 }
70
71 %rename(chao) hi(int);
72
73 //
74 // All these repeated declarations are really redefinitions,
75 // therefore, swig must produce a redefined warning
76 //
77
78 %constant int agua = 0;
79 %constant int agua = 1;
80
81
82 %inline %{
83
84 #define REDEFINED 1
85 #define REDEFINED 2
86
87 #define MACROREP(x) x
88 #define MACROREP(x) x*2
89
90   typedef int Int;
91   typedef double Int;
92
93   int hi(int);
94   int chao(int);
95   int hello(int);
96   inline double hello(int) { return 0; }
97   
98   struct Hello 
99   {
100     typedef int Int;
101     typedef double Int;
102     friend short hello(int);
103     int hi(int) { return 0; }
104   };
105   
106 %}
107 #endif