Coverage for hdl_registers/constant/integer_constant.py: 100%
17 statements
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-29 06:41 +0000
« prev ^ index » next coverage.py v7.8.0, created at 2025-04-29 06:41 +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 """
15 Represent an integer constant.
16 See :ref:`constant_integer` for details.
17 """
19 def __init__(self, name: str, value: int, description: str = "") -> None:
20 """
21 Arguments:
22 name: The name of the constant.
23 value: The constant value.
24 description: Textual description for the constant.
25 """
26 self.name = name
27 self.description = "" if description is None else description
29 self._value = 0
30 # Assign self._value via setter
31 self.value = value
33 @property
34 def value(self) -> int:
35 """
36 Getter for value.
37 """
38 return self._value
40 @value.setter
41 def value(self, value: int) -> None:
42 """
43 Setter for value that performs sanity checks.
44 """
45 if not isinstance(value, int):
46 raise TypeError(
47 f'Constant "{self.name}" has invalid data type "{type(value)}". Value: "{value}".'
48 )
50 self._value = value
52 def __repr__(self) -> str:
53 return f"""{self.__class__.__name__}(\
54name={self.name},\
55value={self.value},\
56description={self.description},\
57)"""