- removed hack to find the right resource

- updated to use the ICOM macros
- cleaned up use typelib and typelib2 (was mixed up)
This commit is contained in:
Juergen Schmied 2000-06-24 13:50:52 +00:00 committed by Alexandre Julliard
parent 5370930a8a
commit 07b143ed4d
4 changed files with 1080 additions and 789 deletions

View File

@ -133,7 +133,7 @@ import ole32.dll
149 stdcall SysStringByteLen(ptr) SysStringByteLen
150 stdcall SysAllocStringByteLen(ptr long) SysAllocStringByteLen
160 stub CreateTypeLib
161 stdcall LoadTypeLib (ptr ptr) LoadTypeLib
161 stdcall LoadTypeLib (wstr ptr) LoadTypeLib
162 stdcall LoadRegTypeLib (ptr long long long ptr) LoadRegTypeLib
163 stdcall RegisterTypeLib(ptr str str) RegisterTypeLib
164 stdcall QueryPathOfRegTypeLib(ptr long long long ptr) QueryPathOfRegTypeLib

File diff suppressed because it is too large Load Diff

View File

@ -20,114 +20,6 @@
#define HREFTYPE_INTHISFILE(href) (!((href) & 3))
#define HREFTYPE_INDEX(href) ((href) /sizeof(TLBTypeInfoBase))
typedef struct tagTLBCustData {
GUID guid;
VARIANT data;
struct tagTLBCustData* next;
} TLBCustData;
/* internal Parameter data */
typedef struct tagTLBParDesc{
PCHAR Name;
int ctCustData;
TLBCustData * pCustData; /* linked list to cust data; */
} TLBParDesc;
/* internal Function data */
typedef struct tagTLBFuncDesc{
FUNCDESC funcdesc; /* lots of info on the function and its attributes. */
PCHAR Name; /* the name of this function */
TLBParDesc *pParamDesc; /* array with name and custom data */
int helpcontext;
int HelpStringContext;
PCHAR HelpString;
PCHAR Entry; /* if its Hiword==0, it numeric; -1 is not present*/
int ctCustData;
TLBCustData * pCustData; /* linked list to cust data; */
struct tagTLBFuncDesc * next;
} TLBFuncDesc;
/* internal Variable data */
typedef struct tagTLBVarDesc{
VARDESC vardesc; /* lots of info on the variable and its attributes. */
PCHAR Name; /* the name of this variable */
int HelpContext;
int HelpStringContext; /* fixme: where? */
PCHAR HelpString;
int ctCustData;
TLBCustData * pCustData;/* linked list to cust data; */
struct tagTLBVarDesc * next;
} TLBVarDesc;
/* data for refernced types in a coclass, or an inherited interface */
typedef struct tagTLBRefType {
GUID guid; /* guid of the referenced type */
/* (important if its a imported type) */
HREFTYPE reference;
int flags;
int ctCustData;
TLBCustData * pCustData;/* linked list to custom data; */
struct tagTLBImpLib *pImpTLInfo;
struct tagTLBRefType * next;
}TLBRefType;
/* internal TypeInfo data */
typedef struct tagTYPEINFO {
LPTYPEINFO_VTABLE lpvtbl;
UINT ref;
TYPEATTR TypeAttr ; /* _lots_ of type information. */
struct tagTYPELIB * pTypeLib; /* back pointer to typelib */
int index; /* index in this typelib; */
/* type libs seem to store the doc strings in ascii
* so why should we do it in unicode?
*/
PCHAR Name;
PCHAR DocString;
unsigned long dwHelpContext;
unsigned long dwHelpStringContext;
/* functions */
TLBFuncDesc * funclist; /* linked list with function descriptions */
/* variables */
TLBVarDesc * varlist; /* linked list with variable descriptions */
/* Implemented Interfaces */
TLBRefType * impltypelist;
int ctCustData;
TLBCustData * pCustData; /* linked list to cust data; */
struct tagTYPEINFO * next;
} TLBTypeInfo;
/* data structure for import typelibs */
typedef struct tagTLBImpLib {
int offset; /* offset in the file */
GUID guid; /* libid */
PCHAR name; /* name; */
struct tagTYPELIB *pImpTypeLib; /* pointer to loaded typelib */
struct tagTLBImpLib * next;
} TLBImpLib;
/* internal TypeLib data */
typedef struct tagTYPELIB {
LPTYPELIB_VTABLE lpvtbl;
UINT ref;
TLIBATTR LibAttr; /* guid,lcid,syskind,version,flags */
/* type libs seem to store the doc strings in ascii
* so why should we do it in unicode?
*/
PCHAR Name;
PCHAR DocString;
PCHAR HelpFile;
PCHAR HelpStringDll;
unsigned long dwHelpContext;
int TypeInfoCount; /* nr of typeinfo's in librarry */
TLBTypeInfo *pTypeInfo; /* linked list of type info data */
int ctCustData; /* number of items in cust data list */
TLBCustData * pCustData; /* linked list to cust data; */
TLBImpLib * pImpLibs; /* linked list to all imported typelibs */
TYPEDESC * pTypeDesc; /* array of TypeDescriptions found in the libary */
} TLBLibInfo;
/*-------------------------FILE STRUCTURES-----------------------------------*/

View File

@ -565,38 +565,8 @@ ICOM_DEFINE(IDispatch,IUnknown)
ICOM_METHOD2(HRESULT,GetContainingTypeLib, ITypeLib**,ppTLib, UINT*,pIndex) \
ICOM_METHOD1(HRESULT,ReleaseTypeAttr, TYPEATTR*,pTypeAttr) \
ICOM_METHOD1(HRESULT,ReleaseFuncDesc, FUNCDESC*,pFuncDesc) \
ICOM_METHOD1(HRESULT,ReleaseVarDesc, VARDESC*,pVarDesc)\
\
\
/* itypeinfo2 methods */\
ICOM_METHOD1(HRESULT, GetTypeKind, TYPEKIND*, pTypeKind) \
ICOM_METHOD1(HRESULT, GetTypeFlags, UINT*, pTypeFlags) \
ICOM_METHOD3(HRESULT, GetFuncIndexOfMemId, MEMBERID, memid, INVOKEKIND,\
invKind, UINT*, pFuncIndex) \
ICOM_METHOD2(HRESULT, GetVarIndexOfMemId, MEMBERID, memid, UINT*, \
pVarIndex) \
ICOM_METHOD2(HRESULT, GetCustData, REFGUID, guid, VARIANT*, pVarVal) \
ICOM_METHOD3(HRESULT, GetFuncCustData, UINT, index, REFGUID, guid,\
VARIANT*, pVarVal) \
ICOM_METHOD4(HRESULT, GetParamCustData, UINT, indexFunc, UINT,\
indexParam, REFGUID, guid, VARIANT*, pVarVal) \
ICOM_METHOD3(HRESULT, GetVarCustData, UINT, index, REFGUID, guid,\
VARIANT*, pVarVal) \
ICOM_METHOD3(HRESULT, GetImplTypeCustData, UINT, index, REFGUID, guid,\
VARIANT*, pVarVal) \
ICOM_METHOD5(HRESULT, GetDocumentation2, MEMBERID, memid, LCID, lcid,\
BSTR*, pbstrHelpString, INT*, pdwHelpStringContext,\
BSTR*, pbstrHelpStringDll) \
ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA*, pCustData) \
ICOM_METHOD2(HRESULT, GetAllFuncCustData, UINT, index, CUSTDATA*,\
pCustData)\
ICOM_METHOD3(HRESULT, GetAllParamCustData, UINT, indexFunc, UINT,\
indexParam, CUSTDATA*, pCustData) \
ICOM_METHOD2(HRESULT, GetAllVarCustData, UINT, index, CUSTDATA*,\
pCustData) \
ICOM_METHOD2(HRESULT, GetAllImplTypeCustData, UINT, index, CUSTDATA*,\
pCustData)
ICOM_METHOD1(HRESULT,ReleaseVarDesc, VARDESC*,pVarDesc)
#define ITypeInfo_IMETHODS \
IUnknown_IMETHODS \
ITypeInfo_METHODS
@ -629,6 +599,87 @@ ICOM_DEFINE(ITypeInfo,IUnknown)
#define ITypeInfo_ReleaseVarDesc(p,a) ICOM_CALL1(ReleaseVarDesc,p,a)
/*****************************************************************************
* ITypeInfo2 interface
*/
#define ICOM_INTERFACE ITypeInfo2
#define ITypeInfo2_METHODS \
ICOM_METHOD1(HRESULT, GetTypeKind, TYPEKIND*, pTypeKind) \
ICOM_METHOD1(HRESULT, GetTypeFlags, UINT*, pTypeFlags) \
ICOM_METHOD3(HRESULT, GetFuncIndexOfMemId, MEMBERID, memid, INVOKEKIND,\
invKind, UINT*, pFuncIndex) \
ICOM_METHOD2(HRESULT, GetVarIndexOfMemId, MEMBERID, memid, UINT*, \
pVarIndex) \
ICOM_METHOD2(HRESULT, GetCustData, REFGUID, guid, VARIANT*, pVarVal) \
ICOM_METHOD3(HRESULT, GetFuncCustData, UINT, index, REFGUID, guid,\
VARIANT*, pVarVal) \
ICOM_METHOD4(HRESULT, GetParamCustData, UINT, indexFunc, UINT,\
indexParam, REFGUID, guid, VARIANT*, pVarVal) \
ICOM_METHOD3(HRESULT, GetVarCustData, UINT, index, REFGUID, guid,\
VARIANT*, pVarVal) \
ICOM_METHOD3(HRESULT, GetImplTypeCustData, UINT, index, REFGUID, guid,\
VARIANT*, pVarVal) \
ICOM_METHOD5(HRESULT, GetDocumentation2, MEMBERID, memid, LCID, lcid,\
BSTR*, pbstrHelpString, DWORD*, pdwHelpStringContext,\
BSTR*, pbstrHelpStringDll) \
ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA*, pCustData) \
ICOM_METHOD2(HRESULT, GetAllFuncCustData, UINT, index, CUSTDATA*,\
pCustData)\
ICOM_METHOD3(HRESULT, GetAllParamCustData, UINT, indexFunc, UINT,\
indexParam, CUSTDATA*, pCustData) \
ICOM_METHOD2(HRESULT, GetAllVarCustData, UINT, index, CUSTDATA*,\
pCustData) \
ICOM_METHOD2(HRESULT, GetAllImplTypeCustData, UINT, index, CUSTDATA*,\
pCustData)
#define ITypeInfo2_IMETHODS \
IUnknown_IMETHODS \
ITypeInfo_METHODS \
ITypeInfo2_METHODS
ICOM_DEFINE(ITypeInfo2,ITypeInfo)
#undef ICOM_INTERFACE
/*** IUnknown methods ***/
#define ITypeInfo2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
#define ITypeInfo2_AddRef(p) ICOM_CALL (AddRef,p)
#define ITypeInfo2_Release(p) ICOM_CALL (Release,p)
/*** ITypeInfo methods ***/
#define ITypeInfo2_GetTypeAttr(p,a) ICOM_CALL1(GetTypeAttr,p,a)
#define ITypeInfo2_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
#define ITypeInfo2_GetFuncDesc(p,a,b) ICOM_CALL2(GetFuncDesc,p,a,b)
#define ITypeInfo2_GetVarDesc(p,a,b) ICOM_CALL2(GetVarDesc,p,a,b)
#define ITypeInfo2_GetNames(p,a,b,c,d) ICOM_CALL4(GetNames,p,a,b,c,d)
#define ITypeInfo2_GetRefTypeOfImplType(p,a,b) ICOM_CALL2(GetRefTypeOfImplType,p,a,b)
#define ITypeInfo2_GetImplTypeFlags(p,a,b) ICOM_CALL2(GetImplTypeFlags,p,a,b)
#define ITypeInfo2_GetIDsOfNames(p,a,b,c) ICOM_CALL3(GetIDsOfNames,p,a,b,c)
#define ITypeInfo2_Invoke(p,a,b,c,d,e,f,g) ICOM_CALL7(Invoke,p,a,b,c,d,e,f,g)
#define ITypeInfo2_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
#define ITypeInfo2_GetDllEntry(p,a,b,c,d,e) ICOM_CALL5(GetDllEntry,p,a,b,c,d,e)
#define ITypeInfo2_GetRefTypeInfo(p,a,b) ICOM_CALL2(GetRefTypeInfo,p,a,b)
#define ITypeInfo2_AddressOfMember(p,a,b,c) ICOM_CALL3(AddressOfMember,p,a,b,c)
#define ITypeInfo2_CreateInstance(p,a,b,c) ICOM_CALL3(CreateInstance,p,a,b,c)
#define ITypeInfo2_GetMops(p,a,b) ICOM_CALL2(GetMops,p,a,b)
#define ITypeInfo2_GetContainingTypeLib(p,a,b) ICOM_CALL2(GetContainingTypeLib,p,a,b)
#define ITypeInfo2_ReleaseTypeAttr(p,a) ICOM_CALL1(ReleaseTypeAttr,p,a)
#define ITypeInfo2_ReleaseFuncDesc(p,a) ICOM_CALL1(ReleaseFuncDesc,p,a)
#define ITypeInfo2_ReleaseVarDesc(p,a) ICOM_CALL1(ReleaseVarDesc,p,a)
/*** ITypeInfo2 methods ***/
#define ITypeInfo2_GetTypeKind(p,a) ICOM_CALL1(GetTypeKind,p,a)
#define ITypeInfo2_GetTypeFlags(p,a) ICOM_CALL1(GetTypeFlags,p,a)
#define ITypeInfo2_GetFuncIndexOfMemId(p,a,b,c) ICOM_CALL3(GetFuncIndexOfMemId,p,a,b,c)
#define ITypeInfo2_GetVarIndexOfMemId(p,a,b) ICOM_CALL2(GetVarIndexOfMemId,p,a,b)
#define ITypeInfo2_GetCustData(p,a,b) ICOM_CALL2(GetCustData,p,a,b)
#define ITypeInfo2_GetFuncCustData(p,a,b,c) ICOM_CALL3(GetFuncCustData,p,a,b,c)
#define ITypeInfo2_GetParamCustData(p,a,b,c,d) ICOM_CALL4(GetParamCustData,p,a,b,c,d)
#define ITypeInfo2_GetVarCustData(p,a,b,c) ICOM_CALL3(GetVarCustData,p,a,b,c)
#define ITypeInfo2_GetImplTypeCustData(p,a,b,c) ICOM_CALL3(GetImplTypeCustData,p,a,b,c)
#define ITypeInfo2_GetDocumentation2(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation2,p,a,b,c,d,e)
#define ITypeInfo2_GetAllCustData(p,a) ICOM_CALL1(GetAllCustData,p,a)
#define ITypeInfo2_GetAllFuncCustData(p,a,b) ICOM_CALL2(GetAllFuncCustData,p,a,b)
#define ITypeInfo2_GetAllParamCustData(p,a,b,c) ICOM_CALL3(GetAllParamCustData,p,a,b,c)
#define ITypeInfo2_GetAllVarCustData(p,a,b) ICOM_CALL2(GetAllVarCustData,p,a,b)
#define ITypeInfo2_GetAllImplTypeCustData(p,a,b) ICOM_CALL2(GetAllImplTypeCustData,p,a,b)
/*****************************************************************************
* ITypeLib interface
*/
@ -643,16 +694,7 @@ ICOM_DEFINE(ITypeInfo,IUnknown)
ICOM_METHOD5(HRESULT,GetDocumentation, INT,index, BSTR*,pBstrName, BSTR*,pBstrDocString, DWORD*,pdwHelpContext, BSTR*,pBstrHelpFile) \
ICOM_METHOD3(HRESULT,IsName, LPOLESTR,szNameBuf, ULONG,lHashVal, BOOL*,bfName) \
ICOM_METHOD5(HRESULT,FindName, LPOLESTR,szNameBuf, ULONG,lHashVal, ITypeInfo**,ppTInfo, MEMBERID*,rgMemId, USHORT*,pcFound) \
ICOM_METHOD1(VOID,ReleaseTLibAttr, TLIBATTR*,pTLibAttr)\
\
ICOM_METHOD2(HRESULT,GetCustData, REFGUID,guid, VARIANT*, pVarVal)\
ICOM_METHOD2(HRESULT, GetLibStatistics, UINT *,pcUniqueNames, \
UINT*, pcchUniqueNames) \
ICOM_METHOD5(HRESULT, GetDocumentation2, INT, index, LCID, lcid,\
BSTR*, pbstrHelpString, INT*, pdwHelpStringContext,\
BSTR*, pbstrHelpStringDll)\
ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA *, pCustData)
ICOM_METHOD1(VOID,ReleaseTLibAttr, TLIBATTR*,pTLibAttr)
#define ITypeLib_IMETHODS \
IUnknown_IMETHODS \
ITypeLib_METHODS
@ -676,6 +718,43 @@ ICOM_DEFINE(ITypeLib,IUnknown)
#define ITypeLib_ReleaseTLibAttr(p,a) ICOM_CALL1(ReleaseTLibAttr,p,a)
/*****************************************************************************
* ITypeLib2 interface
*/
#define ICOM_INTERFACE ITypeLib2
#define ITypeLib2_METHODS \
ICOM_METHOD2(HRESULT, GetCustData, REFGUID, guid, VARIANT*, pVarVal) \
ICOM_METHOD2(HRESULT, GetLibStatistics, ULONG *, pcUniqueNames, ULONG*,pcchUniqueNames) \
ICOM_METHOD5(HRESULT, GetDocumentation2, INT, index, LCID, lcid,BSTR*, pbstrHelpString, DWORD*, pdwHelpStringContext, BSTR*, strHelpStringDll) \
ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA *, pCustData)
#define ITypeLib2_IMETHODS \
IUnknown_IMETHODS \
ITypeLib_IMETHODS \
ITypeLib2_METHODS
ICOM_DEFINE(ITypeLib2,ITypeLib)
#undef ICOM_INTERFACE
/*** IUnknown methods ***/
#define ITypeLib2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
#define ITypeLib2_AddRef(p) ICOM_CALL (AddRef,p)
#define ITypeLib2_Release(p) ICOM_CALL (Release,p)
/*** ITypeLib methods ***/
#define ITypeLib2_GetTypeInfoCount(p) ICOM_CALL (GetTypeInfoCount,p)
#define ITypeLib2_GetTypeInfo(p,a,b) ICOM_CALL2(GetTypeInfo,p,a,b)
#define ITypeLib2_GetTypeInfoType(p,a,b) ICOM_CALL2(GetTypeInfoType,p,a,b)
#define ITypeLib2_GetTypeInfoOfGuid(p,a,b) ICOM_CALL2(GetTypeInfoOfGuid,p,a,b)
#define ITypeLib2_GetLibAttr(p,a) ICOM_CALL1(GetLibAttr,p,a)
#define ITypeLib2_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
#define ITypeLib2_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
#define ITypeLib2_IsName(p,a,b,c) ICOM_CALL3(IsName,p,a,b,c)
#define ITypeLib2_FindName(p,a,b,c,d,e) ICOM_CALL5(FindName,p,a,b,c,d,e)
#define ITypeLib2_ReleaseTLibAttr(p,a) ICOM_CALL1(ReleaseTLibAttr,p,a)
/*** ITypeLib2 methods ***/
#define ITypeLib2_GetCustData(p,a,b) ICOM_CALL2(GetCustData,p,a,b)
#define ITypeLib2_GetLibStatistics(p,a,b) ICOM_CALL2(GetLibStatistics,p,a,b)
#define ITypeLib2_GetDocumentation2(p,a,b,c,d,e,f) ICOM_CALL5(GetDocumentation2,p,a,b,c,d,e)
#define ITypeLib2_GetAllCustData(p,a) ICOM_CALL1(GetAllCustData,p,a)
/*****************************************************************************
* ITypeComp interface
*/