X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fextensible.h;h=1a51fdaafe54d62fa5dbb59d9921519bd8d5124c;hb=489ba0ad54bf6bdd80d5f539f67f03241ddfe77b;hp=3453f3e15259195547978609282fc83262f031b4;hpb=f3667d995e439a1d75fd9b56b29b610f3d877d8b;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/extensible.h b/include/extensible.h index 3453f3e15..1a51fdaaf 100644 --- a/include/extensible.h +++ b/include/extensible.h @@ -125,11 +125,20 @@ class CoreExport Extensible : public classbase class CoreExport ExtensionManager { - std::map > types; public: + typedef std::map > ExtMap; + bool Register(ExtensionItem* item); void BeginUnregister(Module* module, std::vector >& list); ExtensionItem* GetItem(const std::string& name); + + /** Get all registered extensions keyed by their names + * @return Const map of ExtensionItem pointers keyed by their names + */ + const ExtMap& GetExts() const { return types; } + + private: + ExtMap types; }; /** Base class for items that are NOT synchronized between servers */ @@ -196,6 +205,7 @@ class CoreExport LocalStringExt : public SimpleExtItem LocalStringExt(const std::string& key, ExtensibleType exttype, Module* owner); virtual ~LocalStringExt(); std::string serialize(SerializeFormat format, const Extensible* container, void* item) const; + void unserialize(SerializeFormat format, Extensible* container, const std::string& value); }; class CoreExport LocalIntExt : public LocalExtItem @@ -204,6 +214,7 @@ class CoreExport LocalIntExt : public LocalExtItem LocalIntExt(const std::string& key, ExtensibleType exttype, Module* owner); virtual ~LocalIntExt(); std::string serialize(SerializeFormat format, const Extensible* container, void* item) const; + void unserialize(SerializeFormat format, Extensible* container, const std::string& value); intptr_t get(const Extensible* container) const; intptr_t set(Extensible* container, intptr_t value); void unset(Extensible* container) { set(container, 0); }