📄 propertiesattribute.java
字号:
// PropertiesAttribute.java// $Id: PropertiesAttribute.java,v 1.4 2000/08/16 21:37:56 ylafon Exp $// (c) COPYRIGHT MIT and INRIA, 1996.// Please first read the full copyright statement in file COPYRIGHT.htmlpackage org.w3c.tools.resources.upgrade ;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.util.Enumeration;import org.w3c.util.ArrayDictionary;/** * The generic description of an PropertiesAttribute. * A PropertiesAttribute instance holds a String to String mapping, it * should be used only with care, since people may act on a reference to * it. */public class PropertiesAttribute extends Attribute { /** * Get the pickled length of that string. */ private int getPickleLength(String str) { int strlen = str.length() ; int utflen = 0 ; for (int i = 0 ; i < strlen ; i++) { int c = str.charAt(i); if ((c >= 0x0001) && (c <= 0x007F)) { utflen++; } else if (c > 0x07FF) { utflen += 3; } else { utflen += 2; } } return utflen + 2 ; } /** * Is the given object a valid PropertiesAttribute value ? * @param obj The object to test. * @return A boolean <strong>true</strong> if value is valid. */ public boolean checkValue(Object obj) { return (obj == null) || (obj instanceof ArrayDictionary); } /** * Get the number of bytes required to save that attribute value. * @param The value about to be pickled. * @return The number of bytes needed to pickle that value. */ public final int getPickleLength(Object value) { ArrayDictionary a = (ArrayDictionary) value; Enumeration e = a.keys(); int s = 4; while ( e.hasMoreElements() ) { String key = (String) e.nextElement(); s += getPickleLength(key); s += getPickleLength((String) a.get(key)); } return s; } /** * Pickle a property list to the given output stream. * @param out The output stream to pickle to. * @param obj The object to pickle. * @exception IOException If some IO error occured. */ public void pickle(DataOutputStream out, Object o) throws IOException { ArrayDictionary a = (ArrayDictionary) o; Enumeration e = a.keys(); int s = a.size(); out.writeInt(s); while (--s >= 0) { String key = (String) e.nextElement(); out.writeUTF(key); out.writeUTF((String) a.get(key)); } } /** * Unpickle an string from the given input stream. * @param in The input stream to unpickle from. * @return An instance of String. * @exception IOException If some IO error occured. */ public Object unpickle (DataInputStream in) throws IOException { int s = in.readInt(); ArrayDictionary a = new ArrayDictionary(s, 5); while (--s >= 0) { String k = in.readUTF(); String v = in.readUTF(); a.put(k, v); } return a; } /** * Create a description for a generic property list attribute. * @param name The attribute name. * @param def The default value for these attributes. * @param flags The associated flags. */ public PropertiesAttribute(String name, String def, Integer flags) { super(name, def, flags) ; this.type = "java.lang.String"; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -