diff options
Diffstat (limited to 'discord/snowflake.cpp')
-rw-r--r-- | discord/snowflake.cpp | 31 |
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); +} |