Skip to content

FillExpression

INCLUDE FILE
#include "Expression/FillExpression.h"

class FillExpression

Expression representing a sequence of repeated values: .fill(count, value).

DEFINITION
class FillExpression;

constructor FillExpression

Create a fill expression.

DEFINITION
FillExpression ( const Location & location,
Expression  count,
Expression  value );
PARAMETERDESCRIPTION
location

The location of the expression in the source code.

count

The expression representing the number of repetitions.

value

The expression representing the value to repeat.

method clone

DEFINITION
Expression  clone ( const CloneContext & context );
PARAMETERDESCRIPTION
context
RETURNSDESCRIPTION
Expression

method createstatic

Create an expression representing a FillExpression from arguments.

This may not create a FillExpression if the expression can be simplified.

DEFINITION
static Expression  create ( const Location & location,
const std::vector< Expression > & arguments );
PARAMETERDESCRIPTION
location

The location of the expression in the source code.

arguments

The arguments of the expression. Must contain exactly two expressions: the count and the value.

RETURNSDESCRIPTION
Expression

The created expression.

THROWSDESCRIPTION
LocationException

If the number of arguments is not exactly two or the first argument is not an unsigned integer expression.

method createstatic

Create an expression representing a FillExpression.

This may not create a FillExpression if the expression can be simplified.

DEFINITION
static Expression  create ( const Location & location,
Expression  count,
Expression  value );
PARAMETERDESCRIPTION
location

The location of the expression in the source code.

count

The expression representing the number of repetitions.

value

The expression representing the value to repeat.

RETURNSDESCRIPTION
Expression

The created expression.

THROWSDESCRIPTION
LocationException

If the first argument is not an unsigned integer expression.

method evaluate_processvirtual protected

Process the evaluation of the expression.

This method is called by the default implementation of evaluate() after calling evaluate() on all sub-expressions.

DEFINITION
virtual std::optional< Expression >  evaluate_process ( const EvaluationContext & context );
PARAMETERDESCRIPTION
context

The evaluation context.

RETURNSDESCRIPTION
std::optional< Expression >

If the expression changed, returns the new expression, otherwise {}.

method serialize_subconst virtual protected

Serialize the expression to a stream.

This method must be implemented by derived classes.

DEFINITION
virtual void  serialize_sub ( std::ostream & stream ) const;
PARAMETERDESCRIPTION
stream

The stream to serialize to.

method simplifystatic private

DEFINITION
static std::optional< Expression >  simplify ( const Location & location,
Expression  count,
Expression  value,
bool  always_create );
PARAMETERDESCRIPTION
location
count
value
always_create
RETURNSDESCRIPTION
std::optional< Expression >

method traversevirtual protected

Call a method on all sub-expressions of this expression.

It is used by the default implementations of resolve() and expand_calls(). Unless a subclass has no sub-expressions or overrides both of these methods, it should override traverse().

DEFINITION
virtual void  traverse ( std::function< void(Expression &)>  callable );
PARAMETERDESCRIPTION
callable

A callable to apply to each sub-expression.

method typeconst virtual

Get the type of the expression's value.

The default implementation returns the type of the value of the expression if it is known, or {} otherwise. Subclasses should override this method if they can determine the type of the expression without knowing the exact value of the expression.

DEFINITION
virtual std::optional< Value::Type >  type ( ) const;
RETURNSDESCRIPTION
std::optional< Value::Type >

The type of the expression's value if it can be determined, {} otherwise.

member countprivate

The expression representing the number of repetitions.

DEFINITION
Expression  count;

member valueprivate

The expression representing the value to repeat.

DEFINITION
Expression  value;