X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fmodules%2Fcap.h;h=0bbd745c0ca40a5eb1d3e2c0a2865512d4dccd8b;hb=b0f16081ccaef527ed4b5434a7264508cf455f39;hp=86a60c4459ad0e10f63c56253883eb3e982e009c;hpb=d23c030c9a8fd58807438245a004e4aa5b7288ba;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/modules/cap.h b/include/modules/cap.h index 86a60c445..0bbd745c0 100644 --- a/include/modules/cap.h +++ b/include/modules/cap.h @@ -1,7 +1,8 @@ /* * InspIRCd -- Internet Relay Chat Daemon * - * Copyright (C) 2015 Attila Molnar + * Copyright (C) 2018-2021 Sadie Powell + * Copyright (C) 2015-2016, 2018 Attila Molnar * * This file is part of InspIRCd. InspIRCd is free software: you can * redistribute it and/or modify it under the terms of the GNU General Public @@ -32,8 +33,9 @@ namespace Cap { public: ExtItem(Module* mod); - std::string serialize(SerializeFormat format, const Extensible* container, void* item) const; - void unserialize(SerializeFormat format, Extensible* container, const std::string& value); + void FromInternal(Extensible* container, const std::string& value) CXX11_OVERRIDE; + std::string ToHuman(const Extensible* container, void* item) const CXX11_OVERRIDE; + std::string ToInternal(const Extensible* container, void* item) const CXX11_OVERRIDE; }; class Capability; @@ -302,6 +304,12 @@ namespace Cap { } + /** Retrieves the underlying cap. */ + operator const Cap::Capability*() const + { + return ref ? *ref : NULL; + } + /** Check whether a user has the referenced capability turned on. * @param user User to check * @return True if the user is using the referenced capability, false otherwise @@ -313,4 +321,23 @@ namespace Cap return false; } }; + + class MessageBase : public ClientProtocol::Message + { + public: + MessageBase(const std::string& subcmd) + : ClientProtocol::Message("CAP", ServerInstance->Config->GetServerName()) + { + PushParamPlaceholder(); + PushParam(subcmd); + } + + void SetUser(LocalUser* user) + { + if (user->registered & REG_NICK) + ReplaceParamRef(0, user->nick); + else + ReplaceParam(0, "*"); + } + }; }