'Set default class attributes, set right address if None address is
given.
@param parent: Parent field of this field
@type parent: L{Field}|None
@param name: Name of the field, have to be unique in parent. If it ends
with "[]", end will be replaced with "[new_id]" (eg. "raw[]"
becomes "raw[0]", next will be "raw[1]", and then "raw[2]", etc.)
@type name: str
@param size: Size of the field in bit (can be None, so it
will be computed later)
@type size: int|None
@param address: Address in bit relative to the parent absolute address
@type address: int|None
@param description: Optional string description
@type description: str|None'

def __init__(self, parent, name, size=None, description=None):

    assert issubclass(parent.__class__, Field)
    assert ((size is None) or (0 <= size))
    self._parent = parent
    if (not name):
        raise ValueError('empty    field    name')
    self._name = name
    self._address = parent.nextFieldAddress()
    self._size = size
    self._description = description
