|
|
|
/* ====================================================================
|
|
|
|
Licensed To the Apache Software Foundation (ASF) under one or more
|
|
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
|
|
this work for Additional information regarding copyright ownership.
|
|
|
|
The ASF licenses this file To You under the Apache License, Version 2.0
|
|
|
|
(the "License"); you may not use this file except in compliance with
|
|
|
|
the License. You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed To in writing, software
|
|
|
|
distributed under the License is distributed on an "AS Is" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
limitations under the License.
|
|
|
|
==================================================================== */
|
|
|
|
|
|
|
|
/* ================================================================
|
|
|
|
* About NPOI
|
|
|
|
* Author: Tony Qu
|
|
|
|
* Author's email: tonyqus (at) gmail.com
|
|
|
|
* Author's Blog: tonyqus.wordpress.com.cn (wp.tonyqus.cn)
|
|
|
|
* HomePage: http://www.codeplex.com/npoi
|
|
|
|
* Contributors:
|
|
|
|
*
|
|
|
|
* ==============================================================*/
|
|
|
|
|
|
|
|
namespace Npoi.Core.HPSF
|
|
|
|
{
|
|
|
|
using System;
|
|
|
|
using System.Collections;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// The <em>Variant</em> types as defined by Microsoft's COM. I
|
|
|
|
/// found this information in <a href="http://www.marin.clara.net/COM/variant_type_definitions.htm">
|
|
|
|
/// http://www.marin.clara.net/COM/variant_type_definitions.htm</a>.
|
|
|
|
/// In the variant types descriptions the following shortcuts are
|
|
|
|
/// used: <strong> [V]</strong> - may appear in a VARIANT,
|
|
|
|
/// <strong>[T]</strong> - may appear in a TYPEDESC,
|
|
|
|
/// <strong>[P]</strong> - may appear in an OLE property Set,
|
|
|
|
/// <strong>[S]</strong> - may appear in a Safe Array.
|
|
|
|
/// @author Rainer Klute (klute@rainer-klute.de)
|
|
|
|
/// @since 2002-02-09
|
|
|
|
/// </summary>
|
|
|
|
public class Variant
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* [V][P] Nothing, i.e. not a single byte of data.
|
|
|
|
*/
|
|
|
|
public const int VT_EMPTY = 0;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [V][P] SQL style Null.
|
|
|
|
*/
|
|
|
|
public const int VT_NULL = 1;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [V][T][P][S] 2 byte signed int.
|
|
|
|
*/
|
|
|
|
public const int VT_I2 = 2;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [V][T][P][S] 4 byte signed int.
|
|
|
|
*/
|
|
|
|
public const int VT_I4 = 3;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [V][T][P][S] 4 byte real.
|
|
|
|
*/
|
|
|
|
public const int VT_R4 = 4;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [V][T][P][S] 8 byte real.
|
|
|
|
*/
|
|
|
|
public const int VT_R8 = 5;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [V][T][P][S] currency. <span style="background-color:
|
|
|
|
* #ffff00">How long is this? How is it To be
|
|
|
|
* interpreted?</span>
|
|
|
|
*/
|
|
|
|
public const int VT_CY = 6;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [V][T][P][S] DateTime. <span style="background-color:
|
|
|
|
* #ffff00">How long is this? How is it To be
|
|
|
|
* interpreted?</span>
|
|
|
|
*/
|
|
|
|
public const int VT_DATE = 7;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [V][T][P][S] OLE Automation string. <span
|
|
|
|
* style="background-color: #ffff00">How long is this? How is it
|
|
|
|
* To be interpreted?</span>
|
|
|
|
*/
|
|
|
|
public const int VT_BSTR = 8;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [V][T][P][S] IDispatch *. <span style="background-color:
|
|
|
|
* #ffff00">How long is this? How is it To be
|
|
|
|
* interpreted?</span>
|
|
|
|
*/
|
|
|
|
public const int VT_DISPATCH = 9;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [V][T][S] SCODE. <span style="background-color: #ffff00">How
|
|
|
|
* long is this? How is it To be interpreted?</span>
|
|
|
|
*/
|
|
|
|
public const int VT_ERROR = 10;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [V][T][P][S] True=-1, False=0.
|
|
|
|
*/
|
|
|
|
public const int VT_BOOL = 11;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [V][T][P][S] VARIANT *. <span style="background-color:
|
|
|
|
* #ffff00">How long is this? How is it To be
|
|
|
|
* interpreted?</span>
|
|
|
|
*/
|
|
|
|
public const int VT_VARIANT = 12;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [V][T][S] IUnknown *. <span style="background-color:
|
|
|
|
* #ffff00">How long is this? How is it To be
|
|
|
|
* interpreted?</span>
|
|
|
|
*/
|
|
|
|
public const int VT_UNKNOWN = 13;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [V][T][S] 16 byte fixed point.
|
|
|
|
*/
|
|
|
|
public const int VT_DECIMAL = 14;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [T] signed char.
|
|
|
|
*/
|
|
|
|
public const int VT_I1 = 16;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [V][T][P][S] unsigned char.
|
|
|
|
*/
|
|
|
|
public const int VT_UI1 = 17;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [T][P] unsigned short.
|
|
|
|
*/
|
|
|
|
public const int VT_UI2 = 18;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [T][P] unsigned int.
|
|
|
|
*/
|
|
|
|
public const int VT_UI4 = 19;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [T][P] signed 64-bit int.
|
|
|
|
*/
|
|
|
|
public const int VT_I8 = 20;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [T][P] unsigned 64-bit int.
|
|
|
|
*/
|
|
|
|
public const int VT_UI8 = 21;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [T] signed machine int.
|
|
|
|
*/
|
|
|
|
public const int VT_INT = 22;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [T] unsigned machine int.
|
|
|
|
*/
|
|
|
|
public const int VT_UINT = 23;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [T] C style void.
|
|
|
|
*/
|
|
|
|
public const int VT_VOID = 24;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [T] Standard return type. <span style="background-color:
|
|
|
|
* #ffff00">How long is this? How is it To be
|
|
|
|
* interpreted?</span>
|
|
|
|
*/
|
|
|
|
public const int VT_HRESULT = 25;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [T] pointer type. <span style="background-color:
|
|
|
|
* #ffff00">How long is this? How is it To be
|
|
|
|
* interpreted?</span>
|
|
|
|
*/
|
|
|
|
public const int VT_PTR = 26;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [T] (use VT_ARRAY in VARIANT).
|
|
|
|
*/
|
|
|
|
public const int VT_SAFEARRAY = 27;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [T] C style array. <span style="background-color:
|
|
|
|
* #ffff00">How long is this? How is it To be
|
|
|
|
* interpreted?</span>
|
|
|
|
*/
|
|
|
|
public const int VT_CARRAY = 28;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [T] user defined type. <span style="background-color:
|
|
|
|
* #ffff00">How long is this? How is it To be
|
|
|
|
* interpreted?</span>
|
|
|
|
*/
|
|
|
|
public const int VT_USERDEFINED = 29;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [T][P] null terminated string.
|
|
|
|
*/
|
|
|
|
public const int VT_LPSTR = 30;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [T][P] wide (Unicode) null terminated string.
|
|
|
|
*/
|
|
|
|
public const int VT_LPWSTR = 31;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [P] FILETIME. The FILETIME structure holds a DateTime 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 const int VT_FILETIME = 64;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [P] Length prefixed bytes.
|
|
|
|
*/
|
|
|
|
public const int VT_BLOB = 65;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [P] Name of the stream follows.
|
|
|
|
*/
|
|
|
|
public const int VT_STREAM = 66;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [P] Name of the storage follows.
|
|
|
|
*/
|
|
|
|
public const int VT_STORAGE = 67;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [P] Stream Contains an object. <span
|
|
|
|
* style="background-color: #ffff00"> How long is this? How is it
|
|
|
|
* To be interpreted?</span>
|
|
|
|
*/
|
|
|
|
public const int VT_STREAMED_OBJECT = 68;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* [P] Storage Contains an object. <span
|
|
|
|
* style="background-color: #ffff00"> How long is this? How is it
|
|