MCPcopy Create free account
hub / github.com/NatLabRockies/OpenStudio / getRecursiveResourceSubTrees

Function getRecursiveResourceSubTrees

src/model/ResourceObject.cpp:127–149  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

125 }
126
127 std::vector<std::vector<ModelObject>> getRecursiveResourceSubTrees(const ModelObject& object, bool includeComponentCostLineItems) {
128 std::set<Handle> resultSet;
129 std::pair<HandleSet::const_iterator, bool> insertResult;
130 std::vector<std::vector<ModelObject>> result;
131
132 std::deque<ModelObject> objectQueue;
133 objectQueue.push_back(object);
134
135 while (!objectQueue.empty()) {
136 ModelObject currentObject(objectQueue[0]);
137 objectQueue.pop_front();
138 for (const ResourceObject& resource : currentObject.resources()) {
139 insertResult = resultSet.insert(resource.handle());
140 if (insertResult.second) {
141 std::vector<ModelObject> subTree = getRecursiveChildren(resource, includeComponentCostLineItems);
142 objectQueue.insert(objectQueue.end(), subTree.begin(), subTree.end());
143 result.push_back(subTree);
144 }
145 }
146 }
147
148 return result;
149 }
150
151} // namespace model
152} // namespace openstudio

Callers 1

cloneMethod · 0.85

Calls 8

getRecursiveChildrenFunction · 0.85
beginMethod · 0.80
push_backMethod · 0.45
emptyMethod · 0.45
resourcesMethod · 0.45
insertMethod · 0.45
handleMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected