namestring.java

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

JAVA
137
字号
/*
 * $Id: NameString.java,v 1.1 2003/11/25 11:42:34 epr Exp $
 */
package org.jnode.driver.acpi.aml;

import java.util.Vector;
import java.nio.ByteBuffer;

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

public class NameString implements Comparable {
	String prefix;
	Vector namePath = new Vector();

	public NameString() {
	}

	public NameString(String prefix) {
		this.prefix = prefix;
	}

	public int compareTo(Object o) {
		if (o instanceof NameString) {
			NameString compared = (NameString) o;
			if (prefix.length() == compared.prefix.length()) {
				if (namePath.size() == compared.namePath.size()) {
					for (int i = 0; i < namePath.size(); i++) {
						if (((String) namePath.elementAt(i)).equals(compared.namePath.elementAt(i)))
							return 0;
					}
				}
			}
		}
		return -1;
	}

	public boolean equals(Object o) {
		if (o instanceof NameString) {
			NameString compared = (NameString) o;

			if (prefix == null) {
				if (compared.prefix != null)
					return false;
			} else {
				if (compared.prefix == null)
					return false;
				if (!prefix.equals(compared.prefix))
					return false;

			}

			if (namePath.size() == compared.namePath.size()) {
				for (int i = 0; i < namePath.size(); i++) {
					if (((String) namePath.elementAt(i)).equals(compared.namePath.elementAt(i)))
						return true;
				}
			}

		}
		return false;
	}

	public void setPrefix(String prefix) {
		this.prefix = prefix;
	}

	public String getPrefix() {
		return this.prefix;
	}

	public void add(String nameseg) {
		namePath.add(nameseg);
	}

	public void addNamePath(ByteBuffer buffer) {
		StringBuffer nameseg = new StringBuffer();
		for (int i = 0; i < 4; i++)
			nameseg.append((char) buffer.get());
		this.add(nameseg.toString());
	}

	public void addDualNamePath(ByteBuffer buffer) {
		//StringBuffer nameseg = new StringBuffer();
		for (int i = 0; i < 2; i++)
			addNamePath(buffer);
	}
	
	public void addMultiNamePath(ByteBuffer buffer) {
		int count = (buffer.get() & 0xff);
		for (int i = 0; i < count; i++)
			addNamePath(buffer);
	}

	public int getSegCount() {
		return namePath.size();
	}

	public void setNamePath(String namepath) {
		namePath.setSize(0);
		namePath.add(namepath);
	}

	public String getNameseg(int index) {
		return (String) namePath.elementAt(index);
	}

	public String toString() {
		StringBuffer result = new StringBuffer();
		if (prefix != null)
			result.append(prefix);
		for (int i = 0; i < namePath.size(); i++) {
			result.append((String) namePath.elementAt(i));
			if (i < namePath.size() - 1)
				result.append('.');
		}
		return result.toString();

	}
}

⌨️ 快捷键说明

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