Source code for calpack.models.fields.BooleanFields

"""
"""

__all__ = [
    'FlagField', 'BoolField'
]

import ctypes

from calpack.models.fields.Fields import Field

[docs]class FlagField(Field): """ A custom field for handling single bit 'flags'. :param bool default_val: the default value of the field (default False) """ c_type = ctypes.c_uint8 def __init__(self, default_val=False): super(FlagField, self).__init__(default_val)
[docs] def c_to_py(self, c_field):
return bool(c_field)
[docs] def py_to_c(self, val): if not isinstance(val, FlagField) and not isinstance(val, bool): raise TypeError("Must be of type `FlagField` or `bool`")
return int(val)
[docs] def create_field_c_tuple(self):
return (self.field_name, self.c_type, 1)
[docs]class BoolField(Field): """ A custom field for handling Boolean types """ c_type = ctypes.c_bool def __init__(self, default_val=False): super(BoolField, self).__init__(default_val) self.bit_len = ctypes.sizeof(self.c_type)
[docs] def py_to_c(self, val): if not isinstance(val, bool) and not isinstance(val, BoolField): raise TypeError("Must be of type `bool` or `BoolField`!")
return super(BoolField, self).py_to_c(val)