⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config.java

📁 nachos操作系统框架
💻 JAVA
字号:
// PART OF THE MACHINE SIMULATION. DO NOT CHANGE.package nachos.machine;import java.util.HashMap;import java.io.File;import java.io.FileReader;import java.io.Reader;import java.io.StreamTokenizer;/** * Provides routines to access the Nachos configuration. */public final class Config {    /**     * Load configuration information from the specified file. Must be called     * before the Nachos security manager is installed.     *     * @param	fileName	the name of the file containing the     *				configuration to use.     */    public static void load(String fileName) {	System.out.print(" config");		Lib.assert(!loaded);	loaded = true;		configFile = fileName;		try {	    config = new HashMap();		    File file = new File(configFile);	    Reader reader = new FileReader(file);	    StreamTokenizer s = new StreamTokenizer(reader);	    s.resetSyntax();	    s.whitespaceChars(0x00, 0x20);	    s.wordChars(0x21, 0xFF);	    s.eolIsSignificant(true);	    s.commentChar('#');	    s.quoteChar('"');	    int line = 1;	    s.nextToken();	    while (true) {		if (s.ttype == StreamTokenizer.TT_EOF)		    break;		if (s.ttype == StreamTokenizer.TT_EOL) {		    line++;		    s.nextToken();		    continue;		}		if (s.ttype != StreamTokenizer.TT_WORD)		    loadError(line);		String key = s.sval;		if (s.nextToken() != StreamTokenizer.TT_WORD ||		    !s.sval.equals("="))		    loadError(line);		if (s.nextToken() != StreamTokenizer.TT_WORD && s.ttype != '"')		    loadError(line);		String value = s.sval;		// ignore everything after first string		while (s.nextToken() != StreamTokenizer.TT_EOL &&		       s.ttype != StreamTokenizer.TT_EOF);		if (config.get(key) != null)		    loadError(line);		config.put(key, value);		line++;	    }	}	catch (Throwable e) {	    System.err.println("Error loading " + configFile);	    System.exit(1);	}    }    private static void loadError(int line) {	System.err.println("Error in " + configFile + " line " + line);	System.exit(1);    }    private static void configError(String message) {	System.err.println("");	System.err.println("Error in " + configFile + ": " + message);	System.exit(1);    }    /**     * Get the value of a key in <tt>nachos.conf</tt>.     *     * @param	key	the key to look up.     * @return	the value of the specified key, or <tt>null</tt> if it is not     *		present.     */    public static String getString(String key) {	return (String) config.get(key);    }    /**     * Get the value of a key in <tt>nachos.conf</tt>, returning the specified     * default if the key does not exist.     *     * @param	key		the key to look up.     * @param	defaultValue	the value to return if the key does not exist.     * @return	the value of the specified key, or <tt>defaultValue</tt> if it     *		is not present.     */    public static String getString(String key, String defaultValue) {	String result = getString(key);	if (result == null)	    return defaultValue;	return result;    }    private static Integer requestInteger(String key) {	try {	    String value = getString(key);	    if (value == null)		return null;	    	    return new Integer(value);	}	catch (NumberFormatException e) {	    configError(key + " should be an integer");	    	    Lib.assertNotReached();	    return null;	}    }	    /**     * Get the value of an integer key in <tt>nachos.conf</tt>.     *     * @param	key	the key to look up.     * @return	the value of the specified key.     */    public static int getInteger(String key) {	Integer result = requestInteger(key);	if (result == null)	    configError("missing int " + key);	return result.intValue();    }    /**     * Get the value of an integer key in <tt>nachos.conf</tt>, returning the     * specified default if the key does not exist.     *     * @param	key		the key to look up.     * @param	defaultValue	the value to return if the key does not exist.     * @return	the value of the specified key, or <tt>defaultValue</tt> if the     *		key does not exist.     */    public static int getInteger(String key, int defaultValue) {	Integer result = requestInteger(key);	if (result == null)	    return defaultValue;		return result.intValue();    }    private static Double requestDouble(String key) {	try {	    String value = getString(key);	    if (value == null)		return null;	    return new Double(value);	}	catch (NumberFormatException e) {	    configError(key + " should be a double");	    Lib.assertNotReached();	    return null;	}    }	    /**     * Get the value of a double key in <tt>nachos.conf</tt>.     *     * @param	key	the key to look up.     * @return	the value of the specified key.     */    public static double getDouble(String key) {	Double result = requestDouble(key);	if (result == null)	    configError("missing double " + key);	return result.doubleValue();    }    /**     * Get the value of a double key in <tt>nachos.conf</tt>, returning the     * specified default if the key does not exist.     *     * @param	key		the key to look up.     * @param	defaultValue	the value to return if the key does not exist.     * @return	the value of the specified key, or <tt>defaultValue</tt> if the     *		key does not exist.     */    public static double getDouble(String key, double defaultValue) {	Double result = requestDouble(key);	if (result == null)	    return defaultValue;		return result.doubleValue();    }    private static Boolean requestBoolean(String key) {	String value = getString(key);	if (value == null)	    return null;	if (value.equals("1") || value.toLowerCase().equals("true")) {	    return Boolean.TRUE;	}	else if (value.equals("0") || value.toLowerCase().equals("false")) {	    return Boolean.FALSE;	}	else {	    configError(key + " should be a boolean");	    Lib.assertNotReached();	    return null;	}    }	    /**     * Get the value of a boolean key in <tt>nachos.conf</tt>.     *     * @param	key	the key to look up.     * @return	the value of the specified key.     */    public static boolean getBoolean(String key) {	Boolean result = requestBoolean(key);	if (result == null)	    configError("missing boolean " + key);	return result.booleanValue();    }    /**     * Get the value of a boolean key in <tt>nachos.conf</tt>, returning the     * specified default if the key does not exist.     *     * @param	key		the key to look up.     * @param	defaultValue	the value to return if the key does not exist.     * @return	the value of the specified key, or <tt>defaultValue</tt> if the     *		key does not exist.     */    public static boolean getBoolean(String key, boolean defaultValue) {	Boolean result = requestBoolean(key);	if (result == null)	    return defaultValue;		return result.booleanValue();    }	        private static boolean loaded = false;    private static String configFile;    private static HashMap config;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -