Package org.jnode.driver.system.acpi.vm

Source Code of org.jnode.driver.system.acpi.vm.NameSpace

/*
* $Id$
*
* Copyright (C) 2003-2014 JNode.org
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This library 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 Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; If not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
package org.jnode.driver.system.acpi.vm;

import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import org.jnode.driver.system.acpi.aml.Aml;
import org.jnode.driver.system.acpi.aml.ParseNode;
import org.jnode.driver.system.pnp.PnP;

/**
* NameSpace.
* <p/>
* <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 final NameSpace rootNameSpace = new NameSpace("\\");
    public static NameSpace currentNameSpace = rootNameSpace;

    private final Map<String, AcpiObject> objects = new HashMap<String, AcpiObject>();

    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(PrintWriter out, String prefix) {
        out.println(toString(prefix));
        for (AcpiObject obj : objects.values()) {
            obj.dump(out, prefix + "   ");
        }
    }

    public void dump(PrintWriter out) {
        dump(out, "");
    }

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

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

Related Classes of org.jnode.driver.system.acpi.vm.NameSpace

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.