Return (name, format, type) for field.

        type.popValue() and type.yieldArgs() must be implemented.

def _parseDefinition(typeDef, name, len=1, reader=None, writer=None):
        """ Return (name, format, type) for field.

        type.popValue() and type.yieldArgs() must be implemented.

        """
        if isinstance(typeDef, Structure):
            return (name, typeDef.fmt, typeDef)

        if len != 1:
            size = struct.calcsize(typeDef)
            if typeDef not in "xspP":
                typeDef = 's'
            typeDef = str(len * size) + typeDef

        fmtChar = typeDef[-1:]

        if fmtChar == 'x':
            typeObj = Structure.skipType
        else:
            typeObj = _TypeWriter(Structure.defaults[fmtChar], reader, writer)

        return (name, typeDef, typeObj)