| 1590 | |
| 1591 | |
| 1592 | class FinalModelBalance(fbe.FinalModel): |
| 1593 | __slots__ = "_parent", "_locked", |
| 1594 | |
| 1595 | def __init__(self, buffer, offset): |
| 1596 | super().__init__(buffer, offset) |
| 1597 | self._parent = proto.FinalModelBalance(buffer, 0) |
| 1598 | self._locked = fbe.FinalModelDouble(buffer, 0) |
| 1599 | |
| 1600 | @property |
| 1601 | def parent(self): |
| 1602 | return self._parent |
| 1603 | |
| 1604 | @property |
| 1605 | def locked(self): |
| 1606 | return self._locked |
| 1607 | |
| 1608 | # Get the allocation size |
| 1609 | def fbe_allocation_size(self, fbe_value): |
| 1610 | fbe_result = 0 \ |
| 1611 | + self.parent.fbe_allocation_size(fbe_value) \ |
| 1612 | + self.locked.fbe_allocation_size(fbe_value.locked) \ |
| 1613 | |
| 1614 | return fbe_result |
| 1615 | |
| 1616 | # Get the final type |
| 1617 | @property |
| 1618 | def fbe_type(self): |
| 1619 | return self.TYPE |
| 1620 | |
| 1621 | TYPE = proto.FinalModelBalance.TYPE |
| 1622 | |
| 1623 | # Check if the struct value is valid |
| 1624 | def verify(self): |
| 1625 | self._buffer.shift(self.fbe_offset) |
| 1626 | fbe_result = self.verify_fields() |
| 1627 | self._buffer.unshift(self.fbe_offset) |
| 1628 | return fbe_result |
| 1629 | |
| 1630 | # Check if the struct fields are valid |
| 1631 | def verify_fields(self): |
| 1632 | fbe_current_offset = 0 |
| 1633 | |
| 1634 | self.parent.fbe_offset = fbe_current_offset |
| 1635 | fbe_field_size = self.parent.verify_fields() |
| 1636 | if fbe_field_size == sys.maxsize: |
| 1637 | return sys.maxsize |
| 1638 | fbe_current_offset += fbe_field_size |
| 1639 | |
| 1640 | self.locked.fbe_offset = fbe_current_offset |
| 1641 | fbe_field_size = self.locked.verify() |
| 1642 | if fbe_field_size == sys.maxsize: |
| 1643 | return sys.maxsize |
| 1644 | fbe_current_offset += fbe_field_size |
| 1645 | |
| 1646 | return fbe_current_offset |
| 1647 | |
| 1648 | # Get the struct value |
| 1649 | def get(self, fbe_value=None): |