Entity Generator 1.1.0
Composable, deterministic entity generation for C++23
Loading...
Searching...
No Matches
dasmig::choice_component< T, Formatter > Class Template Reference

Component that picks uniformly at random from a list of values. More...

#include <entitygen.hpp>

Inheritance diagram for dasmig::choice_component< T, Formatter >:
dasmig::component

Public Member Functions

 choice_component (std::wstring key, std::vector< T > choices, Formatter fmt={})
 Construct a choice component.
 
std::wstring key () const override
 Unique key identifying this component (e.g. "name", "age").
 
std::any generate (const generation_context &ctx) const override
 Generate a random value for this component.
 
std::wstring to_string (const std::any &value) const override
 Convert a generated value to a displayable string.
 
- Public Member Functions inherited from dasmig::component
virtual ~component ()=default
 Virtual destructor for proper cleanup of derived classes.
 
virtual double weight () const
 Inclusion weight for this component (0.0 to 1.0).
 
virtual bool validate (const std::any &value) const
 Validate a generated value.
 
virtual bool should_generate (const generation_context &ctx) const
 Decide whether this component should be generated.
 

Additional Inherited Members

- Static Protected Member Functions inherited from dasmig::component
static std::wstring default_to_string (const std::any &value)
 Default conversion covering common standard types.
 

Detailed Description

template<typename T, typename Formatter = use_default_formatter>
class dasmig::choice_component< T, Formatter >

Component that picks uniformly at random from a list of values.

Template Parameters
TThe value type.
FormatterOptional callable for custom string conversion.

Definition at line 228 of file entitygen.hpp.

Constructor & Destructor Documentation

◆ choice_component()

template<typename T , typename Formatter = use_default_formatter>
dasmig::choice_component< T, Formatter >::choice_component ( std::wstring  key,
std::vector< T >  choices,
Formatter  fmt = {} 
)
inlineexplicit

Construct a choice component.

Parameters
keyUnique component key.
choicesNon-empty list of values to choose from.
fmtOptional custom formatter.
Exceptions
std::invalid_argumentIf choices is empty.

Definition at line 236 of file entitygen.hpp.

Member Function Documentation

◆ generate()

template<typename T , typename Formatter = use_default_formatter>
std::any dasmig::choice_component< T, Formatter >::generate ( const generation_context ctx) const
inlineoverridevirtual

Generate a random value for this component.

Parameters
ctxContext providing access to previously generated values and a seeded random engine.
Returns
The generated value wrapped in std::any.

Implements dasmig::component.

Definition at line 247 of file entitygen.hpp.

◆ key()

template<typename T , typename Formatter = use_default_formatter>
std::wstring dasmig::choice_component< T, Formatter >::key ( ) const
inlineoverridevirtual

Unique key identifying this component (e.g. "name", "age").

Returns
The component key as a wide string.

Implements dasmig::component.

Definition at line 245 of file entitygen.hpp.

◆ to_string()

template<typename T , typename Formatter = use_default_formatter>
std::wstring dasmig::choice_component< T, Formatter >::to_string ( const std::any &  value) const
inlineoverridevirtual

Convert a generated value to a displayable string.

Parameters
valueThe value previously returned by generate().
Returns
A human-readable wide-string representation.
See also
default_to_string()

Implements dasmig::component.

Definition at line 253 of file entitygen.hpp.


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