7#include <Atlas/Message/MEncoder.h>
9#include <Atlas/Message/Element.h>
11namespace Atlas {
namespace Message {
19void Encoder::listElementItem(
const Element& obj)
21 switch (obj.getType()) {
22 case Element::TYPE_INT: m_b.listIntItem(obj.Int());
break;
23 case Element::TYPE_FLOAT: m_b.listFloatItem(obj.Float());
break;
24 case Element::TYPE_STRING: m_b.listStringItem(obj.String());
break;
25 case Element::TYPE_MAP: {
27 for (
auto& entry: obj.Map()) {
28 mapElementItem(entry.first, entry.second);
33 case Element::TYPE_LIST: {
35 for (
auto& element: obj.List()) {
36 listElementItem(element);
41 case Element::TYPE_NONE:
48void Encoder::listElementMapItem(
const MapType& obj)
51 for (
auto& entry: obj) {
52 mapElementItem(entry.first, entry.second);
57void Encoder::listElementListItem(
const ListType& obj)
60 for (
auto& element: obj) {
61 listElementItem(element);
66void Encoder::mapElementItem(
const std::string& name,
const Element& obj)
68 switch (obj.getType()) {
69 case Element::TYPE_INT: m_b.mapIntItem(name, obj.Int());
break;
70 case Element::TYPE_FLOAT: m_b.mapFloatItem(name, obj.Float());
break;
71 case Element::TYPE_STRING: m_b.mapStringItem(name, obj.String());
break;
72 case Element::TYPE_MAP: {
74 for (
auto& entry: obj.Map()) {
75 mapElementItem(entry.first, entry.second);
80 case Element::TYPE_LIST: {
81 m_b.mapListItem(name);
82 for (
auto& element: obj.List()) {
83 listElementItem(element);
88 case Element::TYPE_NONE:
89 m_b.mapNoneItem(name);
96void Encoder::mapElementMapItem(
const std::string& name,
const MapType& obj)
99 for (
auto& entry: obj) {
100 mapElementItem(entry.first, entry.second);
105void Encoder::mapElementListItem(
const std::string& name,
const ListType& obj)
107 m_b.mapListItem(name);
108 for (
auto& element: obj) {
109 listElementItem(element);
114void Encoder::streamMessageElement(
const MapType& obj)
117 for (
auto& entry: obj) {
118 mapElementItem(entry.first, entry.second);