LabelBody
class LabelBody
Represents a label, which is a position in the code: label: or :.
constructor LabelBody
| LabelBody | ( | const Location & location, | |
| Visibility visibility, | |||
| Symbol name | ); |
| PARAMETER | DESCRIPTION |
|---|---|
location |
|
visibility |
|
name |
method add_reference
| void add_reference | ( | ); |
method cloneconst virtual
| virtual Body clone | ( | const CloneContext & context | ) const; |
| PARAMETER | DESCRIPTION |
|---|---|
context |
| RETURNS | DESCRIPTION |
|---|---|
Body |
method createstatic
| static Body create | ( | const Location & location, | |
| Symbol name = {}, | |||
| Visibility visibility = Visibility::ENTITY | ); |
| PARAMETER | DESCRIPTION |
|---|---|
location |
|
name |
|
visibility |
| RETURNS | DESCRIPTION |
|---|---|
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.
| virtual void encode | ( | std::string & bytes, | |
| const Memory * memory | ); |
| PARAMETER | DESCRIPTION |
|---|---|
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.
| virtual void enter_names | ( | Scope * scope, | |
| Entity * containing_entity | ); |
| PARAMETER | DESCRIPTION |
|---|---|
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.
| virtual std::optional< Body > evaluate | ( | const EvaluationContext & context | ); |
| PARAMETER | DESCRIPTION |
|---|---|
context |
The evaluation context. |
| RETURNS | DESCRIPTION |
|---|---|
std::optional< Body > |
The Body to replace this BodyElement with, {} if no replacement is needed. |
method is_referencedconst
| bool is_referenced | ( | ) const; |
| RETURNS | DESCRIPTION |
|---|---|
bool |
method remove_reference
| void remove_reference | ( | ); |
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().
| virtual void resolve | ( | Scope * scope, | |
| Entity * containing_entity | ); |
| PARAMETER | DESCRIPTION |
|---|---|
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.
| virtual void serialize | ( | std::ostream & stream, | |
| const std::string & prefix | ) const; |
| PARAMETER | DESCRIPTION |
|---|---|
stream |
The stream to serialize to. |
prefix |
The prefix for each line of the serialized output. |