'Given a format string and whether or not the Column is for an
ASCII table (ascii=None means unspecified, but lean toward binary table
where ambiguous) create an appropriate _BaseColumnFormat instance for
the column\'s format, and determine the appropriate recarray format.
The values of the start and dim keyword arguments are also useful, as
the former is only valid for ASCII tables and the latter only for
BINARY tables.'

@classmethod
def _determine_formats(cls, format, start, dim, ascii):

    if isinstance(format, np.dtype):
        (format, _, _) = _dtype_to_recformat(format)
    if ((ascii is None) and (not isinstance(format, _BaseColumnFormat))):
        (format, recformat) = cls._guess_format(format, start, dim)
    elif ((not ascii) and (not isinstance(format, _BaseColumnFormat))):
        (format, recformat) = cls._convert_format(format, _ColumnFormat)
    elif (ascii and (not isinstance(format, _AsciiColumnFormat))):
        (format, recformat) = cls._convert_format(format, _AsciiColumnFormat)
    else:
        recformat = format.recformat
    return (format, recformat)
