Search in sources :

Example 1 with INodeFuncBoolean

use of buildcraft.lib.expression.api.INodeFunc.INodeFuncBoolean in project BuildCraft by BuildCraft.

the class InternalCompiler method addParentFunctions.

private static String addParentFunctions(FunctionContext context) {
    String vars = "";
    List<String> allFunctions = new ArrayList<>();
    allFunctions.addAll(context.getAllFunctions().keySet());
    allFunctions.sort(Comparator.naturalOrder());
    if (!allFunctions.isEmpty()) {
        if (!context.name.isEmpty()) {
            vars += "\n" + context.name + ":";
        }
        for (String fnName : allFunctions) {
            Map<List<Class<?>>, INodeFunc> functions = context.getFunctions(fnName);
            for (Map.Entry<List<Class<?>>, INodeFunc> entry : functions.entrySet()) {
                String args = "";
                for (Class<?> arg : entry.getKey()) {
                    if (args.length() > 0) {
                        args += ", ";
                    }
                    args += NodeTypes.getName(arg);
                }
                INodeFunc function = entry.getValue();
                String ret;
                if (function instanceof INodeFuncBoolean) {
                    ret = NodeTypes.getName(boolean.class);
                } else if (function instanceof INodeFuncDouble) {
                    ret = NodeTypes.getName(double.class);
                } else if (function instanceof INodeFuncLong) {
                    ret = NodeTypes.getName(long.class);
                } else {
                    ret = NodeTypes.getName(((INodeFuncObject<?>) function).getType());
                }
                vars += "\n  " + fnName + "(" + args + ") -> " + ret;
            }
        }
    }
    for (FunctionContext parent : context.getParents()) {
        vars += addParentFunctions(parent);
    }
    return vars;
}
Also used : INodeFuncLong(buildcraft.lib.expression.api.INodeFunc.INodeFuncLong) INodeFunc(buildcraft.lib.expression.api.INodeFunc) ArrayList(java.util.ArrayList) INodeFuncObject(buildcraft.lib.expression.api.INodeFunc.INodeFuncObject) INodeFuncBoolean(buildcraft.lib.expression.api.INodeFunc.INodeFuncBoolean) INodeFuncDouble(buildcraft.lib.expression.api.INodeFunc.INodeFuncDouble) ArrayList(java.util.ArrayList) List(java.util.List) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

INodeFunc (buildcraft.lib.expression.api.INodeFunc)1 INodeFuncBoolean (buildcraft.lib.expression.api.INodeFunc.INodeFuncBoolean)1 INodeFuncDouble (buildcraft.lib.expression.api.INodeFunc.INodeFuncDouble)1 INodeFuncLong (buildcraft.lib.expression.api.INodeFunc.INodeFuncLong)1 INodeFuncObject (buildcraft.lib.expression.api.INodeFunc.INodeFuncObject)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Map (java.util.Map)1