1 /** testpolymorph.cpp --- A sequence of polymorphism examples.
3 * Copyright (C) 2009 Eric M. Ludlam
5 * Author: Eric M. Ludlam <eric@siege-engine.com>
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License as
9 * published by the Free Software Foundation; either version 2, or (at
10 * your option) any later version.
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; see the file COPYING. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 * Boston, MA 02110-1301, USA.
25 // Test 1 - Functions w/ prototypes
28 int pt_func1(int arg1
);
29 int pt_func1(int arg1
) {
35 // Test 2 - Functions w/ different arg lists.
47 int pm_func(double a
) {
53 // Test 3 - Methods w/ differet arg lists.
65 int pm_meth(double a
) {
71 // Test 4 - Templates w/ partial specifiers.
72 namespace template_partial_spec
{
73 template <typename T
> class test
76 void doSomething(T t
) { };
79 template <typename T
> class test
<T
*>
82 void doSomething(T
* t
) { };
86 // Test 5 - Templates w/ full specicialization which may or may not share
88 namespace template_full_spec
{
89 template <typename T
> class test
92 void doSomething(T t
) { };
93 void doSomethingElse(T t
) { };
96 template <> class test
<int>
99 void doSomethingElse(int t
) { };
100 void doSomethingCompletelyDifferent(int t
) { };
104 // Test 6 - Dto., but for templates with multiple parameters.
105 namespace template_multiple_spec
{
106 template <typename T1
, typename T2
> class test
109 void doSomething(T1 t
) { };
110 void doSomethingElse(T2 t
) { };
113 template <typename T2
> class test
<int, T2
>
116 void doSomething(int t
) { };
117 void doSomethingElse(T2 t
) { };
120 template <> class test
<float, int>
123 void doSomething(float t
) { };
124 void doSomethingElse(int t
) { };
125 void doNothing(void) { };
130 // End of polymorphism test file.
132 // arch-tag: e2c04959-9b3b-4b4f-b9c2-445bf4848aa4