private static void renderList(OtpErlangList list, XValueTextRenderer renderer) { int i; renderer.renderSpecialSymbol("["); for (i = 0; i < list.arity(); i++) { if (i > 0) { renderer.renderSpecialSymbol(", "); } renderObject(list.elementAt(i), renderer); } // Improper lists have a lastTail OtpErlangObject lastTail = list.getLastTail(); if (lastTail != null) { // Improper lists need to render the head tail joiner, `|`, explicitly renderer.renderSpecialSymbol(" | "); renderObject(lastTail, renderer); } renderer.renderSpecialSymbol("]"); }
private static void renderErlangString(OtpErlangString str, XValueTextRenderer renderer) { if (isPrintable(str)) { renderer.renderSpecialSymbol("'"); renderer.renderValue( str .stringValue() .replace("'", "\\'") ); renderer.renderSpecialSymbol("'"); } else { renderObject(new OtpErlangList(str.stringValue()), renderer); } }
public String name() { OtpErlangTuple quotedDefmodule = (OtpErlangTuple) defmodule.quote(); OtpErlangList callArguments = Macro.INSTANCE.callArguments(quotedDefmodule); // Alias + block assert callArguments.arity() == 2; OtpErlangObject quotedName = callArguments.elementAt(0); // TODO handle other forms for module names assert Macro.INSTANCE.isAliases(quotedName); return Macro.INSTANCE.toString(quotedName); }
@Override public <T> boolean match(final OtpErlangObject term, final T bindings) { if (!(term instanceof OtpErlangList)) { return false; } final OtpErlangList that = (OtpErlangList) term; final int thisArity = this.arity(); final int thatArity = that.arity(); final OtpErlangObject thisTail = this.getLastTail(); final OtpErlangObject thatTail = that.getLastTail(); if (thisTail == null) { if (thisArity != thatArity || thatTail != null) { return false; } } else { if (thisArity > thatArity) { return false; } } for (int i = 0; i < thisArity; i++) { if (!elementAt(i).match(that.elementAt(i), bindings)) { return false; } } if (thisTail == null) { return true; } return thisTail.match(that.getNthTail(thisArity), bindings); }
public OtpErlangObject getHead() { if (arity() > 0) { return elems[0]; } return null; }
@Override public Object clone() { try { return new OtpErlangList(elements(), getLastTail()); } catch (final OtpErlangException e) { throw new AssertionError(this); } }
@Override public OtpErlangObject getHead() { return parent.elementAt(start); }
OtpErlangList l = (OtpErlangList) mbox.receive(); // get rid of an extra tuple OtpErlangObject[] strArr = Arrays.copyOfRange(l.elements(), 1, l.elements().length); OtpErlangList l2 = new OtpErlangList(strArr); System.out.println(l2.stringValue());
OtpErlangObject erlangObject = mailbox.receive(); OtpErlangList erlangList = (OtpErlangList) erlangObject; System.out.println(erlangList.stringValue());
@Override public OtpErlangObject getLastTail() { return parent.getLastTail(); }
OtpErlangObject erlangObject = mailbox.receive(); OtpErlangList erlangList = (OtpErlangList) erlangObject; for(OtpErlangObject element : erlangList.elements()) { // do something with element }
@NotNull private static String toString(@NotNull OtpErlangList quoted) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("["); for (int i = 0; i < quoted.arity(); i++) { if (i > 0) { stringBuilder.append(","); } stringBuilder.append(toString(quoted.elementAt(i))); } stringBuilder.append("]"); return stringBuilder.toString(); }
@Override public int arity() { return parent.arity() - start; }
@Override public OtpErlangObject elementAt(final int i) { return parent.elementAt(i + start); }
OtpErlangList l = (OtpErlangList) mbox.receive(); System.out.println(l.stringValue());
final int a = arity(); if (a != l.arity()) { return false; if (!elementAt(i).equals(l.elementAt(i))) { return false; // early exit final OtpErlangObject otherTail = l.getLastTail(); if (getLastTail() == null && otherTail == null) { return true; if (getLastTail() == null) { return false; return getLastTail().equals(l.getLastTail());
private BigCouchUpdateSequence(final String encodedVector, final String packedSeqs) { this.since = encodedVector; final byte[] bytes = new Base64(true).decode(packedSeqs); final OtpInputStream stream = new OtpInputStream(bytes); try { final OtpErlangList list = (OtpErlangList) stream.read_any(); for (int i = 0, arity = list.arity(); i < arity; i++) { final OtpErlangTuple tuple = (OtpErlangTuple) list.elementAt(i); final OtpErlangObject node = tuple.elementAt(0); final OtpErlangObject range = tuple.elementAt(1); final OtpErlangObject seq_obj = tuple.elementAt(2); final OtpErlangLong node_seq; if (seq_obj instanceof OtpErlangLong) { node_seq = (OtpErlangLong) seq_obj; } else if (seq_obj instanceof OtpErlangTuple) { node_seq = (OtpErlangLong) ((OtpErlangTuple)seq_obj).elementAt(0); } else { throw new IllegalArgumentException("could not decode seq"); } vector.put(node + "-" + range, node_seq.longValue()); } } catch (final OtpErlangDecodeException e) { throw new IllegalArgumentException(encodedVector + " not valid."); } }
/** * Get the specified element from the list. * * @param i * the index of the requested element. List elements are numbered * as array elements, starting at 0. * * @return the requested element, of null if i is not a valid element index. */ public OtpErlangObject elementAt(final int i) { if (i >= arity() || i < 0) { return null; } return elems[i]; }
public OtpErlangObject executeErlangRpc(String module, String function, OtpErlangObject... args) { return executeRpc(module, function, new OtpErlangList(args)); }