microsoft/qdk

Public

mirrored from https://github.com/microsoft/qdkAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
logo

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 · modepreview

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.

/**
 * Type of register.
 */
export enum RegisterType {
  Qubit,
  Classical,
}

/**
 * Represents a register resource.
 */
export interface Register {
  /** Qubit register ID. */
  qubit: number;
  /** Classical register ID. If present, register is classical register. */
  result?: number;
}

/**
 * Runtime check: is this a valid Register?
 */
export function isRegister(obj: any): obj is Register {
  return (
    obj &&
    typeof obj === "object" &&
    typeof obj.qubit === "number" &&
    // result is optional, but if present must be a number
    (obj.result === undefined || typeof obj.result === "number")
  );
}

/**
 * Rendering data for qubit register.
 */
export interface RegisterRenderData {
  /** Type of register. */
  type: RegisterType;
  /** y coord of register */
  y: number;
  /** Nested classical registers attached to quantum register. */
  children?: RegisterRenderData[];
}

/**
 * Mapping from qubit IDs to their register render data.
 */
export interface RegisterMap {
  [id: number]: RegisterRenderData;
}