AutoReplacer
Extends:
The AutoReplacer is a compiler engine which uses engine.isAvailable in order to determine which commands need to be replaced/decomposed/compiled further. The loaded setup is used to find decomposition rules appropriate for each command (e.g., setups.default).
Constructor Summary
Public Constructor | ||
public |
constructor(decompositionRuleSet: DecompositionRuleSet, decomposition_chooser: function) |
Member Summary
Public Members | ||
public |
|
Private Members | ||
private |
|
Method Summary
Public Methods | ||
public |
receive(commandList: *) |
Private Methods | ||
private |
_processCommand(cmd: Command) Check whether a command cmd can be handled by further engines and, if not, replace it using the decomposition rules loaded with the setup (e.g., setups.default). |
Inherited Summary
From class BasicEngine | ||
public |
|
|
public |
allocateQubit(dirty: boolean): Qureg Return a new qubit as a list containing 1 qubit object (quantum register of size 1). |
|
public |
allocateQureg(n: number): Qureg Allocate n qubits and return them as a quantum register, which is a list of qubit objects. |
|
public |
deallocateQubit(qubit: BasicQubit) Deallocate a qubit (and sends the deallocation command down the pipeline). |
|
public |
isAvailable(cmd: Command): boolean Default implementation of isAvailable: Ask the next engine whether a command is available, i.e., whether it can be executed by the next engine(s). |
|
public |
isMetaTagSupported(metaTag: function): boolean Check if there is a compiler engine handling the meta tag |
|
public |
receive() |
|
public |
Forward the list of commands to the next engine in the pipeline. |
Public Constructors
public constructor(decompositionRuleSet: DecompositionRuleSet, decomposition_chooser: function) source
Override:
BasicEngine#constructorParams:
Name | Type | Attribute | Description |
decompositionRuleSet | DecompositionRuleSet | ||
decomposition_chooser | function |
|
A function which, given the Command to decompose and a list of potential Decomposition objects, determines (and then returns) the 'best' decomposition. The default decomposition chooser simply returns the first list element, i.e., calling |
Example:
repl = new AutoReplacer()
Amounts to
function decomposition_chooser(cmd, decomp_list) {
return decomp_list[0]
}
const repl = new AutoReplacer(decomposition_chooser)
Public Members
public decompositionRuleSet: * source
Private Members
private _decomp_chooser: * source
Public Methods
public receive(commandList: *) source
Override:
BasicEngine#receiveParams:
Name | Type | Attribute | Description |
commandList | * |
Private Methods
private _processCommand(cmd: Command) source
Check whether a command cmd can be handled by further engines and, if not, replace it using the decomposition rules loaded with the setup (e.g., setups.default).
Params:
Name | Type | Attribute | Description |
cmd | Command | Command to process. |
Throw:
* |
Exception if no replacement is available in the loaded setup. |