BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ModelView::ViewModelControllerBuilder Class Reference

Builder class for ViewModelController. More...

Collaboration diagram for ModelView::ViewModelControllerBuilder:
[legend]

Classes

struct  Context
 Components necessary to build ViewModelController. More...
 

Public Types

using self = ViewModelControllerBuilder
 

Public Member Functions

 ViewModelControllerBuilder ()
 
 ViewModelControllerBuilder (const ViewModelControllerBuilder &other)=delete
 
 ~ViewModelControllerBuilder ()
 
selfchildrenStrategy (std::unique_ptr< ChildrenStrategyInterface > children_strategy)
 
selfmodel (SessionModel *model)
 
 operator std::unique_ptr< ViewModelController > ()
 
ViewModelControllerBuilderoperator= (const ViewModelControllerBuilder &other)=delete
 
selfrowStrategy (std::unique_ptr< RowStrategyInterface > row_strategy)
 
selfviewModel (ViewModelBase *view_model)
 

Private Attributes

Context context
 

Detailed Description

Builder class for ViewModelController.

Definition at line 31 of file viewmodelcontrollerbuilder.h.

Member Typedef Documentation

◆ self

Constructor & Destructor Documentation

◆ ViewModelControllerBuilder() [1/2]

ModelView::ViewModelControllerBuilder::ViewModelControllerBuilder ( )
default

◆ ~ViewModelControllerBuilder()

ModelView::ViewModelControllerBuilder::~ViewModelControllerBuilder ( )
default

◆ ViewModelControllerBuilder() [2/2]

ModelView::ViewModelControllerBuilder::ViewModelControllerBuilder ( const ViewModelControllerBuilder other)
delete

Member Function Documentation

◆ childrenStrategy()

ViewModelControllerBuilder::self & ModelView::ViewModelControllerBuilder::childrenStrategy ( std::unique_ptr< ChildrenStrategyInterface children_strategy)

Definition at line 58 of file viewmodelcontrollerbuilder.cpp.

60 {
61  context.children_strategy = std::move(children_strategy);
62  return *this;
63 }
std::unique_ptr< ChildrenStrategyInterface > children_strategy

References ModelView::ViewModelControllerBuilder::Context::children_strategy, and context.

Referenced by ModelView::Factory::CreateController(), and TEST_F().

◆ model()

ViewModelControllerBuilder::self & ModelView::ViewModelControllerBuilder::model ( SessionModel model)

◆ operator std::unique_ptr< ViewModelController >()

ModelView::ViewModelControllerBuilder::operator std::unique_ptr< ViewModelController > ( )

Definition at line 28 of file viewmodelcontrollerbuilder.cpp.

29 {
30  if (!context.model)
31  throw std::runtime_error("Error in ViewModelController: undefined model");
32 
34  throw std::runtime_error("Error in ViewModelController: no children strategy defined.");
35 
36  if (!context.row_strategy)
37  throw std::runtime_error("Error in ViewModelController: no row strategy defined.");
38 
39  auto result = std::make_unique<ViewModelController>(context.model, context.view_model);
40  result->setChildrenStrategy(std::move(context.children_strategy));
41  result->setRowStrategy(std::move(context.row_strategy));
42 
43  return result;
44 }
std::unique_ptr< RowStrategyInterface > row_strategy

◆ operator=()

ViewModelControllerBuilder& ModelView::ViewModelControllerBuilder::operator= ( const ViewModelControllerBuilder other)
delete

◆ rowStrategy()

ViewModelControllerBuilder::self & ModelView::ViewModelControllerBuilder::rowStrategy ( std::unique_ptr< RowStrategyInterface row_strategy)

Definition at line 66 of file viewmodelcontrollerbuilder.cpp.

67 {
68  context.row_strategy = std::move(row_strategy);
69  return *this;
70 }

References context, and ModelView::ViewModelControllerBuilder::Context::row_strategy.

Referenced by ModelView::Factory::CreateController(), and TEST_F().

◆ viewModel()

ViewModelControllerBuilder::self & ModelView::ViewModelControllerBuilder::viewModel ( ViewModelBase view_model)

Definition at line 52 of file viewmodelcontrollerbuilder.cpp.

53 {
54  context.view_model = view_model;
55  return *this;
56 }

References context, and ModelView::ViewModelControllerBuilder::Context::view_model.

Referenced by ModelView::Factory::CreateController(), and TEST_F().

Member Data Documentation

◆ context

Context ModelView::ViewModelControllerBuilder::context
private

Definition at line 57 of file viewmodelcontrollerbuilder.h.

Referenced by childrenStrategy(), model(), rowStrategy(), and viewModel().


The documentation for this class was generated from the following files: