summaryrefslogtreecommitdiff
path: root/flower/include/virtual-methods.hh
diff options
context:
space:
mode:
Diffstat (limited to 'flower/include/virtual-methods.hh')
-rw-r--r--flower/include/virtual-methods.hh16
1 files changed, 10 insertions, 6 deletions
diff --git a/flower/include/virtual-methods.hh b/flower/include/virtual-methods.hh
index ea81cbbc99..b8933baa0e 100644
--- a/flower/include/virtual-methods.hh
+++ b/flower/include/virtual-methods.hh
@@ -16,7 +16,8 @@
*/
#define NAME_MEMBERS() \
static char const *static_name();\
-virtual bool is_type_b(const char *)const; \
+static bool static_is_type_b(const char*s);\
+virtual bool is_type_b(const char *s)const { return static_is_type_b(s); } \
virtual char const *name() const{ return static_name(); } \
int a_stupid_nonexistent_function_to_allow_the_semicolon_come_out()
@@ -28,20 +29,23 @@ int a_stupid_nonexistent_function_to_allow_the_semicolon_come_out()
int yet_another_stupid_function_to_allow_semicolon()
#define IMPLEMENT_IS_TYPE_B(D) \
- bool D::is_type_b(const char *s) const \
+ IMPLEMENT_STATIC_NAME(D)\
+ bool D::static_is_type_b(const char *s) \
{ \
return s == static_name(); \
}
#define IMPLEMENT_IS_TYPE_B1(D,B) \
- bool D::is_type_b(const char *s)const \
+ IMPLEMENT_STATIC_NAME(D)\
+ bool D::static_is_type_b(const char *s) \
{ \
- return s == static_name() || B::is_type_b(s); \
+ return s == static_name() || B::static_is_type_b(s); \
}
#define IMPLEMENT_IS_TYPE_B2(D, BA, BB) \
- bool D::is_type_b(const char *s) const \
+ IMPLEMENT_STATIC_NAME(D)\
+ bool D::static_is_type_b(const char *s) \
{ \
- return s == static_name() || BA::is_type_b(s) || BB::is_type_b(s); \
+ return s == static_name() || BA::static_is_type_b(s) || BB::static_is_type_b(s); \
}
#endif