diff options
| author | 2019-08-13 18:59:24 +0100 | |
|---|---|---|
| committer | 2019-08-13 19:08:17 +0100 | |
| commit | eeb6dcec601271badd27ad1c0558764ca5789d64 (patch) | |
| tree | e5cde71a4cf061076a217a67d48b59830e84c223 /src/extensible.cpp | |
| parent | Rewrite and merge LocalStringExt, StringExtItem. (diff) | |
Replace LocalIntExt with IntExtItem.
Diffstat (limited to 'src/extensible.cpp')
| -rw-r--r-- | src/extensible.cpp | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/extensible.cpp b/src/extensible.cpp index 7cf0006f4..2b657e1a3 100644 --- a/src/extensible.cpp +++ b/src/extensible.cpp @@ -19,6 +19,55 @@ #include "inspircd.h" +IntExtItem::IntExtItem(Module* owner, const std::string& key, ExtensibleType exttype, bool sync) + : ExtensionItem(owner, key, exttype) + , synced(sync) +{ +} + +void IntExtItem::Delete(Extensible* container, void* item) +{ + // Intentionally left blank. +} + +void IntExtItem::FromInternal(Extensible* container, const std::string& value) +{ + set(container, ConvToNum<intptr_t>(value)); +} + +void IntExtItem::FromNetwork(Extensible* container, const std::string& value) +{ + if (synced) + FromInternal(container, value); +} + +intptr_t IntExtItem::get(const Extensible* container) const +{ + return reinterpret_cast<intptr_t>(get_raw(container)); +} + +void IntExtItem::set(Extensible* container, intptr_t value) +{ + if (value) + set_raw(container, reinterpret_cast<void*>(value)); + else + unset_raw(container); +} + +std::string IntExtItem::ToInternal(const Extensible* container, void* item) const +{ + return ConvToStr(reinterpret_cast<intptr_t>(item)); +} + +std::string IntExtItem::ToNetwork(const Extensible* container, void* item) const +{ + return synced ? ToInternal(container, item) : std::string(); +} + +void IntExtItem::unset(Extensible* container) +{ + unset_raw(container); +} StringExtItem::StringExtItem(Module* owner, const std::string& key, ExtensibleType exttype, bool sync) : SimpleExtItem(owner, key, exttype) |
