| 98 | }; |
| 99 | |
| 100 | RawViewNodeId populateRenderRequest(RenderRequest& request, RenderState& state, const Element& element) { |
| 101 | auto elementId = ++state.elementId; |
| 102 | auto* createElement = request.appendCreateElement(); |
| 103 | createElement->setElementId(elementId); |
| 104 | createElement->setViewClassName(element.name); |
| 105 | |
| 106 | for (const auto& attribute : element.attributes) { |
| 107 | auto* setAttribute = request.appendSetElementAttribute(); |
| 108 | setAttribute->setElementId(elementId); |
| 109 | setAttribute->setAttributeId(state.attributeIds.getIdForName(attribute.first)); |
| 110 | setAttribute->setAttributeValue(attribute.second); |
| 111 | } |
| 112 | |
| 113 | std::vector<RawViewNodeId> childrenIds; |
| 114 | |
| 115 | for (const auto& child : element.children) { |
| 116 | auto childId = populateRenderRequest(request, state, child); |
| 117 | childrenIds.emplace_back(childId); |
| 118 | } |
| 119 | |
| 120 | size_t i = 0; |
| 121 | for (const auto& childId : childrenIds) { |
| 122 | auto* moveElementToParent = request.appendMoveElementToParent(); |
| 123 | |
| 124 | moveElementToParent->setParentElementId(elementId); |
| 125 | moveElementToParent->setElementId(childId); |
| 126 | moveElementToParent->setParentIndex(i); |
| 127 | i++; |
| 128 | } |
| 129 | |
| 130 | if (elementId == 1) { |
| 131 | request.appendSetRootElement()->setElementId(elementId); |
| 132 | } |
| 133 | |
| 134 | return elementId; |
| 135 | } |
| 136 | |
| 137 | static Element createElementTree() { |
| 138 | auto header = |
no test coverage detected