]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/extensible.h
Merge branch 'master+serviceinit'
[user/henk/code/inspircd.git] / include / extensible.h
index 3453f3e15259195547978609282fc83262f031b4..1a51fdaafe54d62fa5dbb59d9921519bd8d5124c 100644 (file)
@@ -125,11 +125,20 @@ class CoreExport Extensible : public classbase
 
 class CoreExport ExtensionManager
 {
-       std::map<std::string, reference<ExtensionItem> > types;
  public:
+       typedef std::map<std::string, reference<ExtensionItem> > ExtMap;
+
        bool Register(ExtensionItem* item);
        void BeginUnregister(Module* module, std::vector<reference<ExtensionItem> >& 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<std::string>
        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); }