microsoft/qdk

Public

mirrored fromhttps://github.com/microsoft/qdkAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
minestarks/circuit-magic

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

source/npm/qsharp/src/data-structures/register.ts

52lines · modecode

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT license.
3
4/**
5 * Type of register.
6 */
7export enum RegisterType {
8 Qubit,
9 Classical,
10}
11
12/**
13 * Represents a register resource.
14 */
15export interface Register {
16 /** Qubit register ID. */
17 qubit: number;
18 /** Classical register ID. If present, register is classical register. */
19 result?: number;
20}
21
22/**
23 * Runtime check: is this a valid Register?
24 */
25export function isRegister(obj: any): obj is Register {
26 return (
27 obj &&
28 typeof obj === "object" &&
29 typeof obj.qubit === "number" &&
30 // result is optional, but if present must be a number
31 (obj.result === undefined || typeof obj.result === "number")
32 );
33}
34
35/**
36 * Rendering data for qubit register.
37 */
38export interface RegisterRenderData {
39 /** Type of register. */
40 type: RegisterType;
41 /** y coord of register */
42 y: number;
43 /** Nested classical registers attached to quantum register. */
44 children?: RegisterRenderData[];
45}
46
47/**
48 * Mapping from qubit IDs to their register render data.
49 */
50export interface RegisterMap {
51 [id: number]: RegisterRenderData;
52}