/*** Autogenerated by WIDL 11.8 from /home/teapot/Downloads/d1/wine/include/rometadataapi.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __rometadataapi_h__
#define __rometadataapi_h__

/* Forward declarations */

#ifndef __IMetaDataTables_FWD_DEFINED__
#define __IMetaDataTables_FWD_DEFINED__
typedef interface IMetaDataTables IMetaDataTables;
#ifdef __cplusplus
interface IMetaDataTables;
#endif /* __cplusplus */
#endif

#ifndef __IMetaDataImport_FWD_DEFINED__
#define __IMetaDataImport_FWD_DEFINED__
typedef interface IMetaDataImport IMetaDataImport;
#ifdef __cplusplus
interface IMetaDataImport;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <unknwn.h>
#include <cor.h>

#ifdef __cplusplus
extern "C" {
#endif

#if 0
typedef ULONG32 mdToken;
typedef mdToken mdModule;
typedef mdToken mdTypeRef;
typedef mdToken mdTypeDef;
typedef mdToken mdFieldDef;
typedef mdToken mdMethodDef;
typedef mdToken mdParamDef;
typedef mdToken mdInterfaceImpl;
typedef mdToken mdMemberRef;
typedef mdToken mdCustomAttribute;
typedef mdToken mdPermission;
typedef mdToken mdSignature;
typedef mdToken mdEvent;
typedef mdToken mdProperty;
typedef mdToken mdModuleRef;
typedef mdToken mdAssembly;
typedef mdToken mdAssemblyRef;
typedef mdToken mdTypeSpec;
typedef mdToken mdString;
#endif
/*****************************************************************************
 * IMetaDataTables interface
 */
#ifndef __IMetaDataTables_INTERFACE_DEFINED__
#define __IMetaDataTables_INTERFACE_DEFINED__

DEFINE_GUID(IID_IMetaDataTables, 0xd8f579ab, 0x402d, 0x4b8e, 0x82,0xd9, 0x5d,0x63,0xb1,0x06,0x5c,0x68);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d8f579ab-402d-4b8e-82d9-5d63b1065c68")
IMetaDataTables : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetStringHeapSize(
        ULONG *size) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBlobHeapSize(
        ULONG *size) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGuidHeapSize(
        ULONG *size) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetUserStringHeapSize(
        ULONG *size) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNumTables(
        ULONG *tables) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTableIndex(
        ULONG token,
        ULONG *idx) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTableInfo(
        ULONG idx,
        ULONG *row_size,
        ULONG *rows,
        ULONG *cols,
        ULONG *key_idx,
        const char **name) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColumnInfo(
        ULONG idx_tbl,
        ULONG idx_col,
        ULONG *offset,
        ULONG *col_size,
        ULONG *type,
        const char **name) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCodedTokenInfo(
        ULONG type,
        ULONG *tokens_len,
        const ULONG **tokens,
        const char **name) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRow(
        ULONG idx_tbl,
        ULONG idx_row,
        const BYTE *row) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColumn(
        ULONG idx_tbl,
        ULONG idx_col,
        ULONG idx_row,
        ULONG *val) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        ULONG idx,
        const char **str) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBlob(
        ULONG idx,
        ULONG *size,
        const BYTE **blob) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGuid(
        ULONG idx,
        const GUID **guid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetUserString(
        ULONG idx,
        ULONG *size,
        const BYTE **blob) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNextString(
        ULONG idx,
        ULONG *next) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNextBlob(
        ULONG idx,
        ULONG *next) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNextGuid(
        ULONG idx,
        ULONG *next) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNextUserString(
        ULONG idx,
        ULONG *next) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IMetaDataTables, 0xd8f579ab, 0x402d, 0x4b8e, 0x82,0xd9, 0x5d,0x63,0xb1,0x06,0x5c,0x68)
#endif
#else
typedef struct IMetaDataTablesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IMetaDataTables *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IMetaDataTables *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IMetaDataTables *This);

    /*** IMetaDataTables methods ***/
    HRESULT (STDMETHODCALLTYPE *GetStringHeapSize)(
        IMetaDataTables *This,
        ULONG *size);

    HRESULT (STDMETHODCALLTYPE *GetBlobHeapSize)(
        IMetaDataTables *This,
        ULONG *size);

    HRESULT (STDMETHODCALLTYPE *GetGuidHeapSize)(
        IMetaDataTables *This,
        ULONG *size);

    HRESULT (STDMETHODCALLTYPE *GetUserStringHeapSize)(
        IMetaDataTables *This,
        ULONG *size);

    HRESULT (STDMETHODCALLTYPE *GetNumTables)(
        IMetaDataTables *This,
        ULONG *tables);

    HRESULT (STDMETHODCALLTYPE *GetTableIndex)(
        IMetaDataTables *This,
        ULONG token,
        ULONG *idx);

    HRESULT (STDMETHODCALLTYPE *GetTableInfo)(
        IMetaDataTables *This,
        ULONG idx,
        ULONG *row_size,
        ULONG *rows,
        ULONG *cols,
        ULONG *key_idx,
        const char **name);

    HRESULT (STDMETHODCALLTYPE *GetColumnInfo)(
        IMetaDataTables *This,
        ULONG idx_tbl,
        ULONG idx_col,
        ULONG *offset,
        ULONG *col_size,
        ULONG *type,
        const char **name);

    HRESULT (STDMETHODCALLTYPE *GetCodedTokenInfo)(
        IMetaDataTables *This,
        ULONG type,
        ULONG *tokens_len,
        const ULONG **tokens,
        const char **name);

    HRESULT (STDMETHODCALLTYPE *GetRow)(
        IMetaDataTables *This,
        ULONG idx_tbl,
        ULONG idx_row,
        const BYTE *row);

    HRESULT (STDMETHODCALLTYPE *GetColumn)(
        IMetaDataTables *This,
        ULONG idx_tbl,
        ULONG idx_col,
        ULONG idx_row,
        ULONG *val);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IMetaDataTables *This,
        ULONG idx,
        const char **str);

    HRESULT (STDMETHODCALLTYPE *GetBlob)(
        IMetaDataTables *This,
        ULONG idx,
        ULONG *size,
        const BYTE **blob);

    HRESULT (STDMETHODCALLTYPE *GetGuid)(
        IMetaDataTables *This,
        ULONG idx,
        const GUID **guid);

    HRESULT (STDMETHODCALLTYPE *GetUserString)(
        IMetaDataTables *This,
        ULONG idx,
        ULONG *size,
        const BYTE **blob);

    HRESULT (STDMETHODCALLTYPE *GetNextString)(
        IMetaDataTables *This,
        ULONG idx,
        ULONG *next);

    HRESULT (STDMETHODCALLTYPE *GetNextBlob)(
        IMetaDataTables *This,
        ULONG idx,
        ULONG *next);

    HRESULT (STDMETHODCALLTYPE *GetNextGuid)(
        IMetaDataTables *This,
        ULONG idx,
        ULONG *next);

    HRESULT (STDMETHODCALLTYPE *GetNextUserString)(
        IMetaDataTables *This,
        ULONG idx,
        ULONG *next);

    END_INTERFACE
} IMetaDataTablesVtbl;

interface IMetaDataTables {
    CONST_VTBL IMetaDataTablesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IMetaDataTables_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMetaDataTables_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMetaDataTables_Release(This) (This)->lpVtbl->Release(This)
/*** IMetaDataTables methods ***/
#define IMetaDataTables_GetStringHeapSize(This,size) (This)->lpVtbl->GetStringHeapSize(This,size)
#define IMetaDataTables_GetBlobHeapSize(This,size) (This)->lpVtbl->GetBlobHeapSize(This,size)
#define IMetaDataTables_GetGuidHeapSize(This,size) (This)->lpVtbl->GetGuidHeapSize(This,size)
#define IMetaDataTables_GetUserStringHeapSize(This,size) (This)->lpVtbl->GetUserStringHeapSize(This,size)
#define IMetaDataTables_GetNumTables(This,tables) (This)->lpVtbl->GetNumTables(This,tables)
#define IMetaDataTables_GetTableIndex(This,token,idx) (This)->lpVtbl->GetTableIndex(This,token,idx)
#define IMetaDataTables_GetTableInfo(This,idx,row_size,rows,cols,key_idx,name) (This)->lpVtbl->GetTableInfo(This,idx,row_size,rows,cols,key_idx,name)
#define IMetaDataTables_GetColumnInfo(This,idx_tbl,idx_col,offset,col_size,type,name) (This)->lpVtbl->GetColumnInfo(This,idx_tbl,idx_col,offset,col_size,type,name)
#define IMetaDataTables_GetCodedTokenInfo(This,type,tokens_len,tokens,name) (This)->lpVtbl->GetCodedTokenInfo(This,type,tokens_len,tokens,name)
#define IMetaDataTables_GetRow(This,idx_tbl,idx_row,row) (This)->lpVtbl->GetRow(This,idx_tbl,idx_row,row)
#define IMetaDataTables_GetColumn(This,idx_tbl,idx_col,idx_row,val) (This)->lpVtbl->GetColumn(This,idx_tbl,idx_col,idx_row,val)
#define IMetaDataTables_GetString(This,idx,str) (This)->lpVtbl->GetString(This,idx,str)
#define IMetaDataTables_GetBlob(This,idx,size,blob) (This)->lpVtbl->GetBlob(This,idx,size,blob)
#define IMetaDataTables_GetGuid(This,idx,guid) (This)->lpVtbl->GetGuid(This,idx,guid)
#define IMetaDataTables_GetUserString(This,idx,size,blob) (This)->lpVtbl->GetUserString(This,idx,size,blob)
#define IMetaDataTables_GetNextString(This,idx,next) (This)->lpVtbl->GetNextString(This,idx,next)
#define IMetaDataTables_GetNextBlob(This,idx,next) (This)->lpVtbl->GetNextBlob(This,idx,next)
#define IMetaDataTables_GetNextGuid(This,idx,next) (This)->lpVtbl->GetNextGuid(This,idx,next)
#define IMetaDataTables_GetNextUserString(This,idx,next) (This)->lpVtbl->GetNextUserString(This,idx,next)
#else
/*** IUnknown methods ***/
static inline HRESULT IMetaDataTables_QueryInterface(IMetaDataTables* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IMetaDataTables_AddRef(IMetaDataTables* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IMetaDataTables_Release(IMetaDataTables* This) {
    return This->lpVtbl->Release(This);
}
/*** IMetaDataTables methods ***/
static inline HRESULT IMetaDataTables_GetStringHeapSize(IMetaDataTables* This,ULONG *size) {
    return This->lpVtbl->GetStringHeapSize(This,size);
}
static inline HRESULT IMetaDataTables_GetBlobHeapSize(IMetaDataTables* This,ULONG *size) {
    return This->lpVtbl->GetBlobHeapSize(This,size);
}
static inline HRESULT IMetaDataTables_GetGuidHeapSize(IMetaDataTables* This,ULONG *size) {
    return This->lpVtbl->GetGuidHeapSize(This,size);
}
static inline HRESULT IMetaDataTables_GetUserStringHeapSize(IMetaDataTables* This,ULONG *size) {
    return This->lpVtbl->GetUserStringHeapSize(This,size);
}
static inline HRESULT IMetaDataTables_GetNumTables(IMetaDataTables* This,ULONG *tables) {
    return This->lpVtbl->GetNumTables(This,tables);
}
static inline HRESULT IMetaDataTables_GetTableIndex(IMetaDataTables* This,ULONG token,ULONG *idx) {
    return This->lpVtbl->GetTableIndex(This,token,idx);
}
static inline HRESULT IMetaDataTables_GetTableInfo(IMetaDataTables* This,ULONG idx,ULONG *row_size,ULONG *rows,ULONG *cols,ULONG *key_idx,const char **name) {
    return This->lpVtbl->GetTableInfo(This,idx,row_size,rows,cols,key_idx,name);
}
static inline HRESULT IMetaDataTables_GetColumnInfo(IMetaDataTables* This,ULONG idx_tbl,ULONG idx_col,ULONG *offset,ULONG *col_size,ULONG *type,const char **name) {
    return This->lpVtbl->GetColumnInfo(This,idx_tbl,idx_col,offset,col_size,type,name);
}
static inline HRESULT IMetaDataTables_GetCodedTokenInfo(IMetaDataTables* This,ULONG type,ULONG *tokens_len,const ULONG **tokens,const char **name) {
    return This->lpVtbl->GetCodedTokenInfo(This,type,tokens_len,tokens,name);
}
static inline HRESULT IMetaDataTables_GetRow(IMetaDataTables* This,ULONG idx_tbl,ULONG idx_row,const BYTE *row) {
    return This->lpVtbl->GetRow(This,idx_tbl,idx_row,row);
}
static inline HRESULT IMetaDataTables_GetColumn(IMetaDataTables* This,ULONG idx_tbl,ULONG idx_col,ULONG idx_row,ULONG *val) {
    return This->lpVtbl->GetColumn(This,idx_tbl,idx_col,idx_row,val);
}
static inline HRESULT IMetaDataTables_GetString(IMetaDataTables* This,ULONG idx,const char **str) {
    return This->lpVtbl->GetString(This,idx,str);
}
static inline HRESULT IMetaDataTables_GetBlob(IMetaDataTables* This,ULONG idx,ULONG *size,const BYTE **blob) {
    return This->lpVtbl->GetBlob(This,idx,size,blob);
}
static inline HRESULT IMetaDataTables_GetGuid(IMetaDataTables* This,ULONG idx,const GUID **guid) {
    return This->lpVtbl->GetGuid(This,idx,guid);
}
static inline HRESULT IMetaDataTables_GetUserString(IMetaDataTables* This,ULONG idx,ULONG *size,const BYTE **blob) {
    return This->lpVtbl->GetUserString(This,idx,size,blob);
}
static inline HRESULT IMetaDataTables_GetNextString(IMetaDataTables* This,ULONG idx,ULONG *next) {
    return This->lpVtbl->GetNextString(This,idx,next);
}
static inline HRESULT IMetaDataTables_GetNextBlob(IMetaDataTables* This,ULONG idx,ULONG *next) {
    return This->lpVtbl->GetNextBlob(This,idx,next);
}
static inline HRESULT IMetaDataTables_GetNextGuid(IMetaDataTables* This,ULONG idx,ULONG *next) {
    return This->lpVtbl->GetNextGuid(This,idx,next);
}
static inline HRESULT IMetaDataTables_GetNextUserString(IMetaDataTables* This,ULONG idx,ULONG *next) {
    return This->lpVtbl->GetNextUserString(This,idx,next);
}
#endif
#endif

#endif


#endif  /* __IMetaDataTables_INTERFACE_DEFINED__ */

typedef void *HCORENUM;
typedef BYTE COR_SIGNATURE;
typedef const char *UVCP_CONSTANT;
typedef struct COR_FIELD_OFFSET {
    mdFieldDef ridOfField;
    UINT32 ulOffset;
} COR_FIELD_OFFSET;
/*****************************************************************************
 * IMetaDataImport interface
 */
#ifndef __IMetaDataImport_INTERFACE_DEFINED__
#define __IMetaDataImport_INTERFACE_DEFINED__

DEFINE_GUID(IID_IMetaDataImport, 0x7dac8207, 0xd3ae, 0x4c75, 0x9b,0x67, 0x92,0x80,0x1a,0x49,0x7d,0x44);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7dac8207-d3ae-4c75-9b67-92801a497d44")
IMetaDataImport : public IUnknown
{
    virtual void STDMETHODCALLTYPE CloseEnum(
        HCORENUM henum) = 0;

    virtual HRESULT STDMETHODCALLTYPE CountEnum(
        HCORENUM henum,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE ResetEnum(
        HCORENUM henum,
        ULONG pos) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumTypeDefs(
        HCORENUM *henum,
        mdTypeDef *typedefs,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumInterfaceImpls(
        HCORENUM *henum,
        mdTypeDef type_def,
        mdInterfaceImpl *impls,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumTypeRefs(
        HCORENUM *henum,
        mdTypeRef *typerefs,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindTypeDefByName(
        const WCHAR *name,
        mdToken enclosing_class,
        mdTypeDef *type_def) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetScopeProps(
        WCHAR *name,
        ULONG len,
        ULONG *written,
        GUID *mvid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetModuleFromScope(
        mdModule *module_token) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTypeDefProps(
        mdTypeDef type_def,
        WCHAR *name,
        ULONG len,
        ULONG *written,
        ULONG *flags,
        mdToken *extends) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInterfaceImplProps(
        mdInterfaceImpl iface_impl,
        mdTypeDef *class_token,
        mdToken *iface) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTypeRefProps(
        mdTypeRef typeref,
        mdToken *resolution_scope,
        WCHAR *name,
        ULONG len,
        ULONG *written) = 0;

    virtual HRESULT STDMETHODCALLTYPE ResolveTypeRef(
        mdTypeRef typeref,
        const GUID *iid,
        IUnknown **scope,
        mdTypeDef *type_def) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumMembers(
        HCORENUM *henum,
        mdTypeDef type_def,
        mdToken *member_defs,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumMembersWithName(
        HCORENUM *henum,
        mdTypeDef token,
        const WCHAR *name,
        mdToken *member_defs,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumMethods(
        HCORENUM *henum,
        mdTypeDef type_def,
        mdMethodDef *method_defs,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumMethodsWithName(
        HCORENUM *henum,
        mdTypeDef type_def,
        const WCHAR *name,
        mdMethodDef *method_defs,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumFields(
        HCORENUM *henum,
        mdTypeDef token,
        mdFieldDef *field_defs,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumFieldsWithName(
        HCORENUM *henum,
        mdTypeDef token,
        const WCHAR *name,
        mdFieldDef *field_defs,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumParams(
        HCORENUM *henum,
        mdMethodDef method_def,
        mdParamDef *params,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumMemberRefs(
        HCORENUM *henum,
        mdToken parent,
        mdMemberRef *members,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumMethodImpls(
        HCORENUM *henum,
        mdTypeDef token,
        mdToken *body_tokens,
        mdToken *decl_tokens,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumPermissionSets(
        HCORENUM *henum,
        mdToken token,
        ULONG actions,
        mdPermission *permissions,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindMember(
        mdTypeDef type_def,
        const WCHAR *name,
        const COR_SIGNATURE *sig_blob,
        ULONG len,
        mdToken *member_ref) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindMethod(
        mdTypeDef type_def,
        const WCHAR *name,
        const COR_SIGNATURE *sig_blob,
        ULONG len,
        mdMethodDef *method_def) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindField(
        mdTypeDef type_def,
        const WCHAR *name,
        const COR_SIGNATURE *sig_blob,
        ULONG len,
        mdFieldDef *field_def) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindMemberRef(
        mdTypeRef typeref,
        const WCHAR *name,
        const COR_SIGNATURE *sig_blob,
        ULONG len,
        mdMemberRef *member_ref) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMethodProps(
        mdMethodDef method_def,
        mdTypeDef *type_def,
        WCHAR *method_name,
        ULONG name_len,
        ULONG *written,
        ULONG *method_flags,
        const COR_SIGNATURE **sig_blob,
        ULONG *sig_len,
        ULONG *rva,
        ULONG *impl_flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMemberRefProps(
        mdMemberRef member_ref,
        mdToken *token,
        WCHAR *member_name,
        ULONG name_len,
        ULONG *written,
        const COR_SIGNATURE **sig_blob,
        ULONG *sig_len) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumProperties(
        HCORENUM *henum,
        mdTypeDef type_def,
        mdProperty *props,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumEvents(
        HCORENUM *henum,
        mdTypeDef type_def,
        mdEvent *events,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEventProps(
        mdEvent event,
        mdTypeDef *class_typedef,
        WCHAR *name,
        ULONG name_len,
        ULONG *written,
        ULONG *event_flags,
        mdToken *event_type,
        mdMethodDef *add_method,
        mdMethodDef *remove_method,
        mdMethodDef *fire_method,
        mdMethodDef *other_methods,
        ULONG other_len,
        ULONG *other_count) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumMethodSemantics(
        HCORENUM *henum,
        mdMethodDef method_def,
        mdToken *event_props,
        ULONG len,
        ULONG *written) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMethodSemantics(
        mdMethodDef method_def,
        mdToken event_prop,
        ULONG *semantics) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetClassLayout(
        mdTypeDef type_def,
        ULONG *pack_size,
        COR_FIELD_OFFSET *offsets,
        ULONG len,
        ULONG *count,
        ULONG *class_size) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFieldMarshal(
        mdToken token,
        const COR_SIGNATURE **native_type_blob,
        ULONG *len) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRVA(
        mdToken token,
        ULONG *rva,
        ULONG *impl_flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPermissionSetProps(
        mdPermission permission,
        ULONG *decl_sec,
        const BYTE **perm_blob,
        ULONG *len) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSigFromToken(
        mdSignature signature,
        const COR_SIGNATURE **sig_blob,
        ULONG *len) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetModuleRefProps(
        mdModuleRef module_ref,
        WCHAR *name,
        ULONG len,
        ULONG *written) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumModuleRefs(
        HCORENUM *henum,
        mdModuleRef *module_refs,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTypeSpecFromToken(
        mdTypeSpec typespec,
        const COR_SIGNATURE **sig_blob,
        ULONG *len) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNameFromToken(
        mdToken token,
        const char **name) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumUnresolvedMethods(
        HCORENUM *henum,
        mdToken *method_defs,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetUserString(
        mdString string_token,
        WCHAR *str,
        ULONG len,
        ULONG *written) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPinvokeMap(
        mdToken field_method_def,
        ULONG *map_flags,
        WCHAR *import_name,
        ULONG len,
        ULONG *written,
        mdModuleRef *target) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumSignatures(
        HCORENUM *henum,
        mdSignature *sigs,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumTypeSpecs(
        HCORENUM *henum,
        mdTypeSpec *typespecs,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumUserStrings(
        HCORENUM *henum,
        mdString *strings,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetParamForMethodIndex(
        mdMethodDef token,
        ULONG param_seq,
        mdParamDef *param_def) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumCustomAttributes(
        HCORENUM *henum,
        mdToken token,
        mdToken token_type,
        mdCustomAttribute *attrs,
        ULONG len,
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCustomAttributeProps(
        mdCustomAttribute custom_attr,
        mdToken *obj,
        mdToken *attr_type,
        const BYTE **blob,
        ULONG *len) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindTypeRef(
        mdToken resolution_scope,
        const WCHAR *name,
        mdTypeRef *typeref) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMemberProps(
        mdToken member,
        mdTypeDef *type_def,
        WCHAR *name,
        ULONG member_len,
        ULONG *member_written,
        ULONG *flags,
        const COR_SIGNATURE **sig_blob,
        ULONG *blob_len,
        ULONG *rva,
        ULONG *impl_flags,
        ULONG *value_type_flag,
        UVCP_CONSTANT *value,
        ULONG *value_len) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFieldProps(
        mdFieldDef fielddef,
        mdTypeDef *type_def,
        WCHAR *field_name,
        ULONG name_len,
        ULONG *name_written,
        ULONG *flags,
        const COR_SIGNATURE **sig_blob,
        ULONG *sig_len,
        ULONG *value_type_flag,
        UVCP_CONSTANT *value,
        ULONG *value_len) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyProps(
        mdProperty prop,
        mdTypeDef *type_def,
        WCHAR *name,
        ULONG name_len,
        ULONG *name_written,
        ULONG *prop_flags,
        const COR_SIGNATURE **sig_blob,
        ULONG *sig_len,
        ULONG *value_type_flag,
        UVCP_CONSTANT *default_value,
        ULONG *value_len,
        mdMethodDef *set_method,
        mdMethodDef *get_method,
        mdMethodDef *other_methods,
        ULONG other_len,
        ULONG *other_count) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetParamProps(
        mdParamDef param_def,
        mdMethodDef *method_def,
        ULONG *param_seq,
        WCHAR *name,
        ULONG name_len,
        ULONG *name_written,
        ULONG *flags,
        ULONG *value_type_flag,
        UVCP_CONSTANT *value,
        ULONG *value_len) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCustomAttributeByName(
        mdToken obj,
        const WCHAR *name,
        const BYTE **data,
        ULONG *len) = 0;

    virtual BOOL STDMETHODCALLTYPE IsValidToken(
        mdToken token) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNestedClassProps(
        mdTypeDef nested_class,
        mdTypeDef *enclosing_class) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNativeCallConvFromSig(
        const BYTE *sig_blob,
        ULONG len,
        ULONG *call_conv) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsGlobal(
        mdToken token,
        int *is_global) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IMetaDataImport, 0x7dac8207, 0xd3ae, 0x4c75, 0x9b,0x67, 0x92,0x80,0x1a,0x49,0x7d,0x44)
#endif
#else
typedef struct IMetaDataImportVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IMetaDataImport *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IMetaDataImport *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IMetaDataImport *This);

    /*** IMetaDataImport methods ***/
    void (STDMETHODCALLTYPE *CloseEnum)(
        IMetaDataImport *This,
        HCORENUM henum);

    HRESULT (STDMETHODCALLTYPE *CountEnum)(
        IMetaDataImport *This,
        HCORENUM henum,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *ResetEnum)(
        IMetaDataImport *This,
        HCORENUM henum,
        ULONG pos);

    HRESULT (STDMETHODCALLTYPE *EnumTypeDefs)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdTypeDef *typedefs,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *EnumInterfaceImpls)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdTypeDef type_def,
        mdInterfaceImpl *impls,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *EnumTypeRefs)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdTypeRef *typerefs,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *FindTypeDefByName)(
        IMetaDataImport *This,
        const WCHAR *name,
        mdToken enclosing_class,
        mdTypeDef *type_def);

    HRESULT (STDMETHODCALLTYPE *GetScopeProps)(
        IMetaDataImport *This,
        WCHAR *name,
        ULONG len,
        ULONG *written,
        GUID *mvid);

    HRESULT (STDMETHODCALLTYPE *GetModuleFromScope)(
        IMetaDataImport *This,
        mdModule *module_token);

    HRESULT (STDMETHODCALLTYPE *GetTypeDefProps)(
        IMetaDataImport *This,
        mdTypeDef type_def,
        WCHAR *name,
        ULONG len,
        ULONG *written,
        ULONG *flags,
        mdToken *extends);

    HRESULT (STDMETHODCALLTYPE *GetInterfaceImplProps)(
        IMetaDataImport *This,
        mdInterfaceImpl iface_impl,
        mdTypeDef *class_token,
        mdToken *iface);

    HRESULT (STDMETHODCALLTYPE *GetTypeRefProps)(
        IMetaDataImport *This,
        mdTypeRef typeref,
        mdToken *resolution_scope,
        WCHAR *name,
        ULONG len,
        ULONG *written);

    HRESULT (STDMETHODCALLTYPE *ResolveTypeRef)(
        IMetaDataImport *This,
        mdTypeRef typeref,
        const GUID *iid,
        IUnknown **scope,
        mdTypeDef *type_def);

    HRESULT (STDMETHODCALLTYPE *EnumMembers)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdTypeDef type_def,
        mdToken *member_defs,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *EnumMembersWithName)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdTypeDef token,
        const WCHAR *name,
        mdToken *member_defs,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *EnumMethods)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdTypeDef type_def,
        mdMethodDef *method_defs,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *EnumMethodsWithName)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdTypeDef type_def,
        const WCHAR *name,
        mdMethodDef *method_defs,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *EnumFields)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdTypeDef token,
        mdFieldDef *field_defs,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *EnumFieldsWithName)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdTypeDef token,
        const WCHAR *name,
        mdFieldDef *field_defs,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *EnumParams)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdMethodDef method_def,
        mdParamDef *params,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *EnumMemberRefs)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdToken parent,
        mdMemberRef *members,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *EnumMethodImpls)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdTypeDef token,
        mdToken *body_tokens,
        mdToken *decl_tokens,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *EnumPermissionSets)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdToken token,
        ULONG actions,
        mdPermission *permissions,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *FindMember)(
        IMetaDataImport *This,
        mdTypeDef type_def,
        const WCHAR *name,
        const COR_SIGNATURE *sig_blob,
        ULONG len,
        mdToken *member_ref);

    HRESULT (STDMETHODCALLTYPE *FindMethod)(
        IMetaDataImport *This,
        mdTypeDef type_def,
        const WCHAR *name,
        const COR_SIGNATURE *sig_blob,
        ULONG len,
        mdMethodDef *method_def);

    HRESULT (STDMETHODCALLTYPE *FindField)(
        IMetaDataImport *This,
        mdTypeDef type_def,
        const WCHAR *name,
        const COR_SIGNATURE *sig_blob,
        ULONG len,
        mdFieldDef *field_def);

    HRESULT (STDMETHODCALLTYPE *FindMemberRef)(
        IMetaDataImport *This,
        mdTypeRef typeref,
        const WCHAR *name,
        const COR_SIGNATURE *sig_blob,
        ULONG len,
        mdMemberRef *member_ref);

    HRESULT (STDMETHODCALLTYPE *GetMethodProps)(
        IMetaDataImport *This,
        mdMethodDef method_def,
        mdTypeDef *type_def,
        WCHAR *method_name,
        ULONG name_len,
        ULONG *written,
        ULONG *method_flags,
        const COR_SIGNATURE **sig_blob,
        ULONG *sig_len,
        ULONG *rva,
        ULONG *impl_flags);

    HRESULT (STDMETHODCALLTYPE *GetMemberRefProps)(
        IMetaDataImport *This,
        mdMemberRef member_ref,
        mdToken *token,
        WCHAR *member_name,
        ULONG name_len,
        ULONG *written,
        const COR_SIGNATURE **sig_blob,
        ULONG *sig_len);

    HRESULT (STDMETHODCALLTYPE *EnumProperties)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdTypeDef type_def,
        mdProperty *props,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *EnumEvents)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdTypeDef type_def,
        mdEvent *events,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *GetEventProps)(
        IMetaDataImport *This,
        mdEvent event,
        mdTypeDef *class_typedef,
        WCHAR *name,
        ULONG name_len,
        ULONG *written,
        ULONG *event_flags,
        mdToken *event_type,
        mdMethodDef *add_method,
        mdMethodDef *remove_method,
        mdMethodDef *fire_method,
        mdMethodDef *other_methods,
        ULONG other_len,
        ULONG *other_count);

    HRESULT (STDMETHODCALLTYPE *EnumMethodSemantics)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdMethodDef method_def,
        mdToken *event_props,
        ULONG len,
        ULONG *written);

    HRESULT (STDMETHODCALLTYPE *GetMethodSemantics)(
        IMetaDataImport *This,
        mdMethodDef method_def,
        mdToken event_prop,
        ULONG *semantics);

    HRESULT (STDMETHODCALLTYPE *GetClassLayout)(
        IMetaDataImport *This,
        mdTypeDef type_def,
        ULONG *pack_size,
        COR_FIELD_OFFSET *offsets,
        ULONG len,
        ULONG *count,
        ULONG *class_size);

    HRESULT (STDMETHODCALLTYPE *GetFieldMarshal)(
        IMetaDataImport *This,
        mdToken token,
        const COR_SIGNATURE **native_type_blob,
        ULONG *len);

    HRESULT (STDMETHODCALLTYPE *GetRVA)(
        IMetaDataImport *This,
        mdToken token,
        ULONG *rva,
        ULONG *impl_flags);

    HRESULT (STDMETHODCALLTYPE *GetPermissionSetProps)(
        IMetaDataImport *This,
        mdPermission permission,
        ULONG *decl_sec,
        const BYTE **perm_blob,
        ULONG *len);

    HRESULT (STDMETHODCALLTYPE *GetSigFromToken)(
        IMetaDataImport *This,
        mdSignature signature,
        const COR_SIGNATURE **sig_blob,
        ULONG *len);

    HRESULT (STDMETHODCALLTYPE *GetModuleRefProps)(
        IMetaDataImport *This,
        mdModuleRef module_ref,
        WCHAR *name,
        ULONG len,
        ULONG *written);

    HRESULT (STDMETHODCALLTYPE *EnumModuleRefs)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdModuleRef *module_refs,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *GetTypeSpecFromToken)(
        IMetaDataImport *This,
        mdTypeSpec typespec,
        const COR_SIGNATURE **sig_blob,
        ULONG *len);

    HRESULT (STDMETHODCALLTYPE *GetNameFromToken)(
        IMetaDataImport *This,
        mdToken token,
        const char **name);

    HRESULT (STDMETHODCALLTYPE *EnumUnresolvedMethods)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdToken *method_defs,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *GetUserString)(
        IMetaDataImport *This,
        mdString string_token,
        WCHAR *str,
        ULONG len,
        ULONG *written);

    HRESULT (STDMETHODCALLTYPE *GetPinvokeMap)(
        IMetaDataImport *This,
        mdToken field_method_def,
        ULONG *map_flags,
        WCHAR *import_name,
        ULONG len,
        ULONG *written,
        mdModuleRef *target);

    HRESULT (STDMETHODCALLTYPE *EnumSignatures)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdSignature *sigs,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *EnumTypeSpecs)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdTypeSpec *typespecs,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *EnumUserStrings)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdString *strings,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *GetParamForMethodIndex)(
        IMetaDataImport *This,
        mdMethodDef token,
        ULONG param_seq,
        mdParamDef *param_def);

    HRESULT (STDMETHODCALLTYPE *EnumCustomAttributes)(
        IMetaDataImport *This,
        HCORENUM *henum,
        mdToken token,
        mdToken token_type,
        mdCustomAttribute *attrs,
        ULONG len,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *GetCustomAttributeProps)(
        IMetaDataImport *This,
        mdCustomAttribute custom_attr,
        mdToken *obj,
        mdToken *attr_type,
        const BYTE **blob,
        ULONG *len);

    HRESULT (STDMETHODCALLTYPE *FindTypeRef)(
        IMetaDataImport *This,
        mdToken resolution_scope,
        const WCHAR *name,
        mdTypeRef *typeref);

    HRESULT (STDMETHODCALLTYPE *GetMemberProps)(
        IMetaDataImport *This,
        mdToken member,
        mdTypeDef *type_def,
        WCHAR *name,
        ULONG member_len,
        ULONG *member_written,
        ULONG *flags,
        const COR_SIGNATURE **sig_blob,
        ULONG *blob_len,
        ULONG *rva,
        ULONG *impl_flags,
        ULONG *value_type_flag,
        UVCP_CONSTANT *value,
        ULONG *value_len);

    HRESULT (STDMETHODCALLTYPE *GetFieldProps)(
        IMetaDataImport *This,
        mdFieldDef fielddef,
        mdTypeDef *type_def,
        WCHAR *field_name,
        ULONG name_len,
        ULONG *name_written,
        ULONG *flags,
        const COR_SIGNATURE **sig_blob,
        ULONG *sig_len,
        ULONG *value_type_flag,
        UVCP_CONSTANT *value,
        ULONG *value_len);

    HRESULT (STDMETHODCALLTYPE *GetPropertyProps)(
        IMetaDataImport *This,
        mdProperty prop,
        mdTypeDef *type_def,
        WCHAR *name,
        ULONG name_len,
        ULONG *name_written,
        ULONG *prop_flags,
        const COR_SIGNATURE **sig_blob,
        ULONG *sig_len,
        ULONG *value_type_flag,
        UVCP_CONSTANT *default_value,
        ULONG *value_len,
        mdMethodDef *set_method,
        mdMethodDef *get_method,
        mdMethodDef *other_methods,
        ULONG other_len,
        ULONG *other_count);

    HRESULT (STDMETHODCALLTYPE *GetParamProps)(
        IMetaDataImport *This,
        mdParamDef param_def,
        mdMethodDef *method_def,
        ULONG *param_seq,
        WCHAR *name,
        ULONG name_len,
        ULONG *name_written,
        ULONG *flags,
        ULONG *value_type_flag,
        UVCP_CONSTANT *value,
        ULONG *value_len);

    HRESULT (STDMETHODCALLTYPE *GetCustomAttributeByName)(
        IMetaDataImport *This,
        mdToken obj,
        const WCHAR *name,
        const BYTE **data,
        ULONG *len);

    BOOL (STDMETHODCALLTYPE *IsValidToken)(
        IMetaDataImport *This,
        mdToken token);

    HRESULT (STDMETHODCALLTYPE *GetNestedClassProps)(
        IMetaDataImport *This,
        mdTypeDef nested_class,
        mdTypeDef *enclosing_class);

    HRESULT (STDMETHODCALLTYPE *GetNativeCallConvFromSig)(
        IMetaDataImport *This,
        const BYTE *sig_blob,
        ULONG len,
        ULONG *call_conv);

    HRESULT (STDMETHODCALLTYPE *IsGlobal)(
        IMetaDataImport *This,
        mdToken token,
        int *is_global);

    END_INTERFACE
} IMetaDataImportVtbl;

interface IMetaDataImport {
    CONST_VTBL IMetaDataImportVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IMetaDataImport_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMetaDataImport_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMetaDataImport_Release(This) (This)->lpVtbl->Release(This)
/*** IMetaDataImport methods ***/
#define IMetaDataImport_CloseEnum(This,henum) (This)->lpVtbl->CloseEnum(This,henum)
#define IMetaDataImport_CountEnum(This,henum,count) (This)->lpVtbl->CountEnum(This,henum,count)
#define IMetaDataImport_ResetEnum(This,henum,pos) (This)->lpVtbl->ResetEnum(This,henum,pos)
#define IMetaDataImport_EnumTypeDefs(This,henum,typedefs,len,count) (This)->lpVtbl->EnumTypeDefs(This,henum,typedefs,len,count)
#define IMetaDataImport_EnumInterfaceImpls(This,henum,type_def,impls,len,count) (This)->lpVtbl->EnumInterfaceImpls(This,henum,type_def,impls,len,count)
#define IMetaDataImport_EnumTypeRefs(This,henum,typerefs,len,count) (This)->lpVtbl->EnumTypeRefs(This,henum,typerefs,len,count)
#define IMetaDataImport_FindTypeDefByName(This,name,enclosing_class,type_def) (This)->lpVtbl->FindTypeDefByName(This,name,enclosing_class,type_def)
#define IMetaDataImport_GetScopeProps(This,name,len,written,mvid) (This)->lpVtbl->GetScopeProps(This,name,len,written,mvid)
#define IMetaDataImport_GetModuleFromScope(This,module_token) (This)->lpVtbl->GetModuleFromScope(This,module_token)
#define IMetaDataImport_GetTypeDefProps(This,type_def,name,len,written,flags,extends) (This)->lpVtbl->GetTypeDefProps(This,type_def,name,len,written,flags,extends)
#define IMetaDataImport_GetInterfaceImplProps(This,iface_impl,class_token,iface) (This)->lpVtbl->GetInterfaceImplProps(This,iface_impl,class_token,iface)
#define IMetaDataImport_GetTypeRefProps(This,typeref,resolution_scope,name,len,written) (This)->lpVtbl->GetTypeRefProps(This,typeref,resolution_scope,name,len,written)
#define IMetaDataImport_ResolveTypeRef(This,typeref,iid,scope,type_def) (This)->lpVtbl->ResolveTypeRef(This,typeref,iid,scope,type_def)
#define IMetaDataImport_EnumMembers(This,henum,type_def,member_defs,len,count) (This)->lpVtbl->EnumMembers(This,henum,type_def,member_defs,len,count)
#define IMetaDataImport_EnumMembersWithName(This,henum,token,name,member_defs,len,count) (This)->lpVtbl->EnumMembersWithName(This,henum,token,name,member_defs,len,count)
#define IMetaDataImport_EnumMethods(This,henum,type_def,method_defs,len,count) (This)->lpVtbl->EnumMethods(This,henum,type_def,method_defs,len,count)
#define IMetaDataImport_EnumMethodsWithName(This,henum,type_def,name,method_defs,len,count) (This)->lpVtbl->EnumMethodsWithName(This,henum,type_def,name,method_defs,len,count)
#define IMetaDataImport_EnumFields(This,henum,token,field_defs,len,count) (This)->lpVtbl->EnumFields(This,henum,token,field_defs,len,count)
#define IMetaDataImport_EnumFieldsWithName(This,henum,token,name,field_defs,len,count) (This)->lpVtbl->EnumFieldsWithName(This,henum,token,name,field_defs,len,count)
#define IMetaDataImport_EnumParams(This,henum,method_def,params,len,count) (This)->lpVtbl->EnumParams(This,henum,method_def,params,len,count)
#define IMetaDataImport_EnumMemberRefs(This,henum,parent,members,len,count) (This)->lpVtbl->EnumMemberRefs(This,henum,parent,members,len,count)
#define IMetaDataImport_EnumMethodImpls(This,henum,token,body_tokens,decl_tokens,len,count) (This)->lpVtbl->EnumMethodImpls(This,henum,token,body_tokens,decl_tokens,len,count)
#define IMetaDataImport_EnumPermissionSets(This,henum,token,actions,permissions,len,count) (This)->lpVtbl->EnumPermissionSets(This,henum,token,actions,permissions,len,count)
#define IMetaDataImport_FindMember(This,type_def,name,sig_blob,len,member_ref) (This)->lpVtbl->FindMember(This,type_def,name,sig_blob,len,member_ref)
#define IMetaDataImport_FindMethod(This,type_def,name,sig_blob,len,method_def) (This)->lpVtbl->FindMethod(This,type_def,name,sig_blob,len,method_def)
#define IMetaDataImport_FindField(This,type_def,name,sig_blob,len,field_def) (This)->lpVtbl->FindField(This,type_def,name,sig_blob,len,field_def)
#define IMetaDataImport_FindMemberRef(This,typeref,name,sig_blob,len,member_ref) (This)->lpVtbl->FindMemberRef(This,typeref,name,sig_blob,len,member_ref)
#define IMetaDataImport_GetMethodProps(This,method_def,type_def,method_name,name_len,written,method_flags,sig_blob,sig_len,rva,impl_flags) (This)->lpVtbl->GetMethodProps(This,method_def,type_def,method_name,name_len,written,method_flags,sig_blob,sig_len,rva,impl_flags)
#define IMetaDataImport_GetMemberRefProps(This,member_ref,token,member_name,name_len,written,sig_blob,sig_len) (This)->lpVtbl->GetMemberRefProps(This,member_ref,token,member_name,name_len,written,sig_blob,sig_len)
#define IMetaDataImport_EnumProperties(This,henum,type_def,props,len,count) (This)->lpVtbl->EnumProperties(This,henum,type_def,props,len,count)
#define IMetaDataImport_EnumEvents(This,henum,type_def,events,len,count) (This)->lpVtbl->EnumEvents(This,henum,type_def,events,len,count)
#define IMetaDataImport_GetEventProps(This,event,class_typedef,name,name_len,written,event_flags,event_type,add_method,remove_method,fire_method,other_methods,other_len,other_count) (This)->lpVtbl->GetEventProps(This,event,class_typedef,name,name_len,written,event_flags,event_type,add_method,remove_method,fire_method,other_methods,other_len,other_count)
#define IMetaDataImport_EnumMethodSemantics(This,henum,method_def,event_props,len,written) (This)->lpVtbl->EnumMethodSemantics(This,henum,method_def,event_props,len,written)
#define IMetaDataImport_GetMethodSemantics(This,method_def,event_prop,semantics) (This)->lpVtbl->GetMethodSemantics(This,method_def,event_prop,semantics)
#define IMetaDataImport_GetClassLayout(This,type_def,pack_size,offsets,len,count,class_size) (This)->lpVtbl->GetClassLayout(This,type_def,pack_size,offsets,len,count,class_size)
#define IMetaDataImport_GetFieldMarshal(This,token,native_type_blob,len) (This)->lpVtbl->GetFieldMarshal(This,token,native_type_blob,len)
#define IMetaDataImport_GetRVA(This,token,rva,impl_flags) (This)->lpVtbl->GetRVA(This,token,rva,impl_flags)
#define IMetaDataImport_GetPermissionSetProps(This,permission,decl_sec,perm_blob,len) (This)->lpVtbl->GetPermissionSetProps(This,permission,decl_sec,perm_blob,len)
#define IMetaDataImport_GetSigFromToken(This,signature,sig_blob,len) (This)->lpVtbl->GetSigFromToken(This,signature,sig_blob,len)
#define IMetaDataImport_GetModuleRefProps(This,module_ref,name,len,written) (This)->lpVtbl->GetModuleRefProps(This,module_ref,name,len,written)
#define IMetaDataImport_EnumModuleRefs(This,henum,module_refs,len,count) (This)->lpVtbl->EnumModuleRefs(This,henum,module_refs,len,count)
#define IMetaDataImport_GetTypeSpecFromToken(This,typespec,sig_blob,len) (This)->lpVtbl->GetTypeSpecFromToken(This,typespec,sig_blob,len)
#define IMetaDataImport_GetNameFromToken(This,token,name) (This)->lpVtbl->GetNameFromToken(This,token,name)
#define IMetaDataImport_EnumUnresolvedMethods(This,henum,method_defs,len,count) (This)->lpVtbl->EnumUnresolvedMethods(This,henum,method_defs,len,count)
#define IMetaDataImport_GetUserString(This,string_token,str,len,written) (This)->lpVtbl->GetUserString(This,string_token,str,len,written)
#define IMetaDataImport_GetPinvokeMap(This,field_method_def,map_flags,import_name,len,written,target) (This)->lpVtbl->GetPinvokeMap(This,field_method_def,map_flags,import_name,len,written,target)
#define IMetaDataImport_EnumSignatures(This,henum,sigs,len,count) (This)->lpVtbl->EnumSignatures(This,henum,sigs,len,count)
#define IMetaDataImport_EnumTypeSpecs(This,henum,typespecs,len,count) (This)->lpVtbl->EnumTypeSpecs(This,henum,typespecs,len,count)
#define IMetaDataImport_EnumUserStrings(This,henum,strings,len,count) (This)->lpVtbl->EnumUserStrings(This,henum,strings,len,count)
#define IMetaDataImport_GetParamForMethodIndex(This,token,param_seq,param_def) (This)->lpVtbl->GetParamForMethodIndex(This,token,param_seq,param_def)
#define IMetaDataImport_EnumCustomAttributes(This,henum,token,token_type,attrs,len,count) (This)->lpVtbl->EnumCustomAttributes(This,henum,token,token_type,attrs,len,count)
#define IMetaDataImport_GetCustomAttributeProps(This,custom_attr,obj,attr_type,blob,len) (This)->lpVtbl->GetCustomAttributeProps(This,custom_attr,obj,attr_type,blob,len)
#define IMetaDataImport_FindTypeRef(This,resolution_scope,name,typeref) (This)->lpVtbl->FindTypeRef(This,resolution_scope,name,typeref)
#define IMetaDataImport_GetMemberProps(This,member,type_def,name,member_len,member_written,flags,sig_blob,blob_len,rva,impl_flags,value_type_flag,value,value_len) (This)->lpVtbl->GetMemberProps(This,member,type_def,name,member_len,member_written,flags,sig_blob,blob_len,rva,impl_flags,value_type_flag,value,value_len)
#define IMetaDataImport_GetFieldProps(This,fielddef,type_def,field_name,name_len,name_written,flags,sig_blob,sig_len,value_type_flag,value,value_len) (This)->lpVtbl->GetFieldProps(This,fielddef,type_def,field_name,name_len,name_written,flags,sig_blob,sig_len,value_type_flag,value,value_len)
#define IMetaDataImport_GetPropertyProps(This,prop,type_def,name,name_len,name_written,prop_flags,sig_blob,sig_len,value_type_flag,default_value,value_len,set_method,get_method,other_methods,other_len,other_count) (This)->lpVtbl->GetPropertyProps(This,prop,type_def,name,name_len,name_written,prop_flags,sig_blob,sig_len,value_type_flag,default_value,value_len,set_method,get_method,other_methods,other_len,other_count)
#define IMetaDataImport_GetParamProps(This,param_def,method_def,param_seq,name,name_len,name_written,flags,value_type_flag,value,value_len) (This)->lpVtbl->GetParamProps(This,param_def,method_def,param_seq,name,name_len,name_written,flags,value_type_flag,value,value_len)
#define IMetaDataImport_GetCustomAttributeByName(This,obj,name,data,len) (This)->lpVtbl->GetCustomAttributeByName(This,obj,name,data,len)
#define IMetaDataImport_IsValidToken(This,token) (This)->lpVtbl->IsValidToken(This,token)
#define IMetaDataImport_GetNestedClassProps(This,nested_class,enclosing_class) (This)->lpVtbl->GetNestedClassProps(This,nested_class,enclosing_class)
#define IMetaDataImport_GetNativeCallConvFromSig(This,sig_blob,len,call_conv) (This)->lpVtbl->GetNativeCallConvFromSig(This,sig_blob,len,call_conv)
#define IMetaDataImport_IsGlobal(This,token,is_global) (This)->lpVtbl->IsGlobal(This,token,is_global)
#else
/*** IUnknown methods ***/
static inline HRESULT IMetaDataImport_QueryInterface(IMetaDataImport* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IMetaDataImport_AddRef(IMetaDataImport* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IMetaDataImport_Release(IMetaDataImport* This) {
    return This->lpVtbl->Release(This);
}
/*** IMetaDataImport methods ***/
static inline void IMetaDataImport_CloseEnum(IMetaDataImport* This,HCORENUM henum) {
    This->lpVtbl->CloseEnum(This,henum);
}
static inline HRESULT IMetaDataImport_CountEnum(IMetaDataImport* This,HCORENUM henum,ULONG *count) {
    return This->lpVtbl->CountEnum(This,henum,count);
}
static inline HRESULT IMetaDataImport_ResetEnum(IMetaDataImport* This,HCORENUM henum,ULONG pos) {
    return This->lpVtbl->ResetEnum(This,henum,pos);
}
static inline HRESULT IMetaDataImport_EnumTypeDefs(IMetaDataImport* This,HCORENUM *henum,mdTypeDef *typedefs,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumTypeDefs(This,henum,typedefs,len,count);
}
static inline HRESULT IMetaDataImport_EnumInterfaceImpls(IMetaDataImport* This,HCORENUM *henum,mdTypeDef type_def,mdInterfaceImpl *impls,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumInterfaceImpls(This,henum,type_def,impls,len,count);
}
static inline HRESULT IMetaDataImport_EnumTypeRefs(IMetaDataImport* This,HCORENUM *henum,mdTypeRef *typerefs,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumTypeRefs(This,henum,typerefs,len,count);
}
static inline HRESULT IMetaDataImport_FindTypeDefByName(IMetaDataImport* This,const WCHAR *name,mdToken enclosing_class,mdTypeDef *type_def) {
    return This->lpVtbl->FindTypeDefByName(This,name,enclosing_class,type_def);
}
static inline HRESULT IMetaDataImport_GetScopeProps(IMetaDataImport* This,WCHAR *name,ULONG len,ULONG *written,GUID *mvid) {
    return This->lpVtbl->GetScopeProps(This,name,len,written,mvid);
}
static inline HRESULT IMetaDataImport_GetModuleFromScope(IMetaDataImport* This,mdModule *module_token) {
    return This->lpVtbl->GetModuleFromScope(This,module_token);
}
static inline HRESULT IMetaDataImport_GetTypeDefProps(IMetaDataImport* This,mdTypeDef type_def,WCHAR *name,ULONG len,ULONG *written,ULONG *flags,mdToken *extends) {
    return This->lpVtbl->GetTypeDefProps(This,type_def,name,len,written,flags,extends);
}
static inline HRESULT IMetaDataImport_GetInterfaceImplProps(IMetaDataImport* This,mdInterfaceImpl iface_impl,mdTypeDef *class_token,mdToken *iface) {
    return This->lpVtbl->GetInterfaceImplProps(This,iface_impl,class_token,iface);
}
static inline HRESULT IMetaDataImport_GetTypeRefProps(IMetaDataImport* This,mdTypeRef typeref,mdToken *resolution_scope,WCHAR *name,ULONG len,ULONG *written) {
    return This->lpVtbl->GetTypeRefProps(This,typeref,resolution_scope,name,len,written);
}
static inline HRESULT IMetaDataImport_ResolveTypeRef(IMetaDataImport* This,mdTypeRef typeref,const GUID *iid,IUnknown **scope,mdTypeDef *type_def) {
    return This->lpVtbl->ResolveTypeRef(This,typeref,iid,scope,type_def);
}
static inline HRESULT IMetaDataImport_EnumMembers(IMetaDataImport* This,HCORENUM *henum,mdTypeDef type_def,mdToken *member_defs,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumMembers(This,henum,type_def,member_defs,len,count);
}
static inline HRESULT IMetaDataImport_EnumMembersWithName(IMetaDataImport* This,HCORENUM *henum,mdTypeDef token,const WCHAR *name,mdToken *member_defs,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumMembersWithName(This,henum,token,name,member_defs,len,count);
}
static inline HRESULT IMetaDataImport_EnumMethods(IMetaDataImport* This,HCORENUM *henum,mdTypeDef type_def,mdMethodDef *method_defs,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumMethods(This,henum,type_def,method_defs,len,count);
}
static inline HRESULT IMetaDataImport_EnumMethodsWithName(IMetaDataImport* This,HCORENUM *henum,mdTypeDef type_def,const WCHAR *name,mdMethodDef *method_defs,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumMethodsWithName(This,henum,type_def,name,method_defs,len,count);
}
static inline HRESULT IMetaDataImport_EnumFields(IMetaDataImport* This,HCORENUM *henum,mdTypeDef token,mdFieldDef *field_defs,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumFields(This,henum,token,field_defs,len,count);
}
static inline HRESULT IMetaDataImport_EnumFieldsWithName(IMetaDataImport* This,HCORENUM *henum,mdTypeDef token,const WCHAR *name,mdFieldDef *field_defs,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumFieldsWithName(This,henum,token,name,field_defs,len,count);
}
static inline HRESULT IMetaDataImport_EnumParams(IMetaDataImport* This,HCORENUM *henum,mdMethodDef method_def,mdParamDef *params,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumParams(This,henum,method_def,params,len,count);
}
static inline HRESULT IMetaDataImport_EnumMemberRefs(IMetaDataImport* This,HCORENUM *henum,mdToken parent,mdMemberRef *members,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumMemberRefs(This,henum,parent,members,len,count);
}
static inline HRESULT IMetaDataImport_EnumMethodImpls(IMetaDataImport* This,HCORENUM *henum,mdTypeDef token,mdToken *body_tokens,mdToken *decl_tokens,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumMethodImpls(This,henum,token,body_tokens,decl_tokens,len,count);
}
static inline HRESULT IMetaDataImport_EnumPermissionSets(IMetaDataImport* This,HCORENUM *henum,mdToken token,ULONG actions,mdPermission *permissions,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumPermissionSets(This,henum,token,actions,permissions,len,count);
}
static inline HRESULT IMetaDataImport_FindMember(IMetaDataImport* This,mdTypeDef type_def,const WCHAR *name,const COR_SIGNATURE *sig_blob,ULONG len,mdToken *member_ref) {
    return This->lpVtbl->FindMember(This,type_def,name,sig_blob,len,member_ref);
}
static inline HRESULT IMetaDataImport_FindMethod(IMetaDataImport* This,mdTypeDef type_def,const WCHAR *name,const COR_SIGNATURE *sig_blob,ULONG len,mdMethodDef *method_def) {
    return This->lpVtbl->FindMethod(This,type_def,name,sig_blob,len,method_def);
}
static inline HRESULT IMetaDataImport_FindField(IMetaDataImport* This,mdTypeDef type_def,const WCHAR *name,const COR_SIGNATURE *sig_blob,ULONG len,mdFieldDef *field_def) {
    return This->lpVtbl->FindField(This,type_def,name,sig_blob,len,field_def);
}
static inline HRESULT IMetaDataImport_FindMemberRef(IMetaDataImport* This,mdTypeRef typeref,const WCHAR *name,const COR_SIGNATURE *sig_blob,ULONG len,mdMemberRef *member_ref) {
    return This->lpVtbl->FindMemberRef(This,typeref,name,sig_blob,len,member_ref);
}
static inline HRESULT IMetaDataImport_GetMethodProps(IMetaDataImport* This,mdMethodDef method_def,mdTypeDef *type_def,WCHAR *method_name,ULONG name_len,ULONG *written,ULONG *method_flags,const COR_SIGNATURE **sig_blob,ULONG *sig_len,ULONG *rva,ULONG *impl_flags) {
    return This->lpVtbl->GetMethodProps(This,method_def,type_def,method_name,name_len,written,method_flags,sig_blob,sig_len,rva,impl_flags);
}
static inline HRESULT IMetaDataImport_GetMemberRefProps(IMetaDataImport* This,mdMemberRef member_ref,mdToken *token,WCHAR *member_name,ULONG name_len,ULONG *written,const COR_SIGNATURE **sig_blob,ULONG *sig_len) {
    return This->lpVtbl->GetMemberRefProps(This,member_ref,token,member_name,name_len,written,sig_blob,sig_len);
}
static inline HRESULT IMetaDataImport_EnumProperties(IMetaDataImport* This,HCORENUM *henum,mdTypeDef type_def,mdProperty *props,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumProperties(This,henum,type_def,props,len,count);
}
static inline HRESULT IMetaDataImport_EnumEvents(IMetaDataImport* This,HCORENUM *henum,mdTypeDef type_def,mdEvent *events,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumEvents(This,henum,type_def,events,len,count);
}
static inline HRESULT IMetaDataImport_GetEventProps(IMetaDataImport* This,mdEvent event,mdTypeDef *class_typedef,WCHAR *name,ULONG name_len,ULONG *written,ULONG *event_flags,mdToken *event_type,mdMethodDef *add_method,mdMethodDef *remove_method,mdMethodDef *fire_method,mdMethodDef *other_methods,ULONG other_len,ULONG *other_count) {
    return This->lpVtbl->GetEventProps(This,event,class_typedef,name,name_len,written,event_flags,event_type,add_method,remove_method,fire_method,other_methods,other_len,other_count);
}
static inline HRESULT IMetaDataImport_EnumMethodSemantics(IMetaDataImport* This,HCORENUM *henum,mdMethodDef method_def,mdToken *event_props,ULONG len,ULONG *written) {
    return This->lpVtbl->EnumMethodSemantics(This,henum,method_def,event_props,len,written);
}
static inline HRESULT IMetaDataImport_GetMethodSemantics(IMetaDataImport* This,mdMethodDef method_def,mdToken event_prop,ULONG *semantics) {
    return This->lpVtbl->GetMethodSemantics(This,method_def,event_prop,semantics);
}
static inline HRESULT IMetaDataImport_GetClassLayout(IMetaDataImport* This,mdTypeDef type_def,ULONG *pack_size,COR_FIELD_OFFSET *offsets,ULONG len,ULONG *count,ULONG *class_size) {
    return This->lpVtbl->GetClassLayout(This,type_def,pack_size,offsets,len,count,class_size);
}
static inline HRESULT IMetaDataImport_GetFieldMarshal(IMetaDataImport* This,mdToken token,const COR_SIGNATURE **native_type_blob,ULONG *len) {
    return This->lpVtbl->GetFieldMarshal(This,token,native_type_blob,len);
}
static inline HRESULT IMetaDataImport_GetRVA(IMetaDataImport* This,mdToken token,ULONG *rva,ULONG *impl_flags) {
    return This->lpVtbl->GetRVA(This,token,rva,impl_flags);
}
static inline HRESULT IMetaDataImport_GetPermissionSetProps(IMetaDataImport* This,mdPermission permission,ULONG *decl_sec,const BYTE **perm_blob,ULONG *len) {
    return This->lpVtbl->GetPermissionSetProps(This,permission,decl_sec,perm_blob,len);
}
static inline HRESULT IMetaDataImport_GetSigFromToken(IMetaDataImport* This,mdSignature signature,const COR_SIGNATURE **sig_blob,ULONG *len) {
    return This->lpVtbl->GetSigFromToken(This,signature,sig_blob,len);
}
static inline HRESULT IMetaDataImport_GetModuleRefProps(IMetaDataImport* This,mdModuleRef module_ref,WCHAR *name,ULONG len,ULONG *written) {
    return This->lpVtbl->GetModuleRefProps(This,module_ref,name,len,written);
}
static inline HRESULT IMetaDataImport_EnumModuleRefs(IMetaDataImport* This,HCORENUM *henum,mdModuleRef *module_refs,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumModuleRefs(This,henum,module_refs,len,count);
}
static inline HRESULT IMetaDataImport_GetTypeSpecFromToken(IMetaDataImport* This,mdTypeSpec typespec,const COR_SIGNATURE **sig_blob,ULONG *len) {
    return This->lpVtbl->GetTypeSpecFromToken(This,typespec,sig_blob,len);
}
static inline HRESULT IMetaDataImport_GetNameFromToken(IMetaDataImport* This,mdToken token,const char **name) {
    return This->lpVtbl->GetNameFromToken(This,token,name);
}
static inline HRESULT IMetaDataImport_EnumUnresolvedMethods(IMetaDataImport* This,HCORENUM *henum,mdToken *method_defs,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumUnresolvedMethods(This,henum,method_defs,len,count);
}
static inline HRESULT IMetaDataImport_GetUserString(IMetaDataImport* This,mdString string_token,WCHAR *str,ULONG len,ULONG *written) {
    return This->lpVtbl->GetUserString(This,string_token,str,len,written);
}
static inline HRESULT IMetaDataImport_GetPinvokeMap(IMetaDataImport* This,mdToken field_method_def,ULONG *map_flags,WCHAR *import_name,ULONG len,ULONG *written,mdModuleRef *target) {
    return This->lpVtbl->GetPinvokeMap(This,field_method_def,map_flags,import_name,len,written,target);
}
static inline HRESULT IMetaDataImport_EnumSignatures(IMetaDataImport* This,HCORENUM *henum,mdSignature *sigs,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumSignatures(This,henum,sigs,len,count);
}
static inline HRESULT IMetaDataImport_EnumTypeSpecs(IMetaDataImport* This,HCORENUM *henum,mdTypeSpec *typespecs,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumTypeSpecs(This,henum,typespecs,len,count);
}
static inline HRESULT IMetaDataImport_EnumUserStrings(IMetaDataImport* This,HCORENUM *henum,mdString *strings,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumUserStrings(This,henum,strings,len,count);
}
static inline HRESULT IMetaDataImport_GetParamForMethodIndex(IMetaDataImport* This,mdMethodDef token,ULONG param_seq,mdParamDef *param_def) {
    return This->lpVtbl->GetParamForMethodIndex(This,token,param_seq,param_def);
}
static inline HRESULT IMetaDataImport_EnumCustomAttributes(IMetaDataImport* This,HCORENUM *henum,mdToken token,mdToken token_type,mdCustomAttribute *attrs,ULONG len,ULONG *count) {
    return This->lpVtbl->EnumCustomAttributes(This,henum,token,token_type,attrs,len,count);
}
static inline HRESULT IMetaDataImport_GetCustomAttributeProps(IMetaDataImport* This,mdCustomAttribute custom_attr,mdToken *obj,mdToken *attr_type,const BYTE **blob,ULONG *len) {
    return This->lpVtbl->GetCustomAttributeProps(This,custom_attr,obj,attr_type,blob,len);
}
static inline HRESULT IMetaDataImport_FindTypeRef(IMetaDataImport* This,mdToken resolution_scope,const WCHAR *name,mdTypeRef *typeref) {
    return This->lpVtbl->FindTypeRef(This,resolution_scope,name,typeref);
}
static inline HRESULT IMetaDataImport_GetMemberProps(IMetaDataImport* This,mdToken member,mdTypeDef *type_def,WCHAR *name,ULONG member_len,ULONG *member_written,ULONG *flags,const COR_SIGNATURE **sig_blob,ULONG *blob_len,ULONG *rva,ULONG *impl_flags,ULONG *value_type_flag,UVCP_CONSTANT *value,ULONG *value_len) {
    return This->lpVtbl->GetMemberProps(This,member,type_def,name,member_len,member_written,flags,sig_blob,blob_len,rva,impl_flags,value_type_flag,value,value_len);
}
static inline HRESULT IMetaDataImport_GetFieldProps(IMetaDataImport* This,mdFieldDef fielddef,mdTypeDef *type_def,WCHAR *field_name,ULONG name_len,ULONG *name_written,ULONG *flags,const COR_SIGNATURE **sig_blob,ULONG *sig_len,ULONG *value_type_flag,UVCP_CONSTANT *value,ULONG *value_len) {
    return This->lpVtbl->GetFieldProps(This,fielddef,type_def,field_name,name_len,name_written,flags,sig_blob,sig_len,value_type_flag,value,value_len);
}
static inline HRESULT IMetaDataImport_GetPropertyProps(IMetaDataImport* This,mdProperty prop,mdTypeDef *type_def,WCHAR *name,ULONG name_len,ULONG *name_written,ULONG *prop_flags,const COR_SIGNATURE **sig_blob,ULONG *sig_len,ULONG *value_type_flag,UVCP_CONSTANT *default_value,ULONG *value_len,mdMethodDef *set_method,mdMethodDef *get_method,mdMethodDef *other_methods,ULONG other_len,ULONG *other_count) {
    return This->lpVtbl->GetPropertyProps(This,prop,type_def,name,name_len,name_written,prop_flags,sig_blob,sig_len,value_type_flag,default_value,value_len,set_method,get_method,other_methods,other_len,other_count);
}
static inline HRESULT IMetaDataImport_GetParamProps(IMetaDataImport* This,mdParamDef param_def,mdMethodDef *method_def,ULONG *param_seq,WCHAR *name,ULONG name_len,ULONG *name_written,ULONG *flags,ULONG *value_type_flag,UVCP_CONSTANT *value,ULONG *value_len) {
    return This->lpVtbl->GetParamProps(This,param_def,method_def,param_seq,name,name_len,name_written,flags,value_type_flag,value,value_len);
}
static inline HRESULT IMetaDataImport_GetCustomAttributeByName(IMetaDataImport* This,mdToken obj,const WCHAR *name,const BYTE **data,ULONG *len) {
    return This->lpVtbl->GetCustomAttributeByName(This,obj,name,data,len);
}
static inline BOOL IMetaDataImport_IsValidToken(IMetaDataImport* This,mdToken token) {
    return This->lpVtbl->IsValidToken(This,token);
}
static inline HRESULT IMetaDataImport_GetNestedClassProps(IMetaDataImport* This,mdTypeDef nested_class,mdTypeDef *enclosing_class) {
    return This->lpVtbl->GetNestedClassProps(This,nested_class,enclosing_class);
}
static inline HRESULT IMetaDataImport_GetNativeCallConvFromSig(IMetaDataImport* This,const BYTE *sig_blob,ULONG len,ULONG *call_conv) {
    return This->lpVtbl->GetNativeCallConvFromSig(This,sig_blob,len,call_conv);
}
static inline HRESULT IMetaDataImport_IsGlobal(IMetaDataImport* This,mdToken token,int *is_global) {
    return This->lpVtbl->IsGlobal(This,token,is_global);
}
#endif
#endif

#endif


#endif  /* __IMetaDataImport_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __rometadataapi_h__ */
