From: Jacek Caban Date: Mon, 3 Jan 2005 14:26:17 +0000 (+0000) Subject: Added optional, defaultvalue and vararg. X-Git-Tag: wine-20050111~214 X-Git-Url: http://git.etersoft.ru/projects/?a=commitdiff_plain;h=54cba79d64c48907f487c655e168be6df37828fe;p=wine%2Feterwine.git Added optional, defaultvalue and vararg. --- diff --git a/tools/widl/parser.l b/tools/widl/parser.l index d3c48b9ec7..eadce36817 100644 --- a/tools/widl/parser.l +++ b/tools/widl/parser.l @@ -206,6 +206,7 @@ static struct keyword { {"cpp_quote", tCPPQUOTE}, /* ... */ {"default", tDEFAULT}, + {"defaultvalue", tDEFAULTVALUE}, /* ... */ {"dispinterface", tDISPINTERFACE}, /* ... */ @@ -257,6 +258,7 @@ static struct keyword { {"odl", tODL}, {"oleautomation", tOLEAUTOMATION}, /* ... */ + {"optional", tOPTIONAL}, {"out", tOUT}, /* ... */ {"pointer_default", tPOINTERDEFAULT}, @@ -295,6 +297,7 @@ static struct keyword { {"uuid", tUUID}, {"v1_enum", tV1ENUM}, /* ... */ + {"vararg", tVARARG}, {"version", tVERSION}, {"void", tVOID}, {"wchar_t", tWCHAR}, diff --git a/tools/widl/parser.y b/tools/widl/parser.y index f8eb10c8b9..6448d8f520 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -131,6 +131,7 @@ static type_t std_uhyper = { "MIDL_uhyper" }; %token tCONST tCONTEXTHANDLE tCONTEXTHANDLENOSERIALIZE %token tCONTEXTHANDLESERIALIZE tCONTROL tCPPQUOTE %token tDEFAULT +%token tDEFAULTVALUE %token tDISPINTERFACE %token tDLLNAME tDOUBLE tDUAL %token tENDPOINT @@ -153,6 +154,7 @@ static type_t std_uhyper = { "MIDL_uhyper" }; %token tMETHODS %token tMODULE %token tOBJECT tODL tOLEAUTOMATION +%token tOPTIONAL %token tOUT %token tPOINTERDEFAULT %token tPROPERTIES @@ -174,6 +176,7 @@ static type_t std_uhyper = { "MIDL_uhyper" }; %token tUNSIGNED %token tUUID %token tV1ENUM +%token tVARARG %token tVERSION %token tVOID %token tWCHAR tWIREMARSHAL @@ -341,6 +344,8 @@ attribute: | tCONTEXTHANDLENOSERIALIZE { $$ = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ } | tCONTEXTHANDLESERIALIZE { $$ = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ } | tDEFAULT { $$ = make_attr(ATTR_DEFAULT); } + | tDEFAULTVALUE '(' expr_const ')' { $$ = make_attrp(ATTR_DEFAULTVALUE, $3); } + | tDEFAULTVALUE '(' aSTRING ')' { $$ = make_attrp(ATTR_DEFAULTVALUE, $3); } | tDLLNAME '(' aSTRING ')' { $$ = make_attrp(ATTR_DLLNAME, $3); } | tDUAL { $$ = make_attr(ATTR_DUAL); } | tENDPOINT '(' aSTRING ')' { $$ = make_attrp(ATTR_ENDPOINT, $3); } @@ -358,6 +363,7 @@ attribute: | tOBJECT { $$ = make_attr(ATTR_OBJECT); } | tODL { $$ = make_attr(ATTR_ODL); } | tOLEAUTOMATION { $$ = make_attr(ATTR_OLEAUTOMATION); } + | tOPTIONAL { $$ = make_attr(ATTR_OPTIONAL); } | tOUT { $$ = make_attr(ATTR_OUT); } | tPOINTERDEFAULT '(' pointer_type ')' { $$ = make_attrv(ATTR_POINTERDEFAULT, $3); } | tPROPGET { $$ = make_attr(ATTR_PROPGET); } @@ -373,6 +379,7 @@ attribute: | tTRANSMITAS '(' type ')' { $$ = make_attrp(ATTR_TRANSMITAS, type_ref($3)); } | tUUID '(' aUUID ')' { $$ = make_attrp(ATTR_UUID, $3); } | tV1ENUM { $$ = make_attr(ATTR_V1ENUM); } + | tVARARG { $$ = make_attr(ATTR_VARARG); } | tVERSION '(' version ')' { $$ = make_attrv(ATTR_VERSION, $3); } | tWIREMARSHAL '(' type ')' { $$ = make_attrp(ATTR_WIREMARSHAL, type_ref($3)); } | pointer_type { $$ = make_attrv(ATTR_POINTERTYPE, $1); } diff --git a/tools/widl/widltypes.h b/tools/widl/widltypes.h index 433931bdbc..c6c8ab9301 100644 --- a/tools/widl/widltypes.h +++ b/tools/widl/widltypes.h @@ -63,6 +63,7 @@ enum attr_type ATTR_CASE, ATTR_CONTEXTHANDLE, ATTR_DEFAULT, + ATTR_DEFAULTVALUE, ATTR_DLLNAME, ATTR_DUAL, ATTR_ENDPOINT, @@ -80,6 +81,7 @@ enum attr_type ATTR_OBJECT, ATTR_ODL, ATTR_OLEAUTOMATION, + ATTR_OPTIONAL, ATTR_OUT, ATTR_POINTERDEFAULT, ATTR_POINTERTYPE, @@ -96,6 +98,7 @@ enum attr_type ATTR_TRANSMITAS, ATTR_UUID, ATTR_V1ENUM, + ATTR_VARARG, ATTR_VERSION, ATTR_WIREMARSHAL, ATTR_DISPINTERFACE