Skip to content
Snippets Groups Projects
Commit c049e96b authored by t.knopff's avatar t.knopff
Browse files

Add templated add function to ItemCatalog for types which implement the Item::M_TYPE protocol

parent f125d8aa
No related branches found
No related tags found
1 merge request!69Refactor model: IntensityDataItem
Pipeline #36650 passed
......@@ -80,8 +80,8 @@ ItemCatalog::ItemCatalog()
add("GISASInstrument", create_new<GISASInstrumentItem>);
add("OffSpecularInstrument", create_new<OffSpecularInstrumentItem>);
add("SpecularInstrument", create_new<SpecularInstrumentItem>);
add(GISASBeamItem::M_TYPE, create_new<GISASBeamItem>);
add(SpecularBeamItem::M_TYPE, create_new<SpecularBeamItem>);
addItem<GISASBeamItem>();
addItem<SpecularBeamItem>();
add("NoBackground", create_new<BackgroundNoneItem>);
add("ConstantBackground", create_new<ConstantBackgroundItem>);
add("PoissonNoiseBackground", create_new<PoissonNoiseBackgroundItem>);
......@@ -165,16 +165,16 @@ ItemCatalog::ItemCatalog()
add("SquareLattice2D", create_new<SquareLattice2DItem>);
add("HexagonalLattice2D", create_new<HexagonalLattice2DItem>);
add(MaterialItem::M_TYPE, create_new<MaterialItem>);
add(MaterialItemContainer::M_TYPE, create_new<MaterialItemContainer>);
addItem<MaterialItem>();
addItem<MaterialItemContainer>();
add(MaterialRefractiveDataItem::M_TYPE, create_new<MaterialRefractiveDataItem>);
add(MaterialSLDDataItem::M_TYPE, create_new<MaterialSLDDataItem>);
addItem<MaterialRefractiveDataItem>();
addItem<MaterialSLDDataItem>();
add("JobItem", create_new<JobItem>);
add(IntensityDataItem::M_TYPE, create_new<IntensityDataItem>);
add(SpecularDataItem::M_TYPE, create_new<SpecularDataItem>);
addItem<IntensityDataItem>();
addItem<SpecularDataItem>();
add("Data1DViewItem", create_new<Data1DViewItem>);
add("DataPropertyContainer", create_new<DataPropertyContainer>);
add("DataItem1DProperties", create_new<Data1DProperties>);
......@@ -269,3 +269,9 @@ void ItemCatalog::add(const QString& modelType, std::function<SessionItem*()> f)
{
m_data.registerItem(modelType, f);
}
template<typename T>
void ItemCatalog::addItem()
{
m_data.registerItem(T::M_TYPE, create_new<T>);
}
......@@ -34,6 +34,8 @@ public:
private:
void add(const QString& modelType, std::function<SessionItem*()> f);
template <typename T> void addItem();
IFactory<QString, SessionItem> m_data;
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment