/*
* -----------------------------------------------------------------------
* Copyright © 2013-2015 Meno Hochschild, <http://www.menodata.de/>
* -----------------------------------------------------------------------
* This file (StdCalendarElement.java) is part of project Time4J.
*
* Time4J is free software: You can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation, either version 2.1 of the License, or
* (at your option) any later version.
*
* Time4J is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Time4J. If not, see <http://www.gnu.org/licenses/>.
* -----------------------------------------------------------------------
*/
package net.time4j.calendar;
import net.time4j.engine.ChronoElement;
import net.time4j.engine.ChronoOperator;
/**
* <p>Extends a chronological element by some standard ways of
* manipulation. </p>
*
* @param <V> generic type of element values
* @param <T> generic type of target entity an operator is applied to
* @author Meno Hochschild
* @since 3.5/4.3
*/
/*[deutsch]
* <p>Erweitert ein chronologisches Element um diverse
* Standardmanipulationen. </p>
*
* @param <V> generic type of element values
* @param <T> generic type of target entity an operator is applied to
* @author Meno Hochschild
* @since 3.5/4.3
*/
public interface StdCalendarElement<V, T>
extends ChronoElement<V> {
//~ Methoden ----------------------------------------------------------
/**
* <p>Sets any local entity to the minimum of this element. </p>
*
* @return ChronoOperator
* @since 3.5/4.3
*/
/*[deutsch]
* <p>Setzt eine beliebige Entität auf das Elementminimum. </p>
*
* @return ChronoOperator
* @since 3.5/4.3
*/
ChronoOperator<T> minimized();
/**
* <p>Sets any local entity to the maximum of this element. </p>
*
* @return ChronoOperator
* @since 3.5/4.3
*/
/*[deutsch]
* <p>Setzt eine beliebige Entität auf das Elementmaximum. </p>
*
* @return ChronoOperator
* @since 3.5/4.3
*/
ChronoOperator<T> maximized();
/**
* <p>Adjusts any local entity such that this element gets the previous value. </p>
*
* <p>The operator throws a {@code ChronoException} if there is no
* base unit available for this element. </p>
*
* @return ChronoOperator
* @since 3.5/4.3
*/
/*[deutsch]
* <p>Passt eine beliebige Entität so an, daß dieses Element
* den vorherigen Wert bekommt. </p>
*
* <p>Der Operator wirft eine {@code ChronoException}, wenn er auf einen
* Zeitpunkt angewandt wird, dessen Zeitachse keine Basiseinheit zu diesem
* Element kennt. </p>
*
* @return ChronoOperator
* @since 3.5/4.3
*/
ChronoOperator<T> decremented();
/**
* <p>Adjusts any local entity such that this element gets the next value. </p>
*
* <p>The operator throws a {@code ChronoException} if there is no
* base unit available for this element. </p>
*
* @return ChronoOperator
* @since 3.5/4.3
*/
/*[deutsch]
* <p>Passt eine beliebige Entität so an, daß dieses Element
* den nächsten Wert bekommt. </p>
*
* <p>Der Operator wirft eine {@code ChronoException}, wenn er auf einen
* Zeitpunkt angewandt wird, dessen Zeitachse keine Basiseinheit zu diesem
* Element kennt. </p>
*
* @return ChronoOperator
* @since 3.5/4.3
*/
ChronoOperator<T> incremented();
/**
* <p>Rounds down an entity by setting all child elements to minimum. </p>
*
* @return ChronoOperator
* @since 3.5/4.3
*/
/*[deutsch]
* <p>Rundet eine Entität ab, indem alle Kindselemente dieses
* Elements auf ihr Minimum gesetzt werden. </p>
*
* @return ChronoOperator
* @since 3.5/4.3
*/
ChronoOperator<T> atFloor();
/**
* <p>Rounds up an entity by setting all child elements to maximum. </p>
*
* @return ChronoOperator
* @since 3.5/4.3
*/
/*[deutsch]
* <p>Rundet eine Entität auf, indem alle Kindselemente dieses
* Elements auf ihr Maximum gesetzt werden. </p>
*
* @return ChronoOperator
* @since 3.5/4.3
*/
ChronoOperator<T> atCeiling();
}