public static boolean equals(Binding b1, Binding b2) { return BindingBase.equals(b1, b2) ; } }
public String toString1() { StringBuffer sbuff = new StringBuffer() ; format1(sbuff) ; return sbuff.toString() ; }
private void checkAdd(Var var, Node node) { if ( ! CHECKING ) return ; if ( var == null ) throw new ARQInternalErrorException("check("+var+", "+node+"): null var" ) ; if ( node == null ) throw new ARQInternalErrorException("check("+var+", "+node+"): null node value" ) ; if ( UNIQUE_NAMES_CHECK && contains(var) ) throw new ARQInternalErrorException("Attempt to reassign '"+var+ "' from '"+FmtUtils.stringForNode(get(var))+ "' to '"+FmtUtils.stringForNode(node)+"'") ; // Let the implementation do a check as well. checkAdd1(var, node) ; }
@Override public int hashCode() { return hashCode(this) ; } @Override
/** Return the object bound to a name, or null */ @Override final public Node get(Var var) { Node node = get1(var) ; if ( node != null ) return node ; if ( parent == null ) return null ; return parent.get(var) ; } protected abstract Node get1(Var var) ;
final public int size() { int x = size1() ; if ( parent != null ) x = x + parent.size() ; return x ; }
/** Iterate over all the names of variables. */ @Override final public Iterator<Var> vars() { Iterator<Var> iter = vars1() ; if ( parent != null ) iter = IteratorConcat.concat(parent.vars(), iter ) ; return iter ; } protected abstract Iterator<Var> vars1() ;
protected void format(StringBuffer sbuff, Var var) { Node node = get(var) ; String tmp = FmtUtils.stringForObject(node) ; sbuff.append("( ?"+var.getVarName()+" = "+tmp+" )") ; }
/** Test whether a name is bound to some object */ public boolean contains(Var var) { if ( contains1(var) ) return true ; if ( parent == null ) return false ; return parent.contains(var) ; }
public boolean isEmpty() { if ( ! isEmpty1() ) return false ; if ( parent == null ) return true ; return parent.isEmpty() ; } //{ return size() == 0 ; }
@Override public int hashCode() { return BindingBase.hashCode(this) ; }
/** Return the object bound to a name, or null */ final public Node get(Var var) { Node node = get1(var) ; if ( node != null ) return node ; if ( parent == null ) return null ; return parent.get(var) ; } protected abstract Node get1(Var var) ;
@Override final public int size() { int x = size1() ; if ( parent != null ) x = x + parent.size() ; return x ; }
/** Iterate over all the names of variables. */ final public Iterator<Var> vars() { Iterator<Var> iter = vars1() ; if ( parent != null ) iter = IteratorConcat.concat(parent.vars(), iter ) ; return iter ; } protected abstract Iterator<Var> vars1() ;
protected void format(StringBuffer sbuff, Var var) { Node node = get(var) ; String tmp = FmtUtils.stringForObject(node) ; sbuff.append("( ?"+var.getVarName()+" = "+tmp+" )") ; }
/** Test whether a name is bound to some object */ @Override public boolean contains(Var var) { if ( contains1(var) ) return true ; if ( parent == null ) return false ; return parent.contains(var) ; }
@Override public boolean isEmpty() { if ( ! isEmpty1() ) return false ; if ( parent == null ) return true ; return parent.isEmpty() ; }
@Override public boolean equals(Object obj) { if ( this == obj ) return true ; if ( ! ( obj instanceof BindingFixed) ) return false ; BindingFixed b = (BindingFixed)obj ; return BindingBase.equals(this, b) ; }