Skip to content

VariableRepeatBody

INCLUDE FILE
#include "Body/VariableRepeatBody.h"

class VariableRepeatBody

Represents a body that repeats a block of code a specified number of times using a counter variable.

DEFINITION
class VariableRepeatBody;

constructor VariableRepeatBody

DEFINITION
VariableRepeatBody ( std::shared_ptr< Scope >  containing_scope,
Location  variable_location,
Symbol  variable,
RepeatRange  range,
Body  body );
PARAMETERDESCRIPTION
containing_scope
variable_location
variable
range
body

method cloneconst virtual

DEFINITION
virtual Body  clone ( const CloneContext & context ) const;
PARAMETERDESCRIPTION
context
RETURNSDESCRIPTION
Body

method createstatic

DEFINITION
static Body  create ( std::shared_ptr< Scope >  containing_scope,
Location  variable_location,
Symbol  variable,
RepeatRange  range,
Body  body );
PARAMETERDESCRIPTION
containing_scope
variable_location
variable
range
body
RETURNSDESCRIPTION
Body

method createstatic

DEFINITION
static Body  create ( std::shared_ptr< Scope >  containing_scope,
Location  variable_location,
Symbol  variable,
Expression  start,
Expression  end,
Body  body );
PARAMETERDESCRIPTION
containing_scope
variable_location
variable
start
end
body
RETURNSDESCRIPTION
Body

method encodevirtual

Encode the BodyElement into a byte string.

The default implementation does nothing. Subclasses that represent data or instructions should override this method.

DEFINITION
virtual void  encode ( std::string & bytes,
const Memory * memory );
PARAMETERDESCRIPTION
bytes

The byte string to encode into.

memory

The memory context for encoding.

method evaluatevirtual

Evaluate the BodyElement in a given context.

Subclasses must implement this method.

If an error occurs during evaluation, either an error should be reported via DiagnosticOutput and the BodyElement marked as invalid, or an exception should be thrown.

DEFINITION
virtual std::optional< Body >  evaluate ( const EvaluationContext & context );
PARAMETERDESCRIPTION
context

The evaluation context.

RETURNSDESCRIPTION
std::optional< Body >

The Body to replace this BodyElement with, {} if no replacement is needed.

method expandprivate

DEFINITION
Body  expand ( );
RETURNSDESCRIPTION
Body

method resolvevirtual

Resolve all names in the BodyElement.

If a name cannot be resolved, an error should be reported via DiagnosticOutput and the BodyElement marked as invalid, or an exception should be thrown.

The default implementation calls resolve() on all sub-body-elements and sub-expressions using traverse().

DEFINITION
virtual void  resolve ( Scope * scope,
Entity * containing_entity );
PARAMETERDESCRIPTION
scope

The scope to resolve names in.

containing_entity

The entity that contains the BodyElement.

method serializeconst virtual

Serialize the BodyElement to a stream.

Subclasses must implement this method.

DEFINITION
virtual void  serialize ( std::ostream & stream,
const std::string & prefix ) const;
PARAMETERDESCRIPTION
stream

The stream to serialize to.

prefix

The prefix for each line of the serialized output.

member inner_scopeprivate

DEFINITION
std::shared_ptr< Scope >  inner_scope;

member variableprivate

DEFINITION
Symbol  variable;

member variable_constantprivate

DEFINITION
std::shared_ptr< Constant >  variable_constant;

member variable_locationprivate

DEFINITION
Location  variable_location;