ready for surrender
This commit is contained in:
@@ -41,6 +41,7 @@
|
||||
|
||||
// prototypes
|
||||
// *********************************************
|
||||
// abstract class test -----------------------
|
||||
struct A_test
|
||||
{
|
||||
virtual ~A_test(){};
|
||||
@@ -48,6 +49,7 @@ struct A_test
|
||||
std::string type;
|
||||
virtual void func() = 0;
|
||||
};
|
||||
// mystruct ----------------------------------
|
||||
struct mystruct {
|
||||
public:
|
||||
mystruct(int data = 0);
|
||||
@@ -57,6 +59,7 @@ private:
|
||||
int * _val;
|
||||
};
|
||||
std::ostream & operator<<(std::ostream & o, mystruct const * rhs);
|
||||
// functions ---------------------------------
|
||||
void add_to_list(std::string title, std::string type, A_test* test);
|
||||
void delete_structs();
|
||||
|
||||
@@ -70,17 +73,19 @@ extern std::vector< mystruct* > mem_list;
|
||||
// adding each test to the list
|
||||
// ***************************
|
||||
#define TEST(f_name) TEST_V(f_name)
|
||||
|
||||
/*
|
||||
add_to_list(#f_name, "char", new(s_ ## f_name <char>));\
|
||||
add_to_list(#f_name, "std::string", new(s_ ## f_name <std::string>));\
|
||||
add_to_list(#f_name, "mystruct*", new(s_ ## f_name <mystruct*>));\
|
||||
*/
|
||||
|
||||
#define TEST_V(f_name) \
|
||||
template <class T> struct s_ ## f_name : public A_test\
|
||||
{ void func(); };\
|
||||
void f_name () {\
|
||||
add_to_list("", "", NULL);\
|
||||
add_to_list(#f_name, "int", new(s_ ## f_name <int>));\
|
||||
add_to_list(#f_name, "char", new(s_ ## f_name <char>));\
|
||||
add_to_list(#f_name, "std::string", new(s_ ## f_name <std::string>));\
|
||||
add_to_list(#f_name, "mystruct*", new(s_ ## f_name <mystruct*>));\
|
||||
}\
|
||||
template <class T>\
|
||||
void s_ ## f_name <T>::func()
|
||||
@@ -93,16 +98,15 @@ extern std::vector< mystruct* > mem_list;
|
||||
add_to_list(#f_name, "char, int", new(s_ ## f_name <char, int>));\
|
||||
add_to_list(#f_name, "char, char", new(s_ ## f_name <char, char>));\
|
||||
add_to_list(#f_name, "char, std::string", new(s_ ## f_name <char, std::string>));\
|
||||
add_to_list(#f_name, "char, mystruct*", new(s_ ## f_name <char, mystruct*>));\
|
||||
add_to_list(#f_name, "int, int", new(s_ ## f_name <int, int>));\
|
||||
add_to_list(#f_name, "int, char", new(s_ ## f_name <int, char>));\
|
||||
add_to_list(#f_name, "int, std::string", new(s_ ## f_name <int, std::string>));\
|
||||
add_to_list(#f_name, "int, mystruct*", new(s_ ## f_name <int, mystruct*>));\
|
||||
}\
|
||||
template <class T, class U>\
|
||||
void s_ ## f_name <T, U>::func()
|
||||
|
||||
/*
|
||||
add_to_list(#f_name, "char, mystruct*", new(s_ ## f_name <char, mystruct*>));\
|
||||
add_to_list(#f_name, "int, mystruct*", new(s_ ## f_name <int, mystruct*>));\
|
||||
*/
|
||||
|
||||
// templates print
|
||||
|
||||
Reference in New Issue
Block a user