package org.checkerframework.checker.units;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.AnnotationMirror;
import org.checkerframework.framework.type.AnnotatedTypeMirror;
/*>>>
import org.checkerframework.checker.nullness.qual.Nullable;
*/
/** Interface that is used to specify the relation between units. */
public interface UnitsRelations {
/**
* Initialize the object. Needs to be called before any other method.
*
* @param env the ProcessingEnvironment to use
* @return a reference to "this"
*/
UnitsRelations init(ProcessingEnvironment env);
/**
* Called for the multiplication of type lht and rht.
*
* @param lht left hand side in multiplication
* @param rht right hand side in multiplication
* @return the annotation to use for the result of the multiplication or null if no special
* relation is known
*/
/*@Nullable*/ AnnotationMirror multiplication(AnnotatedTypeMirror lht, AnnotatedTypeMirror rht);
/**
* Called for the division of type lht and rht.
*
* @param lht left hand side in division
* @param rht right hand side in division
* @return the annotation to use for the result of the division or null if no special relation
* is known
*/
/*@Nullable*/ AnnotationMirror division(AnnotatedTypeMirror lht, AnnotatedTypeMirror rht);
}