@Override public ATermAppl makeAppl(final AFun fun, final ATerm[] args) { return build(new ATermApplImpl(this, fun, args)); }
@SuppressWarnings({ "incomplete-switch", "fallthrough" }) protected int hashFunction() { final int len = getArity(); int alpha = GOLDEN_RATIO; final int b = GOLDEN_RATIO + (getAFun().hashCode() << 8); switch (len) { case 3: alpha += getArgument(2).hashCode() << 16; case 2: alpha += getArgument(1).hashCode() << 8; case 1: alpha += getArgument(0).hashCode(); } return HashFunctions.mix(alpha, b, len); }
protected ATermAppl make(final AFun fun, final ATerm[] i_args) { return getPureFactory().makeAppl(fun, i_args); }
protected ATermApplImpl(final PureFactory factory, final AFun fun, final ATerm[] i_args) { super(factory); _fun = fun; _args = i_args; setHashCode(hashFunction()); }
@Override public ATerm setSubTerm(final int index, final ATerm t) { return setArgument(t, index); }
@Override public ATermAppl setArgument(final ATerm newarg, final int index) { final ATerm[] newargs = _args.clone(); newargs[index] = newarg; return make(_fun, newargs); }
@Override public boolean equivalent(final SharedObject obj) { if (obj instanceof ATermAppl) { final ATermAppl peer = (ATermAppl) obj; if (peer.getType() != getType()) return false; if (peer.getAFun().equals(_fun)) { for (int i = 0; i < _args.length; i++) if (!peer.getArgument(i).equals(_args[i])) return false; return true;//peer.getAnnotations().equals(getAnnotations()); } } return false; }
return matchArguments(appl.getArgumentArray(), list); return false; return matchArguments(appl.getArgumentArray(), list); return matchArguments(appl.getArgumentArray(), list); return matchArguments(appl.getArgumentArray(), list); return matchArguments(appl.getArgumentArray(), list);
@Override public ATerm make(final List<Object> arguments) { final ATerm[] newargs = new ATerm[_args.length]; for (int i = 0; i < _args.length; i++) newargs[i] = _args[i].make(arguments); return getPureFactory().makeAppl(_fun, newargs); }
@Override public ATermList getArguments() { ATermList result = getPureFactory().getEmpty(); for (int i = _args.length - 1; i >= 0; i--) result = result.insert(_args[i]); return result; }
if (appl.getName().equals("list") && appl.getArguments().isEmpty()) ATermList result = getPureFactory().getEmpty(); for (int j = _args.length - 1; j >= i; j--) result = result.insert(_args[j]);