MCPcopy Create free account
hub / github.com/chipsalliance/Surelog / cacheDesignElements

Method cacheDesignElements

src/Cache/ParseCache.cpp:197–240  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

195}
196
197void ParseCache::cacheDesignElements(::ParseCache::Builder builder,
198 const FileContent* fC,
199 SymbolTable& targetSymbols,
200 const SymbolTable& sourceSymbols) {
201 FileSystem* const fileSystem = FileSystem::getInstance();
202 const std::vector<DesignElement*>& sourceDesignElements =
203 fC->getDesignElements();
204 ::capnp::List<::DesignElement, ::capnp::Kind::STRUCT>::Builder
205 targetDesignElements = builder.initElements(sourceDesignElements.size());
206
207 for (size_t i = 0, ni = sourceDesignElements.size(); i < ni; ++i) {
208 const DesignElement* sourceDesignElement = sourceDesignElements[i];
209 const TimeInfo& sourceTimeInfo = sourceDesignElement->m_timeInfo;
210
211 ::DesignElement::Builder targetDesignElement = targetDesignElements[i];
212 ::TimeInfo::Builder targetTimeInfo = targetDesignElement.initTimeInfo();
213
214 targetTimeInfo.setType(static_cast<uint16_t>(sourceTimeInfo.m_type));
215 targetTimeInfo.setFileId(
216 (RawPathId)fileSystem->copy(sourceTimeInfo.m_fileId, &targetSymbols));
217 targetTimeInfo.setLine(sourceTimeInfo.m_line);
218 targetTimeInfo.setTimeUnit(
219 static_cast<uint16_t>(sourceTimeInfo.m_timeUnit));
220 targetTimeInfo.setTimeUnitValue(sourceTimeInfo.m_timeUnitValue);
221 targetTimeInfo.setTimePrecision(
222 static_cast<uint16_t>(sourceTimeInfo.m_timePrecision));
223 targetTimeInfo.setTimePrecisionValue(sourceTimeInfo.m_timePrecisionValue);
224
225 targetDesignElement.setName((RawSymbolId)targetSymbols.copyFrom(
226 sourceDesignElement->m_name, &sourceSymbols));
227 targetDesignElement.setFileId((RawPathId)fileSystem->copy(
228 sourceDesignElement->m_fileId, &targetSymbols));
229 targetDesignElement.setType(sourceDesignElement->m_type);
230 targetDesignElement.setUniqueId((RawNodeId)sourceDesignElement->m_uniqueId);
231 targetDesignElement.setLine(sourceDesignElement->m_line);
232 targetDesignElement.setColumn(sourceDesignElement->m_column);
233 targetDesignElement.setEndLine(sourceDesignElement->m_endLine);
234 targetDesignElement.setEndColumn(sourceDesignElement->m_endColumn);
235 targetDesignElement.setParent((RawNodeId)sourceDesignElement->m_parent);
236 targetDesignElement.setNode((RawNodeId)sourceDesignElement->m_node);
237 targetDesignElement.setDefaultNetType(
238 static_cast<uint32_t>(sourceDesignElement->m_defaultNetType));
239 }
240}
241
242void ParseCache::restoreDesignElements(
243 FileContent* fC, SymbolTable& targetSymbols,

Callers

nothing calls this directly

Calls 3

setTypeMethod · 0.80
copyMethod · 0.80
setParentMethod · 0.45

Tested by

no test coverage detected