NGL  6.5
The NCCA Graphics Library
fmt::ArgVisitor< Impl, Result > Class Template Reference

#include <format.h>

+ Inheritance diagram for fmt::ArgVisitor< Impl, Result >:
+ Collaboration diagram for fmt::ArgVisitor< Impl, Result >:

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)
 

Private Types

typedef internal::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 ); } };

Definition at line 1454 of file format.h.

Member Typedef Documentation

template<typename Impl, typename Result>
typedef internal::Arg fmt::ArgVisitor< Impl, Result >::Arg
private

Definition at line 1456 of file format.h.

Member Function Documentation

template<typename Impl, typename Result>
void fmt::ArgVisitor< Impl, Result >::report_unhandled_arg ( )
inline

Definition at line 1459 of file format.h.

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.

Definition at line 1551 of file format.h.

+ Here is the caller graph for this function:

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

Visits a double or long double argument.

Definition at line 1514 of file format.h.

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

Visits an argument of any integral type.

Definition at line 1498 of file format.h.

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

Visits a bool argument.

Definition at line 1487 of file format.h.

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

Visits a char or wchar_t argument.

Definition at line 1492 of file format.h.

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

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

Definition at line 1519 of file format.h.

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

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

Definition at line 1539 of file format.h.

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

Visits a double argument.

Definition at line 1503 of file format.h.

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

Visits an int argument.

Definition at line 1467 of file format.h.

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

Visits a long double argument.

Definition at line 1508 of file format.h.

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

Visits a long long argument.

Definition at line 1472 of file format.h.

template<typename Impl, typename Result>
Result fmt::ArgVisitor< Impl, Result >::visit_pointer ( const void )
inline

Visits a pointer argument.

Definition at line 1534 of file format.h.

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

Visits a string argument.

Definition at line 1524 of file format.h.

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

Visits an unsigned argument.

Definition at line 1477 of file format.h.

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

Visits an unsigned long long argument.

Definition at line 1482 of file format.h.

template<typename Impl, typename Result>
Result fmt::ArgVisitor< Impl, Result >::visit_unhandled_arg ( )
inline

Definition at line 1461 of file format.h.

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

Visits a wide string argument.

Definition at line 1529 of file format.h.


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