mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 22:57:44 +00:00
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.
This commit is contained in:
parent
d21a4f7518
commit
a599317624
56 changed files with 70 additions and 105 deletions
|
@ -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&);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue