From 39b49599e59f550b7acddb98a86f69e95d7ad877 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Tue, 8 May 2018 00:44:23 -0700 Subject: [PATCH] ircd::m::user: Add mitsein::count() interface. --- include/ircd/m/user.h | 3 +++ ircd/m/m.cc | 27 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/include/ircd/m/user.h b/include/ircd/m/user.h index 0e7dd0266..47096f0f5 100644 --- a/include/ircd/m/user.h +++ b/include/ircd/m/user.h @@ -141,6 +141,9 @@ struct ircd::m::user::mitsein void for_each(const closure_bool &) const; void for_each(const closure &) const; + size_t count(const m::user &, const string_view &membership = {}) const; + size_t count(const string_view &membership = {}) const; + mitsein(const m::user &user); }; diff --git a/ircd/m/m.cc b/ircd/m/m.cc index fc916a930..aa42868c1 100644 --- a/ircd/m/m.cc +++ b/ircd/m/m.cc @@ -2049,6 +2049,33 @@ ircd::m::user::mitsein::mitsein(const m::user &user) { } +size_t +ircd::m::user::mitsein::count(const string_view &membership) +const +{ + size_t ret{0}; + for_each(membership, [&ret](const m::user &) + { + ++ret; + }); + + return ret; +} + +size_t +ircd::m::user::mitsein::count(const m::user &user, + const string_view &membership) +const +{ + size_t ret{0}; + for_each(user, membership, [&ret](const m::room &, const string_view &) + { + ++ret; + }); + + return ret; +} + void ircd::m::user::mitsein::for_each(const closure &closure) const