001/**
002 * StructureStrategy.java
003 * 
004 * Copyright (c) 2004-2012, Nicole C. Tedesco. All rights reserved.
005 * 
006 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
007 * use this file except in compliance with the License. You may obtain a copy of
008 * the License at:
009 * 
010 * http://www.apache.org/licenses/LICENSE-2.0
011 * 
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
014 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
015 * License for the specific language governing permissions and limitations under
016 * the License.
017 */
018
019package net.sf.jaccumulator;
020
021/**
022 * General structure type
023 * 
024 * @since JAccumulator 4.0
025 * @author Nicole Tedesco (<a
026 *         href="mailto:Nicole@NicoleTedesco.com">Nicole@NicoleTedesco.com</a>)
027 */
028public enum StructureStrategy
029{
030    /**
031     * No more is known or can be said about this structure other than it is, at
032     * the most general level, an algebraic structure
033     */
034    ALGEBRAIC,
035
036    /**
037     * A bit sequence, or tuple, such as a system-implemented scalar {@code int}
038     */
039    BITS,
040
041    /**
042     * The empty set, {@code null} or {@code void}. Note that the empty set is a
043     * member of <i>every</i> set.
044     */
045    EMPTY,
046
047    /**
048     * A functional mapping between elements of one structure to elements of
049     * another (element indirection)
050     */
051    MAP,
052
053    /**
054     * A queue, stack or stream structure
055     */
056    QUEUE,
057
058    /**
059     * No more is known or can be said about this structure other than it is, at
060     * the most general level, a set
061     */
062    SET,
063
064    /**
065     * Exactly one, and only one element
066     */
067    SINGLETON,
068
069    /**
070     * A generalized sequence, or <b>tuple</b>
071     */
072    TUPLE,
073
074    /**
075     * Not enough is known about this structure
076     */
077    UNKNOWN,
078
079    ;
080}