X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fextensible.h;h=07756fb599a419fe3525fb326cfac2ff28d1ec22;hb=6466e3093a4e5e996f2c9f3c4fd9f6eb1ac0e7b9;hp=11d6acbc9359deb9dbfe455fd32f094ee531595d;hpb=b4f82cff9b2efdc05e29bfe9db3f0bbb40d9ce2b;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/extensible.h b/include/extensible.h index 11d6acbc9..07756fb59 100644 --- a/include/extensible.h +++ b/include/extensible.h @@ -19,8 +19,6 @@ #pragma once -#include - enum SerializeFormat { /** Shown to a human (does not need to be unserializable) */ @@ -38,8 +36,8 @@ enum SerializeFormat class CoreExport ExtensionItem : public ServiceProvider, public usecountbase { public: - /** Extensible subclasses - */ + /** Extensible subclasses + */ enum ExtensibleType { EXT_USER, @@ -69,6 +67,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; @@ -201,6 +203,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 @@ -209,6 +212,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); }