public class VariantSupport extends Variant
Supports reading and writing of variant data.
FIXME (3): Reading and writing should be made more uniform than it is now. The following items should be resolved:
Reading requires a length parameter that is 4 byte greater than the actual data, because the variant type field is included.
Reading reads from a byte array while writing writes to an byte array output stream.
| Modifier and Type | Field and Description | 
|---|---|
| protected static List | unsupportedMessageKeeps a list of the variant types an "unsupported" message has already
 been issued for. | 
LENGTH_0, LENGTH_2, LENGTH_4, LENGTH_8, LENGTH_UNKNOWN, LENGTH_VARIABLE, VT_ARRAY, VT_BLOB, VT_BLOB_OBJECT, VT_BOOL, VT_BSTR, VT_BYREF, VT_CARRAY, VT_CF, VT_CLSID, VT_CY, VT_DATE, VT_DECIMAL, VT_DISPATCH, VT_EMPTY, VT_ERROR, VT_FILETIME, VT_HRESULT, VT_I1, VT_I2, VT_I4, VT_I8, VT_ILLEGAL, VT_ILLEGALMASKED, VT_INT, VT_LPSTR, VT_LPWSTR, VT_NULL, VT_PTR, VT_R4, VT_R8, VT_RESERVED, VT_SAFEARRAY, VT_STORAGE, VT_STORED_OBJECT, VT_STREAM, VT_STREAMED_OBJECT, VT_TYPEMASK, VT_UI1, VT_UI2, VT_UI4, VT_UI8, VT_UINT, VT_UNKNOWN, VT_USERDEFINED, VT_VARIANT, VT_VECTOR, VT_VOID| Constructor and Description | 
|---|
| VariantSupport() | 
| Modifier and Type | Method and Description | 
|---|---|
| static String | codepageToEncoding(int codepage)Turns a codepage number into the equivalent character encoding's 
 name. | 
| static boolean | isLogUnsupportedTypes()Checks whether logging of unsupported variant types warning is turned
 on or off. | 
| static Object | read(byte[] src,
    int offset,
    int length,
    long type,
    int codepage)Reads a variant type from a byte array. | 
| static void | setLogUnsupportedTypes(boolean logUnsupportedTypes)Specifies whether warnings about unsupported variant types are to be
 written to  System.error not. | 
| static int | write(OutputStream out,
     long type,
     Object value,
     int codepage)Writes a variant value to an output stream. | 
| protected static void | writeUnsupportedTypeMessage(UnsupportedVariantTypeException ex)Writes a warning to  System.errthat a variant type is
 unsupported by HPSF. | 
getVariantLength, getVariantNameprotected static List unsupportedMessage
Keeps a list of the variant types an "unsupported" message has already been issued for.
public static void setLogUnsupportedTypes(boolean logUnsupportedTypes)
Specifies whether warnings about unsupported variant types are to be
 written to System.err or not.
logUnsupportedTypes - If true warnings will be written,
 if false they won't.public static boolean isLogUnsupportedTypes()
Checks whether logging of unsupported variant types warning is turned on or off.
true if logging is turned on, else
 false.protected static void writeUnsupportedTypeMessage(UnsupportedVariantTypeException ex)
Writes a warning to System.err that a variant type is
 unsupported by HPSF. Such a warning is written only once for each variant
 type. Log messages can be turned on or off by 
ex - The exception to logpublic static Object read(byte[] src, int offset, int length, long type, int codepage) throws ReadingNotSupportedException, UnsupportedEncodingException
Reads a variant type from a byte array.
src - The byte arrayoffset - The offset in the byte array where the variant
 startslength - The length of the variant including the variant
 type fieldtype - The variant type to readcodepage - The codepage to use to write non-wide stringsLong, a
 VT_LPSTR as a String.ReadingNotSupportedException - if a property is to be written
 who's variant type HPSF does not yet supportUnsupportedEncodingException - if the specified codepage is not
 supported.Variantpublic static String codepageToEncoding(int codepage) throws UnsupportedEncodingException
Turns a codepage number into the equivalent character encoding's name.
codepage - The codepage numberUnsupportedEncodingException - if the specified codepage is
 less than zero.public static int write(OutputStream out, long type, Object value, int codepage) throws IOException, WritingNotSupportedException
Writes a variant value to an output stream. This method ensures that always a multiple of 4 bytes is written.
If the codepage is UTF-16, which is encouraged, strings
 must always be written as Variant.VT_LPWSTR
 strings, not as Variant.VT_LPSTR strings. This method ensure this
 by converting strings appropriately, if needed.
out - The stream to write the value to.type - The variant's type.value - The variant's value.codepage - The codepage to use to write non-wide stringsIOException - if an I/O exceptions occursWritingNotSupportedException - if a property is to be written
 who's variant type HPSF does not yet supportCopyright © 2014 Open Microscopy Environment