| 240 | } |
| 241 | |
| 242 | void 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 | |
| 288 | bool ParseCache::restore(PathId cacheFileId) { |
| 289 | if (!cacheFileId) return false; |
nothing calls this directly
no test coverage detected