@abc.abstractmethod<EOL><INDENT>def write_header(self, out_strm, delim, f1_num_fields, f2_num_fields,<EOL>f1_header=None, f2_header=None, missing_val=None):<DEDENT>
mm = f1_header != f2_header<EOL>one_none = f1_header is None or f2_header is None<EOL>if mm and one_none and missing_val is None:<EOL><INDENT>raise InvalidHeaderError("<STR_LIT>" +<EOL>"<STR_LIT>" +<EOL>"<STR_LIT>" +<EOL>"<STR_LIT>")<EOL><DEDENT>if f1_header is not None and f2_header is not None:<EOL><INDENT>out_strm.write(delim.join(f1_header) + delim +<EOL>delim.join(f2_header) + "<STR_LIT:\n>")<EOL><DEDENT>elif f1_header is None and f2_header is not None:<EOL><INDENT>dummy_h = f1_num_fields * [missing_val]<EOL>out_strm.write(delim.join(dummy_h) + delim +<EOL>delim.join(f2_header) + "<STR_LIT:\n>")<EOL><DEDENT>elif f1_header is not None and f2_header is None:<EOL><INDENT>dummy_h = f2_num_fields * [missing_val]<EOL>out_strm.write(delim.join(f1_header) + delim +<EOL>delim.join(dummy_h) + "<STR_LIT:\n>")<EOL><DEDENT>
Write the header for a joined file. If headers are provided for one or more
of the input files, then a header is generated for the output file.
Otherwise, this does not output anything.

:param out_strm: write to this stream
:param delim:
:param f1_num_fields: the number of columns in the first file
:param f2_num_fields: the number of columns in the second file
:param f1_header:
:param f2_header:
:param missing_val: