MCPcopy Create free account
hub / github.com/Kistler-Group/sdbus-cpp / createInternalVTable

Method createInternalVTable

src/Object.cpp:176–199  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

174}
175
176Object::VTable Object::createInternalVTable(InterfaceName interfaceName, std::vector<VTableItem> vtable)
177{
178 VTable internalVTable;
179
180 internalVTable.interfaceName = std::move(interfaceName);
181
182 for (auto& vtableItem : vtable)
183 {
184 std::visit( overload{ [&](InterfaceFlagsVTableItem&& interfaceFlags){ writeInterfaceFlagsToVTable(std::move(interfaceFlags), internalVTable); }
185 , [&](MethodVTableItem&& method){ writeMethodRecordToVTable(std::move(method), internalVTable); }
186 , [&](SignalVTableItem&& signal){ writeSignalRecordToVTable(std::move(signal), internalVTable); }
187 , [&](PropertyVTableItem&& property){ writePropertyRecordToVTable(std::move(property), internalVTable); } }
188 , std::move(vtableItem) );
189 }
190
191 // Sort arrays so we can do fast searching for an item in sd-bus callback handlers
192 std::sort(internalVTable.methods.begin(), internalVTable.methods.end(), [](const auto& lhs, const auto& rhs){ return lhs.name < rhs.name; });
193 std::sort(internalVTable.signals.begin(), internalVTable.signals.end(), [](const auto& lhs, const auto& rhs){ return lhs.name < rhs.name; });
194 std::sort(internalVTable.properties.begin(), internalVTable.properties.end(), [](const auto& lhs, const auto& rhs){ return lhs.name < rhs.name; });
195
196 internalVTable.object = this;
197
198 return internalVTable;
199}
200
201void Object::writeInterfaceFlagsToVTable(InterfaceFlagsVTableItem flags, VTable& vtable)
202{

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected