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 + -
显示快捷键?