Add i64 support for Bundle

This commit is contained in:
Ken Van Hoeylandt 2025-10-24 12:14:45 +02:00
parent 2e5f6cc0e8
commit 7e308a5ccc
2 changed files with 33 additions and 0 deletions

View File

@ -20,6 +20,7 @@ class Bundle final {
enum class Type { enum class Type {
Bool, Bool,
Int32, Int32,
Int64,
String, String,
}; };
@ -28,6 +29,7 @@ class Bundle final {
union { union {
bool value_bool; bool value_bool;
int32_t value_int32; int32_t value_int32;
int64_t value_int64;
}; };
std::string value_string; std::string value_string;
} Value; } Value;
@ -44,18 +46,22 @@ public:
bool getBool(const std::string& key) const; bool getBool(const std::string& key) const;
int32_t getInt32(const std::string& key) const; int32_t getInt32(const std::string& key) const;
int64_t getInt64(const std::string& key) const;
std::string getString(const std::string& key) const; std::string getString(const std::string& key) const;
bool hasBool(const std::string& key) const; bool hasBool(const std::string& key) const;
bool hasInt32(const std::string& key) const; bool hasInt32(const std::string& key) const;
bool hasInt64(const std::string& key) const;
bool hasString(const std::string& key) const; bool hasString(const std::string& key) const;
bool optBool(const std::string& key, bool& out) const; bool optBool(const std::string& key, bool& out) const;
bool optInt32(const std::string& key, int32_t& out) const; bool optInt32(const std::string& key, int32_t& out) const;
bool optInt64(const std::string& key, int64_t& out) const;
bool optString(const std::string& key, std::string& out) const; bool optString(const std::string& key, std::string& out) const;
void putBool(const std::string& key, bool value); void putBool(const std::string& key, bool value);
void putInt32(const std::string& key, int32_t value); void putInt32(const std::string& key, int32_t value);
void putInt64(const std::string& key, int64_t value);
void putString(const std::string& key, const std::string& value); void putString(const std::string& key, const std::string& value);
}; };

View File

@ -10,6 +10,10 @@ int32_t Bundle::getInt32(const std::string& key) const {
return this->entries.find(key)->second.value_int32; return this->entries.find(key)->second.value_int32;
} }
int64_t Bundle::getInt64(const std::string& key) const {
return this->entries.find(key)->second.value_int64;
}
std::string Bundle::getString(const std::string& key) const { std::string Bundle::getString(const std::string& key) const {
return this->entries.find(key)->second.value_string; return this->entries.find(key)->second.value_string;
} }
@ -24,6 +28,11 @@ bool Bundle::hasInt32(const std::string& key) const {
return entry != std::end(this->entries) && entry->second.type == Type::Int32; return entry != std::end(this->entries) && entry->second.type == Type::Int32;
} }
bool Bundle::hasInt64(const std::string& key) const {
auto entry = this->entries.find(key);
return entry != std::end(this->entries) && entry->second.type == Type::Int64;
}
bool Bundle::hasString(const std::string& key) const { bool Bundle::hasString(const std::string& key) const {
auto entry = this->entries.find(key); auto entry = this->entries.find(key);
return entry != std::end(this->entries) && entry->second.type == Type::String; return entry != std::end(this->entries) && entry->second.type == Type::String;
@ -49,6 +58,16 @@ bool Bundle::optInt32(const std::string& key, int32_t& out) const {
} }
} }
bool Bundle::optInt64(const std::string& key, int64_t& out) const {
auto entry = this->entries.find(key);
if (entry != std::end(this->entries) && entry->second.type == Type::Int64) {
out = entry->second.value_int32;
return true;
} else {
return false;
}
}
bool Bundle::optString(const std::string& key, std::string& out) const { bool Bundle::optString(const std::string& key, std::string& out) const {
auto entry = this->entries.find(key); auto entry = this->entries.find(key);
if (entry != std::end(this->entries) && entry->second.type == Type::String) { if (entry != std::end(this->entries) && entry->second.type == Type::String) {
@ -75,6 +94,14 @@ void Bundle::putInt32(const std::string& key, int32_t value) {
}; };
} }
void Bundle::putInt64(const std::string& key, int64_t value) {
this->entries[key] = {
.type = Type::Int64,
.value_int64 = value,
.value_string = ""
};
}
void Bundle::putString(const std::string& key, const std::string& value) { void Bundle::putString(const std::string& key, const std::string& value) {
this->entries[key] = { this->entries[key] = {
.type = Type::String, .type = Type::String,