Flow123d  JS_before_hm-1788-g649f0a9d1
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Input::Type::OutputJSONMachine Class Reference

Class for create JSON machine readable documentation. More...

#include <type_output.hh>

Inheritance diagram for Input::Type::OutputJSONMachine:
Inheritance graph
[legend]
Collaboration diagram for Input::Type::OutputJSONMachine:
Collaboration graph
[legend]

Public Member Functions

 OutputJSONMachine (RevNumData rev_num_data)
 Simple constructor. More...
 
 OutputJSONMachine (const Record &root_type, RevNumData rev_num_data)
 Constructor allowing to set root_type_. More...
 
ostream & print (ostream &stream) override
 Performs output of the documentation into given stream. More...
 

Protected Member Functions

std::string escape_description (std::string desc)
 Replace slashes, quotes and special chars with escaped format of these chars. More...
 
void print_type_header (ostream &stream, const TypeBase *type)
 Print header of a JSON object describing single TypeBase instance. More...
 
void print_impl (ostream &stream, const Record *type)
 Implements printout of Record type. More...
 
void print_impl (ostream &stream, const Array *type)
 Implements printout of Array type. More...
 
void print_impl (ostream &stream, const Abstract *type)
 Implements printout of Abstract type. More...
 
void print_impl (ostream &stream, const AdHocAbstract *type)
 Implements printout of AdHocAbstract type. More...
 
void print_impl (ostream &stream, const Selection *type)
 Implements printout of Selection type. More...
 
void print_impl (ostream &stream, const Integer *type)
 Implements printout of Integer type. More...
 
void print_impl (ostream &stream, const Double *type)
 Implements printout of Double type. More...
 
void print_impl (ostream &stream, const Bool *type)
 Implements printout of Bool type. More...
 
void print_impl (ostream &stream, const String *type)
 Implements printout of String type. More...
 
void print_impl (ostream &stream, const FileName *type)
 Implements printout of FileName type. More...
 
void print_impl (ostream &stream, const Parameter *type)
 Implements printout of FileName type. More...
 
void print_abstract_record_keys (ostream &stream, const Abstract *type)
 Print all keys of Abstract type or AdHocAbstract type. More...
 
void print_program_info (ostream &stream)
 Print actual version of program. More...
 
void print_full_hash (ostream &stream)
 Print full_hash_ key. More...
 
- Protected Member Functions inherited from Input::Type::OutputBase
 OutputBase ()
 Constructor. More...
 
virtual ~OutputBase ()
 Destructor. More...
 
void get_array_sizes (Array array, unsigned int &lower, unsigned int &upper)
 Gets range of array. More...
 
const string & get_record_description (const Record *rec)
 Gets description of the given record type. More...
 
const string & get_abstract_description (const Abstract *a_rec)
 Gets description of the given abstract type. More...
 
void get_integer_bounds (Integer integer, int &lower, int &upper)
 Gets range of integer. More...
 
void get_double_bounds (Double dbl, double &lower, double &upper)
 Gets range of double. More...
 
void get_parent_vec (Record rec, std::vector< std::shared_ptr< Abstract > > &parent_vec)
 Gets pointer of parent Abstract for given Record. More...
 
void get_array_type (Array array, std::shared_ptr< TypeBase > &arr_type)
 Gets pointer of inner type for given Array. More...
 
void get_default (Record::KeyIter it, string &type, string &value)
 Gets values of default for given record key. More...
 
const string & get_selection_description (const Selection *sel)
 Gets description of the given selection type. More...
 
void get_adhoc_parent_name (const AdHocAbstract *a_rec, string &parent_name)
 Gets ancestor_.type_name of the given AdHocAbstract type. More...
 
Abstract::ChildDataIter get_adhoc_parent_data (const AdHocAbstract *a_rec)
 Gets iterator to begin of ancestor_.child_data_ of the given AdHocAbstract type. More...
 
void get_attr_and_param_data (const TypeBase *type, TypeBase::attribute_map &attr_map, TypeBase::TypeHash &generic_type_hash, TypeBase::json_string &parameter_map_to_json)
 Gets data of attributes and parameters of the given type. More...
 
template<class T >
void print_generic (ostream &stream, const TypeBase *type)
 
void print_base (ostream &stream, const TypeBase *type)
 Perform resolution according to actual type (using typeid) and call particular print_impl method. More...
 
void write_description (std::ostream &stream, const string &str, unsigned int padding, unsigned int hash_count=1)
 Write out a string with given padding of every new line. More...
 
void write_default_value (std::ostream &stream, Default dft)
 Write value stored in dft. More...
 
void clear_processed_types ()
 Clear all data of processed types. More...
 
bool was_written (std::size_t hash)
 Returns true if the type was printed out. More...
 

Protected Attributes

std::string format_head
 Header of the format, printed before call of version print. More...
 
std::string format_inner
 Inner part of the format, printed before first call of recursive print. More...
 
std::string format_full_hash
 Tail of the format, printed after all recursive prints are finished and before full hash prints. More...
 
std::string format_tail
 Tail of the format, printed after all recursive prints are finished. More...
 
RevNumData rev_num_data_
 Contains version of program and other base data. More...
 
Record root_type_
 Root type for output. More...
 
- Protected Attributes inherited from Input::Type::OutputBase
DocumentationType doc_type_
 Type of documentation output. More...
 
unsigned int size_setw_
 temporary value for printout of description (used in std::setw function) More...
 
std::set< std::size_t > processed_types_hash_
 Set of hashes of outputed types. Should replace keys. More...
 
TypeBase::TypeHash full_hash_
 Content hash of full IST, value is used for key IST_hash. More...
 

Additional Inherited Members

- Protected Types inherited from Input::Type::OutputBase
enum  DocumentationType { key_record, full_record }
 Types of documentation output. More...
 
- Static Protected Attributes inherited from Input::Type::OutputBase
static const unsigned int padding_size = 4
 Padding of new level of printout, used where we use indentation. More...
 

Detailed Description

Class for create JSON machine readable documentation.

Every type is represented by one JSON object, for Selection e.g.: "name" : (string), "full_name" : (string), "type" : "Selection", "values" : [ { "value" : (int), "name": (string), "description" : (string) } ]

Definition at line 252 of file type_output.hh.

Constructor & Destructor Documentation

◆ OutputJSONMachine() [1/2]

Input::Type::OutputJSONMachine::OutputJSONMachine ( RevNumData  rev_num_data)

Simple constructor.

Definition at line 454 of file type_output.cc.

◆ OutputJSONMachine() [2/2]

Input::Type::OutputJSONMachine::OutputJSONMachine ( const Record root_type,
RevNumData  rev_num_data 
)

Constructor allowing to set root_type_.

Definition at line 467 of file type_output.cc.

Member Function Documentation

◆ escape_description()

std::string Input::Type::OutputJSONMachine::escape_description ( std::string  desc)
protected

Replace slashes, quotes and special chars with escaped format of these chars.

Definition at line 475 of file type_output.cc.

Here is the caller graph for this function:

◆ print()

ostream & Input::Type::OutputJSONMachine::print ( ostream &  stream)
overridevirtual

Performs output of the documentation into given stream.

The same effect has the reloaded operator '<<'. Returns reference to the same stream.

Implements Input::Type::OutputBase.

Definition at line 498 of file type_output.cc.

Here is the caller graph for this function:

◆ print_abstract_record_keys()

void Input::Type::OutputJSONMachine::print_abstract_record_keys ( ostream &  stream,
const Abstract type 
)
protected

Print all keys of Abstract type or AdHocAbstract type.

Definition at line 705 of file type_output.cc.

Here is the caller graph for this function:

◆ print_full_hash()

void Input::Type::OutputJSONMachine::print_full_hash ( ostream &  stream)
protected

Print full_hash_ key.

Definition at line 858 of file type_output.cc.

Here is the caller graph for this function:

◆ print_impl() [1/11]

void Input::Type::OutputJSONMachine::print_impl ( ostream &  stream,
const Abstract type 
)
protectedvirtual

Implements printout of Abstract type.

Implements Input::Type::OutputBase.

Definition at line 661 of file type_output.cc.

◆ print_impl() [2/11]

void Input::Type::OutputJSONMachine::print_impl ( ostream &  stream,
const AdHocAbstract type 
)
protectedvirtual

Implements printout of AdHocAbstract type.

Implements Input::Type::OutputBase.

Definition at line 683 of file type_output.cc.

◆ print_impl() [3/11]

void Input::Type::OutputJSONMachine::print_impl ( ostream &  stream,
const Array type 
)
protectedvirtual

Implements printout of Array type.

Implements Input::Type::OutputBase.

Definition at line 638 of file type_output.cc.

◆ print_impl() [4/11]

void Input::Type::OutputJSONMachine::print_impl ( ostream &  stream,
const Bool type 
)
protectedvirtual

Implements printout of Bool type.

Implements Input::Type::OutputBase.

Definition at line 789 of file type_output.cc.

◆ print_impl() [5/11]

void Input::Type::OutputJSONMachine::print_impl ( ostream &  stream,
const Double type 
)
protectedvirtual

Implements printout of Double type.

Implements Input::Type::OutputBase.

Definition at line 773 of file type_output.cc.

◆ print_impl() [6/11]

void Input::Type::OutputJSONMachine::print_impl ( ostream &  stream,
const FileName type 
)
protectedvirtual

Implements printout of FileName type.

Implements Input::Type::OutputBase.

Definition at line 811 of file type_output.cc.

◆ print_impl() [7/11]

void Input::Type::OutputJSONMachine::print_impl ( ostream &  stream,
const Integer type 
)
protectedvirtual

Implements printout of Integer type.

Implements Input::Type::OutputBase.

Definition at line 757 of file type_output.cc.

◆ print_impl() [8/11]

void Input::Type::OutputJSONMachine::print_impl ( ostream &  stream,
const Parameter type 
)
protectedvirtual

Implements printout of FileName type.

Implements Input::Type::OutputBase.

Definition at line 834 of file type_output.cc.

◆ print_impl() [9/11]

void Input::Type::OutputJSONMachine::print_impl ( ostream &  stream,
const Record type 
)
protectedvirtual

Implements printout of Record type.

Implements Input::Type::OutputBase.

Definition at line 567 of file type_output.cc.

◆ print_impl() [10/11]

void Input::Type::OutputJSONMachine::print_impl ( ostream &  stream,
const Selection type 
)
protectedvirtual

Implements printout of Selection type.

Implements Input::Type::OutputBase.

Definition at line 728 of file type_output.cc.

◆ print_impl() [11/11]

void Input::Type::OutputJSONMachine::print_impl ( ostream &  stream,
const String type 
)
protectedvirtual

Implements printout of String type.

Implements Input::Type::OutputBase.

Definition at line 800 of file type_output.cc.

◆ print_program_info()

void Input::Type::OutputJSONMachine::print_program_info ( ostream &  stream)
protected

Print actual version of program.

Definition at line 846 of file type_output.cc.

Here is the caller graph for this function:

◆ print_type_header()

void Input::Type::OutputJSONMachine::print_type_header ( ostream &  stream,
const TypeBase type 
)
protected

Print header of a JSON object describing single TypeBase instance.

Parameters
type- type to print
input_type- name of TypeBase descendant.

Definition at line 545 of file type_output.cc.

Here is the caller graph for this function:

Member Data Documentation

◆ format_full_hash

std::string Input::Type::OutputJSONMachine::format_full_hash
protected

Tail of the format, printed after all recursive prints are finished and before full hash prints.

see print(stream) method

Definition at line 314 of file type_output.hh.

◆ format_head

std::string Input::Type::OutputJSONMachine::format_head
protected

Header of the format, printed before call of version print.

See print(stream) method

Definition at line 302 of file type_output.hh.

◆ format_inner

std::string Input::Type::OutputJSONMachine::format_inner
protected

Inner part of the format, printed before first call of recursive print.

see print(stream) method

Definition at line 308 of file type_output.hh.

◆ format_tail

std::string Input::Type::OutputJSONMachine::format_tail
protected

Tail of the format, printed after all recursive prints are finished.

see print(stream) method

Definition at line 320 of file type_output.hh.

◆ rev_num_data_

RevNumData Input::Type::OutputJSONMachine::rev_num_data_
protected

Contains version of program and other base data.

Definition at line 322 of file type_output.hh.

◆ root_type_

Record Input::Type::OutputJSONMachine::root_type_
protected

Root type for output.

Have to be printed as first, then we pass through the individual type lists to output everything.

Definition at line 329 of file type_output.hh.


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