simplersble 0.11.0-dev26

The all-in-one Bluetooth library that makes it easy to add wireless connectivity to your projects.
Documentation
#include <simpledbus/base/HolderUtils.h>

namespace SimpleDBus {

namespace HolderUtils {

Holder from_byte_array(const kvn::bytearray& value) {
    Holder value_array = Holder::create_array();
    for (size_t i = 0; i < value.size(); i++) {
        value_array.array_append(Holder::create_byte(value[i]));
    }
    return value_array;
}

kvn::bytearray to_byte_array(const Holder& holder) {
    auto value_array = holder.get_array();
    kvn::bytearray _value;
    for (std::size_t i = 0; i < value_array.size(); i++) {
        _value.push_back(value_array[i].get_byte());
    }
    return _value;
}

Holder from_string_array(const std::vector<std::string>& value) {
    Holder holder = Holder::create_array();
    for (auto const& val : value) {
        holder.array_append(Holder::create_string(val));
    }
    return holder;
}

std::vector<std::string> to_string_array(const Holder& holder) {
    std::vector<std::string> result;
    auto array = holder.get_array();
    for (auto& h : array) {
        result.push_back(h.get_string());
    }
    return result;
}

Holder from_dict_uint8_byte_array(const std::map<uint8_t, kvn::bytearray>& value) {
    Holder dict = Holder::create_dict();
    for (auto const& [key, val] : value) {
        dict.dict_append(Holder::BYTE, key, from_byte_array(val));
    }
    return dict;
}

std::map<uint8_t, kvn::bytearray> to_dict_uint8_byte_array(const Holder& holder) {
    std::map<uint8_t, kvn::bytearray> result;
    auto dict = holder.get_dict_uint8();
    for (auto& [key, val_holder] : dict) {
        result[key] = to_byte_array(val_holder);
    }
    return result;
}

Holder from_dict_uint16_byte_array(const std::map<uint16_t, kvn::bytearray>& value) {
    Holder dict = Holder::create_dict();
    for (auto const& [key, val] : value) {
        dict.dict_append(Holder::UINT16, key, from_byte_array(val));
    }
    return dict;
}

std::map<uint16_t, kvn::bytearray> to_dict_uint16_byte_array(const Holder& holder) {
    std::map<uint16_t, kvn::bytearray> result;
    auto dict = holder.get_dict_uint16();
    for (auto& [key, val_holder] : dict) {
        result[key] = to_byte_array(val_holder);
    }
    return result;
}

Holder from_dict_string_byte_array(const std::map<std::string, kvn::bytearray>& value) {
    Holder dict = Holder::create_dict();
    for (auto const& [key, val] : value) {
        dict.dict_append(Holder::STRING, key, from_byte_array(val));
    }
    return dict;
}

std::map<std::string, kvn::bytearray> to_dict_string_byte_array(const Holder& holder) {
    std::map<std::string, kvn::bytearray> result;
    auto dict = holder.get_dict_string();
    for (auto& [key, val_holder] : dict) {
        result[key] = to_byte_array(val_holder);
    }
    return result;
}

}  // namespace HolderUtils

}  // namespace SimpleDBus