Flow123d  JS_before_hm-1709-g5393e92e3
Classes | Namespaces | Macros | Functions
accessors.hh File Reference


More...

#include <string>
#include <memory>
#include <cstdint>
#include <iosfwd>
#include <limits>
#include <type_traits>
#include "input/type_abstract.hh"
#include "input/type_base.hh"
#include "input/type_record.hh"
#include "input/type_selection.hh"
#include "input/type_tuple.hh"
#include "system/asserts.hh"
#include "system/exc_common.hh"
#include "system/file_path.hh"
#include "system/exceptions.hh"
#include "input/storage.hh"
#include "input/input_exception.hh"
#include "accessors_impl.hh"

Go to the source code of this file.

Classes

class  Input::Enum
 
class  Input::FullEnum
 
class  Input::Iterator< T >
 
class  Input::Address
 
struct  Input::Address::AddressData
 
class  Input::Record
 Accessor to the data with type Type::Record. More...
 
class  Input::Tuple
 Accessor to the data with type Type::Tuple. More...
 
class  Input::AbstractRecord
 Accessor to the polymorphic input data of a type given by an AbstracRecord object. More...
 
class  Input::Array
 Accessor to input data conforming to declared Array. More...
 
struct  Input::internal::TypeDispatch< T, Enable >
 
class  Input::IteratorBase
 
class  Input::Iterator< T >
 
struct  Input::internal::TypeDispatch< T, Enable >
 
struct  Input::internal::TypeDispatch< T, typename std::enable_if< std::is_enum< T >::value >::type >
 
struct  Input::internal::TypeDispatch< Enum >
 
struct  Input::internal::TypeDispatch< FullEnum >
 
struct  Input::internal::TypeDispatch< T, typename std::enable_if< std::is_integral< T >::value >::type >
 
struct  Input::internal::TypeDispatch< bool >
 
struct  Input::internal::TypeDispatch< T, typename std::enable_if< std::is_floating_point< T >::value >::type >
 
struct  Input::internal::TypeDispatch< string >
 
struct  Input::internal::TypeDispatch< AbstractRecord >
 
struct  Input::internal::TypeDispatch< Record >
 
struct  Input::internal::TypeDispatch< Tuple >
 
struct  Input::internal::TypeDispatch< Array >
 
struct  Input::internal::TypeDispatch< FilePath >
 

Namespaces

 Input
 Abstract linear system class.
 
 Input::internal
 

Macros

#define INPUT_CATCH(ExceptionType, AddressEITag, input_accessor)
 

Functions

 Input::TYPEDEF_ERR_INFO (EI_InputType, const string)
 
 Input::TYPEDEF_ERR_INFO (EI_RequiredType, const string)
 
 Input::TYPEDEF_ERR_INFO (EI_CPPRequiredType, const string)
 
 Input::TYPEDEF_ERR_INFO (EI_KeyName, const string)
 
 Input::DECLARE_EXCEPTION (ExcTypeMismatch,<< "Key:"<< EI_KeyName::qval<< ". Can not construct Iterator<T> with C++ type T="<< EI_CPPRequiredType::qval<< ";\n"<< "can not convert Type: "<< EI_InputType::qval<< " to: "<< EI_RequiredType::qval)
 
 Input::TYPEDEF_ERR_INFO (EI_AccessorName, const string)
 
 Input::DECLARE_EXCEPTION (ExcAccessorForNullStorage,<< "Can not create "<< EI_AccessorName::val<< " from StorageNull.")
 
 Input::TYPEDEF_ERR_INFO (EI_ParamName, const string)
 
 Input::DECLARE_EXCEPTION (ExcAddressNullPointer,<< "NULL pointer in "<< EI_ParamName::val<< " parameter.")
 
std::ostream & Input::operator<< (std::ostream &stream, const Address &address)
 

Detailed Description


 * Copyright (C) 2015 Technical University of Liberec. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation. (http://www.gnu.org/licenses/gpl-3.0.en.html)

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Todo:
  • decide which part of interface has to be optimized ( probably nothing until we implement reader for HDF5, XML or large Raw data files, and try to use the same input interface for input of large data)
  • then make inlined only neccessary functions and carefully move as much as possible into accessors.cc including explicit instantiation of support classes. This should speedup compilation of the code that use the accessors.
  • implement operator -> without allocation (shared_ptr), i.e. put Accesors into Iterators Create corresponding accessor at construction of the iterator.

Definition in file accessors.hh.

Macro Definition Documentation

◆ INPUT_CATCH

#define INPUT_CATCH (   ExceptionType,
  AddressEITag,
  input_accessor 
)
Value:
catch (ExceptionType &e ) { \
e << AddressEITag(input_accessor.address_string()); \
throw; \
}

Definition at line 63 of file accessors.hh.