Class ExtrinsicFunction

  • All Implemented Interfaces:
    Serializable, QDLFunction

    public class ExtrinsicFunction
    extends Object
    implements QDLFunction
    An basic of an extrinsic (aka global, static in other languages) function. This function will be treated like any other function. It is available everywhere in the workspace.

    When creating one, remember that only things that truly need to be accessible the same everywhere should be made extrinsic.

    See Also:
    Serialized Form
    • Field Detail

      • EX_NAME

        public static String EX_NAME
    • Constructor Detail

      • ExtrinsicFunction

        public ExtrinsicFunction()
    • Method Detail

      • getName

        public String getName()
        Description copied from interface: QDLFunction
        The name of this function as you want it invoked in QDL. This will be what the function is called in the workspace.
        Specified by:
        getName in interface QDLFunction
        Returns:
      • getArgCount

        public int[] getArgCount()
        Description copied from interface: QDLFunction
        The contract is that when QDL invokes this method, it will faithfully give all of the arguments as an array of Objects. Overloading is not possible in QDL (it is weakly typed) except by argument count, so if this is called "foo" and you have versions with 3 and 4 arguments, then f(a,b,c) would be executed with the arguments passed. To achieve overloading for Java methods, have the number of arguments this accepts as the elements of the array. So if this has a value of [1,2,3] then this function will be invoked if called with 1, 2 or 3 arguments and an error by the QDL runtime engine will be raised, if, say, 4 are passed.
        Specified by:
        getArgCount in interface QDLFunction
        Returns:
      • evaluate

        public Object evaluate​(Object[] objects,
                               State state)
                        throws Throwable
        Description copied from interface: QDLFunction
        The method that is invoked by QDL that is the function. It will have the arguments already evaluated and put in to the array of objects. It is up to you to do any checking you see fit. State is supplied if needed.
        Specified by:
        evaluate in interface QDLFunction
        Returns:
        Throws:
        Throwable
      • getDocumentation

        public List<String> getDocumentation​(int argCount)
        Description copied from interface: QDLFunction
        Return documentation to be displayed in the workspace. Short version displays the first line (element of the list) so make sure that is informative. The long version should contain details of use. Best practice is that have a succinct one line description for each arg count and a body that explains the usage more fully.
        Specified by:
        getDocumentation in interface QDLFunction
        Returns: