]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/coremods/core_channel/invite.h
Update copyright headers.
[user/henk/code/inspircd.git] / src / coremods / core_channel / invite.h
index 2a99ec2df805c1bb566263bcfa00620ba1131594..291be947b47f3be5fed2a5785f6bd4d7e71f806e 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * InspIRCd -- Internet Relay Chat Daemon
  *
+ *   Copyright (C) 2018-2019 Sadie Powell <sadie@witchery.services>
  *   Copyright (C) 2015 Attila Molnar <attilamolnar@hush.com>
  *
  * This file is part of InspIRCd.  InspIRCd is free software: you can
@@ -45,6 +46,21 @@ extern void UnserializeInvite(LocalUser* user, const std::string& value);
 template<typename T, ExtensionItem::ExtensibleType ExtType>
 class Invite::ExtItem : public ExtensionItem
 {
+ private:
+       static std::string ToString(void* item, bool human)
+       {
+               std::string ret;
+               Store<T>* store = static_cast<Store<T>*>(item);
+               for (typename insp::intrusive_list<Invite, T>::iterator i = store->invites.begin(); i != store->invites.end(); ++i)
+               {
+                       Invite* inv = *i;
+                       inv->Serialize(human, (ExtType == ExtensionItem::EXT_USER), ret);
+               }
+               if (!ret.empty())
+                       ret.erase(ret.length()-1);
+               return ret;
+       }
+
  public:
        ExtItem(Module* owner, const char* extname)
                : ExtensionItem(extname, ExtType, owner)
@@ -66,10 +82,10 @@ class Invite::ExtItem : public ExtensionItem
        {
                void* store = unset_raw(ext);
                if (store)
-                       free(store);
+                       free(ext, store);
        }
 
-       void free(void* item) CXX11_OVERRIDE
+       void free(Extensible* container, void* item) CXX11_OVERRIDE
        {
                Store<T>* store = static_cast<Store<T>*>(item);
                for (typename Store<T>::List::iterator i = store->invites.begin(); i != store->invites.end(); )
@@ -83,26 +99,19 @@ class Invite::ExtItem : public ExtensionItem
                delete store;
        }
 
-       std::string serialize(SerializeFormat format, const Extensible* container, void* item) const CXX11_OVERRIDE
+       std::string ToHuman(const Extensible* container, void* item) const CXX11_OVERRIDE
        {
-               if (format == FORMAT_NETWORK)
-                       return std::string();
+               return ToString(item, true);
+       }
 
-               std::string ret;
-               Store<T>* store = static_cast<Store<T>*>(item);
-               for (typename insp::intrusive_list<Invite, T>::iterator i = store->invites.begin(); i != store->invites.end(); ++i)
-               {
-                       Invite* inv = *i;
-                       inv->Serialize(format, (ExtType == ExtensionItem::EXT_USER), ret);
-               }
-               if (!ret.empty())
-                       ret.erase(ret.length()-1);
-               return ret;
+       std::string ToInternal(const Extensible* container, void* item) const CXX11_OVERRIDE
+       {
+               return ToString(item, false);
        }
 
-       void unserialize(SerializeFormat format, Extensible* container, const std::string& value) CXX11_OVERRIDE
+       void FromInternal(Extensible* container, const std::string& value) CXX11_OVERRIDE
        {
-               if ((ExtType != ExtensionItem::EXT_CHANNEL) && (format != FORMAT_NETWORK))
+               if (ExtType != ExtensionItem::EXT_CHANNEL)
                        UnserializeInvite(static_cast<LocalUser*>(container), value);
        }
 };