Skip to content

BlockBody

INCLUDE FILE
#include "Body/BlockBody.h"

class BlockBody

Represents a sequence of body elements.

DEFINITION
class BlockBody;

constructor BlockBody

DEFINITION
BlockBody ( );

constructor BlockBody

DEFINITION
BlockBody ( std::vector< Body >  block );
PARAMETERDESCRIPTION
block

method append_elementprivate

DEFINITION
void  append_element ( const Body & element );
PARAMETERDESCRIPTION
element

method append_subvirtual

Append a BodyElement to this body directly, if supported.

If appending is supported, this method returns the resulting body. Otherwise, it returns an empty optional.

The default implementation does not support appending. If a subclass supports appending, it should override this method.

DEFINITION
virtual std::pair< bool, std::optional< Body > >  append_sub ( const Body & body,
const Body & element );
PARAMETERDESCRIPTION
body

The body to append to.

element

The element to append.

RETURNSDESCRIPTION
std::pair< bool, std::optional< Body > >

The resulting body, or {} if not supported.

method backconst

DEFINITION
std::optional< Body >  back ( ) const;
RETURNSDESCRIPTION
std::optional< Body >

method cloneconst virtual

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

method createstatic

DEFINITION
static Body  create ( const std::vector< Body > & elements );
PARAMETERDESCRIPTION
elements
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 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.

method traversevirtual

Traverse the BodyElement.

This function is used by the default implementations of resolve() and expand_calls(). Unless a subclass overrides both of these methods, it should override traverse().

DEFINITION
virtual void  traverse ( std::function< void(Body &)>  body_callable,
std::function< void(Expression &)>  expression_callable );
PARAMETERDESCRIPTION
body_callable

A callable to apply to each sub-body-element.

expression_callable

A callable to apply to each sub-expression.

member blockprivate

DEFINITION
std::vector< Body >  block;