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

Converter between SessionItem and JSON object. More...

Inheritance diagram for ModelView::JsonItemConverter:
[legend]
Collaboration diagram for ModelView::JsonItemConverter:
[legend]

Classes

struct  JsonItemConverterImpl
 

Public Member Functions

 JsonItemConverter (const ConverterContext &context)
 
 JsonItemConverter (const JsonItemConverter &)=delete
 
 ~JsonItemConverter () override
 
std::unique_ptr< SessionItemfrom_json (const QJsonObject &json) const override
 Creates item from JSON. More...
 
JsonItemConverteroperator= (const JsonItemConverter &)=delete
 
QJsonObject to_json (const SessionItem *item) const override
 Converts item to JSON. More...
 

Private Attributes

std::unique_ptr< JsonItemConverterImplp_impl
 

Detailed Description

Converter between SessionItem and JSON object.

Definition at line 27 of file jsonitemconverter.h.

Constructor & Destructor Documentation

◆ JsonItemConverter() [1/2]

JsonItemConverter::JsonItemConverter ( const ConverterContext context)

Definition at line 115 of file jsonitemconverter.cpp.

116  : p_impl(std::make_unique<JsonItemConverterImpl>(this, context))
117 {
118 }
std::unique_ptr< JsonItemConverterImpl > p_impl

◆ JsonItemConverter() [2/2]

ModelView::JsonItemConverter::JsonItemConverter ( const JsonItemConverter )
delete

◆ ~JsonItemConverter()

JsonItemConverter::~JsonItemConverter ( )
overridedefault

Member Function Documentation

◆ from_json()

std::unique_ptr< SessionItem > JsonItemConverter::from_json ( const QJsonObject &  ) const
overridevirtual

Creates item from JSON.

Implements ModelView::JsonItemConverterInterface.

Definition at line 127 of file jsonitemconverter.cpp.

128 {
129  static JsonItemFormatAssistant assistant;
130 
131  if (!assistant.isSessionItem(json))
132  throw std::runtime_error("JsonItemConverterV2::from_json() -> Error. Given json object "
133  "can't represent a SessionItem.");
134 
135  auto modelType = json[JsonItemFormatAssistant::modelKey].toString().toStdString();
136  auto result = p_impl->factory()->createItem(modelType);
137 
138  p_impl->populate_item(json, *result);
139 
140  return result;
141 }
Utility class to determine, whether given JSON object can represent various parts of SessionModel.
bool isSessionItem(const QJsonObject &json) const
Returns true if given json object represents SessionItem.

References ModelView::JsonItemFormatAssistant::isSessionItem(), ModelView::JsonItemFormatAssistant::modelKey, and p_impl.

Referenced by ModelView::JsonItemConverter::JsonItemConverterImpl::JsonItemConverterImpl().

Here is the call graph for this function:

◆ operator=()

JsonItemConverter& ModelView::JsonItemConverter::operator= ( const JsonItemConverter )
delete

◆ to_json()

QJsonObject JsonItemConverter::to_json ( const SessionItem item) const
overridevirtual

Converts item to JSON.

Implements ModelView::JsonItemConverterInterface.

Definition at line 122 of file jsonitemconverter.cpp.

123 {
124  return item ? p_impl->item_to_json(*item) : QJsonObject();
125 }

References p_impl.

Referenced by ModelView::JsonItemConverter::JsonItemConverterImpl::JsonItemConverterImpl().

Member Data Documentation

◆ p_impl

std::unique_ptr<JsonItemConverterImpl> ModelView::JsonItemConverter::p_impl
private

Definition at line 41 of file jsonitemconverter.h.

Referenced by from_json(), and to_json().


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