widl: set libflags
Huw D M Davies
h.davies1 at physics.ox.ac.uk
Fri Jan 7 04:48:03 CST 2005
Huw Davies <huw at codeweavers.com>
Add attributes control, hidden and restricted.
Correctly set the libflags for these attributes.
--
Huw Davies
huw at codeweavers.com
Index: tools/widl/parser.l
===================================================================
RCS file: /home/wine/wine/tools/widl/parser.l,v
retrieving revision 1.21
diff -u -p -r1.21 parser.l
--- tools/widl/parser.l 3 Jan 2005 14:26:17 -0000 1.21
+++ tools/widl/parser.l 7 Jan 2005 10:45:16 -0000
@@ -228,6 +228,7 @@ static struct keyword {
/* ... */
{"helpstring", tHELPSTRING},
/* ... */
+ {"hidden", tHIDDEN},
{"hyper", tHYPER},
{"id", tID},
{"idempotent", tIDEMPOTENT},
@@ -272,6 +273,7 @@ static struct keyword {
{"readonly", tREADONLY},
{"ref", tREF},
/* ... */
+ {"restricted", tRESTRICTED},
{"retval", tRETVAL},
/* ... */
{"short", tSHORT},
Index: tools/widl/parser.y
===================================================================
RCS file: /home/wine/wine/tools/widl/parser.y,v
retrieving revision 1.30
diff -u -p -r1.30 parser.y
--- tools/widl/parser.y 6 Jan 2005 20:45:21 -0000 1.30
+++ tools/widl/parser.y 7 Jan 2005 10:45:16 -0000
@@ -143,6 +143,7 @@ static type_t std_uhyper = { "MIDL_uhype
%token tHANDLE
%token tHANDLET
%token tHELPSTRING
+%token tHIDDEN
%token tHYPER tID tIDEMPOTENT
%token tIIDIS
%token tIMPORT tIMPORTLIB
@@ -163,6 +164,7 @@ static type_t std_uhyper = { "MIDL_uhype
%token tPROPGET tPROPPUT
%token tPUBLIC
%token tREADONLY tREF
+%token tRESTRICTED
%token tRETVAL
%token tSHORT
%token tSIGNED
@@ -346,6 +348,7 @@ attribute:
| tCONTEXTHANDLE { $$ = make_attrv(ATTR_CONTEXTHANDLE, 0); }
| tCONTEXTHANDLENOSERIALIZE { $$ = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ }
| tCONTEXTHANDLESERIALIZE { $$ = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ }
+ | tCONTROL { $$ = make_attr(ATTR_CONTROL); }
| tDEFAULT { $$ = make_attr(ATTR_DEFAULT); }
| tDEFAULTVALUE '(' expr_const ')' { $$ = make_attrp(ATTR_DEFAULTVALUE, $3); }
| tDEFAULTVALUE '(' aSTRING ')' { $$ = make_attrp(ATTR_DEFAULTVALUE, $3); }
@@ -356,6 +359,7 @@ attribute:
| tENTRY '(' expr_const ')' { $$ = make_attrp(ATTR_ENTRY_ORDINAL, $3); }
| tHANDLE { $$ = make_attr(ATTR_HANDLE); }
| tHELPSTRING '(' aSTRING ')' { $$ = make_attrp(ATTR_HELPSTRING, $3); }
+ | tHIDDEN { $$ = make_attr(ATTR_HIDDEN); }
| tID '(' expr_const ')' { $$ = make_attrp(ATTR_ID, $3); }
| tIDEMPOTENT { $$ = make_attr(ATTR_IDEMPOTENT); }
| tIIDIS '(' ident ')' { $$ = make_attrp(ATTR_IIDIS, $3); }
@@ -373,6 +377,7 @@ attribute:
| tPROPPUT { $$ = make_attr(ATTR_PROPPUT); }
| tPUBLIC { $$ = make_attr(ATTR_PUBLIC); }
| tREADONLY { $$ = make_attr(ATTR_READONLY); }
+ | tRESTRICTED { $$ = make_attr(ATTR_RESTRICTED); }
| tRETVAL { $$ = make_attr(ATTR_RETVAL); }
| tSIZEIS '(' m_exprs ')' { $$ = make_attrp(ATTR_SIZEIS, $3); }
| tSOURCE { $$ = make_attr(ATTR_SOURCE); }
Index: tools/widl/widltypes.h
===================================================================
RCS file: /home/wine/wine/tools/widl/widltypes.h,v
retrieving revision 1.20
diff -u -p -r1.20 widltypes.h
--- tools/widl/widltypes.h 6 Jan 2005 20:45:21 -0000 1.20
+++ tools/widl/widltypes.h 7 Jan 2005 10:45:16 -0000
@@ -60,6 +60,7 @@ enum attr_type
ATTR_CALLAS,
ATTR_CASE,
ATTR_CONTEXTHANDLE,
+ ATTR_CONTROL,
ATTR_DEFAULT,
ATTR_DEFAULTVALUE,
ATTR_DLLNAME,
@@ -69,6 +70,7 @@ enum attr_type
ATTR_ENTRY_ORDINAL,
ATTR_HANDLE,
ATTR_HELPSTRING,
+ ATTR_HIDDEN,
ATTR_ID,
ATTR_IDEMPOTENT,
ATTR_IIDIS,
@@ -87,6 +89,7 @@ enum attr_type
ATTR_PROPPUT,
ATTR_PUBLIC,
ATTR_READONLY,
+ ATTR_RESTRICTED,
ATTR_RETVAL,
ATTR_SIZEIS,
ATTR_SOURCE,
Index: tools/widl/write_msft.c
===================================================================
RCS file: /home/wine/wine/tools/widl/write_msft.c,v
retrieving revision 1.1
diff -u -p -r1.1 write_msft.c
--- tools/widl/write_msft.c 6 Jan 2005 20:45:21 -0000 1.1
+++ tools/widl/write_msft.c 7 Jan 2005 10:45:16 -0000
@@ -1396,7 +1396,24 @@ static void set_lcid(msft_typelib_t *typ
static void set_lib_flags(msft_typelib_t *typelib)
{
+ attr_t *attr;
+
typelib->typelib_header.flags = 0;
+ for(attr = typelib->typelib->attrs; attr; attr = NEXT_LINK(attr)) {
+ switch(attr->type) {
+ case ATTR_CONTROL:
+ typelib->typelib_header.flags |= 0x02; /* LIBFLAG_FCONTROL */
+ break;
+ case ATTR_HIDDEN:
+ typelib->typelib_header.flags |= 0x04; /* LIBFLAG_FHIDDEN */
+ break;
+ case ATTR_RESTRICTED:
+ typelib->typelib_header.flags |= 0x01; /* LIBFLAG_FRESTRICTED */
+ break;
+ default:
+ break;
+ }
+ }
return;
}
More information about the wine-patches
mailing list