Update copyright to LGPL on all files
[dyninst.git] / dyninstAPI / tests / src / cpp_test.h
1 /*
2  * Copyright (c) 1996-2009 Barton P. Miller
3  * 
4  * We provide the Paradyn Parallel Performance Tools (below
5  * described as "Paradyn") on an AS IS basis, and do not warrant its
6  * validity or performance.  We reserve the right to update, modify,
7  * or discontinue this software at any time.  We shall have no
8  * obligation to supply such updates or modifications or any other
9  * form of support to you.
10  * 
11  * By your use of Paradyn, you understand and agree that we (or any
12  * other person or entity with proprietary rights in Paradyn) are
13  * under no obligation to provide either maintenance services,
14  * update services, notices of latent defects, or correction of
15  * defects for Paradyn.
16  * 
17  * This library is free software; you can redistribute it and/or
18  * modify it under the terms of the GNU Lesser General Public
19  * License as published by the Free Software Foundation; either
20  * version 2.1 of the License, or (at your option) any later version.
21  * 
22  * This library is distributed in the hope that it will be useful,
23  * but WITHOUT ANY WARRANTY; without even the implied warranty of
24  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
25  * Lesser General Public License for more details.
26  * 
27  * You should have received a copy of the GNU Lesser General Public
28  * License along with this library; if not, write to the Free Software
29  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
30  */
31
32 // C++ mutatee tests header file
33 // $Id: cpp_test.h,v 1.6 2006/05/03 00:31:23 jodom Exp $
34
35 #ifndef CPP_TEST
36 #define CPP_TEST
37
38 #define CPP_DEFLT_ARG_VAL 1024
39
40 class cpp_test
41 {
42    public :
43
44      cpp_test() {};
45      virtual ~cpp_test() {}
46      virtual void func_cpp() = 0;
47      virtual int func2_cpp() const { return 0;};
48
49 };
50
51
52 class cpp_test_util : public cpp_test
53 {
54    public :
55
56       cpp_test_util(int arg = 0):cpp_test(),CPP_TEST_UTIL_VAR(arg) {};
57
58    protected :
59
60      int CPP_TEST_UTIL_VAR;  
61      void call_cpp(int test);
62
63 };
64
65 class arg_test : public cpp_test_util
66 {
67    public :
68
69      arg_test():cpp_test_util() {};
70      void func_cpp();
71      
72    private :
73
74      void dummy();
75      void arg_pass(int test);
76      void call_cpp(const int test, int & arg2, int arg3 = CPP_DEFLT_ARG_VAL);
77
78
79 };
80
81 class overload_func_test : public cpp_test_util
82 {
83    public :
84
85      overload_func_test():cpp_test_util() {};
86      void func_cpp();
87
88    private :
89
90      void call_cpp(int arg1);
91      void call_cpp(const char * arg1);
92      void call_cpp(int arg1, float arg2);
93
94 };
95
96 class overload_op_test : public cpp_test_util
97 {
98     public :
99
100       overload_op_test():cpp_test_util(3){};
101       void func_cpp();
102       int operator++(); 
103 };
104
105 class static_test : public cpp_test_util
106 {
107    public :
108
109       static_test():cpp_test_util(){};
110       void func_cpp();
111       static int call_cpp() { return (count++); }
112
113    private :
114
115       static int count;
116
117 };
118
119 class namespace_test : public cpp_test_util
120 {
121    public :
122
123       namespace_test():cpp_test_util() {};
124       void func_cpp();
125
126    private :
127
128       int class_variable;
129 };
130
131 class exception_test : public cpp_test_util
132 {
133     public :
134
135       exception_test():cpp_test_util() {};
136       void func_cpp();
137        
138     private :
139
140       void call_cpp();
141 };
142
143 class sample_exception
144 {
145     public :
146
147       sample_exception() {};
148       void response();
149
150 };
151
152 template <class T> class sample_template
153 {
154     public :
155
156       sample_template(T& input):item(input) {};
157       T content();
158
159     private :
160
161       T  item;
162 };
163
164 class template_test : public cpp_test_util
165 {
166     public :
167
168       template_test():cpp_test_util() {};
169       void func_cpp();
170
171 };
172
173
174 class decl_test : public cpp_test_util
175 {
176    public :
177
178       decl_test():cpp_test_util(){};
179       void func_cpp(); 
180
181    private :
182
183       void call_cpp(int test);
184
185 };
186
187
188 // It should also contain members, e.g.
189 // call_cpp() and CPP_TEST_UTIL_VAR
190 class derivation_test : public cpp_test_util
191 {
192    public :
193
194       derivation_test():cpp_test_util(){};
195       void func_cpp();
196 };
197
198 class stdlib_test1 : public cpp_test_util
199 {
200    public :
201
202       stdlib_test1():cpp_test_util(10){};
203       void func_cpp();
204
205 };
206
207 class stdlib_test2 : public cpp_test_util
208 {
209    public :
210
211       stdlib_test2():cpp_test_util(11){};
212       void func_cpp();
213
214    private :
215
216       void call_cpp();
217 };
218
219 class func_test : public cpp_test_util
220 {
221    public :
222       func_test():cpp_test_util(12) {};
223       void func_cpp();
224       int func2_cpp() const;
225
226    private :
227       inline void call_cpp(int test) {
228         int tmp = test;
229         cpp_test_util::call_cpp(tmp);
230       }
231 };
232
233 #endif
234
235