package tarau.jinni; /** * Maps a Term to an Source for iterating over its arguments */ class TermSource extends Source { TermSource(Nonvar val,Prog p) { super(p); this.val=val; pos=0; } private Nonvar val; private int pos; public Term getElement() { Term X; if(null==val) X=null; else if(!(val instanceof Fun)) { X=val; val=null; } else if(0==pos) X=new Const(val.name()); else if(pos<=((Fun)val).getArity()) X=((Fun)val).getArg(pos-1); else { X=null; val=null; } pos++; return X; } public void stop() { val=null; } }