package org.bytedeco.javacpp.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.bytedeco.javacpp.tools.Generator; /** * An annotation indicating that a method should behave like a value getter. * However, a pair of methods named {@code get()} and {@code put()}, where the * number of parameters are either equal, in the case of arrays, or differs by one * where the type of the extra parameter is the same as the return value of the other, * and the remaining return value types are {@code void} or of the enclosing class, * are recognized as a value getter/setter pair even without annotation. This behavior * can be changed by annotating the methods with the {@link Function} annotation. * <p> * A value getter either needs to return a value or accept a primitive array * as argument. The value returned is assumed to come from pointer dereference, * but anything that follows the same syntax as pointer dereferencing could * potential work with this annotation. For getters with a return value, all * arguments are considered as indices to access a value array. * * @see Generator * * @author Samuel Audet */ @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.METHOD}) public @interface ValueGetter { }