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

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# -------------------------------------------------------------------------------------------------- 

9 

10from .constant import Constant 

11 

12 

13class IntegerConstant(Constant): 

14 """ 

15 Represent an integer constant. 

16 See :ref:`constant_integer` for details. 

17 """ 

18 

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 

28 

29 self._value = 0 

30 # Assign self._value via setter 

31 self.value = value 

32 

33 @property 

34 def value(self) -> int: 

35 """ 

36 Getter for value. 

37 """ 

38 return self._value 

39 

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 ) 

49 

50 self._value = value 

51 

52 def __repr__(self) -> str: 

53 return f"""{self.__class__.__name__}(\ 

54name={self.name},\ 

55value={self.value},\ 

56description={self.description},\ 

57)"""