summaryrefslogtreecommitdiff
path: root/discord/snowflake.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'discord/snowflake.cpp')
-rw-r--r--discord/snowflake.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/discord/snowflake.cpp b/discord/snowflake.cpp
new file mode 100644
index 0000000..1158172
--- /dev/null
+++ b/discord/snowflake.cpp
@@ -0,0 +1,31 @@
+#include "snowflake.hpp"
+
+Snowflake::Snowflake()
+ : m_num(Invalid) {}
+
+Snowflake::Snowflake(const Snowflake &s)
+ : m_num(s.m_num) {}
+
+Snowflake::Snowflake(uint64_t n)
+ : m_num(n) {}
+
+Snowflake::Snowflake(const std::string &str) {
+ if (str.size())
+ m_num = std::stoull(str);
+ else
+ m_num = Invalid;
+};
+
+bool Snowflake::IsValid() const {
+ return m_num != Invalid;
+}
+
+void from_json(const nlohmann::json &j, Snowflake &s) {
+ std::string tmp;
+ j.get_to(tmp);
+ s.m_num = std::stoull(tmp);
+}
+
+void to_json(nlohmann::json &j, const Snowflake &s) {
+ j = std::to_string(s);
+}