/*************************************************************************
 *
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * Copyright 2000, 2010 Oracle and/or its affiliates.
 *
 * OpenOffice.org - a multi-platform office productivity suite
 *
 * This file is part of OpenOffice.org.
 *
 * OpenOffice.org is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License version 3
 * only, as published by the Free Software Foundation.
 *
 * OpenOffice.org 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 Lesser General Public License version 3 for more details
 * (a copy is included in the LICENSE file that accompanied this code).
 *
 * You should have received a copy of the GNU Lesser General Public License
 * version 3 along with OpenOffice.org.  If not, see
 * <http://www.openoffice.org/license.html>
 * for a copy of the LGPLv3 License.
 *
 ************************************************************************/
#ifndef __com_sun_star_i18n_KParseType_idl__
#define __com_sun_star_i18n_KParseType_idl__

//============================================================================

module com {  module sun {  module star {  module i18n {

//============================================================================

/**
    Constants to specify the type of a parsed token.

    <p> Set by
    <member>XCharacterClassification::parseAnyToken()</member> and
    <member>XCharacterClassification::parsePredefinedToken()</member> in
    <member>ParseResult::TokenType</member>. </p>
 */

published constants KParseType
{
    /// One single character like ! # ; : $ et al.
    const long ONE_SINGLE_CHAR      = 0x00000001;

    // For human .idl readers: <, >, <>, =, <=, >=
    /// A Boolean operator like &lt;, &gt;, &lt;&gt;, =, &lt;=, &gt;=
    const long BOOLEAN              = 0x00000002;

    /// A name matching the conditions passed.
    const long IDENTNAME            = 0x00000004;


    // Hint for human .idl readers: do not get confused about the double
    // quotation marks, they are needed for the unoidl compiler which otherwise
    // gets confused about the single quotation marks.
    /** "A single-quoted name matching the conditions passed ( 'na\'me' )."
        "Dequoted name in <member>ParseResult::DequotedNameOrString</member> ( na'me )." */
    const long SINGLE_QUOTE_NAME    = 0x00000008;

    /** A double-quoted string ( "str\"i""ng" ). Dequoted string in
        <member>ParseResult::DequotedNameOrString</member> ( str"i"ng ). */
    const long DOUBLE_QUOTE_STRING  = 0x00000010;

    /** A number where all digits are ASCII characters.
        Numerical value in <member>ParseResult::Value</member>. */
    const long ASC_NUMBER           = 0x00000020;

    /** A number where at least some digits are Unicode (and maybe
        ASCII) characters. Numerical value inKParseType
        <member>ParseResult::Value</member>. */
    const long UNI_NUMBER           = 0x00000040;

    /** Set (ored) if SINGLE_QUOTE_NAME or DOUBLE_QUOTE_STRING has no
        closing quote. */
    const long MISSING_QUOTE        = 0x40000000;


    // useful combinations

    /// Any ASCII or Unicode number
    const long ANY_NUMBER           = ASC_NUMBER | UNI_NUMBER;
};

//============================================================================
}; }; }; };

#endif
