libqasm
library for handling cQASM files
|
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... | |
Program * | as_program () override |
Interprets this node to a node of type Program. More... | |
const Program * | as_program () const override |
Interprets this node to a node of type Program. More... | |
One< Node > | copy () const override |
Returns a shallow copy of this node. More... | |
One< Node > | clone () 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... | |
![]() | |
bool | operator!= (const Node &rhs) const |
Pointer-based inequality operator. More... | |
template<typename T > | |
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 Annotated * | as_annotated () |
Interprets this node to a node of type Annotated. More... | |
virtual const Annotated * | as_annotated () const |
Interprets this node to a node of type Annotated. More... | |
virtual AnnotationData * | as_annotation_data () |
Interprets this node to a node of type AnnotationData. More... | |
virtual const AnnotationData * | as_annotation_data () const |
Interprets this node to a node of type AnnotationData. More... | |
virtual Block * | as_block () |
Interprets this node to a node of type Block. More... | |
virtual const Block * | as_block () const |
Interprets this node to a node of type Block. More... | |
virtual BreakStatement * | as_break_statement () |
Interprets this node to a node of type BreakStatement. More... | |
virtual const BreakStatement * | as_break_statement () const |
Interprets this node to a node of type BreakStatement. More... | |
virtual Bundle * | as_bundle () |
Interprets this node to a node of type Bundle. More... | |
virtual const Bundle * | as_bundle () const |
Interprets this node to a node of type Bundle. More... | |
virtual BundleExt * | as_bundle_ext () |
Interprets this node to a node of type BundleExt. More... | |
virtual const BundleExt * | as_bundle_ext () const |
Interprets this node to a node of type BundleExt. More... | |
virtual ContinueStatement * | as_continue_statement () |
Interprets this node to a node of type ContinueStatement. More... | |
virtual const ContinueStatement * | as_continue_statement () const |
Interprets this node to a node of type ContinueStatement. More... | |
virtual ErrorModel * | as_error_model () |
Interprets this node to a node of type ErrorModel. More... | |
virtual const ErrorModel * | as_error_model () const |
Interprets this node to a node of type ErrorModel. More... | |
virtual ForLoop * | as_for_loop () |
Interprets this node to a node of type ForLoop. More... | |
virtual const ForLoop * | as_for_loop () const |
Interprets this node to a node of type ForLoop. More... | |
virtual ForeachLoop * | as_foreach_loop () |
Interprets this node to a node of type ForeachLoop. More... | |
virtual const ForeachLoop * | as_foreach_loop () const |
Interprets this node to a node of type ForeachLoop. More... | |
virtual GotoInstruction * | as_goto_instruction () |
Interprets this node to a node of type GotoInstruction. More... | |
virtual const GotoInstruction * | as_goto_instruction () const |
Interprets this node to a node of type GotoInstruction. More... | |
virtual IfElse * | as_if_else () |
Interprets this node to a node of type IfElse. More... | |
virtual const IfElse * | as_if_else () const |
Interprets this node to a node of type IfElse. More... | |
virtual IfElseBranch * | as_if_else_branch () |
Interprets this node to a node of type IfElseBranch. More... | |
virtual const IfElseBranch * | as_if_else_branch () const |
Interprets this node to a node of type IfElseBranch. More... | |
virtual Instruction * | as_instruction () |
Interprets this node to a node of type Instruction. More... | |
virtual const Instruction * | as_instruction () const |
Interprets this node to a node of type Instruction. More... | |
virtual InstructionBase * | as_instruction_base () |
Interprets this node to a node of type InstructionBase. More... | |
virtual const InstructionBase * | as_instruction_base () const |
Interprets this node to a node of type InstructionBase. More... | |
virtual Mapping * | as_mapping () |
Interprets this node to a node of type Mapping. More... | |
virtual const Mapping * | as_mapping () const |
Interprets this node to a node of type Mapping. More... | |
virtual RepeatUntilLoop * | as_repeat_until_loop () |
Interprets this node to a node of type RepeatUntilLoop. More... | |
virtual const RepeatUntilLoop * | as_repeat_until_loop () const |
Interprets this node to a node of type RepeatUntilLoop. More... | |
virtual SetInstruction * | as_set_instruction () |
Interprets this node to a node of type SetInstruction. More... | |
virtual const SetInstruction * | as_set_instruction () const |
Interprets this node to a node of type SetInstruction. More... | |
virtual Statement * | as_statement () |
Interprets this node to a node of type Statement. More... | |
virtual const Statement * | as_statement () const |
Interprets this node to a node of type Statement. More... | |
virtual Structured * | as_structured () |
Interprets this node to a node of type Structured. More... | |
virtual const Structured * | as_structured () const |
Interprets this node to a node of type Structured. More... | |
virtual Subcircuit * | as_subcircuit () |
Interprets this node to a node of type Subcircuit. More... | |
virtual const Subcircuit * | as_subcircuit () const |
Interprets this node to a node of type Subcircuit. More... | |
virtual Variable * | as_variable () |
Interprets this node to a node of type Variable. More... | |
virtual const Variable * | as_variable () const |
Interprets this node to a node of type Variable. More... | |
virtual Version * | as_version () |
Interprets this node to a node of type Version. More... | |
virtual const Version * | as_version () const |
Interprets this node to a node of type Version. More... | |
virtual WhileLoop * | as_while_loop () |
Interprets this node to a node of type WhileLoop. More... | |
virtual const WhileLoop * | as_while_loop () const |
Interprets this node to a node of type WhileLoop. More... | |
Static Public Member Functions | |
static std::shared_ptr< Program > | deserialize (const ::tree::cbor::MapReader &map, ::tree::base::IdentifierMap &ids) |
Deserializes the given node. More... | |
![]() | |
static std::shared_ptr< Node > | deserialize (const ::tree::cbor::MapReader &map, ::tree::base::IdentifierMap &ids) |
Deserializes the given node. More... | |
Public Attributes | |
One< Version > | version |
File version. More... | |
cqasm::v1::primitives::Int | num_qubits |
The required qubit register size. More... | |
Maybe< ErrorModel > | error_model |
Error model information. More... | |
Any< Subcircuit > | subcircuits |
The list of subcircuit. More... | |
Any< Mapping > | mappings |
The list of all user-defined mappings after parsing. More... | |
Any< Variable > | variables |
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... | |
A complete program.
Definition at line 2027 of file cqasm-v1-semantic-gen.hpp.
#include <cqasm-v1-semantic-gen.hpp>
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.
|
override |
Registers all reachable nodes with the given PointerMap.
Definition at line 2523 of file cqasm-v1-semantic-gen.cpp.
|
override |
Returns whether this Program
is complete/fully defined.
Definition at line 2535 of file cqasm-v1-semantic-gen.cpp.
|
overridevirtual |
Returns the NodeType
of this node.
Implements cqasm::v1::semantic::Node.
Definition at line 2547 of file cqasm-v1-semantic-gen.cpp.
|
overrideprotectedvirtual |
Helper method for visiting nodes.
Implements cqasm::v1::semantic::Node.
Definition at line 2554 of file cqasm-v1-semantic-gen.cpp.
|
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.
|
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.
Returns a shallow copy of this node.
Implements cqasm::v1::semantic::Node.
Definition at line 2577 of file cqasm-v1-semantic-gen.cpp.
Returns a deep copy of this node.
Implements cqasm::v1::semantic::Node.
Definition at line 2584 of file cqasm-v1-semantic-gen.cpp.
|
overridevirtual |
Value-based equality operator.
Ignores annotations!
Implements cqasm::v1::semantic::Node.
Definition at line 2597 of file cqasm-v1-semantic-gen.cpp.
|
overridevirtual |
Pointer-based equality operator.
Implements cqasm::v1::semantic::Node.
Definition at line 2613 of file cqasm-v1-semantic-gen.cpp.
|
overridevirtual |
Serializes this node to the given map.
Implements cqasm::v1::semantic::Node.
Definition at line 2629 of file cqasm-v1-semantic-gen.cpp.
|
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.
File version.
Definition at line 2033 of file cqasm-v1-semantic-gen.hpp.
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.
Maybe<ErrorModel> cqasm::v1::semantic::Program::error_model |
Error model information.
Definition at line 2043 of file cqasm-v1-semantic-gen.hpp.
Any<Subcircuit> cqasm::v1::semantic::Program::subcircuits |
The list of subcircuit.
Definition at line 2048 of file cqasm-v1-semantic-gen.hpp.
The list of all user-defined mappings after parsing.
Definition at line 2053 of file cqasm-v1-semantic-gen.hpp.
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.
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.