/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 *************************************************************/



#ifndef __com_sun_star_sheet_FormulaMapGroup_idl__
#define __com_sun_star_sheet_FormulaMapGroup_idl__

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

module com {  module sun {  module star {  module sheet {

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

/** Constants of bit masks used with
    <member>XFormurmulaOpCodeMapper::getAvailableMappings</member> to
    specify for which group of symbols the mappings are to be obtained.

    If no bit is set, a sequence of special mappings is returned in the
    order that is defined by <type>FormulaMapGroupSpecialOffset</type>.
    Note that the special group and other groups are mutual exclusive.
 */
constants FormulaMapGroup
{
    /** Group of op-codes without a string symbol.

        @see FormulaMapGroupSpecialOffset
      */
    const long SPECIAL            = 0;

    /** Separators and parentheses */
    const long SEPARATORS         = 0x00000001;

    /** Separators and parentheses for constant arrays */
    const long ARRAY_SEPARATORS   = 0x00000002;

    /** Unary operators */
    const long UNARY_OPERATORS    = 0x00000004;

    /** Binary operators */
    const long BINARY_OPERATORS   = 0x00000008;

    /** Functions */
    const long FUNCTIONS          = 0x00000010;

    /** All groups except SPECIAL */
    const long ALL_EXCEPT_SPECIAL = 0x7fffffff;
};

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

}; }; }; };

#endif

