diff --git a/tools/widl/parser.l b/tools/widl/parser.l index b8035cdcd59..43ed190732e 100644 --- a/tools/widl/parser.l +++ b/tools/widl/parser.l @@ -210,6 +210,7 @@ static struct keyword { /* ... */ {"dispinterface", tDISPINTERFACE}, /* ... */ + {"displaybind", tDISPLAYBIND}, {"dllname", tDLLNAME}, {"double", tDOUBLE}, {"dual", tDUAL}, diff --git a/tools/widl/parser.y b/tools/widl/parser.y index ef331a2a39d..4fc19fb521d 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -133,6 +133,7 @@ static type_t std_uhyper = { "MIDL_uhyper" }; %token tCONTEXTHANDLESERIALIZE tCONTROL tCPPQUOTE %token tDEFAULT %token tDEFAULTVALUE +%token tDISPLAYBIND %token tDISPINTERFACE %token tDLLNAME tDOUBLE tDUAL %token tENDPOINT @@ -339,6 +340,7 @@ attrib_list: attribute attribute: tASYNC { $$ = make_attr(ATTR_ASYNC); } | tAUTOHANDLE { $$ = make_attr(ATTR_AUTO_HANDLE); } + | tBINDABLE { $$ = make_attr(ATTR_BINDABLE); } | tCALLAS '(' ident ')' { $$ = make_attrp(ATTR_CALLAS, $3); } | tCASE '(' expr_list_const ')' { $$ = make_attrp(ATTR_CASE, $3); } | tCONTEXTHANDLE { $$ = make_attrv(ATTR_CONTEXTHANDLE, 0); } @@ -348,6 +350,7 @@ attribute: | tDEFAULT { $$ = make_attr(ATTR_DEFAULT); } | tDEFAULTVALUE '(' expr_const ')' { $$ = make_attrp(ATTR_DEFAULTVALUE_EXPR, $3); } | tDEFAULTVALUE '(' aSTRING ')' { $$ = make_attrp(ATTR_DEFAULTVALUE_STRING, $3); } + | tDISPLAYBIND { $$ = make_attr(ATTR_DISPLAYBIND); } | tDLLNAME '(' aSTRING ')' { $$ = make_attrp(ATTR_DLLNAME, $3); } | tDUAL { $$ = make_attr(ATTR_DUAL); } | tENDPOINT '(' aSTRING ')' { $$ = make_attrp(ATTR_ENDPOINT, $3); } diff --git a/tools/widl/widltypes.h b/tools/widl/widltypes.h index dea60bb7655..487b4ade304 100644 --- a/tools/widl/widltypes.h +++ b/tools/widl/widltypes.h @@ -58,6 +58,7 @@ enum attr_type { ATTR_ASYNC, ATTR_AUTO_HANDLE, + ATTR_BINDABLE, ATTR_CALLAS, ATTR_CASE, ATTR_CONTEXTHANDLE, @@ -66,6 +67,7 @@ enum attr_type ATTR_DEFAULTVALUE_EXPR, ATTR_DEFAULTVALUE_STRING, ATTR_DISPINTERFACE, + ATTR_DISPLAYBIND, ATTR_DLLNAME, ATTR_DUAL, ATTR_ENDPOINT,