DIY 3.0 data-parallel out-of-core C++ library

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Examples

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Functions Typedefs Groups Pages
Public Member Functions | List of all members
fmt::ArgVisitor< Impl, Result > Class Template Reference

`#include <diy/fmt/format.h>`

## Public Member Functions
void | report_unhandled_arg ()
Result | visit_unhandled_arg ()
Result | visit_int (int value)
Result | visit_long_long (LongLong value)
Result | visit_uint (unsigned value)
Result | visit_ulong_long (ULongLong value)
Result | visit_bool (bool value)
Result | visit_char (int value)
template<typename T >
Result | visit_any_int (T)
Result | visit_double (double value)
Result | visit_long_double (long double value)
template<typename T >
Result | visit_any_double (T)
Result | visit_cstring (const char *)
Result | visit_string (Arg::StringValue< char >)
Result | visit_wstring (Arg::StringValue< wchar_t >)
Result | visit_pointer (const void *)
Result | visit_custom (Arg::CustomValue)
Result | visit (const Arg &arg)

## Detailed Description

### template<typename Impl, typename Result>
class fmt::ArgVisitor< Impl, Result >

An argument visitor based on the `curiously recurring template pattern <http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern>`_.

To use `~fmt::ArgVisitor` define a subclass that implements some or all of the visit methods with the same signatures as the methods in `~fmt::ArgVisitor`, for example, `~fmt::ArgVisitor::visit_int()`. Pass the subclass as the Impl template parameter. Then calling `~fmt::ArgVisitor::visit` for some argument will dispatch to a visit method specific to the argument type. For example, if the argument type is `double` then the `~fmt::ArgVisitor::visit_double()` method of a subclass will be called. If the subclass doesn't contain a method with this signature, then a corresponding method of `~fmt::ArgVisitor` will be called.

Example**::

class MyArgVisitor : public fmt::ArgVisitor<MyArgVisitor, void> { public: void visit_int(int value) { fmt::print("{}", value); } void visit_double(double value) { fmt::print("{}", value ); } };

## Member Function Documentation

template<typename Impl, typename Result>

Result fmt::ArgVisitor< Impl, Result >::visit | ( | const Arg & | arg | ) |
| inline

Visits an argument dispatching to the appropriate visit method based on the argument type. For example, if the argument type is `double` then the `~fmt::ArgVisitor::visit_double()` method of the Impl class will be called.

template<typename Impl, typename Result>
template<typename T >

Result fmt::ArgVisitor< Impl, Result >::visit_any_double | ( | T |  | ) |
| inline

Visits a `double` or `long double` argument.

template<typename Impl, typename Result>
template<typename T >

Result fmt::ArgVisitor< Impl, Result >::visit_any_int | ( | T |  | ) |
| inline

Visits an argument of any integral type.

template<typename Impl, typename Result>

Result fmt::ArgVisitor< Impl, Result >::visit_bool | ( | bool | value | ) |
| inline

Visits a `bool` argument.

template<typename Impl, typename Result>

Result fmt::ArgVisitor< Impl, Result >::visit_char | ( | int | value | ) |
| inline

Visits a `char` or `wchar_t` argument.

template<typename Impl, typename Result>

Result fmt::ArgVisitor< Impl, Result >::visit_cstring | ( | const char * |  | ) |
| inline

Visits a null-terminated C string (`const char *`) argument.

template<typename Impl, typename Result>

Result fmt::ArgVisitor< Impl, Result >::visit_custom | ( | Arg::CustomValue |  | ) |
| inline

Visits an argument of a custom (user-defined) type.

template<typename Impl, typename Result>

Result fmt::ArgVisitor< Impl, Result >::visit_double | ( | double | value | ) |
| inline

Visits a `double` argument.

template<typename Impl, typename Result>

Result fmt::ArgVisitor< Impl, Result >::visit_int | ( | int | value | ) |
| inline

Visits an `int` argument.

template<typename Impl, typename Result>

Result fmt::ArgVisitor< Impl, Result >::visit_long_double | ( | long double | value | ) |
| inline

Visits a `long double` argument.

template<typename Impl, typename Result>

Result fmt::ArgVisitor< Impl, Result >::visit_long_long | ( | LongLong | value | ) |
| inline

Visits a `long long` argument.

template<typename Impl, typename Result>

Result fmt::ArgVisitor< Impl, Result >::visit_pointer | ( | const void * |  | ) |
| inline

Visits a pointer argument.

template<typename Impl, typename Result>

Result fmt::ArgVisitor< Impl, Result >::visit_string | ( | Arg::StringValue< char > |  | ) |
| inline

Visits a string argument.

template<typename Impl, typename Result>

Result fmt::ArgVisitor< Impl, Result >::visit_uint | ( | unsigned | value | ) |
| inline

Visits an `unsigned` argument.

template<typename Impl, typename Result>

Result fmt::ArgVisitor< Impl, Result >::visit_ulong_long | ( | ULongLong | value | ) |
| inline

Visits an `unsigned long long` argument.

template<typename Impl, typename Result>

Result fmt::ArgVisitor< Impl, Result >::visit_wstring | ( | Arg::StringValue< wchar_t > |  | ) |
| inline

Visits a wide string argument.

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

- include/diy/fmt/format.h