Skip to content

AssignmentBody

INCLUDE FILE
#include "Body/AssignmentBody.h"

class AssignmentBody

Represents an assignment, which defines a local constant or variable: name = value.

DEFINITION
class AssignmentBody;

constructor AssignmentBody

DEFINITION
AssignmentBody ( Visibility  visibility,
Symbol  name,
Expression  value );
PARAMETERDESCRIPTION
visibility
name
value

method cloneconst virtual

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

method createstatic

Create an assignment body.

DEFINITION
static Body  create ( Visibility  visibility,
Symbol  name,
Expression  value );
PARAMETERDESCRIPTION
visibility

The visibility of the assignment.

name

The name of the variable or constant being assigned.

value

The value being assigned.

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 enter_namesvirtual

Enter names defined by the BodyElement in the given scope.

This method is used to enter names into the given scope.

The default implementation calls enter_names() on all sub-body-elements using traverse(). Subclasses that define names should override this method.

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

The scope to enter names into.

containing_entity

The entity that contains the BodyElement.

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 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 nameprivate

DEFINITION
Symbol  name;

member valueprivate

DEFINITION
Expression  value;

member visibilityprivate

DEFINITION
Visibility  visibility;