/* Copyright (c) 1997-2004 Ewgenij Gawrilow, Michael Joswig (Technische Universitaet Berlin, Germany) http://www.math.tu-berlin.de/polymake, mailto:polymake@math.tu-berlin.de This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version: http://www.gnu.org/licenses/gpl.txt. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. $Project: polymake $$Id: PolymakeParser.java 6457 2005-10-31 15:56:36Z wotzlaw $ */ package de.tuberlin.polymake.common; import java.io.IOException; import java.util.Properties; /** * This class parses an extended Javaview jvx format. Any additional * information must be stored in child nodes of the geometry node with * a name specified in the constructor. After parsing, the additional * information is stored in the parameters, which may be retrieved using * the getParam(String) method. * * @author Thilo Schröder */ public abstract class PolymakeParser { /** HashSet containing non-jvx parameters */ protected Properties parameters = null; /** HashSet containing interactive parameters */ protected Properties iparameters = null; /** String containing last error message */ protected String error = null; /** String containing last warning */ protected String warning = null; /** Name of parsed geometry */ protected String name = "NoName"; // protected String mode = "stop"; /** * Create a new parser for Javaview files created by polymake * containing additional parameters specified by params. These * params are child elements of the geometry node in the Javaview * jvx file format. * * @param params additional non Javaview parameters. */ public PolymakeParser(String[] params) { parameters = new Properties(); iparameters = new Properties(); for(int i = 0; i < params.length; ++i) { parameters.setProperty(params[i],"null"); } } /** get the value of a parameter. * * @param param name of parameter * @return value of parameter or null if there is any */ public String getParam(String param) { return parameters.getProperty(param); } /** * determine whether a parameter is interactive or not: null means * it is not interactive, 1 means it is a direct response * parameter and 0 means it is interactive, but not direct. * * @param param name of parameter * @return value of parameter or null if there is any */ public String getInteractiveParam(String param) { return iparameters.getProperty(param); } /** get all parameters */ public Properties getParameters() { return parameters; } /** get all parameters */ public Properties getInteractiveParameters() { return iparameters; } /** get the last error message */ public String getError() { return error; } /** get the last warning */ public String getWarning() { return warning; } public boolean stop() { return (getParam("continue")!=null && getParam("continue").equals("0"))?true:false; } /** * @param in BufferedReader for textual input which will be parsed * @throws IOException if problems reading from in occur */ public abstract PointSet parse(java.io.BufferedReader in) throws IOException; }