/*
    Copyright (C) 2010 Tomasz Ĺšniatowski, Adam Radziszewski
    Part of the libcorpus2 project

    This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by the Free
Software Foundation; either version 3 of the License, or (at your option)
any later version.

    This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. 

    See the LICENSE.CORPUS2, LICENSE.POLIQARP, COPYING.LESSER and COPYING files for more details.
*/

#ifndef LIBCORPUS2_IO_XCESCOMMON_H
#define LIBCORPUS2_IO_XCESCOMMON_H

#include <libcorpus2/token.h>

namespace Corpus2 {

/**
 * Output the token's XCES XML representation, at the requested indent
 * level. Use -1 to disable indentation.
 */
void token_as_xces_xml(std::ostream& os, const Tagset& tagset,
		const Token& t, int indent, bool output_disamb = false,
		bool sort = false, bool whitespace_info = false);

void token_as_xces_xml_head(std::ostream& os,
		const Token& t, int indent, bool whitespace_info /* false */);

void token_as_xces_xml_body(std::ostream& os, const Tagset& tagset,
		const Token& t, int indent, bool output_disamb /* = false */,
		bool sort /* = false */);
/**
 * Output a xml-encoded version of the given string into the given ostream.
 * The default XML entity substitutions are made: less than, greater than,
 * ampersand, single quote and double quote.
 */
void encode_xml_entities_into(std::ostream& buf, const std::string& input);

/**
 * In-place XML entity encoding.
 * The default XML entity substitutions are made: less than, greater than,
 * ampersand, single quote and double quote.
 */
void encode_xml_entities(std::string &input);

} /* end ns Corpus2 */

#endif // LIBCORPUS2_IO_XCESCOMMON_H