oleaut32: Add support for const variables.
This commit is contained in:
parent
eb03917935
commit
fe7e384e07
|
@ -2026,6 +2026,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnAddVarDesc(
|
||||||
{
|
{
|
||||||
ICreateTypeInfo2Impl *This = (ICreateTypeInfo2Impl *)iface;
|
ICreateTypeInfo2Impl *This = (ICreateTypeInfo2Impl *)iface;
|
||||||
|
|
||||||
|
HRESULT status = S_OK;
|
||||||
CyclicList *insert;
|
CyclicList *insert;
|
||||||
INT *typedata;
|
INT *typedata;
|
||||||
int var_datawidth;
|
int var_datawidth;
|
||||||
|
@ -2079,7 +2080,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnAddVarDesc(
|
||||||
/* fill out the basic type information */
|
/* fill out the basic type information */
|
||||||
typedata[0] = 0x14 | (index << 16);
|
typedata[0] = 0x14 | (index << 16);
|
||||||
typedata[2] = pVarDesc->wVarFlags;
|
typedata[2] = pVarDesc->wVarFlags;
|
||||||
typedata[3] = (sizeof(VARDESC) << 16) | 0;
|
typedata[3] = (sizeof(VARDESC) << 16) | pVarDesc->varkind;
|
||||||
|
|
||||||
/* update the index data */
|
/* update the index data */
|
||||||
insert->indice = 0x40000000 + index;
|
insert->indice = 0x40000000 + index;
|
||||||
|
@ -2091,6 +2092,8 @@ static HRESULT WINAPI ICreateTypeInfo2_fnAddVarDesc(
|
||||||
&typedata[1], &var_datawidth, &var_alignment,
|
&typedata[1], &var_datawidth, &var_alignment,
|
||||||
&var_type_size);
|
&var_type_size);
|
||||||
|
|
||||||
|
if (pVarDesc->varkind != VAR_CONST)
|
||||||
|
{
|
||||||
/* pad out starting position to data width */
|
/* pad out starting position to data width */
|
||||||
This->datawidth += var_alignment - 1;
|
This->datawidth += var_alignment - 1;
|
||||||
This->datawidth &= ~(var_alignment - 1);
|
This->datawidth &= ~(var_alignment - 1);
|
||||||
|
@ -2122,13 +2125,19 @@ static HRESULT WINAPI ICreateTypeInfo2_fnAddVarDesc(
|
||||||
if (This->typeinfo->res3 == -1) This->typeinfo->res3 = 0;
|
if (This->typeinfo->res3 == -1) This->typeinfo->res3 = 0;
|
||||||
This->typeinfo->res3 += 0x2c;
|
This->typeinfo->res3 += 0x2c;
|
||||||
|
|
||||||
|
/* pad data width to alignment */
|
||||||
|
This->typeinfo->size = (This->datawidth + (alignment - 1)) & ~(alignment - 1);
|
||||||
|
} else {
|
||||||
|
VARIANT *value = pVarDesc->DUMMYUNIONNAME.lpvarValue;
|
||||||
|
status = ctl2_encode_variant(This->typelib, typedata+4, value, V_VT(value));
|
||||||
|
/* ??? native sets size 0x34 */
|
||||||
|
typedata[3] += 0x10 << 16;
|
||||||
|
}
|
||||||
|
|
||||||
/* increment the number of variable elements */
|
/* increment the number of variable elements */
|
||||||
This->typeinfo->cElement += 0x10000;
|
This->typeinfo->cElement += 0x10000;
|
||||||
|
|
||||||
/* pad data width to alignment */
|
return status;
|
||||||
This->typeinfo->size = (This->datawidth + (alignment - 1)) & ~(alignment - 1);
|
|
||||||
|
|
||||||
return S_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
|
Loading…
Reference in New Issue