Source code for avl._core.int

# Copyright 2024 Apheleia
#
# Description:
# Apheleia Verification Library Variable Class

from __future__ import annotations

from collections.abc import Callable
from typing import Any

from .uint import Uint
from .var import Var


[docs] class Int(Uint):
[docs] def __init__( self, name: str, value: int, auto_random: bool = True, fmt: Callable[..., int] = str, width: int = 32 ) -> None: """ Initialize an instance of the class. :param name: The name of the instance. :type name: str :param value: The value to be assigned to the instance. :type value: int :param auto_random: Flag to enable automatic randomization, defaults to True. :type auto_random: bool, optional :param fmt: The format to be used, defaults to str. :type fmt: function, optional :param width: The width of the variable in bits, defaults to 32. :type width: int, optional :raises ValueError: If the width is not a positive integer. """ super().__init__(name, value, auto_random=auto_random, fmt=fmt, width=width)
def _cast_(self, other: Any) -> int: """ Cast the value to the appropriate type based on the width of the variable. :param other: The value to be cast. :type other: Any :return: The casted value. :rtype: int """ v = other.value if isinstance(other, Var) else other (_min_, _max_) = self._range_() return int((v - _min_) % (1 << self.width)) + _min_ def _range_(self) -> tuple[int, int]: """ Get the range of values that can be represented by this variable. :return: A tuple containing the minimum and maximum values. :rtype: tuple[int, int] """ return (-(1 << (self.width - 1)), (1 << (self.width - 1)) - 1)
[docs] class Int8(Int):
[docs] def __init__( self, name: str, value: int, auto_random: bool = True, fmt: Callable[..., int] = str ) -> None: """ Initialize an instance of the class. :param name: The name of the instance. :type name: str :param value: The value to be assigned to the instance. :type value: int :param auto_random: Flag to enable automatic randomization, defaults to True. :type auto_random: bool, optional :param fmt: The format to be used, defaults to str. :type fmt: function, optional """ super().__init__(name, value, auto_random=auto_random, fmt=fmt, width=8)
def _wrap_(self, result : Any) -> Int8: """ Wrap the result in an avl_logic instance. :param result: The result to be wrapped. :type result: Any :return: An instance of avl_logic with the result. :rtype: avl_logic """ return type(self)(self.name, result, auto_random=self._auto_random_, fmt=self._fmt_)
[docs] class Int16(Int):
[docs] def __init__( self, name: str, value: int, auto_random: bool = True, fmt: Callable[..., int] = str ) -> None: """ Initialize an instance of the class. :param name: The name of the instance. :type name: str :param value: The value to be assigned to the instance. :type value: int :param auto_random: Flag to enable automatic randomization, defaults to True. :type auto_random: bool, optional :param fmt: The format to be used, defaults to str. :type fmt: function, optional """ super().__init__(name, value, auto_random=auto_random, fmt=fmt, width=16)
def _wrap_(self, result : Any) -> Int16: """ Wrap the result in an avl_logic instance. :param result: The result to be wrapped. :type result: Any :return: An instance of avl_logic with the result. :rtype: avl_logic """ return type(self)(self.name, result, auto_random=self._auto_random_, fmt=self._fmt_)
[docs] class Int32(Int):
[docs] def __init__( self, name: str, value: int, auto_random: bool = True, fmt: Callable[..., int] = str ) -> None: """ Initialize an instance of the class. :param name: The name of the instance. :type name: str :param value: The value to be assigned to the instance. :type value: int :param auto_random: Flag to enable automatic randomization, defaults to True. :type auto_random: bool, optional :param fmt: The format to be used, defaults to str. :type fmt: function, optional """ super().__init__(name, value, auto_random=auto_random, fmt=fmt, width=32)
def _wrap_(self, result : Any) -> Int32: """ Wrap the result in an avl_logic instance. :param result: The result to be wrapped. :type result: Any :return: An instance of avl_logic with the result. :rtype: avl_logic """ return type(self)(self.name, result, auto_random=self._auto_random_, fmt=self._fmt_)
[docs] class Int64(Int):
[docs] def __init__( self, name: str, value: int, auto_random: bool = True, fmt: Callable[..., int] = str ) -> None: """ Initialize an instance of the class. :param name: The name of the instance. :type name: str :param value: The value to be assigned to the instance. :type value: int :param auto_random: Flag to enable automatic randomization, defaults to True. :type auto_random: bool, optional :param fmt: The format to be used, defaults to str. :type fmt: function, optional """ super().__init__(name, value, auto_random=auto_random, fmt=fmt, width=64)
def _wrap_(self, result : Any) -> Int64: """ Wrap the result in an avl_logic instance. :param result: The result to be wrapped. :type result: Any :return: An instance of avl_logic with the result. :rtype: avl_logic """ return type(self)(self.name, result, auto_random=self._auto_random_, fmt=self._fmt_)
Byte = Int8 __all__ = ["Int", "Int8", "Int16", "Int32", "Int64", "Byte"]