Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/core/StarNetElementBasicFields.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
committerKae <80987908+Novaenia@users.noreply.github.com>2023-06-20 14:33:09 +1000
commit6352e8e3196f78388b6c771073f9e03eaa612673 (patch)
treee23772f79a7fbc41bc9108951e9e136857484bf4 /source/core/StarNetElementBasicFields.cpp
parent6741a057e5639280d85d0f88ba26f000baa58f61 (diff)
everything everywhere
all at once
Diffstat (limited to 'source/core/StarNetElementBasicFields.cpp')
-rw-r--r--source/core/StarNetElementBasicFields.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/source/core/StarNetElementBasicFields.cpp b/source/core/StarNetElementBasicFields.cpp
new file mode 100644
index 0000000..bbb5c5b
--- /dev/null
+++ b/source/core/StarNetElementBasicFields.cpp
@@ -0,0 +1,64 @@
+#include "StarNetElementBasicFields.hpp"
+
+namespace Star {
+
+void NetElementSize::readData(DataStream& ds, size_t& v) const {
+ uint64_t s = ds.readVlqU();
+ if (s == 0)
+ v = NPos;
+ else
+ v = s - 1;
+}
+
+void NetElementSize::writeData(DataStream& ds, size_t const& v) const {
+ if (v == NPos)
+ ds.writeVlqU(0);
+ else
+ ds.writeVlqU(v + 1);
+}
+
+void NetElementBool::readData(DataStream& ds, bool& v) const {
+ ds.read(v);
+}
+
+void NetElementBool::writeData(DataStream& ds, bool const& v) const {
+ ds.write(v);
+}
+
+void NetElementEvent::trigger() {
+ set(get() + 1);
+}
+
+uint64_t NetElementEvent::pullOccurrences() {
+ uint64_t occurrences = get();
+ starAssert(occurrences >= m_pulledOccurrences);
+ uint64_t unchecked = occurrences - m_pulledOccurrences;
+ m_pulledOccurrences = occurrences;
+ return unchecked;
+}
+
+bool NetElementEvent::pullOccurred() {
+ return pullOccurrences() != 0;
+}
+
+void NetElementEvent::ignoreOccurrences() {
+ m_pulledOccurrences = get();
+}
+
+void NetElementEvent::setIgnoreOccurrencesOnNetLoad(bool ignoreOccurrencesOnNetLoad) {
+ m_ignoreOccurrencesOnNetLoad = ignoreOccurrencesOnNetLoad;
+}
+
+void NetElementEvent::netLoad(DataStream& ds) {
+ NetElementUInt::netLoad(ds);
+ if (m_ignoreOccurrencesOnNetLoad)
+ ignoreOccurrences();
+}
+
+void NetElementEvent::updated() {
+ NetElementBasicField::updated();
+ if (m_pulledOccurrences > get())
+ m_pulledOccurrences = get();
+}
+
+}