Module: wine Branch: refs/heads/master Commit: 2330d73f4a6e1ae9aa3bc71cf6dca627d323ec56 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=2330d73f4a6e1ae9aa3bc71c...
Author: Robert Shearman rob@codeweavers.com Date: Tue Jan 31 18:04:20 2006 +0100
widl: Implement the writing of defaultvalue constants for enum values.
---
tools/widl/write_msft.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/tools/widl/write_msft.c b/tools/widl/write_msft.c index bf1806b..a9b9f34 100644 --- a/tools/widl/write_msft.c +++ b/tools/widl/write_msft.c @@ -1362,18 +1362,28 @@ static HRESULT add_func_desc(msft_typein switch(attr->type) { case ATTR_DEFAULTVALUE_EXPR: { + int vt; expr_t *expr = (expr_t *)attr->u.pval; + if (arg->type->type == RPC_FC_ENUM16) + vt = VT_INT; + else + vt = get_var_vt(arg); paramflags |= 0x30; /* PARAMFLAG_FHASDEFAULT | PARAMFLAG_FOPT */ chat("default value %ld\n", expr->cval); - write_value(typeinfo->typelib, defaultdata, (*paramdata >> 16) & 0x1ff, &expr->cval); + write_value(typeinfo->typelib, defaultdata, vt, &expr->cval); break; } case ATTR_DEFAULTVALUE_STRING: { char *s = (char *)attr->u.pval; + int vt; + if (arg->type->type == RPC_FC_ENUM16) + vt = VT_INT; + else + vt = get_var_vt(arg); paramflags |= 0x30; /* PARAMFLAG_FHASDEFAULT | PARAMFLAG_FOPT */ chat("default value '%s'\n", s); - write_value(typeinfo->typelib, defaultdata, (*paramdata >> 16) & 0x1ff, s); + write_value(typeinfo->typelib, defaultdata, vt, s); break; } case ATTR_IN: