| 195 | } |
| 196 | |
| 197 | void 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 | |
| 242 | void ParseCache::restoreDesignElements( |
| 243 | FileContent* fC, SymbolTable& targetSymbols, |