diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/HiddenInternalFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/HiddenInternalFunctions.java index 3299dcf98d2c51485f219fe48b74c2b360606785..5e9a45debc362a98a699921b22943f2ad0b4c5ef 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/HiddenInternalFunctions.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/HiddenInternalFunctions.java @@ -208,4 +208,21 @@ public class HiddenInternalFunctions { } } + @RBuiltin(name = "getRegisteredRoutines", kind = INTERNAL, parameterNames = "info") + public abstract static class GetRegisteredRoutines extends RBuiltinNode { + private static final RStringVector NAMES = RDataFactory.createStringVector(new String[]{".C", ".Call", ".Fortran", ".External"}, RDataFactory.COMPLETE_VECTOR); + private static final RList EMPTY = RDataFactory.createList(); + + @Specialization + protected RList getRegisteredRoutines(Object info) { + Object[] data; + if (info == RNull.instance) { + data = new Object[]{EMPTY, EMPTY, EMPTY, EMPTY}; + return RDataFactory.createList(data, NAMES); + } else { + throw RError.nyi(getEncapsulatingSourceSection(), " getRegisteredRoutines with non-null info"); + } + } + } + }