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