001/** 002 * SealedAlgebraicStructure.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"); 007 * you may not use this file except in compliance with the License. 008 * You may obtain a copy of 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, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 019package net.sf.jaccumulator; 020 021import java.util.Collection; 022 023/** 024 * A read-only algebraic {@link AlgebraicStructure structure} 025 * 026 * @since JAccumulator 4.0 027 * @author Nicole Tedesco (<a 028 * href="mailto:Nicole@NicoleTedesco.com">Nicole@NicoleTedesco.com</a>) 029 */ 030public interface SealedAlgebraicStructure extends StructureProperties 031{ 032 /** 033 * @return the general semantic interpretation strategy of the configuration 034 * of elements in this structure 035 */ 036 public Domain getDomain(); 037 038 /** 039 * @return 040 * a lemma defining the general implementation approach for this 041 * structure 042 */ 043 public StructureStrategy getStructureStrategy(); 044 045 /** 046 * Returns the number of elements in this algebraic structure as a 047 * {@code long} scalar. If the structure contains more than 048 * {@link Long#MAX_VALUE} elements, returns {@code Long.MAX_VALUE}. 049 * 050 * @return the number of elements in this algebraic structure as a 051 * {@code long} scalar 052 * @see Collection#size() 053 * @see #size() 054 */ 055 public long longSize(); 056 057 /** 058 * Returns the number of elements in this algebraic structure. If the 059 * structure contains more than {@link Integer#MAX_VALUE } elements, returns 060 * {@code Integer.MAX_VALUE}. 061 * 062 * @return the number of elements in this algebraic structure 063 * 064 * @see Collection#size() 065 */ 066 public int size(); 067}