#ifndef REMOTING_HOST_LINUX_GVARIANT_DICT_BUILDER_H_
#define REMOTING_HOST_LINUX_GVARIANT_DICT_BUILDER_H_
#include <string_view>
#include <utility>
#include <vector>
#include "remoting/host/linux/gvariant_ref.h"
namespace remoting {
class GVariantDictBuilder {
public:
GVariantDictBuilder();
~GVariantDictBuilder();
template <typename T>
GVariantDictBuilder& Add(std::string_view key, const T& value) {
return AddVariant(key, gvariant::GVariantFrom(gvariant::BoxedRef(value)));
}
GVariantDictBuilder& AddVariant(std::string_view key,
gvariant::GVariantRef<"v"> variant);
gvariant::GVariantRef<"a{sv}"> Build();
private:
std::vector<std::pair<std::string, gvariant::GVariantRef<"v">>> entries_;
};
} // namespace remoting
#endif // REMOTING_HOST_LINUX_GVARIANT_DICT_BUILDER_H_