📄 variant.java
字号:
* <p>[P] Blob contains an object. <span style="background-color: * #ffff00">How long is this? How is it to be * interpreted?</span></p> */ public static final int VT_BLOB_OBJECT = 70; /** * <p>[P] Clipboard format. <span style="background-color: * #ffff00">How long is this? How is it to be * interpreted?</span></p> */ public static final int VT_CF = 71; /** * <p>[P] A Class ID.</p> * * <p>It consists of a 32 bit unsigned integer indicating the size * of the structure, a 32 bit signed integer indicating (Clipboard * Format Tag) indicating the type of data that it contains, and * then a byte array containing the data.</p> * * <p>The valid Clipboard Format Tags are:</p> * * <ul> * <li>{@link Thumbnail#CFTAG_WINDOWS}</li> * <li>{@link Thumbnail#CFTAG_MACINTOSH}</li> * <li>{@link Thumbnail#CFTAG_NODATA}</li> * <li>{@link Thumbnail#CFTAG_FMTID}</li> * </ul> * * <pre>typedef struct tagCLIPDATA { * // cbSize is the size of the buffer pointed to * // by pClipData, plus sizeof(ulClipFmt) * ULONG cbSize; * long ulClipFmt; * BYTE* pClipData; * } CLIPDATA;</pre> * * <p>See <a * href="msdn.microsoft.com/library/en-us/com/stgrstrc_0uwk.asp" * target="_blank"> * msdn.microsoft.com/library/en-us/com/stgrstrc_0uwk.asp</a>.</p> */ public static final int VT_CLSID = 72; /** * <p>[P] simple counted array. <span style="background-color: * #ffff00">How long is this? How is it to be * interpreted?</span></p> */ public static final int VT_VECTOR = 0x1000; /** * <p>[V] SAFEARRAY*. <span style="background-color: #ffff00">How * long is this? How is it to be interpreted?</span></p> */ public static final int VT_ARRAY = 0x2000; /** * <p>[V] void* for local use. <span style="background-color: * #ffff00">How long is this? How is it to be * interpreted?</span></p> */ public static final int VT_BYREF = 0x4000; /** * <p>FIXME (3): Document this!</p> */ public static final int VT_RESERVED = 0x8000; /** * <p>FIXME (3): Document this!</p> */ public static final int VT_ILLEGAL = 0xFFFF; /** * <p>FIXME (3): Document this!</p> */ public static final int VT_ILLEGALMASKED = 0xFFF; /** * <p>FIXME (3): Document this!</p> */ public static final int VT_TYPEMASK = 0xFFF; /** * <p>Maps the numbers denoting the variant types to their corresponding * variant type names.</p> */ private static Map numberToName; private static Map numberToLength; /** * <p>Denotes a variant type with a length that is unknown to HPSF yet.</p> */ public static final Integer LENGTH_UNKNOWN = new Integer(-2); /** * <p>Denotes a variant type with a variable length.</p> */ public static final Integer LENGTH_VARIABLE = new Integer(-1); /** * <p>Denotes a variant type with a length of 0 bytes.</p> */ public static final Integer LENGTH_0 = new Integer(0); /** * <p>Denotes a variant type with a length of 2 bytes.</p> */ public static final Integer LENGTH_2 = new Integer(2); /** * <p>Denotes a variant type with a length of 4 bytes.</p> */ public static final Integer LENGTH_4 = new Integer(4); /** * <p>Denotes a variant type with a length of 8 bytes.</p> */ public static final Integer LENGTH_8 = new Integer(8); static { /* Initialize the number-to-name map: */ Map tm1 = new HashMap(); tm1.put(new Long(0), "VT_EMPTY"); tm1.put(new Long(1), "VT_NULL"); tm1.put(new Long(2), "VT_I2"); tm1.put(new Long(3), "VT_I4"); tm1.put(new Long(4), "VT_R4"); tm1.put(new Long(5), "VT_R8"); tm1.put(new Long(6), "VT_CY"); tm1.put(new Long(7), "VT_DATE"); tm1.put(new Long(8), "VT_BSTR"); tm1.put(new Long(9), "VT_DISPATCH"); tm1.put(new Long(10), "VT_ERROR"); tm1.put(new Long(11), "VT_BOOL"); tm1.put(new Long(12), "VT_VARIANT"); tm1.put(new Long(13), "VT_UNKNOWN"); tm1.put(new Long(14), "VT_DECIMAL"); tm1.put(new Long(16), "VT_I1"); tm1.put(new Long(17), "VT_UI1"); tm1.put(new Long(18), "VT_UI2"); tm1.put(new Long(19), "VT_UI4"); tm1.put(new Long(20), "VT_I8"); tm1.put(new Long(21), "VT_UI8"); tm1.put(new Long(22), "VT_INT"); tm1.put(new Long(23), "VT_UINT"); tm1.put(new Long(24), "VT_VOID"); tm1.put(new Long(25), "VT_HRESULT"); tm1.put(new Long(26), "VT_PTR"); tm1.put(new Long(27), "VT_SAFEARRAY"); tm1.put(new Long(28), "VT_CARRAY"); tm1.put(new Long(29), "VT_USERDEFINED"); tm1.put(new Long(30), "VT_LPSTR"); tm1.put(new Long(31), "VT_LPWSTR"); tm1.put(new Long(64), "VT_FILETIME"); tm1.put(new Long(65), "VT_BLOB"); tm1.put(new Long(66), "VT_STREAM"); tm1.put(new Long(67), "VT_STORAGE"); tm1.put(new Long(68), "VT_STREAMED_OBJECT"); tm1.put(new Long(69), "VT_STORED_OBJECT"); tm1.put(new Long(70), "VT_BLOB_OBJECT"); tm1.put(new Long(71), "VT_CF"); tm1.put(new Long(72), "VT_CLSID"); Map tm2 = new HashMap(tm1.size(), 1.0F); tm2.putAll(tm1); numberToName = Collections.unmodifiableMap(tm2); /* Initialize the number-to-length map: */ tm1.clear(); tm1.put(new Long(0), LENGTH_0); tm1.put(new Long(1), LENGTH_UNKNOWN); tm1.put(new Long(2), LENGTH_2); tm1.put(new Long(3), LENGTH_4); tm1.put(new Long(4), LENGTH_4); tm1.put(new Long(5), LENGTH_8); tm1.put(new Long(6), LENGTH_UNKNOWN); tm1.put(new Long(7), LENGTH_UNKNOWN); tm1.put(new Long(8), LENGTH_UNKNOWN); tm1.put(new Long(9), LENGTH_UNKNOWN); tm1.put(new Long(10), LENGTH_UNKNOWN); tm1.put(new Long(11), LENGTH_UNKNOWN); tm1.put(new Long(12), LENGTH_UNKNOWN); tm1.put(new Long(13), LENGTH_UNKNOWN); tm1.put(new Long(14), LENGTH_UNKNOWN); tm1.put(new Long(16), LENGTH_UNKNOWN); tm1.put(new Long(17), LENGTH_UNKNOWN); tm1.put(new Long(18), LENGTH_UNKNOWN); tm1.put(new Long(19), LENGTH_UNKNOWN); tm1.put(new Long(20), LENGTH_UNKNOWN); tm1.put(new Long(21), LENGTH_UNKNOWN); tm1.put(new Long(22), LENGTH_UNKNOWN); tm1.put(new Long(23), LENGTH_UNKNOWN); tm1.put(new Long(24), LENGTH_UNKNOWN); tm1.put(new Long(25), LENGTH_UNKNOWN); tm1.put(new Long(26), LENGTH_UNKNOWN); tm1.put(new Long(27), LENGTH_UNKNOWN); tm1.put(new Long(28), LENGTH_UNKNOWN); tm1.put(new Long(29), LENGTH_UNKNOWN); tm1.put(new Long(30), LENGTH_VARIABLE); tm1.put(new Long(31), LENGTH_UNKNOWN); tm1.put(new Long(64), LENGTH_8); tm1.put(new Long(65), LENGTH_UNKNOWN); tm1.put(new Long(66), LENGTH_UNKNOWN); tm1.put(new Long(67), LENGTH_UNKNOWN); tm1.put(new Long(68), LENGTH_UNKNOWN); tm1.put(new Long(69), LENGTH_UNKNOWN); tm1.put(new Long(70), LENGTH_UNKNOWN); tm1.put(new Long(71), LENGTH_UNKNOWN); tm1.put(new Long(72), LENGTH_UNKNOWN); tm2 = new HashMap(tm1.size(), 1.0F); tm2.putAll(tm1); numberToLength = Collections.unmodifiableMap(tm2); } /** * <p>Returns the variant type name associated with a variant type * number.</p> * * @param variantType The variant type number * @return The variant type name or the string "unknown variant type" */ public static String getVariantName(final long variantType) { final String name = (String) numberToName.get(new Long(variantType)); return name != null ? name : "unknown variant type"; } /** * <p>Returns a variant type's length.</p> * * @param variantType The variant type number * @return The length of the variant type's data in bytes. If the length is * variable, i.e. the length of a string, -1 is returned. If HPSF does not * know the length, -2 is returned. The latter usually indicates an * unsupported variant type. */ public static int getVariantLength(final long variantType) { final Long key = new Long((int) variantType); final Long length = (Long) numberToLength.get(key); if (length == null) return -2; return length.intValue(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -