Home | History | Annotate | Download | only in ld-cdtest
      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" {
     15     char *strncpy (char* dest, const char* src, size_t len);
     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 {
     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 
     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 
     41 Foo::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 
     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 }
     90