namespace.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 134 行

JAVA
134
字号
/*
 * $Id: NameSpace.java,v 1.2 2004/02/07 12:09:41 epr Exp $
 */
package org.jnode.driver.acpi.vm;

import java.util.Enumeration;
import java.util.Hashtable;

import org.jnode.driver.acpi.aml.Aml;
import org.jnode.driver.acpi.aml.ParseNode;
import org.jnode.driver.pnp.PnP;

/**
 * NameSpace.
 * 
 * <p>
 * Title:
 * </p>
 * <p>
 * Description:
 * </p>
 * <p>
 * Copyright: Copyright (c) 2003
 * </p>
 * <p>
 * Company:
 * </p>
 * 
 * @author not attributable
 * @version 1.0
 */

public class NameSpace extends AcpiNamedObject {

	public static NameSpace rootNameSpace = new NameSpace("\\");
	public static NameSpace currentNameSpace = rootNameSpace;

	Hashtable objects = new Hashtable();

	public NameSpace() {
	}

	public NameSpace(String name) {
		super(name);
	}

	public NameSpace(NameSpace root, String name) {
		super(root, name);
	}

	public static NameSpace getRoot() {
		return rootNameSpace;
	}

	public void put(AcpiObject object) {
		/*
		 * if (rootNameSpace.objects==null) { rootNameSpace.objects=new Hashtable();
		 * rootNameSpace.put(rootNameSpace); // self put
		 */
		objects.put(object.getName(), object);
	}

	public void put(String name, AcpiNamedObject object) {
		if (rootNameSpace.objects == null) {
			rootNameSpace.objects = new Hashtable();
			rootNameSpace.put(rootNameSpace); // self put
		}
		objects.put(name, object);
		object.setName(name);
	}

	public AcpiObject get(String path) {
		return (AcpiObject) (currentNameSpace.objects.get(path));
	}

	public void remove(String ref) {
		if (objects != null)
			objects.remove(ref);
	}

	public void reset() {
		currentNameSpace = rootNameSpace;
	}

	public void parse(ParseNode root) {
		parse(this, root);
	}

	public void parse(NameSpace origin, ParseNode root) {
		if (root == null)
			return;
		ParseNode op = root.geChild();

		while (op != null) {
			switch (op.getType()) {
				case Aml.AML_SCOPE :
					Scope scope = new Scope(origin, op.getNameToString());
					parse(scope, op);
					break;
				case Aml.AML_DEVICE :
					Device device = new Device(origin, op.getNameToString());
					Object address = op.findNameValue("_HID");
					if (address instanceof String)
						device.addAddress("_HID", (String) address);
					else if (address instanceof Integer)
						device.addAddress("_HID", PnP.eisaIdToString(((Integer) address).intValue()));
					parse(device, op);
					break;
			}
			op = op.getNext();
		}
	}

	public void dump(String prefix) {
		log.info(toString(prefix));
		for (Enumeration e = objects.keys(); e.hasMoreElements();) {
			AcpiObject obj = (AcpiObject) objects.get(e.nextElement());
			obj.dump(prefix + "   ");
		}
	}

	public void dump() {
		dump("");
	}

	public String toString(String prefix) {
		return super.toString(prefix);
	}

	public String toString() {
		return toString("");
	}
}

⌨️ 快捷键说明

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