Skip to content
Snippets Groups Projects
Commit 40fb6c94 authored by Lukas Stadler's avatar Lukas Stadler
Browse files

remove unnecessary CapabilitiesFunctions wrapper class

parent 852b2372
Branches
No related tags found
No related merge requests found
......@@ -209,7 +209,7 @@ public class BasePackage extends RBuiltinPackage {
add(BrowserFunctions.BrowserSetDebug.class, BrowserFunctionsFactory.BrowserSetDebugNodeGen::create);
add(BrowserFunctions.BrowserText.class, BrowserFunctionsFactory.BrowserTextNodeGen::create);
add(Call.class, CallNodeGen::create);
add(CapabilitiesFunctions.Capabilities.class, CapabilitiesFunctionsFactory.CapabilitiesNodeGen::create);
add(Capabilities.class, CapabilitiesNodeGen::create);
add(Cat.class, CatNodeGen::create);
add(Ceiling.class, CeilingNodeGen::create);
add(CharMatch.class, CharMatchNodeGen::create);
......
......@@ -34,61 +34,58 @@ import com.oracle.truffle.r.runtime.data.RDataFactory;
import com.oracle.truffle.r.runtime.data.RLogicalVector;
import com.oracle.truffle.r.runtime.data.RStringVector;
public class CapabilitiesFunctions {
@RBuiltin(name = "capabilities", kind = INTERNAL, parameterNames = {}, behavior = READS_STATE)
public abstract class Capabilities extends RBuiltinNode {
private enum Capability {
jpeg(false, null),
png(false, null),
tiff(false, null),
tcltk(false, null),
X11(false, null),
aqua(false, null),
http_fttp(true, "http/ftp"),
sockets(true, null),
libxml(false, null),
fifo(false, null),
cledit(false, null),
iconv(false, null),
nls(false, "NLS"),
profmem(false, null),
cairo(false, null);
@RBuiltin(name = "capabilities", kind = INTERNAL, parameterNames = {}, behavior = READS_STATE)
public abstract static class Capabilities extends RBuiltinNode {
private enum Capability {
jpeg(false, null),
png(false, null),
tiff(false, null),
tcltk(false, null),
X11(false, null),
aqua(false, null),
http_fttp(true, "http/ftp"),
sockets(true, null),
libxml(false, null),
fifo(false, null),
cledit(false, null),
iconv(false, null),
nls(false, "NLS"),
profmem(false, null),
cairo(false, null);
private final boolean defValue;
private final String rName;
private final boolean defValue;
private final String rName;
Capability(boolean defValue, String nameOverride) {
this.defValue = defValue;
this.rName = nameOverride == null ? name() : nameOverride;
}
Capability(boolean defValue, String nameOverride) {
this.defValue = defValue;
this.rName = nameOverride == null ? name() : nameOverride;
}
static String[] rNames() {
Capability[] values = values();
String[] result = new String[values.length];
for (Capability c : values) {
result[c.ordinal()] = c.rName;
}
return result;
static String[] rNames() {
Capability[] values = values();
String[] result = new String[values.length];
for (Capability c : values) {
result[c.ordinal()] = c.rName;
}
return result;
}
private static final RStringVector NAMES = RDataFactory.createStringVector(Capability.rNames(), RDataFactory.COMPLETE_VECTOR);
}
private static final RStringVector NAMES = RDataFactory.createStringVector(Capability.rNames(), RDataFactory.COMPLETE_VECTOR);
@Specialization
protected RLogicalVector capabilities() {
byte[] data = new byte[NAMES.getLength()];
for (Capability c : Capability.values()) {
boolean value = c.defValue;
switch (c) {
case cledit:
value = RContext.getInstance().isInteractive() && !RContext.getInstance().getStartParams().getNoReadline();
break;
}
data[c.ordinal()] = RRuntime.asLogical(value);
@Specialization
protected RLogicalVector capabilities() {
byte[] data = new byte[NAMES.getLength()];
for (Capability c : Capability.values()) {
boolean value = c.defValue;
switch (c) {
case cledit:
value = RContext.getInstance().isInteractive() && !RContext.getInstance().getStartParams().getNoReadline();
break;
}
return RDataFactory.createLogicalVector(data, RDataFactory.COMPLETE_VECTOR, NAMES);
data[c.ordinal()] = RRuntime.asLogical(value);
}
return RDataFactory.createLogicalVector(data, RDataFactory.COMPLETE_VECTOR, NAMES);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment