private GenRegistry( PrintContext pctxt, Iterable<SerialInfo> serInfos, CodePrinter pr, BBinaryModel pformat) { this.pctxt = pctxt; this.serInfos = serInfos; this.registryClassName = pctxt.getRegistryClassName(pformat); this.pack = pctxt.getRegistryPackage(); this.pr = pr; this.pformat = pformat; }
static void generate(PrintContext pctxt, Iterable<SerialInfo> serInfos, BBinaryModel pformat) throws IOException { log.debug("generate"); CodePrinter pr = pctxt.getPrinterForRegistry(pformat); new GenRegistry(pctxt, serInfos, pr, pformat).generate(); pr.close(); log.debug(")generate"); }
static void generate(PrintContext pctxt, RemoteInfo rinfo) throws IOException { // log.debug(GeneratorJ.class.getName(), "generate"); log.info("generate " + rinfo.qname); CodePrinter pr = pctxt.getPrinterForApiClass(rinfo, PrintContext.STUB_PREFIX, true); new GenRemoteStub(pctxt, rinfo, pr).generate(); pr.close(); // log.debug(GeneratorJ.class.getName(), "generate"); }
private GenRemoteStub(PrintContext pctxt, RemoteInfo rinfo, CodePrinter pr) throws GeneratorException { RemoteInfo rinfoImpl = rinfo.getRemoteAuth(); if (rinfoImpl == null) rinfoImpl = rinfo.getRemoteAsync(); this.rinfo = rinfo; this.pr = pr; this.className = pctxt.getStubClassQName(rinfo, rinfo.pack); this.pctxt = pctxt; }
private static void printDimList(RAbstractListVector s, PrintContext printCtx) throws IOException { final PrintParameters pp = printCtx.parameters(); int ns = s.getLength(); String[] t = new String[ns]; for (int i = 0; i < ns; i++) { Object tmp = RRuntime.asAbstractVector(s.getDataAtAsObject(i)); final String pbuf; if (tmp == null || tmp == RNull.instance) { pbuf = RRuntime.NULL; } else if (tmp instanceof RAbstractLogicalVector) { RAbstractLogicalVector lv = (RAbstractLogicalVector) tmp; if (lv.getLength() == 1) { FormatMetrics fm = LogicalVectorPrinter.formatLogicalVector(lv, 0, 1, pp.getNaWidth()); pbuf = snprintf( 115, "%s", LogicalVectorPrinter.encodeLogical(lv.getDataAt(0), fm.maxWidth, pp)); } else { pbuf = snprintf(115, "Logical,%d", lv.getLength()); } } else if (tmp instanceof RAbstractIntVector) { RAbstractIntVector iv = (RAbstractIntVector) tmp; if (printCtx.printerNode().inherits(iv, RRuntime.CLASS_FACTOR)) { /* factors are stored as integers */ pbuf = snprintf(115, "factor,%d", iv.getLength()); } else { if (iv.getLength() == 1) { FormatMetrics fm = IntegerVectorPrinter.formatIntVector(iv, 0, 1, pp.getNaWidth()); pbuf = snprintf( 115, "%s", IntegerVectorPrinter.encodeInteger(iv.getDataAt(0), fm.maxWidth, pp)); } else { pbuf = snprintf(115, "Integer,%d", iv.getLength()); } } } else if (tmp instanceof RAbstractDoubleVector) { RAbstractDoubleVector dv = (RAbstractDoubleVector) tmp; if (dv.getLength() == 1) { DoubleVectorMetrics fm = DoubleVectorPrinter.formatDoubleVector(dv, 0, 1, 0, pp); pbuf = snprintf(115, "%s", DoubleVectorPrinter.encodeReal(dv.getDataAt(0), fm, pp)); } else { pbuf = snprintf(115, "Numeric,%d", dv.getLength()); } } else if (tmp instanceof RAbstractComplexVector) { RAbstractComplexVector cv = (RAbstractComplexVector) tmp; if (cv.getLength() == 1) { RComplex x = cv.getDataAt(0); if (RRuntime.isNA(x.getRealPart()) || RRuntime.isNA(x.getImaginaryPart())) { /* formatReal(NA) --> w=R_print.na_width, d=0, e=0 */ pbuf = snprintf( 115, "%s", DoubleVectorPrinter.encodeReal( RRuntime.DOUBLE_NA, pp.getNaWidth(), 0, 0, '.', pp)); } else { ComplexVectorMetrics cvm = ComplexVectorPrinter.formatComplexVector(x, 0, 1, 0, pp); pbuf = snprintf(115, "%s", ComplexVectorPrinter.encodeComplex(x, cvm, pp)); } } else { pbuf = snprintf(115, "Complex,%d", cv.getLength()); } } else if (tmp instanceof RAbstractStringVector) { RAbstractStringVector sv = (RAbstractStringVector) tmp; if (sv.getLength() == 1) { String ctmp = sv.getDataAt(0); int len = ctmp.length(); if (len < 100) { pbuf = snprintf(115, "\"%s\"", ctmp); } else { pbuf = snprintf(101, "\"%s", ctmp) + "\" [truncated]"; } } else { pbuf = snprintf(115, "Character,%d", sv.getLength()); } } else if (tmp instanceof RAbstractRawVector) { pbuf = snprintf(115, "Raw,%d", ((RAbstractRawVector) (tmp)).getLength()); } else if (tmp instanceof RAbstractListVector) { pbuf = snprintf(115, "List,%d", ((RAbstractListVector) (tmp)).getLength()); } else if (tmp instanceof RLanguage) { pbuf = snprintf(115, "Expression"); } else { pbuf = snprintf(115, "?"); } t[i] = pbuf; } RStringVector tt = RDataFactory.createStringVector(t, true, s.getDimensions()); Object dimNames = s.getAttr(RRuntime.DIMNAMES_ATTR_KEY); tt.setAttr(RRuntime.DIMNAMES_ATTR_KEY, dimNames); PrintContext cc = printCtx.cloneContext(); cc.parameters().setQuote(false); StringVectorPrinter.INSTANCE.print(tt, cc); }
@TruffleBoundary static void printNoDimList(RAbstractContainer s, PrintContext printCtx) throws IOException { final PrintParameters pp = printCtx.parameters(); final PrintWriter out = printCtx.output(); final StringBuilder tagbuf = printCtx.getOrCreateTagBuffer(); // save the original length so that we can restore the original value int taglen = tagbuf.length(); int ns = s.getLength(); RAbstractStringVector names; names = Utils.castTo(RRuntime.asAbstractVector(s.getNames(dummyAttrProfiles))); if (ns > 0) { int npr = (ns <= pp.getMax() + 1) ? ns : pp.getMax(); /* '...max +1' ==> will omit at least 2 ==> plural in msg below */ for (int i = 0; i < npr; i++) { if (i > 0) { out.println(); } String ss = names == null ? null : Utils.<String>getDataAt(names, i); if (ss != null && !ss.isEmpty()) { /* * Bug for L <- list(`a\\b` = 1, `a\\c` = 2) : const char *ss = * translateChar(STRING_ELT(names, i)); */ if (taglen + ss.length() > TAGBUFLEN) { if (taglen <= TAGBUFLEN) { tagbuf.append("$..."); } } else { /* * we need to distinguish character NA from "NA", which is a valid (if * non-syntactic) name */ if (ss == RRuntime.STRING_NA) { tagbuf.append("$<NA>"); } else if (RDeparse.isValidName(ss)) { tagbuf.append(String.format("$%s", ss)); } else { tagbuf.append(String.format("$`%s`", ss)); } } } else { if (taglen + indexWidth(i) > TAGBUFLEN) { if (taglen <= TAGBUFLEN) { tagbuf.append("$..."); } } else { tagbuf.append(String.format("[[%d]]", i + 1)); } } out.println(tagbuf); Object si = s.getDataAtAsObject(i); if (si instanceof RAttributable && ((RAttributable) si).isObject()) { RContext.getEngine().printResult(si); } else { ValuePrinters.INSTANCE.print(si, printCtx); ValuePrinters.printNewLine(printCtx); } tagbuf.setLength(taglen); // reset tag buffer to the original value } if (npr < ns) { out.printf("\n [ reached getOption(\"max.print\") -- omitted %d entries ]", ns - npr); } } else { /* ns = length(s) == 0 */ /* Formal classes are represented as empty lists */ String className = null; if (printCtx.printerNode().isObject(s) && printCtx.printerNode().isMethodDispatchOn()) { RAbstractStringVector klass = Utils.castTo(RRuntime.asAbstractVector(s.getAttr(RRuntime.CLASS_ATTR_KEY))); if (klass != null && klass.getLength() == 1) { String ss = klass.getDataAt(0); String str = snprintf(200, ".__C__%s", ss); Frame frame = com.oracle.truffle.r.runtime.Utils.getActualCurrentFrame(); if (ReadVariableNode.lookupAny(str, frame, false) != null) { className = ss; } } } if (className != null) { out.printf("An object of class \"%s\"", className); } else { if (names != null) { out.print("named "); } out.print("list()"); } } }