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)};
}
Beispiel #2
0
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));
}