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

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

23 

24 self._value = 0 

25 # Assign self._value via setter 

26 self.value = value 

27 

28 @property 

29 def value(self) -> int: 

30 """ 

31 Getter for value. 

32 """ 

33 return self._value 

34 

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 ) 

44 

45 self._value = value 

46 

47 def __repr__(self) -> str: 

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

49name={self.name},\ 

50value={self.value},\ 

51description={self.description},\ 

52)"""