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

Method restoreDesignElements

src/Cache/ParseCache.cpp:242–286  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

240}
241
242void ParseCache::restoreDesignElements(
243 FileContent* fC, SymbolTable& targetSymbols,
244 const ::capnp::List<::DesignElement, ::capnp::Kind::STRUCT>::Reader&
245 sourceDesignElements,
246 const SymbolTable& sourceSymbols) {
247 FileSystem* const fileSystem = FileSystem::getInstance();
248
249 for (const ::DesignElement::Reader& sourceElement : sourceDesignElements) {
250 const std::string_view elemName = sourceSymbols.getSymbol(
251 SymbolId(sourceElement.getName(), UnknownRawPath));
252 DesignElement* targetElement = new DesignElement(
253 targetSymbols.registerSymbol(elemName),
254 fileSystem->toPathId(fileSystem->remap(sourceSymbols.getSymbol(SymbolId(
255 sourceElement.getFileId(), UnknownRawPath))),
256 m_parse->getCompileSourceFile()->getSymbolTable()),
257 static_cast<DesignElement::ElemType>(sourceElement.getType()),
258 NodeId(sourceElement.getUniqueId()), sourceElement.getLine(),
259 sourceElement.getColumn(), sourceElement.getEndLine(),
260 sourceElement.getEndColumn(), NodeId(sourceElement.getParent()));
261 targetElement->m_node = NodeId(sourceElement.getNode());
262 targetElement->m_defaultNetType =
263 static_cast<VObjectType>(sourceElement.getDefaultNetType());
264
265 const ::TimeInfo::Reader& sourceTimeInfo = sourceElement.getTimeInfo();
266 TimeInfo* const targetTimeInfo = &targetElement->m_timeInfo;
267
268 targetTimeInfo->m_type =
269 static_cast<TimeInfo::Type>(sourceTimeInfo.getType());
270 targetTimeInfo->m_fileId =
271 fileSystem->toPathId(fileSystem->remap(sourceSymbols.getSymbol(SymbolId(
272 sourceTimeInfo.getFileId(), UnknownRawPath))),
273 &targetSymbols);
274 targetTimeInfo->m_line = sourceTimeInfo.getLine();
275 targetTimeInfo->m_timeUnit =
276 static_cast<TimeInfo::Unit>(sourceTimeInfo.getTimeUnit());
277 targetTimeInfo->m_timeUnitValue = sourceTimeInfo.getTimeUnitValue();
278 targetTimeInfo->m_timePrecision =
279 static_cast<TimeInfo::Unit>(sourceTimeInfo.getTimePrecision());
280 targetTimeInfo->m_timePrecisionValue =
281 sourceTimeInfo.getTimePrecisionValue();
282 const std::string fullName =
283 StrCat(fC->getLibrary()->getName(), "@", elemName);
284 fC->addDesignElement(fullName, targetElement);
285 }
286}
287
288bool ParseCache::restore(PathId cacheFileId) {
289 if (!cacheFileId) return false;

Callers

nothing calls this directly

Calls 15

StrCatFunction · 0.85
toPathIdMethod · 0.80
remapMethod · 0.80
getDefaultNetTypeMethod · 0.80
NodeIdClass · 0.50
getSymbolMethod · 0.45
getNameMethod · 0.45
registerSymbolMethod · 0.45
getFileIdMethod · 0.45
getSymbolTableMethod · 0.45
getCompileSourceFileMethod · 0.45
getTypeMethod · 0.45

Tested by

no test coverage detected