/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2011, Open Source Geospatial Foundation (OSGeo)
* (C) 2005 Open Geospatial Consortium Inc.
*
* All Rights Reserved. http://www.opengis.org/legal/
*/
package org.opengis.filter.expression;
/**
* <p>
* Marker interface indicating that that the function return value can change
* during a single data access operation even if the argument values provided to
* it remain constant
* </p>
* <p>
* Very few functions are truly volatile, one example being random(), whose
* value is going to change over each invocation, even during the same feature
* collection filtering
* </p>
* <p>
* Functions whose value changes over time but not within the same feature
* collection filtering are considered to be <em>stable</em> and as such their
* result can be considered a constant during the single data access operation
* </p>
* <p>
* GeoTools will try to optimize out the stable functions and replace them with
* a constant that can be easily encoded in whatever native filtering mechanism
* the datastores have
* </p>
* <p>
* Given the vast majority of function are <em>stable</em> by the above
* definition only the fews that aren't suitable for constant replacement during
* a single run against a feature collection should be marked as
* <em>volatile</em>
*
* @author Andrea Aime - GeoSolutions
*
* @source $URL: http://svn.osgeo.org/geotools/trunk/modules/library/opengis/src/main/java/org/opengis/filter/expression/VolatileFunction.java $
*/
public interface VolatileFunction extends Function {
}