Reference documentation for deal.II version 9.0.0
Public Member Functions | Static Public Member Functions | Private Attributes | Static Private Attributes | List of all members
Patterns::Tuple Class Reference

#include <deal.II/base/patterns.h>

Inheritance diagram for Patterns::Tuple:

Public Member Functions

 Tuple (const std::vector< std::unique_ptr< PatternBase > > &patterns, const std::string &separator=":")
 Tuple (const std::vector< std::unique_ptr< PatternBase > > &patterns, const char *separator)
template<class... PatternTypes>
 Tuple (const std::string &separator, const PatternTypes &...patterns)
template<class... PatternTypes>
 Tuple (const char *separator, const PatternTypes &...patterns)
template<typename... Patterns>
 Tuple (const Patterns &...patterns)
 Tuple (const Tuple &other)
virtual bool match (const std::string &test_string) const
virtual std::string description (const OutputStyle style=Machine) const
virtual std::unique_ptr< PatternBaseclone () const
std::size_t memory_consumption () const
const PatternBaseget_pattern (const unsigned int &i) const
const std::string & get_separator () const
- Public Member Functions inherited from Patterns::PatternBase
virtual ~PatternBase ()=default

Static Public Member Functions

static std::unique_ptr< Tuplecreate (const std::string &description)

Private Attributes

std::vector< std::unique_ptr< PatternBase > > patterns
const std::string separator

Static Private Attributes

static const char * description_init = "[Tuple"

Additional Inherited Members

- Public Types inherited from Patterns::PatternBase
enum  OutputStyle { Machine, Text, LaTeX }

Detailed Description

This pattern matches colon-separated values of arbitrary types. Each type has to match a pattern given to the constructor.

An example usage is the following:

std::vector< std::unique_ptr<Patterns::PatternBase> > ps;
Patterns::Tuple pattern(ps, ":");
bool check = ps.match("5 : 3.14 : Ciao"); // check = true

or, if you want to exploit ParameterHandler::add_parameter():

typedef std::tuple<std::string, Point<3>, unsigned int> T;
T a = Patterns::Tools::Convert<T>::to_value("Ciao : 1.0, 2.0, 3.0 : 33");
prm.add_parameter("A tuple", a);
// DEAL:parameters::A tuple: Ciao : 1.000000, 2.000000, 3.000000 : 33
prm.set("A tuple", "Mondo : 2.0, 3.0, 4.0 : 34");
// DEAL:parameters::A tuple: Mondo : 2.0, 3.0, 4.0 : 34
deallog << Patterns::Tools::Convert<T>::to_string(a) << std::endl;
// DEAL::Mondo : 2.000000, 3.000000, 4.000000 : 34

The constructor expects a vector of Patterns, and optionally a string specifying the separator to use when parsing the Tuple from a string.

The default separator is a colon, owing to the fact that a pair is in fact a tuple with two elements.

Luca Heltai, 2017.

Definition at line 726 of file patterns.h.

Constructor & Destructor Documentation

Patterns::Tuple::Tuple ( const std::vector< std::unique_ptr< PatternBase > > &  patterns,
const std::string &  separator = ":" 

Constructor. Use a vector of unique pointers to Patterns to construct the tuple.

patternsThe pattern each object of the Tuple should match
separatorAn optional string used to delimit each element Constructor.

Definition at line 1013 of file

Patterns::Tuple::Tuple ( const std::vector< std::unique_ptr< PatternBase > > &  patterns,
const char *  separator 

Constructor. Same as above, specialized for const char *. This is necessary to avoid compilers errors due to the variadic constructors provided below.

Definition at line 1029 of file

template<class... PatternTypes>
Patterns::Tuple::Tuple ( const std::string &  separator,
const PatternTypes &...  patterns 

Constructor. Creates a Tuple from more than one class derived from PatternBase.

separatorWhat separator to use.
patternsThe list of patterns to use

Definition at line 1354 of file patterns.h.

template<class... PatternTypes>
Patterns::Tuple::Tuple ( const char *  separator,
const PatternTypes &...  patterns 

Constructor. This is needed to allow users to specify directly the separator without using std::string(";").

Since we support a pure variadic templates version, without this specialization, the compiler will fail with cryptic errors.

Definition at line 1344 of file patterns.h.

template<class... PatternTypes>
Patterns::Tuple::Tuple ( const PatternTypes &...  patterns)

Constructor. Same as above, using the default separator.

patternsThe list of patterns to use

Definition at line 1372 of file patterns.h.

Patterns::Tuple::Tuple ( const Tuple other)

Copy constructor.

Definition at line 1036 of file

Member Function Documentation

bool Patterns::Tuple::match ( const std::string &  test_string) const

Return true if the string is a list of strings each of which matches the patterns given to the constructor.

Implements Patterns::PatternBase.

Definition at line 1047 of file

std::string Patterns::Tuple::description ( const OutputStyle  style = Machine) const

Return a description of the pattern that valid strings are expected to match.

Implements Patterns::PatternBase.

Definition at line 1065 of file

std::unique_ptr< PatternBase > Patterns::Tuple::clone ( ) const

Return a copy of the present object, which is newly allocated on the heap. Ownership of that object is transferred to the caller of this function.

Implements Patterns::PatternBase.

Definition at line 1121 of file

std::unique_ptr< Tuple > Patterns::Tuple::create ( const std::string &  description)

Create a new object if the start of description matches description_init. Ownership of that object is transferred to the caller of this function.

Definition at line 1137 of file

std::size_t Patterns::Tuple::memory_consumption ( ) const

Determine an estimate for the memory consumption (in bytes) of this object.

Reimplemented from Patterns::PatternBase.

Definition at line 1128 of file

const PatternBase & Patterns::Tuple::get_pattern ( const unsigned int &  i) const

Return a reference to the i-th pattern in the tuple.

Definition at line 1182 of file

const std::string & Patterns::Tuple::get_separator ( ) const

Return the separator of the tuple entries.

Definition at line 1189 of file

Member Data Documentation

std::vector<std::unique_ptr<PatternBase> > Patterns::Tuple::patterns

Copy of the patterns stored in the Tuple.

Definition at line 830 of file patterns.h.

const std::string Patterns::Tuple::separator

Separator between elements of the list.

Definition at line 835 of file patterns.h.

const char * Patterns::Tuple::description_init = "[Tuple"

Initial part of description.

Definition at line 840 of file patterns.h.

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