001/**
002 * Scalar.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.scalars;
020
021import net.sf.jaccumulator.booleans.BooleanValue;
022import net.sf.jaccumulator.bytes.ByteValue;
023import net.sf.jaccumulator.characters.CharacterValue;
024import net.sf.jaccumulator.doubles.DoubleValue;
025import net.sf.jaccumulator.floats.FloatValue;
026import net.sf.jaccumulator.integers.IntegerValue;
027import net.sf.jaccumulator.longs.LongValue;
028import net.sf.jaccumulator.shorts.ShortValue;
029
030/**
031 * Read and write operations for all system supported "scalar" values, or binary
032 * vectors optimized for processing and generally participate in arithmetic
033 * operators supported by the host programming language
034 * 
035 * @param <SCALAR>
036 *        this value type (used to facilitate operation chaining on write
037 *        operations)
038 * @since JAccumulator 4.0
039 * @author Nicole Tedesco (<a
040 *         href="mailto:Nicole@NicoleTedesco.com">Nicole@NicoleTedesco.com</a>)
041 */
042public interface Scalar<SCALAR extends Scalar<SCALAR>>
043    extends
044        ScalarDomain<SCALAR>,
045        ScalarInductor<SCALAR>,
046        SealedScalar<SCALAR>,
047        MutableScalar<SCALAR>,
048        BooleanValue<SCALAR>,
049        ByteValue<SCALAR>,
050        CharacterValue<SCALAR>,
051        DoubleValue<SCALAR>,
052        FloatValue<SCALAR>,
053        IntegerValue<SCALAR>,
054        LongValue<SCALAR>,
055        ShortValue<SCALAR>
056{
057}