Source code for qlazy.CMem

# -*- coding: utf-8 -*-
""" Classical Memory """
import ctypes

[docs]class CMem(ctypes.Structure): """ Classical Memory Attributes ---------- cmem_num : int number of the classical register (classical memory size). bit_array : list (int) bit array of classical memory. """ _fields_ = [ ('cmem_num', ctypes.c_int), ('bit_array', ctypes.c_void_p), ] def __new__(cls, cmem_num, **kwargs): """ Parameters ---------- cmem_num : int number of the classical register. Returns ------- cmem : instance (CMem) """ obj = cmem_init(cmem_num) cmem = ctypes.cast(obj.value, ctypes.POINTER(cls)).contents return cmem def __str__(self): return str(self.get_bits()) @property def bits(self): """ bit list of classical memory. """ return self.get_bits()
[docs] def clone(self): """ get the copy of the classical memory. Parameters ---------- None Returns ------- cmem : instance of CMem copy of the original classical memory. """ obj = cmem_copy(self) cmem = ctypes.cast(obj.value, ctypes.POINTER(self.__class__)).contents return cmem
[docs] def get_bits(self): """ get bit list of the classical memory. Parameters ---------- None Returns ------- bits : numpy.ndarray (int) bits array of the classical memory """ bits = cmem_get_bits(self) return bits
[docs] def set_bits(self, bits): """ set bit list to the classical memory. Parameters ---------- bits : list bits array of the classical memory Returns ------- None """ cmem_set_bits(self, bits)
def __del__(self): cmem_free(self)
# c-library for qstate from qlazy.lib.cmem_c import (cmem_init, cmem_copy, cmem_get_bits, cmem_set_bits, cmem_free)