diff options
author | Andreas Kling <awesomekling@gmail.com> | 2019-07-25 19:49:28 +0200 |
---|---|---|
committer | Andreas Kling <awesomekling@gmail.com> | 2019-07-25 19:49:28 +0200 |
commit | a599317624fb8428eb64cf719affcdd075f5c9d5 (patch) | |
tree | 7669ffd4a1acab1b0caf003443ed470de6fe34ea /Libraries/LibCore/CObject.h | |
parent | d21a4f7518ced2b49e20b3b2521c80b0afec216d (diff) | |
download | serenity-a599317624fb8428eb64cf719affcdd075f5c9d5.zip |
LibCore: Introduce a C_OBJECT macro.
This macro goes at the top of every CObject-derived class like so:
class SomeClass : public CObject {
C_OBJECT(SomeClass)
public:
...
At the moment, all it does is create an override for the class_name() getter
but in the future this will be used to automatically insert member functions
into these classes.
Diffstat (limited to 'Libraries/LibCore/CObject.h')
-rw-r--r-- | Libraries/LibCore/CObject.h | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/Libraries/LibCore/CObject.h b/Libraries/LibCore/CObject.h index d0df0530be..247198c904 100644 --- a/Libraries/LibCore/CObject.h +++ b/Libraries/LibCore/CObject.h @@ -11,13 +11,16 @@ class CChildEvent; class CCustomEvent; class CTimerEvent; +#define C_OBJECT(klass) \ +public: \ + virtual const char* class_name() const override { return #klass; } + class CObject : public Weakable<CObject> { + // NOTE: No C_OBJECT macro for CObject itself. public: - CObject(CObject* parent = nullptr, bool is_widget = false); virtual ~CObject(); - virtual const char* class_name() const { return "CObject"; } - + virtual const char* class_name() const = 0; virtual void event(CEvent&); const String& name() const { return m_name; } @@ -58,6 +61,8 @@ public: virtual bool is_window() const { return false; } protected: + CObject(CObject* parent = nullptr, bool is_widget = false); + virtual void timer_event(CTimerEvent&); virtual void child_event(CChildEvent&); virtual void custom_event(CCustomEvent&); |