Commit | Line | Data |
---|---|---|
252b5132 RH |
1 | // Class Foo |
2 | #pragma implementation | |
3 | ||
4 | ||
5 | // We don't use header files, since we only want to see, whether the | |
6 | // compiler is installed properly. | |
7 | // | |
8 | #if (__GNUG__ == 2) | |
9 | typedef __SIZE_TYPE__ size_t; | |
10 | #else | |
11 | typedef unsigned int size_t; | |
12 | #endif | |
13 | ||
14 | extern "C" { | |
f91c3144 | 15 | char *strncpy (char* dest, const char* src, size_t len); |
252b5132 RH |
16 | int printf (const char*, ...); |
17 | }; | |
18 | ||
19 | #include "cdtest-foo.h" | |
20 | ||
21 | int Foo::foos = 0; | |
22 | ||
23 | void Foo::init_foo () | |
24 | { | |
5be8a006 | 25 | printf ("BROKENLY calling Foo::init_foo from __init_start; size_of(Foo) = %ld\n", (long) sizeof(Foo)); |
252b5132 RH |
26 | foos = FOOLISH_NUMBER; |
27 | } | |
28 | ||
29 | ||
30 | Foo::Foo () | |
31 | { | |
32 | i = ++foos; | |
33 | strncpy (message, "default-foo", len); | |
34 | #ifdef WITH_ADDR | |
35 | printf ("Constructing Foo(%d) \"default-foo\" at %08x\n", i, this); | |
36 | #else | |
37 | printf ("Constructing Foo(%d) \"default-foo\"\n", i); | |
38 | #endif | |
39 | } | |
40 | ||
a78d2a67 | 41 | Foo::Foo (const char* msg) |
252b5132 RH |
42 | { |
43 | i = ++foos; | |
44 | strncpy( message, msg, len); | |
45 | #ifdef WITH_ADDR | |
46 | printf ( "Constructing Foo(%d) \"%s\" at %08x\n", i, message, this); | |
47 | #else | |
48 | printf ( "Constructing Foo(%d) \"%s\"\n", i, message); | |
49 | #endif | |
50 | } | |
51 | ||
52 | ||
53 | Foo::Foo (const Foo& foo) | |
54 | { | |
55 | i = ++foos; | |
56 | #ifdef WITH_ADDR | |
57 | printf ("Initializing Foo(%d) \"%s\" at %08x with Foo(%d) %08x\n", | |
58 | i, foo.message, this, foo.i, &foo); | |
59 | #else | |
60 | printf ("Initializing Foo(%d) \"%s\" with Foo(%d)\n",i, foo.message, foo.i); | |
61 | #endif | |
62 | for ( int k = 0; k < FOO_MSG_LEN; k++) message[k] = foo.message[k]; | |
63 | } | |
64 | ||
65 | ||
66 | Foo& Foo::operator= (const Foo& foo) | |
67 | { | |
68 | #ifdef WITH_ADDR | |
69 | printf ("Copying Foo(%d) \"%s\" at %08x to Foo(%d) %08x\n", | |
70 | foo.i, foo.message, &foo, i, this); | |
71 | #else | |
72 | printf ("Copying Foo(%d) \"%s\" to Foo(%d)\n", foo.i, foo.message, i); | |
73 | #endif | |
74 | for ( int k = 0; k < FOO_MSG_LEN; k++) message[k] = foo.message[k]; | |
75 | return *this; | |
76 | } | |
77 | ||
78 | ||
79 | Foo::~Foo () | |
80 | { | |
81 | foos--; | |
82 | #ifdef WITH_ADDR | |
83 | printf ("Destructing Foo(%d) \"%s\" at %08x (remaining foos: %d)\n", | |
84 | i, message, this, foos); | |
85 | #else | |
86 | printf ("Destructing Foo(%d) \"%s\" (remaining foos: %d)\n", | |
87 | i, message, foos); | |
88 | #endif | |
89 | } |