001    /*
002     * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net
003     * 
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     *      http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    
017    /* $Id: OperatorDictionary.java,v 241d8c4d0dc1 2009/09/04 14:15:03 max $ */
018    
019    package net.sourceforge.jeuclid.elements.support.operatordict;
020    
021    /**
022     * Interface for operator dictionaries.
023     * 
024     * @version $Revision: 241d8c4d0dc1 $
025     */
026    public interface OperatorDictionary {
027    
028        /**
029         * name for VERYVERYTHINMATHSPACE size of math space.
030         */
031        String NAME_VERYVERYTHINMATHSPACE = "veryverythinmathspace";
032    
033        /**
034         * name for VERYTHINMATHSPACE size of math space.
035         */
036        String NAME_VERYTHINMATHSPACE = "verythinmathspace";
037    
038        /**
039         * name for THINMATHSPACE size of math space.
040         */
041        String NAME_THINMATHSPACE = "thinmathspace";
042    
043        /**
044         * name for MEDIUMMATHSPACE size of math space.
045         */
046        String NAME_MEDIUMMATHSPACE = "mediummathspace";
047    
048        /**
049         * name for THICKMATHSPACE size of math space.
050         */
051        String NAME_THICKMATHSPACE = "thickmathspace";
052    
053        /**
054         * name for VERYTHICKMATHSPACE size of math space.
055         */
056        String NAME_VERYTHICKMATHSPACE = "verythickmathspace";
057    
058        /**
059         * name for VERYVERYTHICKMATHSPACE size of math space.
060         */
061        String NAME_VERYVERYTHICKMATHSPACE = "veryverythickmathspace";
062    
063        /**
064         * name for INFINITY size of math space.
065         */
066        String NAME_INFINITY = "infinity";
067    
068        /** Form value for prefix. */
069        String FORM_PREFIX = "prefix";
070    
071        /** form value for infix. */
072        String FORM_INFIX = "infix";
073    
074        /** form value for postfix. */
075        String FORM_POSTFIX = "postfix";
076    
077        /**
078         * This value is returned, when default value of operator attribute doesn't
079         * exist in this dictionary so far.
080         */
081        String VALUE_UNKNOWN = "NULL";
082    
083        /**
084         * Determines default value of the operator attribute.
085         * 
086         * @param operator
087         *            operator character
088         * @param form
089         *            form string
090         * @param attributeName
091         *            name of attribute
092         * @return VALUE_UNKOWN or value from dict.
093         * @throws UnknownAttributeException
094         *             Raised, if wrong attributeName was provided.
095         */
096        String getDefaultAttributeValue(final String operator, final String form,
097                final String attributeName) throws UnknownAttributeException;
098    
099    }