std::pair<std::unique_ptr<ComponentInfo>, std::unique_ptr<DetectorInfo>> InstrumentVisitor::makeWrappers() const { auto compInfo = componentInfo(); auto detInfo = detectorInfo(); // Cross link Component and Detector info objects compInfo->setDetectorInfo(detInfo.get()); auto compInfoWrapper = Kernel::make_unique<ComponentInfo>( std::move(compInfo), componentIds(), componentIdToIndexMap(), m_shapes); auto detInfoWrapper = Kernel::make_unique<DetectorInfo>( std::move(detInfo), m_instrument, detectorIds(), detectorIdToIndexMap()); return {std::move(compInfoWrapper), std::move(detInfoWrapper)}; }
TypesDB::TypesDB() : m_typesMap() , m_creators() , m_childrenMap() , m_editorsMap() , m_typeDescriptions(new ConfigurationManager()) , m_typeDescriptors() { // Registering Component. This is needed because it is the root of the class hierarchy const QString name = "Component"; std::unique_ptr<const RegisteredTypeInfo> componentInfo(new RegisteredTypeInfo(name, QStringList(), false, false, Component::configuresInConstructor())); m_typesMap.insert(name, componentInfo.get()); componentInfo.release(); m_childrenMap[name] = QStringList(); Component::describe(editableTypeDescriptor(name)); }