widl: Write out more TYPEFLAGs and add more type library-specific
attributes to the parser.
This commit is contained in:
parent
649d5d0e8e
commit
91c35be7cc
|
@ -179,7 +179,6 @@ static struct keyword {
|
||||||
{"aggregatable", tAGGREGATABLE},
|
{"aggregatable", tAGGREGATABLE},
|
||||||
{"allocate", tALLOCATE},
|
{"allocate", tALLOCATE},
|
||||||
{"appobject", tAPPOBJECT},
|
{"appobject", tAPPOBJECT},
|
||||||
{"arrays", tARRAYS},
|
|
||||||
{"async", tASYNC},
|
{"async", tASYNC},
|
||||||
{"async_uuid", tASYNCUUID},
|
{"async_uuid", tASYNCUUID},
|
||||||
{"auto_handle", tAUTOHANDLE},
|
{"auto_handle", tAUTOHANDLE},
|
||||||
|
@ -203,51 +202,45 @@ static struct keyword {
|
||||||
{"cpp_quote", tCPPQUOTE},
|
{"cpp_quote", tCPPQUOTE},
|
||||||
/* ... */
|
/* ... */
|
||||||
{"default", tDEFAULT},
|
{"default", tDEFAULT},
|
||||||
|
{"defaultcollelem", tDEFAULTCOLLELEM},
|
||||||
{"defaultvalue", tDEFAULTVALUE},
|
{"defaultvalue", tDEFAULTVALUE},
|
||||||
/* ... */
|
{"defaultvtable", tDEFAULTVTABLE},
|
||||||
{"dispinterface", tDISPINTERFACE},
|
{"dispinterface", tDISPINTERFACE},
|
||||||
/* ... */
|
|
||||||
{"displaybind", tDISPLAYBIND},
|
{"displaybind", tDISPLAYBIND},
|
||||||
{"dllname", tDLLNAME},
|
{"dllname", tDLLNAME},
|
||||||
{"double", tDOUBLE},
|
{"double", tDOUBLE},
|
||||||
{"dual", tDUAL},
|
{"dual", tDUAL},
|
||||||
/* ... */
|
|
||||||
{"endpoint", tENDPOINT},
|
{"endpoint", tENDPOINT},
|
||||||
{"entry", tENTRY},
|
{"entry", tENTRY},
|
||||||
{"enum", tENUM},
|
{"enum", tENUM},
|
||||||
{"error_status_t", tERRORSTATUST},
|
{"error_status_t", tERRORSTATUST},
|
||||||
{"explicit_handle", tEXPLICITHANDLE},
|
{"explicit_handle", tEXPLICITHANDLE},
|
||||||
{"extern", tEXTERN},
|
{"extern", tEXTERN},
|
||||||
/* ... */
|
|
||||||
{"float", tFLOAT},
|
{"float", tFLOAT},
|
||||||
/* ... */
|
|
||||||
{"handle", tHANDLE},
|
{"handle", tHANDLE},
|
||||||
{"handle_t", tHANDLET},
|
{"handle_t", tHANDLET},
|
||||||
/* ... */
|
|
||||||
{"helpcontext", tHELPCONTEXT},
|
{"helpcontext", tHELPCONTEXT},
|
||||||
{"helpfile", tHELPFILE},
|
{"helpfile", tHELPFILE},
|
||||||
{"helpstring", tHELPSTRING},
|
{"helpstring", tHELPSTRING},
|
||||||
{"helpstringcontext", tHELPSTRINGCONTEXT},
|
{"helpstringcontext", tHELPSTRINGCONTEXT},
|
||||||
{"helpstringdll", tHELPSTRINGDLL},
|
{"helpstringdll", tHELPSTRINGDLL},
|
||||||
/* ... */
|
|
||||||
{"hidden", tHIDDEN},
|
{"hidden", tHIDDEN},
|
||||||
{"hyper", tHYPER},
|
{"hyper", tHYPER},
|
||||||
{"id", tID},
|
{"id", tID},
|
||||||
{"idempotent", tIDEMPOTENT},
|
{"idempotent", tIDEMPOTENT},
|
||||||
/* ... */
|
/* ... */
|
||||||
{"iid_is", tIIDIS},
|
{"iid_is", tIIDIS},
|
||||||
/* ... */
|
{"immediatebind", tIMMEDIATEBIND},
|
||||||
{"implicit_handle", tIMPLICITHANDLE},
|
{"implicit_handle", tIMPLICITHANDLE},
|
||||||
{"import", tIMPORT},
|
{"import", tIMPORT},
|
||||||
{"importlib", tIMPORTLIB},
|
{"importlib", tIMPORTLIB},
|
||||||
{"in", tIN},
|
{"in", tIN},
|
||||||
{"include", tINCLUDE},
|
|
||||||
{"in_line", tINLINE},
|
{"in_line", tINLINE},
|
||||||
{"input_sync", tINPUTSYNC},
|
{"input_sync", tINPUTSYNC},
|
||||||
{"int", tINT},
|
{"int", tINT},
|
||||||
/* ... */
|
/* ... */
|
||||||
{"interface", tINTERFACE},
|
{"interface", tINTERFACE},
|
||||||
/* ... */
|
{"lcid", tLCID},
|
||||||
{"length_is", tLENGTHIS},
|
{"length_is", tLENGTHIS},
|
||||||
{"library", tLIBRARY},
|
{"library", tLIBRARY},
|
||||||
/* ... */
|
/* ... */
|
||||||
|
@ -258,7 +251,9 @@ static struct keyword {
|
||||||
/* ... */
|
/* ... */
|
||||||
{"module", tMODULE},
|
{"module", tMODULE},
|
||||||
/* ... */
|
/* ... */
|
||||||
|
{"nonbrowsable", tNONBROWSABLE},
|
||||||
{"noncreatable", tNONCREATABLE},
|
{"noncreatable", tNONCREATABLE},
|
||||||
|
{"nonextensible", tNONEXTENSIBLE},
|
||||||
{"object", tOBJECT},
|
{"object", tOBJECT},
|
||||||
{"odl", tODL},
|
{"odl", tODL},
|
||||||
{"oleautomation", tOLEAUTOMATION},
|
{"oleautomation", tOLEAUTOMATION},
|
||||||
|
@ -279,7 +274,7 @@ static struct keyword {
|
||||||
/* ... */
|
/* ... */
|
||||||
{"readonly", tREADONLY},
|
{"readonly", tREADONLY},
|
||||||
{"ref", tREF},
|
{"ref", tREF},
|
||||||
/* ... */
|
{"requestedit", tREQUESTEDIT},
|
||||||
{"restricted", tRESTRICTED},
|
{"restricted", tRESTRICTED},
|
||||||
{"retval", tRETVAL},
|
{"retval", tRETVAL},
|
||||||
/* ... */
|
/* ... */
|
||||||
|
|
|
@ -126,13 +126,15 @@ static type_t std_uhyper = { "MIDL_uhyper" };
|
||||||
%token <uuid> aUUID
|
%token <uuid> aUUID
|
||||||
%token aEOF
|
%token aEOF
|
||||||
%token SHL SHR
|
%token SHL SHR
|
||||||
%token tAGGREGATABLE tALLOCATE tAPPOBJECT tARRAYS tASYNC tASYNCUUID
|
%token tAGGREGATABLE tALLOCATE tAPPOBJECT tASYNC tASYNCUUID
|
||||||
%token tAUTOHANDLE tBINDABLE tBOOLEAN tBROADCAST tBYTE tBYTECOUNT
|
%token tAUTOHANDLE tBINDABLE tBOOLEAN tBROADCAST tBYTE tBYTECOUNT
|
||||||
%token tCALLAS tCALLBACK tCASE tCDECL tCHAR tCOCLASS tCODE tCOMMSTATUS
|
%token tCALLAS tCALLBACK tCASE tCDECL tCHAR tCOCLASS tCODE tCOMMSTATUS
|
||||||
%token tCONST tCONTEXTHANDLE tCONTEXTHANDLENOSERIALIZE
|
%token tCONST tCONTEXTHANDLE tCONTEXTHANDLENOSERIALIZE
|
||||||
%token tCONTEXTHANDLESERIALIZE tCONTROL tCPPQUOTE
|
%token tCONTEXTHANDLESERIALIZE tCONTROL tCPPQUOTE
|
||||||
%token tDEFAULT
|
%token tDEFAULT
|
||||||
|
%token tDEFAULTCOLLELEM
|
||||||
%token tDEFAULTVALUE
|
%token tDEFAULTVALUE
|
||||||
|
%token tDEFAULTVTABLE
|
||||||
%token tDISPLAYBIND
|
%token tDISPLAYBIND
|
||||||
%token tDISPINTERFACE
|
%token tDISPINTERFACE
|
||||||
%token tDLLNAME tDOUBLE tDUAL
|
%token tDLLNAME tDOUBLE tDUAL
|
||||||
|
@ -147,18 +149,22 @@ static type_t std_uhyper = { "MIDL_uhyper" };
|
||||||
%token tHIDDEN
|
%token tHIDDEN
|
||||||
%token tHYPER tID tIDEMPOTENT
|
%token tHYPER tID tIDEMPOTENT
|
||||||
%token tIIDIS
|
%token tIIDIS
|
||||||
|
%token tIMMEDIATEBIND
|
||||||
%token tIMPLICITHANDLE
|
%token tIMPLICITHANDLE
|
||||||
%token tIMPORT tIMPORTLIB
|
%token tIMPORT tIMPORTLIB
|
||||||
%token tIN tINCLUDE tINLINE
|
%token tIN tINLINE
|
||||||
%token tINPUTSYNC
|
%token tINPUTSYNC
|
||||||
%token tINT tINT64
|
%token tINT tINT64
|
||||||
%token tINTERFACE
|
%token tINTERFACE
|
||||||
|
%token tLCID
|
||||||
%token tLENGTHIS tLIBRARY
|
%token tLENGTHIS tLIBRARY
|
||||||
%token tLOCAL
|
%token tLOCAL
|
||||||
%token tLONG
|
%token tLONG
|
||||||
%token tMETHODS
|
%token tMETHODS
|
||||||
%token tMODULE
|
%token tMODULE
|
||||||
|
%token tNONBROWSABLE
|
||||||
%token tNONCREATABLE
|
%token tNONCREATABLE
|
||||||
|
%token tNONEXTENSIBLE
|
||||||
%token tOBJECT tODL tOLEAUTOMATION
|
%token tOBJECT tODL tOLEAUTOMATION
|
||||||
%token tOPTIONAL
|
%token tOPTIONAL
|
||||||
%token tOUT
|
%token tOUT
|
||||||
|
@ -169,6 +175,7 @@ static type_t std_uhyper = { "MIDL_uhyper" };
|
||||||
%token tPUBLIC
|
%token tPUBLIC
|
||||||
%token tRANGE
|
%token tRANGE
|
||||||
%token tREADONLY tREF
|
%token tREADONLY tREF
|
||||||
|
%token tREQUESTEDIT
|
||||||
%token tRESTRICTED
|
%token tRESTRICTED
|
||||||
%token tRETVAL
|
%token tRETVAL
|
||||||
%token tSHORT
|
%token tSHORT
|
||||||
|
@ -192,9 +199,6 @@ static type_t std_uhyper = { "MIDL_uhyper" };
|
||||||
%token tVOID
|
%token tVOID
|
||||||
%token tWCHAR tWIREMARSHAL
|
%token tWCHAR tWIREMARSHAL
|
||||||
|
|
||||||
/* used in attr_t */
|
|
||||||
%token tPOINTERTYPE
|
|
||||||
|
|
||||||
%type <attr> m_attributes attributes attrib_list attribute
|
%type <attr> m_attributes attributes attrib_list attribute
|
||||||
%type <expr> m_exprs /* exprs expr_list */ m_expr expr expr_list_const expr_const
|
%type <expr> m_exprs /* exprs expr_list */ m_expr expr expr_list_const expr_const
|
||||||
%type <expr> array array_list
|
%type <expr> array array_list
|
||||||
|
@ -338,7 +342,9 @@ attrib_list: attribute
|
||||||
;
|
;
|
||||||
|
|
||||||
attribute:
|
attribute:
|
||||||
tASYNC { $$ = make_attr(ATTR_ASYNC); }
|
tAGGREGATABLE { $$ = make_attr(ATTR_AGGREGATABLE); }
|
||||||
|
| tAPPOBJECT { $$ = make_attr(ATTR_APPOBJECT); }
|
||||||
|
| tASYNC { $$ = make_attr(ATTR_ASYNC); }
|
||||||
| tAUTOHANDLE { $$ = make_attr(ATTR_AUTO_HANDLE); }
|
| tAUTOHANDLE { $$ = make_attr(ATTR_AUTO_HANDLE); }
|
||||||
| tBINDABLE { $$ = make_attr(ATTR_BINDABLE); }
|
| tBINDABLE { $$ = make_attr(ATTR_BINDABLE); }
|
||||||
| tCALLAS '(' ident ')' { $$ = make_attrp(ATTR_CALLAS, $3); }
|
| tCALLAS '(' ident ')' { $$ = make_attrp(ATTR_CALLAS, $3); }
|
||||||
|
@ -348,8 +354,10 @@ attribute:
|
||||||
| tCONTEXTHANDLESERIALIZE { $$ = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ }
|
| tCONTEXTHANDLESERIALIZE { $$ = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ }
|
||||||
| tCONTROL { $$ = make_attr(ATTR_CONTROL); }
|
| tCONTROL { $$ = make_attr(ATTR_CONTROL); }
|
||||||
| tDEFAULT { $$ = make_attr(ATTR_DEFAULT); }
|
| tDEFAULT { $$ = make_attr(ATTR_DEFAULT); }
|
||||||
|
| tDEFAULTCOLLELEM { $$ = make_attr(ATTR_DEFAULTCOLLELEM); }
|
||||||
| tDEFAULTVALUE '(' expr_const ')' { $$ = make_attrp(ATTR_DEFAULTVALUE_EXPR, $3); }
|
| tDEFAULTVALUE '(' expr_const ')' { $$ = make_attrp(ATTR_DEFAULTVALUE_EXPR, $3); }
|
||||||
| tDEFAULTVALUE '(' aSTRING ')' { $$ = make_attrp(ATTR_DEFAULTVALUE_STRING, $3); }
|
| tDEFAULTVALUE '(' aSTRING ')' { $$ = make_attrp(ATTR_DEFAULTVALUE_STRING, $3); }
|
||||||
|
| tDEFAULTVTABLE { $$ = make_attr(ATTR_DEFAULTVTABLE); }
|
||||||
| tDISPLAYBIND { $$ = make_attr(ATTR_DISPLAYBIND); }
|
| tDISPLAYBIND { $$ = make_attr(ATTR_DISPLAYBIND); }
|
||||||
| tDLLNAME '(' aSTRING ')' { $$ = make_attrp(ATTR_DLLNAME, $3); }
|
| tDLLNAME '(' aSTRING ')' { $$ = make_attrp(ATTR_DLLNAME, $3); }
|
||||||
| tDUAL { $$ = make_attr(ATTR_DUAL); }
|
| tDUAL { $$ = make_attr(ATTR_DUAL); }
|
||||||
|
@ -367,12 +375,15 @@ attribute:
|
||||||
| tID '(' expr_const ')' { $$ = make_attrp(ATTR_ID, $3); }
|
| tID '(' expr_const ')' { $$ = make_attrp(ATTR_ID, $3); }
|
||||||
| tIDEMPOTENT { $$ = make_attr(ATTR_IDEMPOTENT); }
|
| tIDEMPOTENT { $$ = make_attr(ATTR_IDEMPOTENT); }
|
||||||
| tIIDIS '(' ident ')' { $$ = make_attrp(ATTR_IIDIS, $3); }
|
| tIIDIS '(' ident ')' { $$ = make_attrp(ATTR_IIDIS, $3); }
|
||||||
|
| tIMMEDIATEBIND { $$ = make_attr(ATTR_IMMEDIATEBIND); }
|
||||||
| tIMPLICITHANDLE '(' tHANDLET aIDENTIFIER ')' { $$ = make_attrp(ATTR_IMPLICIT_HANDLE, $4); }
|
| tIMPLICITHANDLE '(' tHANDLET aIDENTIFIER ')' { $$ = make_attrp(ATTR_IMPLICIT_HANDLE, $4); }
|
||||||
| tIN { $$ = make_attr(ATTR_IN); }
|
| tIN { $$ = make_attr(ATTR_IN); }
|
||||||
| tINPUTSYNC { $$ = make_attr(ATTR_INPUTSYNC); }
|
| tINPUTSYNC { $$ = make_attr(ATTR_INPUTSYNC); }
|
||||||
| tLENGTHIS '(' m_exprs ')' { $$ = make_attrp(ATTR_LENGTHIS, $3); }
|
| tLENGTHIS '(' m_exprs ')' { $$ = make_attrp(ATTR_LENGTHIS, $3); }
|
||||||
| tLOCAL { $$ = make_attr(ATTR_LOCAL); }
|
| tLOCAL { $$ = make_attr(ATTR_LOCAL); }
|
||||||
|
| tNONBROWSABLE { $$ = make_attr(ATTR_NONBROWSABLE); }
|
||||||
| tNONCREATABLE { $$ = make_attr(ATTR_NONCREATABLE); }
|
| tNONCREATABLE { $$ = make_attr(ATTR_NONCREATABLE); }
|
||||||
|
| tNONEXTENSIBLE { $$ = make_attr(ATTR_NONEXTENSIBLE); }
|
||||||
| tOBJECT { $$ = make_attr(ATTR_OBJECT); }
|
| tOBJECT { $$ = make_attr(ATTR_OBJECT); }
|
||||||
| tODL { $$ = make_attr(ATTR_ODL); }
|
| tODL { $$ = make_attr(ATTR_ODL); }
|
||||||
| tOLEAUTOMATION { $$ = make_attr(ATTR_OLEAUTOMATION); }
|
| tOLEAUTOMATION { $$ = make_attr(ATTR_OLEAUTOMATION); }
|
||||||
|
@ -385,6 +396,7 @@ attribute:
|
||||||
| tPUBLIC { $$ = make_attr(ATTR_PUBLIC); }
|
| tPUBLIC { $$ = make_attr(ATTR_PUBLIC); }
|
||||||
| tRANGE '(' expr_const ',' expr_const ')' { LINK($5, $3); $$ = make_attrp(ATTR_RANGE, $5); }
|
| tRANGE '(' expr_const ',' expr_const ')' { LINK($5, $3); $$ = make_attrp(ATTR_RANGE, $5); }
|
||||||
| tREADONLY { $$ = make_attr(ATTR_READONLY); }
|
| tREADONLY { $$ = make_attr(ATTR_READONLY); }
|
||||||
|
| tREQUESTEDIT { $$ = make_attr(ATTR_REQUESTEDIT); }
|
||||||
| tRESTRICTED { $$ = make_attr(ATTR_RESTRICTED); }
|
| tRESTRICTED { $$ = make_attr(ATTR_RESTRICTED); }
|
||||||
| tRETVAL { $$ = make_attr(ATTR_RETVAL); }
|
| tRETVAL { $$ = make_attr(ATTR_RETVAL); }
|
||||||
| tSIZEIS '(' m_exprs ')' { $$ = make_attrp(ATTR_SIZEIS, $3); }
|
| tSIZEIS '(' m_exprs ')' { $$ = make_attrp(ATTR_SIZEIS, $3); }
|
||||||
|
@ -552,6 +564,7 @@ ident: aIDENTIFIER { $$ = make_var($1); }
|
||||||
| aKNOWNTYPE { $$ = make_var($<str>1); }
|
| aKNOWNTYPE { $$ = make_var($<str>1); }
|
||||||
| tASYNC { $$ = make_var($<str>1); }
|
| tASYNC { $$ = make_var($<str>1); }
|
||||||
| tID { $$ = make_var($<str>1); }
|
| tID { $$ = make_var($<str>1); }
|
||||||
|
| tLCID { $$ = make_var($<str>1); }
|
||||||
| tRANGE { $$ = make_var($<str>1); }
|
| tRANGE { $$ = make_var($<str>1); }
|
||||||
| tRETVAL { $$ = make_var($<str>1); }
|
| tRETVAL { $$ = make_var($<str>1); }
|
||||||
| tVERSION { $$ = make_var($<str>1); }
|
| tVERSION { $$ = make_var($<str>1); }
|
||||||
|
|
|
@ -56,6 +56,8 @@ typedef struct _typelib_t typelib_t;
|
||||||
|
|
||||||
enum attr_type
|
enum attr_type
|
||||||
{
|
{
|
||||||
|
ATTR_AGGREGATABLE,
|
||||||
|
ATTR_APPOBJECT,
|
||||||
ATTR_ASYNC,
|
ATTR_ASYNC,
|
||||||
ATTR_AUTO_HANDLE,
|
ATTR_AUTO_HANDLE,
|
||||||
ATTR_BINDABLE,
|
ATTR_BINDABLE,
|
||||||
|
@ -64,8 +66,10 @@ enum attr_type
|
||||||
ATTR_CONTEXTHANDLE,
|
ATTR_CONTEXTHANDLE,
|
||||||
ATTR_CONTROL,
|
ATTR_CONTROL,
|
||||||
ATTR_DEFAULT,
|
ATTR_DEFAULT,
|
||||||
|
ATTR_DEFAULTCOLLELEM,
|
||||||
ATTR_DEFAULTVALUE_EXPR,
|
ATTR_DEFAULTVALUE_EXPR,
|
||||||
ATTR_DEFAULTVALUE_STRING,
|
ATTR_DEFAULTVALUE_STRING,
|
||||||
|
ATTR_DEFAULTVTABLE,
|
||||||
ATTR_DISPINTERFACE,
|
ATTR_DISPINTERFACE,
|
||||||
ATTR_DISPLAYBIND,
|
ATTR_DISPLAYBIND,
|
||||||
ATTR_DLLNAME,
|
ATTR_DLLNAME,
|
||||||
|
@ -84,12 +88,15 @@ enum attr_type
|
||||||
ATTR_ID,
|
ATTR_ID,
|
||||||
ATTR_IDEMPOTENT,
|
ATTR_IDEMPOTENT,
|
||||||
ATTR_IIDIS,
|
ATTR_IIDIS,
|
||||||
|
ATTR_IMMEDIATEBIND,
|
||||||
ATTR_IMPLICIT_HANDLE,
|
ATTR_IMPLICIT_HANDLE,
|
||||||
ATTR_IN,
|
ATTR_IN,
|
||||||
ATTR_INPUTSYNC,
|
ATTR_INPUTSYNC,
|
||||||
ATTR_LENGTHIS,
|
ATTR_LENGTHIS,
|
||||||
ATTR_LOCAL,
|
ATTR_LOCAL,
|
||||||
|
ATTR_NONBROWSABLE,
|
||||||
ATTR_NONCREATABLE,
|
ATTR_NONCREATABLE,
|
||||||
|
ATTR_NONEXTENSIBLE,
|
||||||
ATTR_OBJECT,
|
ATTR_OBJECT,
|
||||||
ATTR_ODL,
|
ATTR_ODL,
|
||||||
ATTR_OLEAUTOMATION,
|
ATTR_OLEAUTOMATION,
|
||||||
|
@ -103,6 +110,7 @@ enum attr_type
|
||||||
ATTR_PUBLIC,
|
ATTR_PUBLIC,
|
||||||
ATTR_RANGE,
|
ATTR_RANGE,
|
||||||
ATTR_READONLY,
|
ATTR_READONLY,
|
||||||
|
ATTR_REQUESTEDIT,
|
||||||
ATTR_RESTRICTED,
|
ATTR_RESTRICTED,
|
||||||
ATTR_RETVAL,
|
ATTR_RETVAL,
|
||||||
ATTR_SIZEIS,
|
ATTR_SIZEIS,
|
||||||
|
|
|
@ -1667,6 +1667,21 @@ static msft_typeinfo_t *create_msft_typeinfo(msft_typelib_t *typelib, enum type_
|
||||||
|
|
||||||
for( ; attr; attr = NEXT_LINK(attr)) {
|
for( ; attr; attr = NEXT_LINK(attr)) {
|
||||||
switch(attr->type) {
|
switch(attr->type) {
|
||||||
|
case ATTR_AGGREGATABLE:
|
||||||
|
if (kind == TKIND_COCLASS)
|
||||||
|
typeinfo->flags |= 0x400; /* TYPEFLAG_FAGGREGATABLE */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ATTR_APPOBJECT:
|
||||||
|
if (kind == TKIND_COCLASS)
|
||||||
|
typeinfo->flags |= 0x1; /* TYPEFLAG_FAPPOBJECT */
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ATTR_CONTROL:
|
||||||
|
if (kind == TKIND_COCLASS)
|
||||||
|
typeinfo->flags |= 0x20; /* TYPEFLAG_FCONTROL */
|
||||||
|
break;
|
||||||
|
|
||||||
case ATTR_DISPINTERFACE:
|
case ATTR_DISPINTERFACE:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1678,7 +1693,8 @@ static msft_typeinfo_t *create_msft_typeinfo(msft_typelib_t *typelib, enum type_
|
||||||
}
|
}
|
||||||
|
|
||||||
case ATTR_DUAL:
|
case ATTR_DUAL:
|
||||||
typeinfo->flags |= 0x40; /* TYPEFLAG_FDUAL */
|
/* FIXME: check interface is compatible */
|
||||||
|
typeinfo->flags |= 0x140; /* TYPEFLAG_FDUAL | TYPEFLAG_FOLEAUTOMATION */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ATTR_HELPCONTEXT:
|
case ATTR_HELPCONTEXT:
|
||||||
|
@ -1708,6 +1724,10 @@ static msft_typeinfo_t *create_msft_typeinfo(msft_typelib_t *typelib, enum type_
|
||||||
typeinfo->flags &= ~0x2; /* TYPEFLAG_FCANCREATE */
|
typeinfo->flags &= ~0x2; /* TYPEFLAG_FCANCREATE */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ATTR_NONEXTENSIBLE:
|
||||||
|
typeinfo->flags |= 0x80; /* TYPEFLAG_FNONEXTENSIBLE */
|
||||||
|
break;
|
||||||
|
|
||||||
case ATTR_ODL:
|
case ATTR_ODL:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue