public final Object nextElement() { final Clause dbCurrentClause = (Clause) m_selProgramEnum.nextElement(); // il riuso dello stesso oggetto Rule evita la creazione di nuovi // oggetti che pesano sul garbage collector m_rule.m_cons = (Clause) dbCurrentClause.copy(true); m_rule.m_dbCons = dbCurrentClause; // controlla se module_transaprent if (!m_bModuleTranparent) { m_rule.m_strModule = dbCurrentClause.getModuleName(); } return m_rule; }
public RulesEnumeration( final Functor query, final Stack<String> moduleStack, final GlobalDB gdb) { final JIPClausesDatabase db = gdb.search(query, moduleStack); if (db == null) throw new UndefinedPredicateException(query); m_selProgramEnum = db.clauses(query); m_bModuleTranparent = db.isModuleTransparent(); m_rule = new PrologRule(); m_rule.m_strModule = moduleStack.peek(); }