senf::console::FlagCollection< Enum > Struct Template Reference

Bit-mask flag argument type. More...

#include <senf/Utils/Console/Utility.hh>

Public Types

typedef detail::UnderlyingFlagType< Enum >::type underlying_type
 

Public Member Functions

 operator underlying_type () const
 
 FlagCollection ()
 
 FlagCollection (underlying_type v)
 
 FlagCollection (Enum v)
 

Public Attributes

underlying_type value
 

Detailed Description

template<typename Enum>
struct senf::console::FlagCollection< Enum >

Bit-mask flag argument type.

senf::console::FlagCollection supplies a special argument type for use in registering console commands. This argument type is used to represent a bit-mask of single flags.

// Function taking a flags argument
void func(unsigned flags);
// Enum containing all the possible flag values
enum MyFlags { Foo = 1,
Bar = 2,
Baz = 4,
Doo = 8 };
SENF_CONSOLE_REGISTER_ENUM(MyFlags, (Foo)(Bar)(Baz)(Boo));
// Register the function with a FlagCollection argument type
consoleDir.add("func", fty::Command<void (FlagCollection<MyFlags>)>(&func));
    To use the FlagCollection class
    \li you need a function which takes a bit-mask of flags as argument
    \li you define and register an enum with all possible flag values
    \li you register the function with a FlagCollection argument type using \c boost::function
        for the conversion. This is also possible for return values.

    The nice thing is, that \c boot::function supports compatible argument types and does
    automatic type conversion. Since a FlagCollection is convertible to and from unsigned long,
    this conversion will work.

    After registering this function, you can call it with a collection of flags as argument
console:/$ help func
Usage:
    func arg11:MyFlags
console:/$ func Foo
console:/$ func (Foo Boo)

Definition at line 178 of file Utility.hh.

Member Typedef Documentation

◆ underlying_type

template<typename Enum >
typedef detail::UnderlyingFlagType<Enum>::type senf::console::FlagCollection< Enum >::underlying_type

Definition at line 180 of file Utility.hh.

Constructor & Destructor Documentation

◆ FlagCollection() [1/3]

template<typename Enum >
senf::console::FlagCollection< Enum >::FlagCollection ( )
inline

Definition at line 184 of file Utility.hh.

◆ FlagCollection() [2/3]

template<typename Enum >
senf::console::FlagCollection< Enum >::FlagCollection ( underlying_type  v)
inline

Definition at line 185 of file Utility.hh.

◆ FlagCollection() [3/3]

template<typename Enum >
senf::console::FlagCollection< Enum >::FlagCollection ( Enum  v)
inline

Definition at line 186 of file Utility.hh.

Member Function Documentation

◆ operator underlying_type()

template<typename Enum >
senf::console::FlagCollection< Enum >::operator underlying_type ( ) const
inline

Definition at line 182 of file Utility.hh.

Member Data Documentation

◆ value

template<typename Enum >
underlying_type senf::console::FlagCollection< Enum >::value

Definition at line 188 of file Utility.hh.


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