From 07ed06ebe56acbbd34b12ea0111b8fdcbf82a633 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Tue, 13 Aug 2019 18:06:19 +0100 Subject: Rewrite and merge LocalStringExt, StringExtItem. --- src/extensible.cpp | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/extensible.cpp (limited to 'src/extensible.cpp') diff --git a/src/extensible.cpp b/src/extensible.cpp new file mode 100644 index 000000000..7cf0006f4 --- /dev/null +++ b/src/extensible.cpp @@ -0,0 +1,51 @@ +/* + * InspIRCd -- Internet Relay Chat Daemon + * + * Copyright (C) 2019 Peter Powell + * + * 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 + * License as published by the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#include "inspircd.h" + + +StringExtItem::StringExtItem(Module* owner, const std::string& key, ExtensibleType exttype, bool sync) + : SimpleExtItem(owner, key, exttype) + , synced(sync) +{ +} + +void StringExtItem::FromInternal(Extensible* container, const std::string& value) +{ + if (value.empty()) + unset(container); + else + set(container, value); +} + +void StringExtItem::FromNetwork(Extensible* container, const std::string& value) +{ + if (synced) + FromInternal(container, value); +} + +std::string StringExtItem::ToInternal(const Extensible* container, void* item) const +{ + return item ? *static_cast(item) : std::string(); +} + +std::string StringExtItem::ToNetwork(const Extensible* container, void* item) const +{ + return synced ? ToInternal(container, item) : std::string(); +} -- cgit v1.3.1-10-gc9f91