OSDN Git Service

b866a3e505706ce3058811372b030de627da7025
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.old-deja / g++.brendan / nest21.C
1 // GROUPS passed nested-classes
2 #include <iostream.h>
3 #include <stdio.h>
4 #include <string.h>
5
6 static char output[1024];
7
8 class BDDRetrace {
9 public:
10     class Dump {
11     public:
12         virtual Dump& operator<<(char c) = 0;
13         virtual Dump& operator<<(int i) = 0;
14         virtual Dump& operator<<(double r) = 0;
15     };
16
17     class Dump1: public Dump {
18     public:
19         Dump& operator<<(char c);
20         Dump& operator<<(int i);
21         Dump& operator<<(double r);
22     };
23 };
24
25 class Dump2: public BDDRetrace::Dump {
26 public:
27     BDDRetrace::Dump& operator<<(char c);
28     BDDRetrace::Dump& operator<<(int i);
29     BDDRetrace::Dump& operator<<(double r);
30 };
31
32 BDDRetrace::Dump&
33 BDDRetrace::Dump1::operator<<(char c)
34 { char tempout[1024];
35   sprintf (tempout, "%s%s%c", output, "1-", c);
36   strcpy (output, tempout);
37   return *this;
38 }
39
40 BDDRetrace::Dump&
41 BDDRetrace::Dump1::operator<<(int i)
42 { char tempout[1024];
43   sprintf (tempout, "%s%s%d", output, "1-", i);
44   strcpy (output, tempout);
45   return *this; }
46
47 BDDRetrace::Dump&
48 BDDRetrace::Dump1::operator<<(double r)
49 { char tempout[1024];
50   sprintf (tempout, "%s%s%1.0f", output, "1-", r);
51   strcpy (output, tempout);
52   return *this; }
53
54 BDDRetrace::Dump&
55 Dump2::operator<<(char c)
56 { char tempout[1024];
57   sprintf (tempout, "%s%s%c", output, "2-", c);
58   strcpy (output, tempout);
59   return *this; }
60
61 BDDRetrace::Dump&
62 Dump2::operator<<(int i)
63 { char tempout[1024];
64   sprintf (tempout, "%s%s%d", output, "2-", i);
65   strcpy (output, tempout);
66   return *this; }
67
68 BDDRetrace::Dump&
69 Dump2::operator<<(double r)
70 { char tempout[1024];
71   sprintf (tempout, "%s%s%1.0f", output, "2-", r);
72   strcpy (output, tempout);
73   return *this; }
74
75 int main()
76 {
77     BDDRetrace::Dump1 d1;
78     Dump2 d2;
79
80     sprintf (output, " ");
81
82     d1 << 'a';
83     d1 << 1;
84     d1 << 1.0;
85
86     d2 << 'a';
87     d2 << 1;
88     d2 << 1.0;
89
90     if (strcmp (output, " 1-a1-11-12-a2-12-1") == 0)
91       printf ("PASS\n");
92     else
93       printf ("FAIL\n");
94
95     return 0;
96 }