001package jmri.jmrit.logixng.util.parser;
002
003import java.util.Set;
004
005/**
006 * Factory class for Function classes.
007 * 
008 * @author Daniel Bergqvist Copyright 2018
009 */
010public interface FunctionFactory {
011
012    /**
013     * Get the module of the functions in this factory, for example "Math" or
014     * "Conversion".
015     * @return the module name
016     */
017    String getModule();
018    
019    /**
020     * Get a set of classes that implements the Function interface.
021     * 
022     * @return a set of functions
023     */
024    Set<Function> getFunctions();
025    
026    /**
027     * Get a set of classes that implements the Constant interface.
028     * 
029     * @return a set of constants
030     */
031    Set<Constant> getConstants();
032    
033    /**
034     * Get the description of the constants in Markdown format
035     * @return the description of the constants
036     */
037    String getConstantDescription();
038    
039}