'Initialize the header Column objects from the table ``lines``.
Based on the previously set Header attributes find or create the column names.
Sets ``self.cols`` with the list of Columns.
Parameters
lines : list
List of table lines'

def get_cols(self, lines):

    header_lines = self.process_lines(lines)
    header_vals = [vals for vals in self.splitter(header_lines)]
    if (len(header_vals) == 0):
        raise ValueError('At    least    one    header    line    beginning    and    ending    with    delimiter    required')
    elif (len(header_vals) > 4):
        raise ValueError('More    than    four    header    lines    were    found')
    cols = []
    start = 1
    for (i, name) in enumerate(header_vals[0]):
        col = core.Column(name=name.strip('    -'))
        col.start = start
        col.end = (start + len(name))
        if (len(header_vals) > 1):
            col.raw_type = header_vals[1][i].strip('    -')
            col.type = self.get_col_type(col)
        if (len(header_vals) > 2):
            col.unit = (header_vals[2][i].strip() or None)
        if (len(header_vals) > 3):
            null = header_vals[3][i].strip()
            fillval = ('' if issubclass(col.type, core.StrType) else '0')
            self.data.fill_values.append((null, fillval, col.name))
        start = (col.end + 1)
        cols.append(col)
        if (self.ipac_definition == 'right'):
            col.start -= 1
        elif (self.ipac_definition == 'left'):
            col.end += 1
    self.names = [x.name for x in cols]
    self.cols = cols
