00001
00002
00012
00013
00014 #ifndef __VARIANT_H__
00015 #define __VARIANT_H__
00016
00017 #include "SLTypes.h"
00018
00019
00037 class XSIEXPORT CSLVariantProxy
00038 {
00039 public:
00042 enum EValueType
00043 {
00044 SI_SLVT_INVALID = 0,
00045 SI_SLVT_BOOL,
00046 SI_SLVT_BYTE,
00047 SI_SLVT_UBYTE,
00048 SI_SLVT_DOUBLE,
00049 SI_SLVT_FLOAT,
00050 SI_SLVT_INT,
00051 SI_SLVT_LONG,
00052 SI_SLVT_ULONG,
00053 SI_SLVT_SHORT,
00054 SI_SLVT_STRING
00055 };
00056
00065 union
00066 {
00067 CSLBoolProxy *m_pBool;
00068 CSLByteProxy *m_pByte;
00069 CSLUByteProxy *m_pUByte;
00070 CSLDoubleProxy *m_pDouble;
00071 CSLFloatProxy *m_pFloat;
00072 CSLIntProxy *m_pInt;
00073 CSLLongProxy *m_pLong;
00074 CSLULongProxy *m_pULong;
00075 CSLShortProxy *m_pShort;
00076 CSLStringProxy *m_pString;
00077 };
00078
00083 CSLVariantProxy();
00084
00086 ~CSLVariantProxy();
00087
00094 SI_Error Connect( CdotXSITemplate *in_pTemplate, SI_Int in_nIndex );
00095
00100 CSLVariantProxy( CdotXSITemplate *in_pTemplate, SI_Int in_nIndex );
00101
00104 EValueType GetType() const;
00105
00112 SI_Error GetValue( SI_TinyVariant &out_Variant ) const;
00113
00121 SI_Error SetValue( const SI_TinyVariant &in_vVariant );
00122
00130 SI_Error SetValue( const CSLVariantProxy &in_vVariant );
00131
00138 static SI_Error TinyVarType2SLVarType( const SI_TinyVariant &in_TinyVariant, EValueType &out_Type );
00139
00146 SI_Error GetTinyVarType( SI_Int &out_VariantType ) const;
00147
00148 private:
00149 CSLVariantProxy(const CSLVariantProxy& );
00150 const CSLVariantProxy& operator=(const CSLVariantProxy );
00151
00152 void Clear();
00153 EValueType m_ValueType;
00154 };
00155
00156 #endif //__VARIANT_H__