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 9typedef __SIZE_TYPE__ size_t; 10#else 11typedef unsigned int size_t; 12#endif 13 14extern "C" { 15 char *strncpy (char* dest, const char* src, size_t len); 16 int printf (const char*, ...); 17}; 18 19#include "cdtest-foo.h" 20 21int Foo::foos = 0; 22 23void Foo::init_foo () 24{ 25 printf ("BROKENLY calling Foo::init_foo from __init_start; size_of(Foo) = %ld\n", (long) sizeof(Foo)); 26 foos = FOOLISH_NUMBER; 27} 28 29 30Foo::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 41Foo::Foo (const char* msg) 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 53Foo::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 66Foo& 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 79Foo::~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} 90