org.apache.poi.hpsf
Class Variant

java.lang.Object
  extended by org.apache.poi.hpsf.Variant
Direct Known Subclasses:
VariantSupport

public class Variant
extends java.lang.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.

Author:
Rainer Klute (klute@rainer-klute.de)

Field Summary
static java.lang.Integer LENGTH_0
          Denotes a variant type with a length of 0 bytes.
static java.lang.Integer LENGTH_2
          Denotes a variant type with a length of 2 bytes.
static java.lang.Integer LENGTH_4
          Denotes a variant type with a length of 4 bytes.
static java.lang.Integer LENGTH_8
          Denotes a variant type with a length of 8 bytes.
static java.lang.Integer LENGTH_UNKNOWN
          Denotes a variant type with a length that is unknown to HPSF yet.
static java.lang.Integer LENGTH_VARIABLE
          Denotes a variant type with a variable length.
static int VT_ARRAY
          [V] SAFEARRAY*.
static int VT_BLOB
          [P] Length prefixed bytes.
static int VT_BLOB_OBJECT
          [P] Blob contains an object.
static int VT_BOOL
          [V][T][P][S] True=-1, False=0.
static int VT_BSTR
          [V][T][P][S] OLE Automation string.
static int VT_BYREF
          [V] void* for local use.
static int VT_CARRAY
          [T] C style array.
static int VT_CF
          [P] Clipboard format.
static int VT_CLSID
          [P] A Class ID.
static int VT_CY
          [V][T][P][S] currency.
static int VT_DATE
          [V][T][P][S] date.
static int VT_DECIMAL
          [V][T][S] 16 byte fixed point.
static int VT_DISPATCH
          [V][T][P][S] IDispatch *.
static int VT_EMPTY
          [V][P] Nothing, i.e.
static int VT_ERROR
          [V][T][S] SCODE.
static int VT_FILETIME
          [P] FILETIME.
static int VT_HRESULT
          [T] Standard return type.
static int VT_I1
          [T] signed char.
static int VT_I2
          [V][T][P][S] 2 byte signed int.
static int VT_I4
          [V][T][P][S] 4 byte signed int.
static int VT_I8
          [T][P] signed 64-bit int.
static int VT_ILLEGAL
          FIXME (3): Document this!
static int VT_ILLEGALMASKED
          FIXME (3): Document this!
static int VT_INT
          [T] signed machine int.
static int VT_LPSTR
          [T][P] null terminated string.
static int VT_LPWSTR
          [T][P] wide (Unicode) null terminated string.
static int VT_NULL
          [V][P] SQL style Null.
static int VT_PTR
          [T] pointer type.
static int VT_R4
          [V][T][P][S] 4 byte real.
static int VT_R8
          [V][T][P][S] 8 byte real.
static int VT_RESERVED
          FIXME (3): Document this!
static int VT_SAFEARRAY
          [T] (use VT_ARRAY in VARIANT).
static int VT_STORAGE
          [P] Name of the storage follows.
static int VT_STORED_OBJECT
          [P] Storage contains an object.
static int VT_STREAM
          [P] Name of the stream follows.
static int VT_STREAMED_OBJECT
          [P] Stream contains an object.
static int VT_TYPEMASK
          FIXME (3): Document this!
static int VT_UI1
          [V][T][P][S] unsigned char.
static int VT_UI2
          [T][P] unsigned short.
static int VT_UI4
          [T][P] unsigned int.
static int VT_UI8
          [T][P] unsigned 64-bit int.
static int VT_UINT
          [T] unsigned machine int.
static int VT_UNKNOWN
          [V][T][S] IUnknown *.
static int VT_USERDEFINED
          [T] user defined type.
static int VT_VARIANT
          [V][T][P][S] VARIANT *.
static int VT_VECTOR
          [P] simple counted array.
static int VT_VERSIONED_STREAM
          "MUST be a VersionedStream.
static int VT_VOID
          [T] C style void.
 
Constructor Summary
Variant()
           
 
Method Summary
static int getVariantLength(long variantType)
          Returns a variant type's length.
static java.lang.String getVariantName(long variantType)
          Returns the variant type name associated with a variant type number.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

VT_EMPTY

public static final int VT_EMPTY

[V][P] Nothing, i.e. not a single byte of data.

See Also:
Constant Field Values

VT_NULL

public static final int VT_NULL

[V][P] SQL style Null.

See Also:
Constant Field Values

VT_I2

public static final int VT_I2

[V][T][P][S] 2 byte signed int.

See Also:
Constant Field Values

VT_I4

public static final int VT_I4

[V][T][P][S] 4 byte signed int.

See Also:
Constant Field Values

VT_R4

public static final int VT_R4

[V][T][P][S] 4 byte real.

See Also:
Constant Field Values

VT_R8

public static final int VT_R8

[V][T][P][S] 8 byte real.

See Also:
Constant Field Values

VT_CY

public static final int VT_CY

[V][T][P][S] currency. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_DATE

public static final int VT_DATE

[V][T][P][S] date. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_BSTR

public static final int VT_BSTR

[V][T][P][S] OLE Automation string. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_DISPATCH

public static final int VT_DISPATCH

[V][T][P][S] IDispatch *. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_ERROR

public static final int VT_ERROR

[V][T][S] SCODE. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_BOOL

public static final int VT_BOOL

[V][T][P][S] True=-1, False=0.

See Also:
Constant Field Values

VT_VARIANT

public static final int VT_VARIANT

[V][T][P][S] VARIANT *. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_UNKNOWN

public static final int VT_UNKNOWN

[V][T][S] IUnknown *. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_DECIMAL

public static final int VT_DECIMAL

[V][T][S] 16 byte fixed point.

See Also:
Constant Field Values

VT_I1

public static final int VT_I1

[T] signed char.

See Also:
Constant Field Values

VT_UI1

public static final int VT_UI1

[V][T][P][S] unsigned char.

See Also:
Constant Field Values

VT_UI2

public static final int VT_UI2

[T][P] unsigned short.

See Also:
Constant Field Values

VT_UI4

public static final int VT_UI4

[T][P] unsigned int.

See Also:
Constant Field Values

VT_I8

public static final int VT_I8

[T][P] signed 64-bit int.

See Also:
Constant Field Values

VT_UI8

public static final int VT_UI8

[T][P] unsigned 64-bit int.

See Also:
Constant Field Values

VT_INT

public static final int VT_INT

[T] signed machine int.

See Also:
Constant Field Values

VT_UINT

public static final int VT_UINT

[T] unsigned machine int.

See Also:
Constant Field Values

VT_VOID

public static final int VT_VOID

[T] C style void.

See Also:
Constant Field Values

VT_HRESULT

public static final int VT_HRESULT

[T] Standard return type. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_PTR

public static final int VT_PTR

[T] pointer type. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_SAFEARRAY

public static final int VT_SAFEARRAY

[T] (use VT_ARRAY in VARIANT).

See Also:
Constant Field Values

VT_CARRAY

public static final int VT_CARRAY

[T] C style array. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_USERDEFINED

public static final int VT_USERDEFINED

[T] user defined type. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_LPSTR

public static final int VT_LPSTR

[T][P] null terminated string.

See Also:
Constant Field Values

VT_LPWSTR

public static final int VT_LPWSTR

[T][P] wide (Unicode) null terminated string.

See Also:
Constant Field Values

VT_FILETIME

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.

See Also:
Constant Field Values

VT_BLOB

public static final int VT_BLOB

[P] Length prefixed bytes.

See Also:
Constant Field Values

VT_STREAM

public static final int VT_STREAM

[P] Name of the stream follows.

See Also:
Constant Field Values

VT_STORAGE

public static final int VT_STORAGE

[P] Name of the storage follows.

See Also:
Constant Field Values

VT_STREAMED_OBJECT

public static final int VT_STREAMED_OBJECT

[P] Stream contains an object. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_STORED_OBJECT

public static final int VT_STORED_OBJECT

[P] Storage contains an object. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_BLOB_OBJECT

public static final int VT_BLOB_OBJECT

[P] Blob contains an object. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_CF

public static final int VT_CF

[P] Clipboard format. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_CLSID

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:

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.

See Also:
Constant Field Values

VT_VERSIONED_STREAM

public static final int VT_VERSIONED_STREAM
"MUST be a VersionedStream. The storage representing the (non-simple) property set MUST have a stream element with the name in the StreamName field." -- [MS-OLEPS] -- v20110920; Object Linking and Embedding (OLE) Property Set Data Structures; page 24 / 63

See Also:
Constant Field Values

VT_VECTOR

public static final int VT_VECTOR

[P] simple counted array. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_ARRAY

public static final int VT_ARRAY

[V] SAFEARRAY*. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_BYREF

public static final int VT_BYREF

[V] void* for local use. How long is this? How is it to be interpreted?

See Also:
Constant Field Values

VT_RESERVED

public static final int VT_RESERVED

FIXME (3): Document this!

See Also:
Constant Field Values

VT_ILLEGAL

public static final int VT_ILLEGAL

FIXME (3): Document this!

See Also:
Constant Field Values

VT_ILLEGALMASKED

public static final int VT_ILLEGALMASKED

FIXME (3): Document this!

See Also:
Constant Field Values

VT_TYPEMASK

public static final int VT_TYPEMASK

FIXME (3): Document this!

See Also:
Constant Field Values

LENGTH_UNKNOWN

public static final java.lang.Integer LENGTH_UNKNOWN

Denotes a variant type with a length that is unknown to HPSF yet.


LENGTH_VARIABLE

public static final java.lang.Integer LENGTH_VARIABLE

Denotes a variant type with a variable length.


LENGTH_0

public static final java.lang.Integer LENGTH_0

Denotes a variant type with a length of 0 bytes.


LENGTH_2

public static final java.lang.Integer LENGTH_2

Denotes a variant type with a length of 2 bytes.


LENGTH_4

public static final java.lang.Integer LENGTH_4

Denotes a variant type with a length of 4 bytes.


LENGTH_8

public static final java.lang.Integer LENGTH_8

Denotes a variant type with a length of 8 bytes.

Constructor Detail

Variant

public Variant()
Method Detail

getVariantName

public static java.lang.String getVariantName(long variantType)

Returns the variant type name associated with a variant type number.

Parameters:
variantType - The variant type number
Returns:
The variant type name or the string "unknown variant type"

getVariantLength

public static int getVariantLength(long variantType)

Returns a variant type's length.

Parameters:
variantType - The variant type number
Returns:
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.


Copyright 2012 The Apache Software Foundation or its licensors, as applicable.