Skip to content

register_manager

BitRegister

Bases: Register

BitRegister manages a (virtual) bit register.

Source code in opensquirrel/register_manager.py
class BitRegister(Register):
    """BitRegister manages a (virtual) bit register."""

    _default_name: str = DEFAULT_BIT_REGISTER_NAME

    def __init__(self, size: int, name: str = _default_name) -> None:
        super().__init__(size, name=name)

QubitRegister

Bases: Register

QubitRegister manages a (virtual) qubit register.

Source code in opensquirrel/register_manager.py
class QubitRegister(Register):
    """QubitRegister manages a (virtual) qubit register."""

    _default_name: str = DEFAULT_QUBIT_REGISTER_NAME

    def __init__(self, size: int, name: str = _default_name) -> None:
        super().__init__(size, name=name)

Register

Register manages a (virtual) register.

Source code in opensquirrel/register_manager.py
class Register:
    """Register manages a (virtual) register."""

    def __init__(
        self,
        size: int,
        name: str,
        virtual_zero_index: int = 0,
    ) -> None:
        self._size = size
        self._name = name
        self._virtual_zero_index = virtual_zero_index

    @property
    def name(self) -> str:
        return self._name

    @property
    def size(self) -> int:
        return self._size

    @property
    def virtual_zero_index(self) -> int:
        return self._virtual_zero_index

    @virtual_zero_index.setter
    def virtual_zero_index(self, value: int) -> None:
        self._virtual_zero_index = value

    def __getitem__(self, index: int) -> Any:
        if abs(index) > self._size:
            msg = f"Index {index} is out of range"
            raise IndexError(msg)
        size = self._size if index < 0 else 0
        return self._virtual_zero_index + index + size

    def __eq__(self, other: Any) -> bool:
        if not isinstance(other, Register):
            return False
        return (
            self.size == other.size and self.name == other.name and self.virtual_zero_index == other.virtual_zero_index
        )

    def __repr__(self) -> str:
        return f"{type(self)}: {self.name}, {self.size}"