Variantpublic class Variant extends Object The Variant types as defined by Microsoft's COM. I
found this information in
http://www.marin.clara.net/COM/variant_type_definitions.htm.
In the variant types descriptions the following shortcuts are
used: [V] - may appear in a VARIANT,
[T] - may appear in a TYPEDESC,
[P] - may appear in an OLE property set,
[S] - may appear in a Safe Array. |
Fields Summary |
---|
public static final int | VT_EMPTY [V][P] Nothing, i.e. not a single byte of data. | public static final int | VT_NULL [V][P] SQL style Null. | public static final int | VT_I2 [V][T][P][S] 2 byte signed int. | public static final int | VT_I4 [V][T][P][S] 4 byte signed int. | public static final int | VT_R4 [V][T][P][S] 4 byte real. | public static final int | VT_R8 [V][T][P][S] 8 byte real. | public static final int | VT_CY [V][T][P][S] currency. How long is this? How is it to be
interpreted? | public static final int | VT_DATE [V][T][P][S] date. How long is this? How is it to be
interpreted? | public static final int | VT_BSTR [V][T][P][S] OLE Automation string. How long is this? How is it
to be interpreted? | public static final int | VT_DISPATCH [V][T][P][S] IDispatch *. How long is this? How is it to be
interpreted? | public static final int | VT_ERROR [V][T][S] SCODE. How
long is this? How is it to be interpreted? | public static final int | VT_BOOL [V][T][P][S] True=-1, False=0. | public static final int | VT_VARIANT [V][T][P][S] VARIANT *. How long is this? How is it to be
interpreted? | public static final int | VT_UNKNOWN [V][T][S] IUnknown *. How long is this? How is it to be
interpreted? | public static final int | VT_DECIMAL [V][T][S] 16 byte fixed point. | public static final int | VT_I1 [T] signed char. | public static final int | VT_UI1 [V][T][P][S] unsigned char. | public static final int | VT_UI2 [T][P] unsigned short. | public static final int | VT_UI4 [T][P] unsigned int. | public static final int | VT_I8 [T][P] signed 64-bit int. | public static final int | VT_UI8 [T][P] unsigned 64-bit int. | public static final int | VT_INT [T] signed machine int. | public static final int | VT_UINT [T] unsigned machine int. | public static final int | VT_VOID [T] C style void. | public static final int | VT_HRESULT [T] Standard return type. How long is this? How is it to be
interpreted? | public static final int | VT_PTR [T] pointer type. How long is this? How is it to be
interpreted? | public static final int | VT_SAFEARRAY [T] (use VT_ARRAY in VARIANT). | public static final int | VT_CARRAY [T] C style array. How long is this? How is it to be
interpreted? | public static final int | VT_USERDEFINED [T] user defined type. How long is this? How is it to be
interpreted? | public static final int | VT_LPSTR [T][P] null terminated string. | public static final int | VT_LPWSTR [T][P] wide (Unicode) null terminated string. | public static final int | VT_FILETIME [P] FILETIME. The FILETIME structure holds a date and time
associated with a file. The structure identifies a 64-bit
integer specifying the number of 100-nanosecond intervals which
have passed since January 1, 1601. This 64-bit value is split
into the two dwords stored in the structure. | public static final int | VT_BLOB [P] Length prefixed bytes. | public static final int | VT_STREAM [P] Name of the stream follows. | public static final int | VT_STORAGE [P] Name of the storage follows. | public static final int | VT_STREAMED_OBJECT [P] Stream contains an object. How long is this? How is it
to be interpreted? | public static final int | VT_STORED_OBJECT [P] Storage contains an object. How long is this? How is it
to be interpreted? | public static final int | VT_BLOB_OBJECT [P] Blob contains an object. How long is this? How is it to be
interpreted? | public static final int | VT_CF [P] Clipboard format. How long is this? How is it to be
interpreted? | public static final int | VT_CLSID [P] A Class ID.
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.
The valid Clipboard Format Tags are:
- {@link Thumbnail#CFTAG_WINDOWS}
- {@link Thumbnail#CFTAG_MACINTOSH}
- {@link Thumbnail#CFTAG_NODATA}
- {@link Thumbnail#CFTAG_FMTID}
typedef struct tagCLIPDATA {
// cbSize is the size of the buffer pointed to
// by pClipData, plus sizeof(ulClipFmt)
ULONG cbSize;
long ulClipFmt;
BYTE* pClipData;
} CLIPDATA;
See
msdn.microsoft.com/library/en-us/com/stgrstrc_0uwk.asp. | public static final int | VT_VECTOR [P] simple counted array. How long is this? How is it to be
interpreted? | public static final int | VT_ARRAY [V] SAFEARRAY*. How
long is this? How is it to be interpreted? | public static final int | VT_BYREF [V] void* for local use. How long is this? How is it to be
interpreted? | public static final int | VT_RESERVED FIXME (3): Document this! | public static final int | VT_ILLEGAL FIXME (3): Document this! | public static final int | VT_ILLEGALMASKED FIXME (3): Document this! | public static final int | VT_TYPEMASK FIXME (3): Document this! | private static Map | numberToName Maps the numbers denoting the variant types to their corresponding
variant type names. | private static Map | numberToLength | public static final Integer | LENGTH_UNKNOWN Denotes a variant type with a length that is unknown to HPSF yet. | public static final Integer | LENGTH_VARIABLE Denotes a variant type with a variable length. | public static final Integer | LENGTH_0 Denotes a variant type with a length of 0 bytes. | public static final Integer | LENGTH_2 Denotes a variant type with a length of 2 bytes. | public static final Integer | LENGTH_4 Denotes a variant type with a length of 4 bytes. | public static final Integer | LENGTH_8 Denotes a variant type with a length of 8 bytes. |
Methods Summary |
---|
public static int | getVariantLength(long variantType)Returns a variant type's length.
final Long key = new Long((int) variantType);
final Long length = (Long) numberToLength.get(key);
if (length == null)
return -2;
return length.intValue();
| public static java.lang.String | getVariantName(long variantType)Returns the variant type name associated with a variant type
number.
/* 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);
final String name = (String) numberToName.get(new Long(variantType));
return name != null ? name : "unknown variant type";
|
|