
/*
This file is part of Highlight.

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

Highlight 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
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Highlight.  If not, see <http://www.gnu.org/licenses/>.
*/


#ifndef ENUMS_H
#define ENUMS_H

namespace highlight
{
/** states which may occour during input file parsing
    TODO Clean up!
*/
enum State {
    STANDARD=0,
    STRING,
    NUMBER,
    SL_COMMENT,
    ML_COMMENT,
    ESC_CHAR,
    DIRECTIVE,
    DIRECTIVE_STRING,
    LINENUMBER,
    SYMBOL,
    STRING_INTERPOLATION,

    // don't use constants > KEYWORD as array indices!
    KEYWORD,
    STRING_END,
    NUMBER_END,
    SL_COMMENT_END,
    ML_COMMENT_END,
    ESC_CHAR_END,
    DIRECTIVE_END,
    SYMBOL_END,
    STRING_INTERPOLATION_END,
    KEYWORD_END,
    IDENTIFIER_BEGIN,
    IDENTIFIER_END,
    EMBEDDED_CODE_BEGIN,
    EMBEDDED_CODE_END,

    _UNKNOWN=100,
    _REJECT,
    _EOL,
    _EOF,
    _WS
} ;

/** Parser return values*/
enum ParseError {
    PARSE_OK,
    BAD_INPUT=1,
    BAD_OUTPUT=2,
    BAD_STYLE=4,
    BAD_BINARY=8
};

/** line wrapping modes*/
enum WrapMode {
    WRAP_DISABLED,
    WRAP_SIMPLE,
    WRAP_DEFAULT
};

/** language definition loading results*/
enum LoadResult {
    LOAD_OK,
    LOAD_FAILED,
    LOAD_FAILED_REGEX,
    LOAD_FAILED_LUA
};

/** output formats */
enum OutputType {
    HTML,
    XHTML,
    TEX,
    LATEX,
    RTF,
    ESC_ANSI,
    ESC_XTERM256,
    HTML32_UNUSED,
    SVG,
    BBCODE,
    PANGO,
    ODTFLAT,
    ESC_TRUECOLOR
};

}

#endif
