Skip to content

LabelOffsetExpression

INCLUDE FILE
#include "Expression/LabelOffsetExpression.h"

class LabelOffsetExpression

Represents a label expression, which refers to a label in an object.

This is the Expression entered into the environment for a label definition. It refers back to the defining BodyElement, which is used to compute the label's value.

DEFINITION
class LabelOffsetExpression;

constructor LabelOffsetExpression

DEFINITION
LabelOffsetExpression ( const Location & location,
Symbol  entity_name,
Symbol  label_name,
size_t  unnamed_label_index,
std::shared_ptr< LabelBody >  body );
PARAMETERDESCRIPTION
location
entity_name
label_name
unnamed_label_index
body

destructor ~LabelOffsetExpressionvirtual

DEFINITION
virtual ~LabelOffsetExpression ( );

method bodyconst

DEFINITION
std::shared_ptr< LabelBody >  body ( ) const;
RETURNSDESCRIPTION
std::shared_ptr< LabelBody >

method createstatic

DEFINITION
static Expression  create ( const Location & location,
Symbol  entity_name,
Symbol  label_name,
std::shared_ptr< LabelBody >  body );
PARAMETERDESCRIPTION
location
entity_name
label_name
body
RETURNSDESCRIPTION
Expression

method createstatic

DEFINITION
static Expression  create ( const Location & location,
Symbol  entity_name,
size_t  unnamed_label_index,
std::shared_ptr< LabelBody >  body );
PARAMETERDESCRIPTION
location
entity_name
unnamed_label_index
body
RETURNSDESCRIPTION
Expression

method entityconst

DEFINITION
Symbol  entity ( ) const;
RETURNSDESCRIPTION
Symbol

method evaluatevirtual protected

Evaluate the expression in the given context.

The default implementation calls evaluate() on all sub-expressions using traverse(), and then calls evaluate_process().

Errors during evaluation should either be reported via DiagnosticOutput and result in the expression being marked as invalid, or an exception should be thrown.

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

The evaluation context.

RETURNSDESCRIPTION
std::optional< Expression >

The Expression to replace this expression with, {} if no replacement is needed.

method has_valueconst virtual

Check if the value of the expression is known.

The default implementation returns true if value() returns a value, false otherwise. If the value is expensive to compute, subclasses may override this method to provide a more efficient implementation.

DEFINITION
virtual bool  has_value ( ) const;
RETURNSDESCRIPTION
bool

true if the value is known, false otherwise.

method labelconst

DEFINITION
Symbol  label ( ) const;
RETURNSDESCRIPTION
Symbol

method maximum_valueconst virtual

Get the minimum possible value of the expression.

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

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

The minimum possible value of the expression. if it can be determined, {} otherwise.

method minimum_valueconst virtual

Get the maximum possible value of the expression.

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

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

The maximum possible value of the expression if it can be determined, {} otherwise.

method operator==const

Compare two label offset expressions for equality.

DEFINITION
bool  operator== ( const LabelOffsetExpression & other ) const;
PARAMETERDESCRIPTION
other

The other label offset expression to compare with.

RETURNSDESCRIPTION
bool

true if both expressions refer to the same body element, false 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 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.

method unnamed_indexconst

DEFINITION
size_t  unnamed_index ( ) const;
RETURNSDESCRIPTION
size_t

method valueconst virtual

Get the value of the expression if it is known.

Subclasses should override this method. The default implementation returns {}.

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

The value of the expression, if it is known.

member body_private

DEFINITION
std::weak_ptr< LabelBody >  body_;

member entity_nameprivate

DEFINITION
Symbol  entity_name;

member label_nameprivate

DEFINITION
Symbol  label_name;

member unnamed_label_indexprivate

DEFINITION
size_t  unnamed_label_index;