X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fextensible.h;h=1a51fdaafe54d62fa5dbb59d9921519bd8d5124c;hb=489ba0ad54bf6bdd80d5f539f67f03241ddfe77b;hp=b98bb921fd98a2bec8c854bce4e9a3c4fc7b1717;hpb=dd5e75f99e37fc8e407da6fc003fcfa56b802752;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/extensible.h b/include/extensible.h index b98bb921f..1a51fdaaf 100644 --- a/include/extensible.h +++ b/include/extensible.h @@ -69,6 +69,10 @@ class CoreExport ExtensionItem : public ServiceProvider, public usecountbase /** Free the item */ virtual void free(void* item) = 0; + /** Register this object in the ExtensionManager + */ + void RegisterService() CXX11_OVERRIDE; + protected: /** Get the item from the internal map */ void* get_raw(const Extensible* container) const; @@ -128,6 +132,11 @@ class CoreExport ExtensionManager 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; }; @@ -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); }