Coverage for hdl_registers/constant/integer_constant.py: 100%
17 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-12 11:11 +0000
« prev ^ index » next coverage.py v7.6.12, created at 2025-03-12 11:11 +0000
1# --------------------------------------------------------------------------------------------------
2# Copyright (c) Lukas Vik. All rights reserved.
3#
4# This file is part of the hdl-registers project, an HDL register generator fast enough to run
5# in real time.
6# https://hdl-registers.com
7# https://github.com/hdl-registers/hdl-registers
8# --------------------------------------------------------------------------------------------------
10from .constant import Constant
13class IntegerConstant(Constant):
14 def __init__(self, name: str, value: int, description: str = "") -> None:
15 """
16 Arguments:
17 name: The name of the constant.
18 value: The constant value.
19 description: Textual description for the constant.
20 """
21 self.name = name
22 self.description = "" if description is None else description
24 self._value = 0
25 # Assign self._value via setter
26 self.value = value
28 @property
29 def value(self) -> int:
30 """
31 Getter for value.
32 """
33 return self._value
35 @value.setter
36 def value(self, value: int) -> None:
37 """
38 Setter for value that performs sanity checks.
39 """
40 if not isinstance(value, int):
41 raise TypeError(
42 f'Constant "{self.name}" has invalid data type "{type(value)}". Value: "{value}".'
43 )
45 self._value = value
47 def __repr__(self) -> str:
48 return f"""{self.__class__.__name__}(\
49name={self.name},\
50value={self.value},\
51description={self.description},\
52)"""