112 return LANGIDFROMLCID(p.Locale);
120TAutoVal::operator
unsigned char()
125 case atShort:
if(::VarUI1FromI2(iVal, &v))
break;
return v;
126 case atLong:
if(::VarUI1FromI4(lVal, &v))
break;
return v;
127 case atFloat:
if(::VarUI1FromR4(fltVal,&v))
break;
return v;
128 case atDouble:
if(::VarUI1FromR8(dblVal,&v))
break;
return v;
129 case atCurrency:
if(::VarUI1FromCy(cyVal, &v))
break;
return v;
130 case atDatetime:
if(::VarUI1FromDate(date,&v))
break;
return v;
133 case atBool:
return (
unsigned char)(boolVal ? 1 : 0);
135 case atByRef+
atShort:
if(::VarUI1FromI2(*piVal, &v))
break;
return v;
136 case atByRef+
atLong:
if(::VarUI1FromI4(*plVal, &v))
break;
return v;
137 case atByRef+
atFloat:
if(::VarUI1FromR4(*pfltVal,&v))
break;
return v;
138 case atByRef+
atDouble:
if(::VarUI1FromR8(*pdblVal,&v))
break;
return v;
151TAutoVal::operator short()
155 case atByte:
return (
short)bVal;
158 case atLong:
if(::VarI2FromI4(lVal, &v))
break;
return v;
159 case atFloat:
if(::VarI2FromR4(fltVal,&v))
break;
return v;
160 case atDouble:
if(::VarI2FromR8(dblVal,&v))
break;
return v;
161 case atCurrency:
if(::VarI2FromCy(cyVal, &v))
break;
return v;
162 case atDatetime:
if(::VarI2FromDate(date,&v))
break;
return v;
165 case atBool:
return short(boolVal ? 1 : 0);
169 case atByRef+
atLong:
if(::VarI2FromI4(*plVal, &v))
break;
return v;
170 case atByRef+
atFloat:
if(::VarI2FromR4(*pfltVal,&v))
break;
return v;
184TAutoVal::operator long()
188 case atByte:
return (
long)bVal;
189 case atShort:
return (
long)iVal;
191 case atFloat:
if(::VarI4FromR4(fltVal,&v))
break;
return v;
192 case atDouble:
if(::VarI4FromR8(dblVal,&v))
break;
return v;
193 case atCurrency:
if(::VarI4FromCy(cyVal, &v))
break;
return v;
194 case atDatetime:
if(::VarI4FromDate(date,&v))
break;
return v;
197 case atBool:
return boolVal ? 1L : 0L;
201 case atByRef+
atFloat:
if(::VarI4FromR4(*pfltVal,&v))
break;
return v;
215TAutoVal::operator
TBool()
223 case atCurrency:
return static_cast<TBool>(cyVal.Lo!=0 || cyVal.Hi != 0);
225 case atString: {
short v;
if(::VarBoolFromStr(bstrVal,GetLocale(),0L,&v))
break;
return static_cast<TBool>(v!=0);}
226 case atObject: {
short v;
if(::VarBoolFromDisp(pdispVal,GetLocale(),&v))
break;
return static_cast<TBool>(v!=0);}
227 case atBool:
return static_cast<TBool>(boolVal != 0);
235 case atByRef+
atString: {
short v;
if(::VarBoolFromStr(*pbstrVal,GetLocale(),0L,&v))
break;
return static_cast<TBool>(v!=0);}
245TAutoVal::operator float()
249 case atByte:
if(::VarR4FromUI1(bVal,&v))
break;
return v;
250 case atShort:
if(::VarR4FromI2(iVal, &v))
break;
return v;
251 case atLong:
if(::VarR4FromI4(lVal, &v))
break;
return v;
253 case atDouble:
if(::VarR4FromR8(dblVal,&v))
break;
return v;
254 case atCurrency:
if(::VarR4FromCy(cyVal, &v))
break;
return v;
255 case atDatetime:
if(::VarR4FromDate(date,&v))
break;
return v;
258 case atBool:
if(::VarR4FromBool(boolVal,&v))
break;
return v;
259 case atByRef+
atByte:
if(::VarR4FromUI1(*pbVal,&v))
break;
return v;
260 case atByRef+
atShort:
if(::VarR4FromI2(*piVal, &v))
break;
return v;
261 case atByRef+
atLong:
if(::VarR4FromI4(*plVal, &v))
break;
return v;
267 case atByRef+
atBool:
if(::VarR4FromBool(*pbool,&v))
break;
return v;
276TAutoVal::operator double()
280 case atByte:
if(::VarR8FromUI1(bVal,&v))
break;
return v;
281 case atShort:
if(::VarR8FromI2(iVal, &v))
break;
return v;
282 case atLong:
if(::VarR8FromI4(lVal, &v))
break;
return v;
283 case atFloat:
if(::VarR8FromR4(fltVal,&v))
break;
return v;
285 case atCurrency:
if(::VarR8FromCy(cyVal, &v))
break;
return v;
286 case atDatetime:
if(::VarR8FromDate(date,&v))
break;
return v;
289 case atBool:
if(::VarR8FromBool(boolVal,&v))
break;
return v;
290 case atByRef+
atByte:
if(::VarR8FromUI1(*pbVal,&v))
break;
return v;
291 case atByRef+
atShort:
if(::VarR8FromI2(*piVal, &v))
break;
return v;
292 case atByRef+
atLong:
if(::VarR8FromI4(*plVal, &v))
break;
return v;
293 case atByRef+
atFloat:
if(::VarR8FromR4(*pfltVal,&v))
break;
return v;
298 case atByRef+
atBool:
if(::VarR8FromBool(*pbool,&v))
break;
return v;
311 case atByte:
if(::VarDateFromUI1(bVal,&v))
break;
return v;
312 case atShort:
if(::VarDateFromI2(iVal, &v))
break;
return v;
313 case atLong:
if(::VarDateFromI4(lVal, &v))
break;
return v;
314 case atFloat:
if(::VarDateFromR4(fltVal,&v))
break;
return v;
315 case atDouble:
if(::VarDateFromR8(dblVal,&v))
break;
return v;
319 case atBool:
if(::VarDateFromBool(boolVal,&v))
break;
return v;
320 case atByRef+
atByte:
if(::VarDateFromUI1(*pbVal,&v))
break;
return v;
321 case atByRef+
atShort:
if(::VarDateFromI2(*piVal, &v))
break;
return v;
322 case atByRef+
atLong:
if(::VarDateFromI4(*plVal, &v))
break;
return v;
323 case atByRef+
atFloat:
if(::VarDateFromR4(*pfltVal,&v))
break;
return v;
324 case atByRef+
atDouble:
if(::VarDateFromR8(*pdblVal,&v))
break;
return v;
327 case atByRef+
atBool:
if(::VarDateFromBool(*pbool,&v))
break;
return v;
343 case atByte: stat = ::VarCyFromUI1(bVal, &v);
break;
344 case atShort: stat = ::VarCyFromI2(iVal, &v);
break;
345 case atLong: stat = ::VarCyFromI4(lVal, &v);
break;
346 case atFloat: stat = ::VarCyFromR4(fltVal,&v);
break;
347 case atDouble: stat = ::VarCyFromR8(dblVal,&v);
break;
353 case atBool: stat = ::VarCyFromBool(boolVal,&v);
break;
354 case atByRef+
atByte: stat = ::VarCyFromUI1(*pbVal, &v);
break;
356 case atByRef+
atLong: stat = ::VarCyFromI4(*plVal, &v);
break;
363 case atByRef+
atBool: stat = ::VarCyFromBool(*pbool,&v);
break;
364 default: stat = (HRESULT)-1;
381 case atByte: stat = ::VarBstrFromUI1(bVal, lcid,0, &v);
break;
382 case atShort: stat = ::VarBstrFromI2(iVal, lcid,0, &v);
break;
383 case atLong: stat = ::VarBstrFromI4(lVal, lcid,0, &v);
break;
384 case atFloat: stat = ::VarBstrFromR4(fltVal,lcid,0, &v);
break;
385 case atDouble: stat = ::VarBstrFromR8(dblVal,lcid,0, &v);
break;
386 case atCurrency: stat = ::VarBstrFromCy(cyVal ,lcid,0, &v);
break;
387 case atDatetime: stat = ::VarBstrFromDate(date,lcid,0, &v);
break;
390 case atObject: stat = ::VarBstrFromDisp(pdispVal,GetLocale(),0, &v);
break;
391 case atBool: stat = ::VarBstrFromBool(boolVal,lcid,0, &v);
break;
392 case atByRef+
atByte: stat = ::VarBstrFromUI1(*pbVal, lcid,0, &v);
break;
393 case atByRef+
atShort: stat = ::VarBstrFromI2(*piVal, lcid,0, &v);
break;
394 case atByRef+
atLong: stat = ::VarBstrFromI4(*plVal, lcid,0, &v);
break;
395 case atByRef+
atFloat: stat = ::VarBstrFromR4(*pfltVal,lcid,0, &v);
break;
396 case atByRef+
atDouble: stat = ::VarBstrFromR8(*pdblVal,lcid,0, &v);
break;
401 case atByRef+
atBool: stat = ::VarBstrFromBool(*pbool,lcid,0,&v);
break;
402 default: stat = (HRESULT)-1;
419 case atByte: stat = ::VarBstrFromUI1(bVal, lcid,0, &v);
break;
420 case atShort: stat = ::VarBstrFromI2(iVal, lcid,0, &v);
break;
421 case atLong: stat = ::VarBstrFromI4(lVal, lcid,0, &v);
break;
422 case atFloat: stat = ::VarBstrFromR4(fltVal,lcid,0, &v);
break;
423 case atDouble: stat = ::VarBstrFromR8(dblVal,lcid,0, &v);
break;
424 case atCurrency: stat = ::VarBstrFromCy(cyVal ,lcid,0, &v);
break;
425 case atDatetime: stat = ::VarBstrFromDate(date,lcid,0, &v);
break;
428 case atBool: stat = ::VarBstrFromBool(boolVal,lcid,0, &v);
break;
429 case atByRef+
atByte: stat = ::VarBstrFromUI1(*pbVal, lcid,0, &v);
break;
430 case atByRef+
atShort: stat = ::VarBstrFromI2(*piVal, lcid,0, &v);
break;
431 case atByRef+
atLong: stat = ::VarBstrFromI4(*plVal, lcid,0, &v);
break;
432 case atByRef+
atFloat: stat = ::VarBstrFromR4(*pfltVal,lcid,0, &v);
break;
433 case atByRef+
atDouble: stat = ::VarBstrFromR8(*pdblVal,lcid,0, &v);
break;
437 case atByRef+
atBool: stat = ::VarBstrFromBool(*pbool,lcid,0,&v);
break;
438 default: stat = (HRESULT)-1;
467TAutoVal::operator
unsigned short()
469 long temp =
operator long();
470 if (temp < 0 || temp >
long(USHRT_MAX))
472 return (
unsigned short)temp;
478TAutoVal::operator
unsigned char* ()
486TAutoVal::operator
short* ()
494TAutoVal::operator
unsigned short* ()
497 return (
unsigned short*)piVal;
502TAutoVal::operator
long* ()
510TAutoVal::operator
unsigned long* ()
513 return (
unsigned long*)plVal;
518TAutoVal::operator
TBool* ()
521 return (
TBool*)pbool;
526TAutoVal::operator
float* ()
534TAutoVal::operator
double* ()
542TAutoVal::operator
void* ()
566void TAutoVal::ConvRef(
int type)
582TAutoVal::operator IDispatch*()
591 (*ppdispVal)->AddRef();
601TAutoVal::operator IPictureDisp*()
603 return STATIC_CAST(IPictureDisp*,
operator IDispatch*());
609TAutoVal::operator IFontDisp*()
611 return STATIC_CAST(IFontDisp*,
operator IDispatch*());
616TAutoVal::operator IUnknown*()
625 (*ppunkVal)->AddRef();
635 (*ppdispVal)->AddRef();
644TAutoVal::operator IUnknown&()
656TAutoVal::operator IDispatch&()
668TAutoVal::operator IPictureDisp&()
670 return STATIC_CAST(IPictureDisp&,
operator IDispatch&());
675TAutoVal::operator IFontDisp&()
677 return STATIC_CAST(IFontDisp&,
operator IDispatch&());
683TAutoVal::operator BSTR()
690 case atByte: stat = ::VarBstrFromUI1 (bVal, lcid, 0, &v);
break;
691 case atShort: stat = ::VarBstrFromI2 (iVal, lcid, 0, &v);
break;
692 case atLong: stat = ::VarBstrFromI4 (lVal, lcid, 0, &v);
break;
693 case atFloat: stat = ::VarBstrFromR4 (fltVal, lcid, 0, &v);
break;
694 case atDouble: stat = ::VarBstrFromR8 (dblVal, lcid, 0, &v);
break;
695 case atCurrency: stat = ::VarBstrFromCy (cyVal, lcid, 0, &v);
break;
696 case atDatetime: stat = ::VarBstrFromDate(date, lcid, 0, &v);
break;
697 case atString: return ::SysAllocString (bstrVal);
699 case atBool: stat = ::VarBstrFromBool(boolVal, lcid, 0, &v);
break;
700 case atByRef +
atByte: stat = ::VarBstrFromUI1 (*pbVal, lcid, 0, &v);
break;
701 case atByRef +
atShort: stat = ::VarBstrFromI2 (*piVal, lcid, 0, &v);
break;
702 case atByRef +
atLong: stat = ::VarBstrFromI4 (*plVal, lcid, 0, &v);
break;
703 case atByRef +
atFloat: stat = ::VarBstrFromR4 (*pfltVal, lcid, 0, &v);
break;
704 case atByRef+
atDouble: stat = ::VarBstrFromR8 (*pdblVal, lcid, 0, &v);
break;
708 case atByRef +
atBool: stat = ::VarBstrFromBool(*pbool, lcid, 0, &v);
break;
709 default: stat = (HRESULT) - 1;
718TAutoVal::operator BSTR*()
727 return (
TBSTR*)pbstrVal;
730TAutoVal::operator SAFEARRAY*()
733 return((vt &
atByRef) ? *pparray : parray);
738TAutoVal::operator IUnknown**()
745 (*ppunkVal)->AddRef();
752TAutoVal::operator IDispatch**()
759 (*ppdispVal)->AddRef();
771TAutoVal::operator LARGE_INTEGER()
778 LARGE_INTEGER dummy = {0,0};
782TAutoVal::operator ULARGE_INTEGER()
789 ULARGE_INTEGER dummy = {0,0};
794TAutoVal::operator ULONG_PTR()
813 wsprintf(errMsg,
_T(
"Automation Exception, TXAuto::ErrorCode=%d"), err);
OLE Automation Class Definitions.
Based on reference counted TString with added automation functionality.
TAutoString(const char *s=0)
TLocaleId GetLocale() const
void SetLocale(TLocaleId)
const TAutoVal & operator=(const TAutoVal &src)
owl::TLangId GetLanguage() const
static void Raise(TError err)
Pointer to an array of type T.
TString(const char *s=0)
Construct a TString from any type of string.
TLangId GetLangId()
Get Language Id of this string.
Privately used by TString to manage string pointers This is a reference counted union of various stri...
static TUString * Create(const char *str)
TXBase(const tstring &msg)
Calls the xmsg class's constructor that takes a string parameter and initializes xmsg with the value ...
Include for OC, gets common headers when precompiled headers are enabled.
Object Component Framework (COM encapsulation).
const owl::uint16 atSafeArray
TCHAR * GetAutoExceptionMsg(TXAuto::TError err)
const owl::uint16 atByRef
owl::TSysStr TBSTR
BASIC global string encapsulation.
owl::uint16 TLangId
Holds a language ID, a predefined number that represents a base language and dialect.
const TLangId LangUserDefault
BSTR SysAllocString(const char *str)
#define STATIC_CAST(targetType, object)
static TLangId NativeLangId
The base language ID of non-localized strings.