18 #ifndef _LOG4CXX_HELPERS_OBJECT_H 19 #define _LOG4CXX_HELPERS_OBJECT_H 21 #include <log4cxx/logstring.h> 22 #include <log4cxx/helpers/class.h> 23 #include <log4cxx/helpers/objectptr.h> 24 #include <log4cxx/helpers/classregistration.h> 27 #define DECLARE_ABSTRACT_LOG4CXX_OBJECT(object)\ 29 class Clazz##object : public helpers::Class\ 32 Clazz##object() : helpers::Class() {}\ 33 virtual ~Clazz##object() {}\ 34 virtual log4cxx::LogString getName() const { return LOG4CXX_STR(#object); } \ 36 virtual const helpers::Class& getClass() const;\ 37 static const helpers::Class& getStaticClass(); \ 38 static const log4cxx::helpers::ClassRegistration& registerClass(); 40 #define DECLARE_LOG4CXX_OBJECT(object)\ 42 class Clazz##object : public helpers::Class\ 45 Clazz##object() : helpers::Class() {}\ 46 virtual ~Clazz##object() {}\ 47 virtual log4cxx::LogString getName() const { return LOG4CXX_STR(#object); } \ 48 virtual helpers::ObjectPtr newInstance() const\ 53 virtual const helpers::Class& getClass() const;\ 54 static const helpers::Class& getStaticClass(); \ 55 static const log4cxx::helpers::ClassRegistration& registerClass(); 57 #define DECLARE_LOG4CXX_OBJECT_WITH_CUSTOM_CLASS(object, class)\ 59 virtual const helpers::Class& getClass() const;\ 60 static const helpers::Class& getStaticClass();\ 61 static const log4cxx::helpers::ClassRegistration& registerClass(); 63 #define IMPLEMENT_LOG4CXX_OBJECT(object)\ 64 const ::log4cxx::helpers::Class& object::getClass() const { return getStaticClass(); }\ 65 const ::log4cxx::helpers::Class& object::getStaticClass() { \ 66 static Clazz##object theClass; \ 69 const log4cxx::helpers::ClassRegistration& object::registerClass() { \ 70 static log4cxx::helpers::ClassRegistration classReg(object::getStaticClass); \ 73 namespace log4cxx { namespace classes { \ 74 const ::log4cxx::helpers::ClassRegistration& object##Registration = object::registerClass(); \ 78 #define IMPLEMENT_LOG4CXX_OBJECT_WITH_CUSTOM_CLASS(object, class)\ 79 const log4cxx::helpers::Class& object::getClass() const { return getStaticClass(); }\ 80 const log4cxx::helpers::Class& object::getStaticClass() { \ 81 static class theClass; \ 84 const log4cxx::helpers::ClassRegistration& object::registerClass() { \ 85 static log4cxx::helpers::ClassRegistration classReg(object::getStaticClass); \ 88 namespace log4cxx { namespace classes { \ 89 const log4cxx::helpers::ClassRegistration& object##Registration = object::registerClass(); \ 94 class AppenderSkeleton;
105 DECLARE_ABSTRACT_LOG4CXX_OBJECT(
Object)
107 virtual void addRef()
const = 0;
108 virtual void releaseRef()
const = 0;
109 virtual bool instanceof(
const Class& clazz)
const = 0;
110 virtual const void* cast(
const Class& clazz)
const = 0;
116 #define BEGIN_LOG4CXX_CAST_MAP()\ 117 const void * cast(const helpers::Class& clazz) const\ 119 const void * object = 0;\ 120 if (&clazz == &helpers::Object::getStaticClass()) return (const helpers::Object *)this; 122 #define END_LOG4CXX_CAST_MAP()\ 125 bool instanceof(const helpers::Class& clazz) const\ 126 { return cast(clazz) != 0; } 128 #define LOG4CXX_CAST_ENTRY(Interface)\ 129 if (&clazz == &Interface::getStaticClass()) return (const Interface *)this; 131 #define LOG4CXX_CAST_ENTRY2(Interface, interface2)\ 132 if (&clazz == &Interface::getStaticClass()) return (Interface *)(interface2 *)this; 134 #define LOG4CXX_CAST_ENTRY_CHAIN(Interface)\ 135 object = Interface::cast(clazz);\ 136 if (object != 0) return object; 138 #endif //_LOG4CXX_HELPERS_OBJECT_H base class for java-like objects.
Definition: object.h:102
Definition: appender.h:33