Flow123d  3.9.1-0844c3d
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Input::ReaderInternalTranspose Class Reference

Creates storage of transposed subtree defined on input. More...

#include <reader_internal_transpose.hh>

Inheritance diagram for Input::ReaderInternalTranspose:
Inheritance graph
[legend]
Collaboration diagram for Input::ReaderInternalTranspose:
Collaboration graph
[legend]

Public Member Functions

 ReaderInternalTranspose ()
 Constructor. More...
 
StorageBaseread_storage (PathBase &p, const Type::Array *array)
 Create storage of transposed subtree of given Array. More...
 
- Public Member Functions inherited from Input::ReaderInternalBase
 TYPEDEF_ERR_INFO (EI_InputType, string)
 
 TYPEDEF_ERR_INFO (EI_File, const string)
 
 TYPEDEF_ERR_INFO (EI_Specification, const string)
 
 TYPEDEF_ERR_INFO (EI_Format, const string)
 
 TYPEDEF_ERR_INFO (EI_JSON_Type, const string)
 
 TYPEDEF_ERR_INFO (EI_ErrorAddress, string)
 
 TYPEDEF_ERR_INFO (EI_TransposeIndex, unsigned int)
 
 TYPEDEF_ERR_INFO (EI_TransposeAddress, string)
 
 TYPEDEF_ERR_INFO (EI_JSONLine, unsigned int)
 
 TYPEDEF_ERR_INFO (EI_JSONColumn, unsigned int)
 
 TYPEDEF_ERR_INFO (EI_JSONReason, string)
 
 TYPEDEF_ERR_INFO (EI_InputErrorMessage, const string)
 
 TYPEDEF_ERR_INFO (EI_RecordName, const string)
 
 TYPEDEF_ERR_INFO (EI_Tag, string)
 
 TYPEDEF_ERR_INFO (EI_TokenizerMsg, std::string)
 
 TYPEDEF_ERR_INFO (EI_ColumnIndex, unsigned int)
 
 DECLARE_INPUT_EXCEPTION (ExcInputError,<< "Error in input file: "<< EI_File::qval<< " at address: "<< EI_ErrorAddress::qval<< "\n"<< EI_Specification::val<< "\n"<< EI_Format::val<< " type: "<< EI_JSON_Type::qval<< "\n"<< "Expected type:\n"<< EI_InputType::val)
 General exception during conversion from JSON/YAML tree to storage. More...
 
 DECLARE_INPUT_EXCEPTION (ExcNotJSONFormat,<< "Not valid JSON file "<< EI_File::qval<< ". Error at line "<< EI_JSONLine::val<< " : col "<< EI_JSONColumn::val<< " ; reason: "<< EI_JSONReason::val<< "\n")
 
 DECLARE_INPUT_EXCEPTION (ExcAutomaticConversionError,<< "Error during automatic conversion of "<< EI_RecordName::val<< " record.\n "<< EI_InputErrorMessage::val<< "\n")
 
 DECLARE_INPUT_EXCEPTION (ExcForbiddenTag,<< "Tag "<< EI_Tag::qval<< " "<< EI_Specification::val<< "\n")
 
 DECLARE_INPUT_EXCEPTION (ExcDuplicitTag,<< "Error in input file: "<< EI_File::qval<< " at address: "<< EI_ErrorAddress::qval<< "\n"<< "Duplicit Tag: "<< EI_Tag::qval<< "\n")
 
 DECLARE_INPUT_EXCEPTION (ExcWrongCsvFormat,<< EI_Specification::val<< ",\n"<< EI_TokenizerMsg::val<< "\n")
 
 DECLARE_INPUT_EXCEPTION (ExcMultipleDefinitionCsvColumn,<< "Multiple definition of column with index "<< EI_ColumnIndex::qval<< " in included CSV file:\n"<< EI_File::val<< ",\n")
 
 ReaderInternalBase ()
 Constructor. More...
 

Protected Member Functions

StorageBasemake_sub_storage (PathBase &p, const Type::Array *array) override
 Create storage of Type::Array type. More...
 
StorageBasemake_sub_storage (PathBase &p, const Type::Selection *selection) override
 Create storage of Type::Selection type. More...
 
StorageBasemake_sub_storage (PathBase &p, const Type::Bool *bool_type) override
 Create storage of Type::Bool type. More...
 
StorageBasemake_sub_storage (PathBase &p, const Type::Integer *int_type) override
 Create storage of Type::Integer type. More...
 
StorageBasemake_sub_storage (PathBase &p, const Type::Double *double_type) override
 Create storage of Type::Double type. More...
 
StorageBasemake_sub_storage (PathBase &p, const Type::String *string_type) override
 Create storage of Type::String type. More...
 
StorageBasemake_transposed_storage (PathBase &p, const Type::TypeBase *type)
 Apply transposition and create storage of Type::Array type. More...
 
StorageBasemake_autoconversion_array_storage (PathBase &p, const Type::Array *array, StorageBase *item)
 Apply conversion to one element storage of Type::Array type. More...
 
- Protected Member Functions inherited from Input::ReaderInternalBase
StorageBasemake_storage (PathBase &p, const Type::TypeBase *type)
 Create storage of given type. More...
 
StorageBasemake_sub_storage (PathBase &p, const Type::Record *record)
 Create storage of Type::Record type. Common method of all descendants. More...
 
StorageBasemake_sub_storage (PathBase &p, const Type::Tuple *tuple)
 Create storage of Type::Tuple type. Common method of all descendants. More...
 
StorageBasemake_sub_storage (PathBase &p, const Type::Abstract *abstr_rec)
 Create storage of Type::Abstract type. Common method of all descendants. More...
 
StorageBaserecord_automatic_conversion (PathBase &p, const Type::Record *record)
 Apply automatic conversion of Type::Record type. More...
 
StorageBaseabstract_automatic_conversion (PathBase &p, const Type::Abstract *abstr_rec)
 Apply automatic conversion of Type::Abstract type. More...
 
StorageBasemake_array_storage (PathBase &p, const Type::Array *array, int arr_size)
 Create storage of Type::Array with given size. More...
 
StorageBasemake_storage_from_default (const string &dflt_str, std::shared_ptr< Type::TypeBase > type)
 Dispatch according to type and create corresponding storage from the given string. More...
 
StorageBasemake_include_storage (PathBase &p, const Type::TypeBase *type)
 Create storage of included YAML or JSON input file. More...
 
bool read_bool_value (PathBase &p, const Type::TypeBase *type)
 Read boolean value from path. More...
 
std::int64_t read_int_value (PathBase &p, const Type::TypeBase *type)
 Read integer value from path. More...
 
double read_double_value (PathBase &p, const Type::TypeBase *type)
 Read double value from path. More...
 
std::string read_string_value (PathBase &p, const Type::TypeBase *type)
 Read string value from path. More...
 
std::string get_included_file (PathBase &p)
 Helper method. Get string value of included file or throw exception if reading failed. More...
 
void generate_input_error (PathBase &p, const Type::TypeBase *type, std::string spec, bool add_type)
 Generate ExcInputError. More...
 
void complete_input_error (ExcInputError &e, PathBase &p, ValueTypes value_type)
 Complete specification, error address and JSON type error tags to ExcInputError. More...
 

Protected Attributes

unsigned int transpose_index_
 Index of processed item in transposed part of input tree. More...
 
vector< unsigned int > transpose_array_sizes_
 Helper vector what allows check sizes of all transposed Arrays. More...
 

Detailed Description

Creates storage of transposed subtree defined on input.

We use this class if input tree contains another type at position where Array is expected. This type must correspond with type_of_value of Array.

Definition at line 41 of file reader_internal_transpose.hh.

Constructor & Destructor Documentation

◆ ReaderInternalTranspose()

Input::ReaderInternalTranspose::ReaderInternalTranspose ( )

Constructor.

Definition at line 31 of file reader_internal_transpose.cc.

Member Function Documentation

◆ make_autoconversion_array_storage()

StorageBase * Input::ReaderInternalTranspose::make_autoconversion_array_storage ( PathBase p,
const Type::Array array,
StorageBase item 
)
protected

Apply conversion to one element storage of Type::Array type.

Definition at line 198 of file reader_internal_transpose.cc.

Here is the caller graph for this function:

◆ make_sub_storage() [1/6]

StorageBase * Input::ReaderInternalTranspose::make_sub_storage ( PathBase p,
const Type::Array array 
)
overrideprotectedvirtual

Create storage of Type::Array type.

Implements Input::ReaderInternalBase.

Definition at line 94 of file reader_internal_transpose.cc.

◆ make_sub_storage() [2/6]

StorageBase * Input::ReaderInternalTranspose::make_sub_storage ( PathBase p,
const Type::Bool bool_type 
)
overrideprotectedvirtual

Create storage of Type::Bool type.

Implements Input::ReaderInternalBase.

Definition at line 126 of file reader_internal_transpose.cc.

◆ make_sub_storage() [3/6]

StorageBase * Input::ReaderInternalTranspose::make_sub_storage ( PathBase p,
const Type::Double double_type 
)
overrideprotectedvirtual

Create storage of Type::Double type.

Implements Input::ReaderInternalBase.

Definition at line 153 of file reader_internal_transpose.cc.

◆ make_sub_storage() [4/6]

StorageBase * Input::ReaderInternalTranspose::make_sub_storage ( PathBase p,
const Type::Integer int_type 
)
overrideprotectedvirtual

Create storage of Type::Integer type.

Implements Input::ReaderInternalBase.

Definition at line 136 of file reader_internal_transpose.cc.

◆ make_sub_storage() [5/6]

StorageBase * Input::ReaderInternalTranspose::make_sub_storage ( PathBase p,
const Type::Selection selection 
)
overrideprotectedvirtual

Create storage of Type::Selection type.

Implements Input::ReaderInternalBase.

Definition at line 108 of file reader_internal_transpose.cc.

◆ make_sub_storage() [6/6]

StorageBase * Input::ReaderInternalTranspose::make_sub_storage ( PathBase p,
const Type::String string_type 
)
overrideprotectedvirtual

Create storage of Type::String type.

Implements Input::ReaderInternalBase.

Definition at line 171 of file reader_internal_transpose.cc.

◆ make_transposed_storage()

StorageBase * Input::ReaderInternalTranspose::make_transposed_storage ( PathBase p,
const Type::TypeBase type 
)
protected

Apply transposition and create storage of Type::Array type.

Definition at line 181 of file reader_internal_transpose.cc.

Here is the caller graph for this function:

◆ read_storage()

StorageBase * Input::ReaderInternalTranspose::read_storage ( PathBase p,
const Type::Array array 
)

Create storage of transposed subtree of given Array.

Processing of subtree with transposition:

  1. We set transpose_index_ to value '0' (transposition of first Array item).
  2. We retrieve whole subtree and find Array types that are located at position where other type is expected (type_of_value of found Array must corresponds with excepted type). We create storage corresponding with subtree (unexpected Arrays are replaced by item at position given by transpose_index_.
  3. Together with paragraph 2 we store sizes of found Arrays to transpose_array_sizes_.
  4. We check sizes stored in transpose_array_sizes_ (all must be in equal and may not be equal to zero). This size determines size of transposed Array type.
  5. We repeat paragraph 2 for all items of transposed Array (gradual increase of transpose_index_).

Definition at line 35 of file reader_internal_transpose.cc.

Here is the caller graph for this function:

Member Data Documentation

◆ transpose_array_sizes_

vector<unsigned int> Input::ReaderInternalTranspose::transpose_array_sizes_
protected

Helper vector what allows check sizes of all transposed Arrays.

Definition at line 84 of file reader_internal_transpose.hh.

◆ transpose_index_

unsigned int Input::ReaderInternalTranspose::transpose_index_
protected

Index of processed item in transposed part of input tree.

Definition at line 81 of file reader_internal_transpose.hh.


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