]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/modules/cap.h
m_cap Make Capability objects compatible with dynamic_references, add Cap::Reference
[user/henk/code/inspircd.git] / include / modules / cap.h
index 9ff5faca97456aba01d002a2df3c95bebe0ec520..e6f9340e83b0177669d3d398bd1acfd7a32c79e7 100644 (file)
@@ -285,4 +285,32 @@ namespace Cap
                        return NULL;
                }
        };
+
+       /** Reference to a cap. The cap may be provided by another module.
+        */
+       class Reference
+       {
+               dynamic_reference_nocheck<Capability> ref;
+
+        public:
+               /** Constructor, initializes the capability reference
+                * @param mod Module creating this object
+                * @param Name Raw name of the cap as used in the protocol (CAP LS, etc.)
+                */
+               Reference(Module* mod, const std::string& Name)
+                       : ref(mod, "cap/" + Name)
+               {
+               }
+
+               /** 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
+                */
+               bool get(LocalUser* user)
+               {
+                       if (ref)
+                               return ref->get(user);
+                       return false;
+               }
+       };
 }