diff options
Diffstat (limited to 'c/src/tests/samples/cdtest')
-rw-r--r-- | c/src/tests/samples/cdtest/cdtest.scn | 31 | ||||
-rw-r--r-- | c/src/tests/samples/cdtest/init.c | 30 | ||||
-rw-r--r-- | c/src/tests/samples/cdtest/main.cc | 146 | ||||
-rw-r--r-- | c/src/tests/samples/cdtest/system.h | 30 |
4 files changed, 237 insertions, 0 deletions
diff --git a/c/src/tests/samples/cdtest/cdtest.scn b/c/src/tests/samples/cdtest/cdtest.scn new file mode 100644 index 0000000000..a832a72372 --- /dev/null +++ b/c/src/tests/samples/cdtest/cdtest.scn @@ -0,0 +1,31 @@ +Hey I'm in base class constructor number 1 for 0x400010cc. +Hey I'm in base class constructor number 2 for 0x400010d4. +Hey I'm in derived class constructor number 3 for 0x400010d4. + + +*** CONSTRUCTOR/DESTRUCTOR TEST *** +Hey I'm in base class constructor number 4 for 0x4009ee08. +Hey I'm in base class constructor number 5 for 0x4009ee10. +Hey I'm in base class constructor number 6 for 0x4009ee18. +Hey I'm in base class constructor number 7 for 0x4009ee20. +Hey I'm in derived class constructor number 8 for 0x4009ee20. +Testing a C++ I/O stream +Hey I'm in derived class destructor number 8 for 0x4009ee20. +Derived class - Instantiation order 8 +Hey I'm in base class destructor number 7 for 0x4009ee20. +Instantiation order 8 +Hey I'm in base class destructor number 6 for 0x4009ee18. +Instantiation order 6 +Hey I'm in base class destructor number 5 for 0x4009ee10. +Instantiation order 5 +Hey I'm in base class destructor number 4 for 0x4009ee08. +Instantiation order 5 +*** END OF CONSTRUCTOR/DESTRUCTOR TEST *** + + +Hey I'm in derived class destructor number 3 for 0x400010d4. +Derived class - Instantiation order 3 +Hey I'm in base class destructor number 2 for 0x400010d4. +Instantiation order 3 +Hey I'm in base class destructor number 1 for 0x400010cc. +Instantiation order 1 diff --git a/c/src/tests/samples/cdtest/init.c b/c/src/tests/samples/cdtest/init.c new file mode 100644 index 0000000000..c233918d61 --- /dev/null +++ b/c/src/tests/samples/cdtest/init.c @@ -0,0 +1,30 @@ +/* Init + * + * This routine is the initialization task for this test program. + * It is called from init_exec and has the responsibility for creating + * and starting the tasks that make up the test. If the time of day + * clock is required for the test, it should also be set to a known + * value by this function. + * + * Input parameters: NONE + * + * Output parameters: NONE + * + * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. + * On-Line Applications Research Corporation (OAR). + * All rights assigned to U.S. Government, 1994. + * + * This material may be reproduced by or for the U.S. Government pursuant + * to the copyright license under the clause at DFARS 252.227-7013. This + * notice must appear in all copies of this file and its derivatives. + * + * $Id$ + */ + +#include "system.h" +#undef EXTERN +#define EXTERN +#include "conftbl.h" +#include "gvar.h" +#include <stdio.h> +#include "libcsupport.h" diff --git a/c/src/tests/samples/cdtest/main.cc b/c/src/tests/samples/cdtest/main.cc new file mode 100644 index 0000000000..1a12431701 --- /dev/null +++ b/c/src/tests/samples/cdtest/main.cc @@ -0,0 +1,146 @@ +/* main + * + * This routine is the initialization task for this test program. + * It is called from init_exec and has the responsibility for creating + * and starting the tasks that make up the test. If the time of day + * clock is required for the test, it should also be set to a known + * value by this function. + * + * Input parameters: NONE + * + * Output parameters: NONE + * + * COPYRIGHT (c) 1994 by Division Incorporated + * + * Based in part on OAR works. + * To anyone who acknowledges that this file is provided "AS IS" + * without any express or implied warranty: + * permission to use, copy, modify, and distribute this file + * for any purpose is hereby granted without fee, provided that + * the above copyright notice and this notice appears in all + * copies, and that the name of Division Incorporated not be + * used in advertising or publicity pertaining to distribution + * of the software without specific, written prior permission. + * Division Incorporated makes no representations about the + * suitability of this software for any purpose. + * + * $Id$ + */ + +#include <rtems.h> +#include <stdio.h> +#include <libcsupport.h> +#include <iostream.h> + +extern "C" { +extern rtems_task main_task(rtems_task_argument); +} + +static int num_inst = 0; + +class A { +public: + A(void) + { + num_inst++; + printf( + "Hey I'm in base class constructor number %d for %p.\n", + num_inst, + this + ); + + /* + * Make sure we use some space + */ + + string = new char[50]; + sprintf(string, "Instantiation order %d", num_inst); + }; + + virtual ~A() + { + printf( + "Hey I'm in base class destructor number %d for %p.\n", + num_inst, + this + ); + print(); + num_inst--; + }; + + virtual void print() { printf("%s\n", string); }; + +protected: + char *string; +}; + +class B : public A { +public: + B(void) + { + num_inst++; + printf( + "Hey I'm in derived class constructor number %d for %p.\n", + num_inst, + this + ); + + /* + * Make sure we use some space + */ + + string = new char[50]; + sprintf(string, "Instantiation order %d", num_inst); + }; + + ~B() + { + printf( + "Hey I'm in derived class destructor number %d for %p.\n", + num_inst, + this + ); + print(); + num_inst--; + }; + + void print() { printf("Derived class - %s\n", string); } +}; + + +A foo; +B foobar; + +void +cdtest(void) +{ + A bar, blech, blah; + B bleak; + + cout << "Testing a C++ I/O stream" << endl; + + bar = blech; +} + +// +// main equivalent +// It can not be called 'main' since the bsp owns that name +// in many implementations in order to get global constructors +// run. +// +// Ref: c/src/lib/libbsp/hppa1_1/simhppa/startup/bspstart.c +// + + +rtems_task main_task( + rtems_task_argument ignored +) +{ + printf( "\n\n*** CONSTRUCTOR/DESTRUCTOR TEST ***\n" ); + + cdtest(); + + printf( "*** END OF CONSTRUCTOR/DESTRUCTOR TEST ***\n\n\n" ); + + exit(0); +} diff --git a/c/src/tests/samples/cdtest/system.h b/c/src/tests/samples/cdtest/system.h new file mode 100644 index 0000000000..88e60beb9a --- /dev/null +++ b/c/src/tests/samples/cdtest/system.h @@ -0,0 +1,30 @@ +/* system.h + * + * This include file contains information that is included in every + * function in the test set. + * + * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. + * On-Line Applications Research Corporation (OAR). + * All rights assigned to U.S. Government, 1994. + * + * This material may be reproduced by or for the U.S. Government pursuant + * to the copyright license under the clause at DFARS 252.227-7013. This + * notice must appear in all copies of this file and its derivatives. + * + * $Id$ + */ + +#include <rtems.h> +#include "stdio.h" + +/* Miscellaneous */ + +#define EXTERN extern /* external definition */ + +/* macros */ + +/* structures */ + +#include "gvar.h" + +/* end of include file */ |