Coverage for /home/jenkins/workspace/NDS/Zserio/NDS_ZSERIO-linux-build/compiler/extensions/python/runtime/src/zserio/builtin.py: 100%

9 statements  

« prev     ^ index     » next       coverage.py v6.5.0, created at 2023-12-13 15:12 +0000

1""" 

2The module provides implementation of zserio built-in operators. 

3""" 

4 

5import typing 

6 

7def isset(bitmask_value: typing.Any, required_mask: typing.Any) -> bool: 

8 """ 

9 Checks whether the required_mask is set within the bitmask_value. 

10 

11 This method implements zserio built-in operator isset. 

12 

13 :param bitmask_value: Bitmask value to check. 

14 :param required_mask: Mask to use. 

15 :returns: True when the required_mask is set within the bitmask_value, False otherwise. 

16 """ 

17 

18 return (bitmask_value & required_mask) == required_mask 

19 

20def numbits(num_values: int) -> int: 

21 """ 

22 Gets the minimum number of bits required to encode given number of different values. 

23 

24 This method implements zserio built-in operator numBits. 

25 

26 :param num_values: The number of different values from which to calculate number of bits. 

27 :returns: Number of bits required to encode num_values different values. 

28 """ 

29 

30 if num_values == 0: 

31 return 0 

32 if num_values == 1: 

33 return 1 

34 

35 return (num_values - 1).bit_length()