public final boolean unify(final JIPCons params, Hashtable varsTbl) { JIPTerm output = params.getNth(1); JIPTerm term = params.getNth(2); // check if input is a variable if (output instanceof JIPVariable) { // try to extract the term if (!((JIPVariable) output).isBounded()) { throw new JIPInstantiationException(1); } else { // extracts the term output = ((JIPVariable) output).getValue(); } } // Get the stream StreamInfo sinfo = JIPio.getOutputStreamInfo(output, false); // String mode = sinfo.getProperties().getProperty("mode"); // if(!(mode.equals("mode(write)") || mode.equals("mode(append)"))) // throw new JIPPermissionException("output", "stream", sinfo.getAlias()); // if(!sinfo.getProperties().getProperty("type").equals("type(text)")) // throw new JIPPermissionException("output", "binary_stream", sinfo.getAlias()); OutputStream writer = JIPio.getOutputStream(sinfo.getHandle(), getJIPEngine()); try { writer.write(term.toString(getJIPEngine()).getBytes(getJIPEngine().getEncoding())); writer.flush(); } catch (IOException ex) { throw new JIPRuntimeException(JIPio.ERR_IOEXCEPTION, ex.getMessage()); } return true; }
public JIPList getSingletonVariables() { Hashtable<String, Variable> svar = m_parser.getSingletonVariables(); JIPList singletonVars = null; // Hashtable<String, JIPVariable> sjvar = new Hashtable<String, JIPVariable>(); for (String key : svar.keySet()) { Variable var = svar.get(key); if (!var.isAnonymous()) singletonVars = JIPList.create( JIPFunctor.create( "=", JIPCons.create( JIPAtom.create(var.getName()), JIPCons.create(new JIPVariable(var), null))), singletonVars); // sjvar.put(key, new JIPVariable(var)); } if (singletonVars == null) return JIPList.NIL; else return singletonVars; // .reverse(); }