libqasm
library for handling cQASM files
Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | List of all members
cqasm::v1::semantic::Program Class Reference

A complete program. More...

Public Member Functions

 Program (const One< Version > &version=One< Version >(), const cqasm::v1::primitives::Int &num_qubits=cqasm::v1::primitives::initialize< cqasm::v1::primitives::Int >(), const Maybe< ErrorModel > &error_model=Maybe< ErrorModel >(), const Any< Subcircuit > &subcircuits=Any< Subcircuit >(), const Any< Mapping > &mappings=Any< Mapping >(), const Any< Variable > &variables=Any< Variable >(), const cqasm::v1::primitives::Version &api_version=cqasm::v1::primitives::initialize< cqasm::v1::primitives::Version >())
 Constructor. More...
 
void find_reachable (::tree::base::PointerMap &map) const override
 Registers all reachable nodes with the given PointerMap. More...
 
void check_complete (const ::tree::base::PointerMap &map) const override
 Returns whether this Program is complete/fully defined. More...
 
NodeType type () const override
 Returns the NodeType of this node. More...
 
Programas_program () override
 Interprets this node to a node of type Program. More...
 
const Programas_program () const override
 Interprets this node to a node of type Program. More...
 
One< Nodecopy () const override
 Returns a shallow copy of this node. More...
 
One< Nodeclone () const override
 Returns a deep copy of this node. More...
 
bool equals (const Node &rhs) const override
 Value-based equality operator. More...
 
bool operator== (const Node &rhs) const override
 Pointer-based equality operator. More...
 
void serialize (::tree::cbor::MapWriter &map, const ::tree::base::PointerMap &ids) const override
 Serializes this node to the given map. More...
 
- Public Member Functions inherited from cqasm::v1::semantic::Node
bool operator!= (const Node &rhs) const
 Pointer-based inequality operator. More...
 
template<typename T >
visit (Visitor< T > &visitor)
 Visit this object. More...
 
void dump (std::ostream &out=std::cout, int indent=0)
 Writes a debug dump of this node to the given stream. More...
 
void dump_seq (std::ostream &out=std::cout, int indent=0)
 Alternate debug dump that represents links and node uniqueness via sequence number tags. More...
 
virtual Annotatedas_annotated ()
 Interprets this node to a node of type Annotated. More...
 
virtual const Annotatedas_annotated () const
 Interprets this node to a node of type Annotated. More...
 
virtual AnnotationDataas_annotation_data ()
 Interprets this node to a node of type AnnotationData. More...
 
virtual const AnnotationDataas_annotation_data () const
 Interprets this node to a node of type AnnotationData. More...
 
virtual Blockas_block ()
 Interprets this node to a node of type Block. More...
 
virtual const Blockas_block () const
 Interprets this node to a node of type Block. More...
 
virtual BreakStatementas_break_statement ()
 Interprets this node to a node of type BreakStatement. More...
 
virtual const BreakStatementas_break_statement () const
 Interprets this node to a node of type BreakStatement. More...
 
virtual Bundleas_bundle ()
 Interprets this node to a node of type Bundle. More...
 
virtual const Bundleas_bundle () const
 Interprets this node to a node of type Bundle. More...
 
virtual BundleExtas_bundle_ext ()
 Interprets this node to a node of type BundleExt. More...
 
virtual const BundleExtas_bundle_ext () const
 Interprets this node to a node of type BundleExt. More...
 
virtual ContinueStatementas_continue_statement ()
 Interprets this node to a node of type ContinueStatement. More...
 
virtual const ContinueStatementas_continue_statement () const
 Interprets this node to a node of type ContinueStatement. More...
 
virtual ErrorModelas_error_model ()
 Interprets this node to a node of type ErrorModel. More...
 
virtual const ErrorModelas_error_model () const
 Interprets this node to a node of type ErrorModel. More...
 
virtual ForLoopas_for_loop ()
 Interprets this node to a node of type ForLoop. More...
 
virtual const ForLoopas_for_loop () const
 Interprets this node to a node of type ForLoop. More...
 
virtual ForeachLoopas_foreach_loop ()
 Interprets this node to a node of type ForeachLoop. More...
 
virtual const ForeachLoopas_foreach_loop () const
 Interprets this node to a node of type ForeachLoop. More...
 
virtual GotoInstructionas_goto_instruction ()
 Interprets this node to a node of type GotoInstruction. More...
 
virtual const GotoInstructionas_goto_instruction () const
 Interprets this node to a node of type GotoInstruction. More...
 
virtual IfElseas_if_else ()
 Interprets this node to a node of type IfElse. More...
 
virtual const IfElseas_if_else () const
 Interprets this node to a node of type IfElse. More...
 
virtual IfElseBranchas_if_else_branch ()
 Interprets this node to a node of type IfElseBranch. More...
 
virtual const IfElseBranchas_if_else_branch () const
 Interprets this node to a node of type IfElseBranch. More...
 
virtual Instructionas_instruction ()
 Interprets this node to a node of type Instruction. More...
 
virtual const Instructionas_instruction () const
 Interprets this node to a node of type Instruction. More...
 
virtual InstructionBaseas_instruction_base ()
 Interprets this node to a node of type InstructionBase. More...
 
virtual const InstructionBaseas_instruction_base () const
 Interprets this node to a node of type InstructionBase. More...
 
virtual Mappingas_mapping ()
 Interprets this node to a node of type Mapping. More...
 
virtual const Mappingas_mapping () const
 Interprets this node to a node of type Mapping. More...
 
virtual RepeatUntilLoopas_repeat_until_loop ()
 Interprets this node to a node of type RepeatUntilLoop. More...
 
virtual const RepeatUntilLoopas_repeat_until_loop () const
 Interprets this node to a node of type RepeatUntilLoop. More...
 
virtual SetInstructionas_set_instruction ()
 Interprets this node to a node of type SetInstruction. More...
 
virtual const SetInstructionas_set_instruction () const
 Interprets this node to a node of type SetInstruction. More...
 
virtual Statementas_statement ()
 Interprets this node to a node of type Statement. More...
 
virtual const Statementas_statement () const
 Interprets this node to a node of type Statement. More...
 
virtual Structuredas_structured ()
 Interprets this node to a node of type Structured. More...
 
virtual const Structuredas_structured () const
 Interprets this node to a node of type Structured. More...
 
virtual Subcircuitas_subcircuit ()
 Interprets this node to a node of type Subcircuit. More...
 
virtual const Subcircuitas_subcircuit () const
 Interprets this node to a node of type Subcircuit. More...
 
virtual Variableas_variable ()
 Interprets this node to a node of type Variable. More...
 
virtual const Variableas_variable () const
 Interprets this node to a node of type Variable. More...
 
virtual Versionas_version ()
 Interprets this node to a node of type Version. More...
 
virtual const Versionas_version () const
 Interprets this node to a node of type Version. More...
 
virtual WhileLoopas_while_loop ()
 Interprets this node to a node of type WhileLoop. More...
 
virtual const WhileLoopas_while_loop () const
 Interprets this node to a node of type WhileLoop. More...
 

Static Public Member Functions

static std::shared_ptr< Programdeserialize (const ::tree::cbor::MapReader &map, ::tree::base::IdentifierMap &ids)
 Deserializes the given node. More...
 
- Static Public Member Functions inherited from cqasm::v1::semantic::Node
static std::shared_ptr< Nodedeserialize (const ::tree::cbor::MapReader &map, ::tree::base::IdentifierMap &ids)
 Deserializes the given node. More...
 

Public Attributes

One< Versionversion
 File version. More...
 
cqasm::v1::primitives::Int num_qubits
 The required qubit register size. More...
 
Maybe< ErrorModelerror_model
 Error model information. More...
 
Any< Subcircuitsubcircuits
 The list of subcircuit. More...
 
Any< Mappingmappings
 The list of all user-defined mappings after parsing. More...
 
Any< Variablevariables
 This list of all user-defined variables at any point in the code. More...
 
cqasm::v1::primitives::Version api_version
 API version. More...
 

Protected Member Functions

void visit_internal (VisitorBase &visitor, void *retval) override
 Helper method for visiting nodes. More...
 

Detailed Description

A complete program.

Definition at line 2027 of file cqasm-v1-semantic-gen.hpp.

#include <cqasm-v1-semantic-gen.hpp>

Inheritance diagram for cqasm::v1::semantic::Program:
Inheritance graph
[legend]
Collaboration diagram for cqasm::v1::semantic::Program:
Collaboration graph
[legend]

Constructor & Destructor Documentation

◆ Program()

cqasm::v1::semantic::Program::Program ( const One< Version > &  version = One<Version>(),
const cqasm::v1::primitives::Int num_qubits = cqasm::v1::primitives::initialize<cqasm::v1::primitives::Int>(),
const Maybe< ErrorModel > &  error_model = Maybe<ErrorModel>(),
const Any< Subcircuit > &  subcircuits = Any<Subcircuit>(),
const Any< Mapping > &  mappings = Any<Mapping>(),
const Any< Variable > &  variables = Any<Variable>(),
const cqasm::v1::primitives::Version api_version = cqasm::v1::primitives::initialize<cqasm::v1::primitives::Version>() 
)

Constructor.

Definition at line 2516 of file cqasm-v1-semantic-gen.cpp.

Member Function Documentation

◆ find_reachable()

void cqasm::v1::semantic::Program::find_reachable ( ::tree::base::PointerMap &  map) const
override

Registers all reachable nodes with the given PointerMap.

Definition at line 2523 of file cqasm-v1-semantic-gen.cpp.

◆ check_complete()

void cqasm::v1::semantic::Program::check_complete ( const ::tree::base::PointerMap &  map) const
override

Returns whether this Program is complete/fully defined.

Definition at line 2535 of file cqasm-v1-semantic-gen.cpp.

◆ type()

NodeType cqasm::v1::semantic::Program::type ( ) const
overridevirtual

Returns the NodeType of this node.

Implements cqasm::v1::semantic::Node.

Definition at line 2547 of file cqasm-v1-semantic-gen.cpp.

◆ visit_internal()

void cqasm::v1::semantic::Program::visit_internal ( VisitorBase visitor,
void *  retval 
)
overrideprotectedvirtual

Helper method for visiting nodes.

Implements cqasm::v1::semantic::Node.

Definition at line 2554 of file cqasm-v1-semantic-gen.cpp.

◆ as_program() [1/2]

Program * cqasm::v1::semantic::Program::as_program ( )
overridevirtual

Interprets this node to a node of type Program.

Returns null if it has the wrong type.

Reimplemented from cqasm::v1::semantic::Node.

Definition at line 2562 of file cqasm-v1-semantic-gen.cpp.

◆ as_program() [2/2]

const Program * cqasm::v1::semantic::Program::as_program ( ) const
overridevirtual

Interprets this node to a node of type Program.

Returns null if it has the wrong type.

Reimplemented from cqasm::v1::semantic::Node.

Definition at line 2570 of file cqasm-v1-semantic-gen.cpp.

◆ copy()

One< Node > cqasm::v1::semantic::Program::copy ( ) const
overridevirtual

Returns a shallow copy of this node.

Implements cqasm::v1::semantic::Node.

Definition at line 2577 of file cqasm-v1-semantic-gen.cpp.

◆ clone()

One< Node > cqasm::v1::semantic::Program::clone ( ) const
overridevirtual

Returns a deep copy of this node.

Implements cqasm::v1::semantic::Node.

Definition at line 2584 of file cqasm-v1-semantic-gen.cpp.

◆ equals()

bool cqasm::v1::semantic::Program::equals ( const Node rhs) const
overridevirtual

Value-based equality operator.

Ignores annotations!

Implements cqasm::v1::semantic::Node.

Definition at line 2597 of file cqasm-v1-semantic-gen.cpp.

◆ operator==()

bool cqasm::v1::semantic::Program::operator== ( const Node rhs) const
overridevirtual

Pointer-based equality operator.

Implements cqasm::v1::semantic::Node.

Definition at line 2613 of file cqasm-v1-semantic-gen.cpp.

◆ serialize()

void cqasm::v1::semantic::Program::serialize ( ::tree::cbor::MapWriter &  map,
const ::tree::base::PointerMap &  ids 
) const
overridevirtual

Serializes this node to the given map.

Implements cqasm::v1::semantic::Node.

Definition at line 2629 of file cqasm-v1-semantic-gen.cpp.

◆ deserialize()

std::shared_ptr< Program > cqasm::v1::semantic::Program::deserialize ( const ::tree::cbor::MapReader &  map,
::tree::base::IdentifierMap &  ids 
)
static

Deserializes the given node.

Writes a debug dump of this node to the given stream.

Definition at line 2662 of file cqasm-v1-semantic-gen.cpp.

Member Data Documentation

◆ version

One<Version> cqasm::v1::semantic::Program::version

File version.

Definition at line 2033 of file cqasm-v1-semantic-gen.hpp.

◆ num_qubits

cqasm::v1::primitives::Int cqasm::v1::semantic::Program::num_qubits

The required qubit register size.

Definition at line 2038 of file cqasm-v1-semantic-gen.hpp.

◆ error_model

Maybe<ErrorModel> cqasm::v1::semantic::Program::error_model

Error model information.

Definition at line 2043 of file cqasm-v1-semantic-gen.hpp.

◆ subcircuits

Any<Subcircuit> cqasm::v1::semantic::Program::subcircuits

The list of subcircuit.

Definition at line 2048 of file cqasm-v1-semantic-gen.hpp.

◆ mappings

Any<Mapping> cqasm::v1::semantic::Program::mappings

The list of all user-defined mappings after parsing.

Definition at line 2053 of file cqasm-v1-semantic-gen.hpp.

◆ variables

Any<Variable> cqasm::v1::semantic::Program::variables

This list of all user-defined variables at any point in the code.

Only used for API level 1.1+.

Definition at line 2059 of file cqasm-v1-semantic-gen.hpp.

◆ api_version

cqasm::v1::primitives::Version cqasm::v1::semantic::Program::api_version

API version.

This may be greater than or equal to the file version. This controls which fields of the tree are used, where such usage depends on the version.

Definition at line 2066 of file cqasm-v1-semantic-gen.hpp.


The documentation for this class was generated from the following files: