LibCore: Move CObject serialization into CObject::save_to(JsonObject&)

The idea is for subclasses to override this and add whatever properties
are relevant for them, then call up to their base class, etc.
This commit is contained in:
Andreas Kling 2019-08-18 20:36:37 +02:00
parent a32123f221
commit c2213449c0
Notes: sideshowbarker 2024-07-19 12:35:57 +09:00
3 changed files with 16 additions and 4 deletions

View file

@ -61,10 +61,7 @@ CEventLoop::CEventLoop()
JsonArray objects;
for (auto& object : CObject::all_objects()) {
JsonObject json_object;
json_object.set("class_name", object.class_name());
json_object.set("address", String::format("%p", &object));
json_object.set("name", object.name());
json_object.set("parent", String::format("%p", object.parent()));
object.save_to(json_object);
objects.append(move(json_object));
}
client->write(objects.to_string());

View file

@ -1,4 +1,5 @@
#include <AK/Assertions.h>
#include <AK/JsonObject.h>
#include <AK/kstdio.h>
#include <LibCore/CEvent.h>
#include <LibCore/CEventLoop.h>
@ -125,3 +126,11 @@ void CObject::deferred_invoke(Function<void(CObject&)> invokee)
{
CEventLoop::current().post_event(*this, make<CDeferredInvocationEvent>(move(invokee)));
}
void CObject::save_to(JsonObject& json)
{
json.set("class_name", class_name());
json.set("address", String::format("%p", this));
json.set("name", name());
json.set("parent", String::format("%p", parent()));
}

View file

@ -7,6 +7,10 @@
#include <AK/Vector.h>
#include <AK/Weakable.h>
namespace AK {
class JsonObject;
}
class CEvent;
class CChildEvent;
class CCustomEvent;
@ -63,6 +67,8 @@ public:
bool is_widget() const { return m_widget; }
virtual bool is_window() const { return false; }
virtual void save_to(AK::JsonObject&);
static IntrusiveList<CObject, &CObject::m_all_objects_list_node>& all_objects();
protected: