summaryrefslogtreecommitdiff
path: root/src/md/inc
diff options
context:
space:
mode:
authordanmosemsft <danmose@microsoft.com>2017-02-12 12:46:46 -0800
committerdanmosemsft <danmose@microsoft.com>2017-02-12 16:58:49 -0800
commitc2ef095b02c2751f304f43d4c529a1fbac6079d2 (patch)
treefd82de19a28bda53c9d0ee97c45db39aa602495d /src/md/inc
parentc9a8100ddeaf106f61bd7837ff17ef2ecc069b0b (diff)
downloadcoreclr-c2ef095b02c2751f304f43d4c529a1fbac6079d2.tar.gz
coreclr-c2ef095b02c2751f304f43d4c529a1fbac6079d2.tar.bz2
coreclr-c2ef095b02c2751f304f43d4c529a1fbac6079d2.zip
Remove never defined FEATURE_COMINTEROP_TLB_SUPPORT and files that require it to be defined
Diffstat (limited to 'src/md/inc')
-rw-r--r--src/md/inc/imptlb.h777
1 files changed, 0 insertions, 777 deletions
diff --git a/src/md/inc/imptlb.h b/src/md/inc/imptlb.h
deleted file mode 100644
index ba2981a415..0000000000
--- a/src/md/inc/imptlb.h
+++ /dev/null
@@ -1,777 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-//*****************************************************************************
-// File: imptlb.h
-//
-
-//
-// TypeLib importer.
-//*****************************************************************************
-#ifndef __imptlb_h__
-#define __imptlb_h__
-
-#ifndef FEATURE_COMINTEROP
-#error FEATURE_COMINTEROP is required for this file
-#endif // FEATURE_COMINTEROP
-#ifndef FEATURE_COMINTEROP_TLB_SUPPORT
-#error FEATURE_COMINTEROP_TLB_SUPPORT is required for this file
-#endif // FEATURE_COMINTEROP_TLB_SUPPORT
-
-//#define TLB_STATS
-
-#define MAX_TLB_VT VT_LPWSTR + 1
-#define MAX_INIT_SIG 3
-#define MAX_COM_GUID_SIG 6
-#define MAX_COM_ADDLISTENER_SIG 8
-#define MAX_COM_REMOVELISTENER_SIG 8
-#define CB_MAX_ELEMENT_TYPE 4
-
-// Forward declarations.
-struct ITypeLibImporterNotifySink;
-class Assembly;
-class Module;
-class CImportTlb;
-
-//*****************************************************************************
-// Class to perform memory management. Memory is not moved as the heap is
-// expanded, and all of the allocations are cleaned up in the destructor.
-//*****************************************************************************
-class CWCHARPool : public StgPool
-{
-public:
- CWCHARPool() : StgPool()
- {
- HRESULT hr = InitNew();
- _ASSERTE(hr == S_OK);
- }
-
- // Allocate some bytes from the pool.
- WCHAR * Alloc(ULONG nChars)
- {
- BYTE *pRslt;
- // Convert from characters to bytes.
- nChars *= sizeof(WCHAR);
- if (nChars > GetCbSegAvailable())
- if (!Grow(nChars))
- return 0;
- pRslt = GetNextLocation();
- SegAllocate(nChars);
- return (WCHAR*)pRslt;
- }
-}; // class CDescPool : public StgPool
-
-
-//*****************************************************************************
-// This helper method is used to track an url to typeref token. This makes
-// defining new typerefs faster.
-//*****************************************************************************
-class CImpTlbTypeRef
-{
-public:
- CImpTlbTypeRef() { }
- ~CImpTlbTypeRef() { m_Map.Clear(); }
-
- //*****************************************************************************
- // Look for an existing typeref in the map and return if found. If not found,
- // then create a new one and add it to the map for later.
- //*****************************************************************************
- HRESULT DefineTypeRef( // S_OK or error.
- IMetaDataEmit *pEmit, // Emit interface.
- mdAssemblyRef ar, // Containing assembly.
- const LPCWSTR szURL, // URL of the TypeDef, wide chars.
- mdTypeRef *ptr); // Put mdTypeRef here
-
- class TokenOfTypeRefHashKey
- {
- public:
- mdToken tkResolutionScope; // TypeRef's resolution scope.
- LPCWSTR szName; // TypeRef's name.
- mdTypeRef tr; // The TypeRef's token.
- };
-
-private:
-
- class CTokenOfTypeRefHash : public CClosedHash<class TokenOfTypeRefHashKey>
- {
- public:
- typedef CClosedHash<class TokenOfTypeRefHashKey> Super;
- typedef TokenOfTypeRefHashKey T;
-
- CTokenOfTypeRefHash() : CClosedHash<class TokenOfTypeRefHashKey>(101) {}
- ~CTokenOfTypeRefHash() { Clear(); }
-
- virtual void Clear();
-
- unsigned int Hash(const void *pData) {return Hash((const T*)pData);}
- unsigned int Hash(const T *pData);
-
- unsigned int Compare(const void *p1, BYTE *p2) {return Compare((const T*)p1, (T*)p2);}
- unsigned int Compare(const T *p1, T *p2);
-
- ELEMENTSTATUS Status(BYTE *p) {return Status((T*)p);}
- ELEMENTSTATUS Status(T *p);
-
- void SetStatus(BYTE *p, ELEMENTSTATUS s) {SetStatus((T*)p, s);}
- void SetStatus(T *p, ELEMENTSTATUS s);
-
- void* GetKey(BYTE *p) {return GetKey((T*)p);}
- void *GetKey(T *p);
-
- T* Add(const T *pData);
-
- CWCHARPool m_Names; // Heap of names.
- };
-
- CTokenOfTypeRefHash m_Map; // Map of namespace to token.
-};
-
-
-//*****************************************************************************
-// This helper class is used to track source interface ITypeInfo*'s to event
-// information.
-//*****************************************************************************
-class ImpTlbEventInfo
-{
-public:
- LPCWSTR szSrcItfName; // The source interface name (the key).
- mdTypeRef trEventItf; // The event interface typedef.
- LPCWSTR szEventItfName; // The event interface name.
- LPCWSTR szEventProviderName; // The event provider name.
- Assembly* SrcItfAssembly; // The assembly where source interface resides.
-};
-
-class CImpTlbEventInfoMap : protected CClosedHash<class ImpTlbEventInfo>
-{
-public:
- typedef CClosedHash<class ImpTlbEventInfo> Super;
- typedef ImpTlbEventInfo T;
-
- CImpTlbEventInfoMap() : CClosedHash<class ImpTlbEventInfo>(101) {}
- ~CImpTlbEventInfoMap() { Clear(); }
-
- HRESULT AddEventInfo(LPCWSTR szSrcItfName, mdTypeRef trEventItf, LPCWSTR szEventItfName, LPCWSTR szEventProviderName, Assembly* SrcItfAssembly);
- ImpTlbEventInfo *FindEventInfo(LPCWSTR szSrcItfName);
-
- HRESULT GetEventInfoList(CQuickArray<ImpTlbEventInfo*> &qbEvInfoList);
-
-private:
- unsigned int Hash(const void *pData) {return Hash((const T*)pData);}
- unsigned int Hash(const T *pData);
-
- unsigned int Compare(const void *p1, BYTE *p2) {return Compare((const T*)p1, (T*)p2);}
- unsigned int Compare(const T *p1, T *p2);
-
- ELEMENTSTATUS Status(BYTE *p) {return Status((T*)p);}
- ELEMENTSTATUS Status(T *p);
-
- void SetStatus(BYTE *p, ELEMENTSTATUS s) {SetStatus((T*)p, s);}
- void SetStatus(T *p, ELEMENTSTATUS s);
-
- void* GetKey(BYTE *p) {return GetKey((T*)p);}
- void *GetKey(T *p);
-
- T* Add(const T *pData);
-
- CWCHARPool m_Names; // Heap of names.
-};
-
-
-#if defined(_UNICODE) || defined(UNICODE)
-#define _tHashString(szStr) HashString(szStr)
-#else
-#define _tHashString(szStr) HashStringA(szStr)
-#endif
-
-
-
-//*****************************************************************************
-// This helper template is used by the TStringMap to track an item by its
-// character name.
-//*****************************************************************************
-template <class T> class TStringMapItem : HASHENTRY
-{
-public:
- TStringMapItem() :
- m_szString(0)
- {
- LIMITED_METHOD_CONTRACT;
- }
- ~TStringMapItem()
- {
- LIMITED_METHOD_CONTRACT;
- delete [] m_szString;
- }
-
- HRESULT SetString(LPCTSTR szValue)
- {
- WRAPPER_NO_CONTRACT;
- int iLen = (int)(::_tcslen(szValue) + 1);
- if ((m_szString = new TCHAR[iLen]) == 0)
- return (OutOfMemory());
- ::_tcscpy_s((TCHAR*)m_szString, iLen, szValue);
- return (S_OK);
- }
-
-public:
- LPTSTR m_szString; // Key data.
- T m_value; // Value for this key.
-};
-
-
-//*****************************************************************************
-// IMPORTANT: This data structure is deprecated, please do not add any new uses.
-// The hashtable implementation that should be used instead is code:SHash.
-// If code:SHash does not work for you, talk to mailto:clrdeag.
-//*****************************************************************************
-// This template provides a map from string to item, determined by the template
-// type passed in.
-//*****************************************************************************
-template <class T, int iBuckets=17, class TAllocator=CNewData, int iMaxSize=4096>
-class TStringMap :
- protected CHashTableAndData<TAllocator>
-{
- typedef CHashTableAndData<TAllocator> Super;
-
-public:
- typedef TStringMapItem<T> TItemType;
- typedef TStringMapItem<long> TOffsetType;
-
-#ifndef DACCESS_COMPILE
-
- TStringMap() :
- CHashTableAndData<TAllocator>(iBuckets)
- {
- LIMITED_METHOD_CONTRACT;
- }
-
-//*****************************************************************************
-// This is the second part of construction where we do all of the work that
-// can fail. We also take the array of structs here because the calling class
-// presumably needs to allocate it in its NewInit.
-//*****************************************************************************
- HRESULT NewInit() // Return status.
- {
- WRAPPER_NO_CONTRACT;
- return (CHashTableAndData<TAllocator>::NewInit(
- CNewData::GrowSize(0)/sizeof(TItemType),
- sizeof(TItemType),
- iMaxSize));
- }
-
-//*****************************************************************************
-// For each item still allocated, invoke its dtor so it frees up anything it
-// holds onto.
-//*****************************************************************************
- void Clear()
- {
- WRAPPER_NO_CONTRACT;
- HASHFIND sSrch;
- TItemType *p = (TItemType *) FindFirstEntry(&sSrch);
-
- while (p != 0)
- {
- // Call dtor on the item, since m_value is contained the scalar
- // dtor will get called.
- p->~TStringMapItem<T>();
- p = (TItemType *) FindNextEntry(&sSrch);
- }
- CHashTableAndData<TAllocator>::Clear();
- }
-
-#endif // #ifndef DACCESS_COMPILE
-
-//*****************************************************************************
-// Retrieve an item by name.
-//*****************************************************************************
- T *GetItem( // Null or object.
- LPCTSTR szKey) // What to do the lookup on.
- {
- WRAPPER_NO_CONTRACT;
- TItemType sInfo;
- TItemType *ptr; // Working pointer.
-
- // Create a key.
- sInfo.m_szString = (LPTSTR) szKey;
-
- // Look it up in the hash table.
- ptr = (TItemType *) Super::Find( _tHashString(szKey), (SIZE_T) &sInfo);
-
- // Don't let dtor free our string.
- sInfo.m_szString = 0;
-
- // If pointer found, return to caller. To handle T's that have
- // an operator &(), find raw address without going through &m_value.
- if (ptr)
- return ((T *) ((BYTE *) ptr + offsetof(TOffsetType, m_value)));
- else
- return (0);
- }
-
-//*****************************************************************************
-// Initialize an iterator and return the first item.
-//*****************************************************************************
- TItemType *FindFirstEntry(
- HASHFIND *psSrch)
- {
- WRAPPER_NO_CONTRACT;
- TItemType *ptr = (TItemType *) Super::FindFirstEntry(psSrch);
-
- return (ptr);
- }
-
-//*****************************************************************************
-// Return the next item, via an iterator.
-//*****************************************************************************
- TItemType *FindNextEntry(
- HASHFIND *psSrch)
- {
- WRAPPER_NO_CONTRACT;
- TItemType *ptr = (TItemType *) Super::FindNextEntry(psSrch);
-
- return (ptr);
- }
-
-#ifndef DACCESS_COMPILE
-
-//*****************************************************************************
-// Add an item to the list.
-//*****************************************************************************
- HRESULT AddItem( // S_OK, or S_FALSE.
- LPCTSTR szKey, // The key value for the item.
- T &item) // Thing to add.
- {
- WRAPPER_NO_CONTRACT;
- TItemType *ptr; // Working pointer.
-
- // Allocate an entry in the hash table.
- if ((ptr = (TItemType *) this->Add( _tHashString(szKey))) == 0)
- return (OutOfMemory());
-
- // Fill the record.
- if (ptr->SetString(szKey) < 0)
- {
- DelItem(ptr);
- return (OutOfMemory());
- }
-
- // Call the placement new operator on the item so it can init itself.
- // To handle T's that have an operator &(), find raw address without
- // going through &m_value.
- T *p = new ((void *) ((BYTE *) ptr + offsetof(TOffsetType, m_value))) T;
- *p = item;
- return (S_OK);
- }
-
-//*****************************************************************************
-// Delete an item.
-//*****************************************************************************
- void DelItem(
- LPCTSTR szKey) // What to delete.
- {
- WRAPPER_NO_CONTRACT;
- TItemType sInfo;
- TItemType *ptr; // Working pointer.
-
- // Create a key.
- sInfo.m_szString = (LPTSTR) szKey;
-
- // Look it up in the hash table.
- ptr = (TItemType *) this->Find( _tHashString(szKey), (BYTE *) &sInfo);
-
- // Don't let dtor free our string.
- sInfo.m_szString = 0;
-
- // If found, delete.
- if (ptr)
- DelItem(ptr);
- }
-
-#endif // #ifndef DACCESS_COMPILE
-
-//*****************************************************************************
-// Compare the keys for two collections.
-//*****************************************************************************
- BOOL Cmp( // 0 or != 0.
- SIZE_T data, // Raw key data on lookup.
- const HASHENTRY *pElement) // The element to compare data against.
- {
- LIMITED_METHOD_DAC_CONTRACT;
- TItemType *p = (TItemType *) (size_t) pElement;
- return (::_tcscmp(((TItemType *) data)->m_szString, p->m_szString));
- }
-
-private:
- void DelItem(
- TItemType *pItem) // Entry to delete.
- {
- WRAPPER_NO_CONTRACT;
- // Need to destruct this item.
- pItem->~TStringMapItem<T>();
- CHashTableAndData<TAllocator>::Delete( HashString(pItem->m_szString), (HASHENTRY *)(void *)pItem);
- }
-};
-
-class CImpTlbReservedNames
-{
-public:
- CImpTlbReservedNames() {}
- ~CImpTlbReservedNames() {/*m_StringMap.Clear();*/}
-
-#ifndef DACCESS_COMPILE
- HRESULT Init() {return m_StringMap.NewInit();}
-
- void AddReservedName(LPCWSTR szName) {BOOL flag = TRUE; m_StringMap.AddItem(szName, flag);}
-#endif
- BOOL IsReservedName(LPCWSTR szName) {return m_StringMap.GetItem(szName) != 0;}
-
-private:
- TStringMap<BOOL> m_StringMap;
-};
-
-
-//*****************************************************************************
-// Helper class to keep track of the mappings from default interfaces to
-// class interfaces.
-//*****************************************************************************
-class ImpTlbClassItfInfo
-{
-public:
- IID ItfIID; // The IID of the interface.
- LPCWSTR szClassItfName; // The class interface name.
-};
-
-class CImpTlbDefItfToClassItfMap : protected CClosedHash<class ImpTlbClassItfInfo>
-{
-public:
- typedef CClosedHash<class ImpTlbClassItfInfo> Super;
- typedef ImpTlbClassItfInfo T;
-
- CImpTlbDefItfToClassItfMap();
- ~CImpTlbDefItfToClassItfMap();
-
- HRESULT Init(ITypeLib *pTlb, BSTR bstrNameSpace);
-
- LPCWSTR GetClassItfName(IID &rItfIID);
-
-private:
- HRESULT AddCoClassInterfaces(ITypeInfo *pCoClassITI, TYPEATTR *pCoClassTypeAttr);
-
- unsigned int Hash(const void *pData) {return Hash((const T*)pData);}
- unsigned int Hash(const T *pData);
-
- unsigned int Compare(const void *p1, BYTE *p2) {return Compare((const T*)p1, (T*)p2);}
- unsigned int Compare(const T *p1, T *p2);
-
- ELEMENTSTATUS Status(BYTE *p) {return Status((T*)p);}
- ELEMENTSTATUS Status(T *p);
-
- void SetStatus(BYTE *p, ELEMENTSTATUS s) {SetStatus((T*)p, s);}
- void SetStatus(T *p, ELEMENTSTATUS s);
-
- void* GetKey(BYTE *p) {return GetKey((T*)p);}
- void *GetKey(T *p);
-
- T* Add(const T *pData);
-
- CWCHARPool m_Names; // Heap of names.
- BSTR m_bstrNameSpace; // Namespace of the typelib.
-};
-
-
-//*****************************************************************************
-// Helper class to keep track of imported typelibs. Typically, a typelib
-// imports only 2 or 3 other typelibs, so a simple array is used.
-//*****************************************************************************
-struct CTlbRef
-{
- GUID guid; // GUID of referenced typelib.
- mdAssemblyRef ar; // AssemblyRef for the module containing reference.
- BSTR szNameSpace; // The namespace of the types contained in the assembly.
- BSTR szAsmName; // The assembly name.
- Assembly* Asm; // The assembly.
- CImpTlbDefItfToClassItfMap *pDefItfToClassItfMap; // The default interface to class interface map.
-
- ~CTlbRef()
- {
- SysFreeString(szNameSpace);
- SysFreeString(szAsmName);
- delete pDefItfToClassItfMap;
- }
-};
-
-class CImpTlbLibRef : public CQuickArray<CTlbRef>
-{
- typedef CQuickArray<CTlbRef> base;
-public:
- CImpTlbLibRef() {base::Shrink(0);}
- ~CImpTlbLibRef();
-
- HRESULT Add(ITypeLib *pITLB, CImportTlb *pImporter, mdAssemblyRef ar, BSTR wzNamespace, BSTR wzAsmName, Assembly* assm, CImpTlbDefItfToClassItfMap **ppMap);
- int Find(ITypeLib *pITLB, mdAssemblyRef *par, BSTR *pwzNamespace, BSTR *pwzAsmName, Assembly** assm, CImpTlbDefItfToClassItfMap **ppDefItfToClassItfMap);
-};
-
-
-class CImportTlb
-{
-public:
- static CImportTlb* CreateImporter(LPCWSTR szLibrary, ITypeLib *pitlb, BOOL bGenerateTCEAdapters, BOOL bUnsafeInterfaces, BOOL bSafeArrayAsSystemArray, BOOL bTransformDispRetVals, BOOL bPreventClassMembers, BOOL bSerializableValueClasses);
-
- CImportTlb();
- CImportTlb(LPCWSTR szLibrary, ITypeLib *pitlb, BOOL bGenerateTCEAdapters, BOOL bUnsafeInterfaces, BOOL bSafeArrayAsSystemArray, BOOL bTransformDispRetVals, BOOL bPreventClassMembers, BOOL bSerializableValueClasses);
- ~CImportTlb();
-
- HRESULT Import();
- HRESULT SetNamespace(WCHAR const *pNamespace);
- WCHAR *GetNamespace() {return m_wzNamespace;}
- HRESULT SetNotification(ITypeLibImporterNotifySink *pINotify);
- HRESULT SetMetaData(IUnknown *pIUnk);
- void SetAssembly(Assembly *pAssembly) {m_pAssembly = pAssembly;}
- void SetModule(Module *pModule) {m_pModule = pModule;}
- HRESULT GetNamespaceOfRefTlb(ITypeLib *pITLB, BSTR *pwzNamespace, CImpTlbDefItfToClassItfMap **ppDefItfToClassItfMap);
- HRESULT GetEventInfoList(CQuickArray<ImpTlbEventInfo*> &qbEvInfoList) {return m_EventInfoMap.GetEventInfoList(qbEvInfoList);}
-
- static HRESULT GetDefaultInterface(ITypeInfo *pCoClassTI, ITypeInfo **pDefaultItfTI);
-
-protected:
-
- struct MemberInfo
- {
- union
- {
- FUNCDESC *m_psFunc; // Pointer to FuncDesc.
- VARDESC *m_psVar; // Pointer to VarDesc.
- };
- LPWSTR m_pName; // Function/Prop's name, possibly decorated.
- int m_iMember; // The index of the member in the ITypeInfo.
- union
- {
- LPWSTR m_pName2; // Prop's second name, if any.
- mdToken m_mdFunc; // Function's token & semantics, if not property.
- USHORT m_msSemantics; // Semantics only.
- };
- void SetFuncInfo(mdMethodDef mdFunc, USHORT msSemantics) {m_mdFunc = RidFromToken(mdFunc) | (msSemantics<<24);}
- void GetFuncInfo(mdMethodDef &mdFunc, USHORT &msSemantics) {mdFunc = m_mdFunc&0xffffff | mdtMethodDef; msSemantics = m_mdFunc>>24;}
- };
-
-
- HRESULT ConvertTypeLib();
- HRESULT ConvertTypeInfo();
-
- HRESULT ExplicitlyImplementsIEnumerable(ITypeInfo *pITI, TYPEATTR *psAttr, BOOL fLookupPartner = TRUE);
-
- HRESULT _NewLibraryObject();
- HRESULT ConvCoclass(ITypeInfo *pITI, TYPEATTR *psAttr);
- HRESULT ConvEnum(ITypeInfo *pITI, TYPEATTR *psAttr);
- HRESULT ConvRecord(ITypeInfo *pITI, TYPEATTR *psAttr, BOOL bUnion);
- HRESULT ConvIface(ITypeInfo *pITI, TYPEATTR *psAttr, BOOL bVtblGaps=true);
- HRESULT ConvDispatch(ITypeInfo *pITI, TYPEATTR *psAttr, BOOL bVtblGaps=true);
- HRESULT ConvModule(ITypeInfo *pITI, TYPEATTR *psAttr);
-
- HRESULT IsIUnknownDerived(ITypeInfo *pITI, TYPEATTR *psAttr);
- HRESULT IsIDispatchDerived(ITypeInfo *pITI, TYPEATTR *psAttr);
- HRESULT HasNewEnumMember(ITypeInfo *pItfTI);
- HRESULT FuncIsNewEnum(ITypeInfo *pITI, FUNCDESC *pFuncDesc, DWORD index);
- HRESULT PropertyIsNewEnum(ITypeInfo *pITI, VARDESC *pVarDesc, DWORD index);
-
- HRESULT HasObjectFields(ITypeInfo *pITI, TYPEATTR *psAttr);
- HRESULT IsObjectType(ITypeInfo *pITI, const TYPEDESC *pType);
- HRESULT CompareSigsIgnoringRetType(PCCOR_SIGNATURE pbSig1, ULONG cbSig1, PCCOR_SIGNATURE pbSig2, ULONG cbSig2);
-
- HRESULT FindMethod(mdTypeDef td, LPCWSTR szName, PCCOR_SIGNATURE pbSig, ULONG cbSig, mdMethodDef *pmb);
- HRESULT FindProperty(mdTypeDef td, LPCWSTR szName, PCCOR_SIGNATURE pSig, ULONG cbSig, mdProperty *pPr);
- HRESULT FindEvent(mdTypeDef td, LPCWSTR szName, mdProperty *pEv);
-
- HRESULT ReportEvent(int ev, int hr, ...);
-
- HRESULT _DefineSysRefs();
- HRESULT _GetNamespaceName(ITypeLib *pITLB, BSTR *pwzNamespace);
- HRESULT _GetTokenForTypeInfo(ITypeInfo *pITI, BOOL bConvDefItfToClassItf, mdToken *pToken, __out_ecount (chTypeRef) __out_opt LPWSTR pszTypeRef=0, int chTypeRef=0, int *pchTypeRef=0, BOOL bAsmQualifiedName = FALSE);
-
- HRESULT _FindFirstUserMethod(ITypeInfo *pITI, TYPEATTR *psAttr, int *pIx);
- HRESULT _ResolveTypeDescAliasTypeKind(ITypeInfo *pITIAlias, TYPEDESC *ptdesc, TYPEKIND *ptkind);
- HRESULT _ResolveTypeDescAlias(ITypeInfo *pITIAlias, const TYPEDESC *ptdesc, ITypeInfo **ppTIResolved, TYPEATTR **ppsAttrResolved, GUID *pGuid=0);
-
- HRESULT _SetHiddenCA(mdTypeDef token);
- HRESULT _ForceIEnumerableCVExists(ITypeInfo* pITI, BOOL* CVExists);
- HRESULT _SetDispIDCA(ITypeInfo* pITI, int iMember, long lDispId, mdToken func, BOOL fAlwaysAdd, long* lDispSet, BOOL bFunc);
- HRESULT _GetDispIDCA(ITypeInfo* pITI, int iMember, long* lDispSet, BOOL bFunc);
- HRESULT _CheckForPropertyCustomAttributes(ITypeInfo* pITI, int index, INVOKEKIND* ikind);
-
- HRESULT _ConvIfaceMembers(ITypeInfo *pITI, TYPEATTR *psAttr, BOOL bVtblGaps, BOOL bAddDispIds, BOOL bInheritsIEnum);
- HRESULT _ConvSrcIfaceMembers(ITypeInfo *pITI, TYPEATTR* psAttr, BOOL fInheritsIEnum);
- HRESULT _ConvDispatchMembers(ITypeInfo *pITI, TYPEATTR *psAttr, BOOL fInheritsIEnum);
- HRESULT _GetFunctionPropertyInfo(FUNCDESC *psFunc, USHORT *pSemantics, FUNCDESC **ppSig, TYPEDESC **ppProperty, BOOL *pbRetval, BOOL fUseLastParam, BSTR strName);
- HRESULT _ConvFunction(ITypeInfo *pITI, MemberInfo *pMember, int bVtblGapFuncs, BOOL bAddDispIds, BOOL bDelegateInvokeMeth, BOOL* bAllowIEnum);
- HRESULT _GenerateEvent(ITypeInfo *pITI, MemberInfo *pMember, BOOL fInheritsIEnum);
- HRESULT _GenerateEventDelegate(ITypeInfo *pITI, MemberInfo *pMember, mdTypeDef *ptd, BOOL fInheritsIEnum);
- HRESULT _AddSrcItfMembersToClass(mdTypeRef trSrcItf);
-
- HRESULT _ConvPropertiesForFunctions(ITypeInfo *pITI, TYPEATTR *psAttr);
- enum ParamOpts{ParamNormal=0, ParamOptional, ParamVarArg};
- HRESULT _ConvParam(ITypeInfo *pITI, mdMethodDef mbFunc, int iSequence, const ELEMDESC *pdesc, ParamOpts paramOpts, const WCHAR *pszName, BYTE *pbNative, ULONG cbNative);
- HRESULT _ConvConstant(ITypeInfo *pITI, VARDESC *psVar, BOOL bEnumMember=false);
- HRESULT _ConvField(ITypeInfo *pITI, VARDESC *psVar, mdFieldDef *pmdField, BOOL bUnion);
- HRESULT _ConvProperty(ITypeInfo *pITI, MemberInfo *pMember);
- HRESULT _ConvNewEnumProperty(ITypeInfo *pITI, VARDESC *psVar, MemberInfo *pMember);
-
- HRESULT _HandleAliasInfo(ITypeInfo *pITI, TYPEDESC *pTypeDesc, mdToken tk);
-
- HRESULT _AddTlbRef(ITypeLib *pITLB, mdAssemblyRef *par, BSTR *pwzNamespace, BSTR *pwzAsmName, CImpTlbDefItfToClassItfMap **ppDefItfToClassItfMap);
-
- HRESULT _AddGuidCa(mdToken tkObj, REFGUID guid);
- HRESULT _AddDefaultMemberCa(mdToken tkObj, LPCWSTR szName);
-
- HRESULT _AddStringCa(int attr, mdToken tk, LPCWSTR wzString);
-
- HRESULT GetKnownTypeToken(VARTYPE vt, mdTypeRef *ptr);
-
- HRESULT _GetTokenForEventItf(ITypeInfo *pSrcItfITI, mdTypeRef *ptr);
- HRESULT _CreateClassInterface(ITypeInfo *pCoClassITI, ITypeInfo *pDefItfITI, mdTypeRef trDefItf, mdTypeRef rtDefEvItf, mdToken *ptr);
-
- HRESULT GetManagedNameForCoClass(ITypeInfo *pITI, CQuickArray<WCHAR> &qbClassName);
- HRESULT GenerateUniqueTypeName(CQuickArray<WCHAR> &qbTypeName);
- HRESULT GenerateUniqueMemberName(CQuickArray<WCHAR> &qbMemberName, PCCOR_SIGNATURE pSig, ULONG SigSize, LPCWSTR szPrefix, mdToken type);
- HRESULT _IsAlias(ITypeInfo *pITI, TYPEDESC *pTypeDesc);
-
- HRESULT GetDefMemberName(ITypeInfo *pITI, BOOL bItfQualified, CQuickArray<WCHAR> &qbDefMemberName);
-
- enum SigFlags {
- // These match the typelib values
- SIG_IN = 0x0001, // Input param.
- SIG_OUT = 0x0002, // Output param.
- SIG_RET = 0x0008, // Retval. Currently unused.
- SIG_OPT = 0x0010, // Optional param. Currently unused.
- SIG_FLAGS_MASK = 0x001b, // Mask of flags from TypeLib PARAMFLAGs
-
- SIG_FUNC = 0x0100, // Convert signature for function.
- SIG_FIELD = 0x0200, // Convert signature for field.
- SIG_ELEM = 0x0300, // Convert signature for sub element (eg, array of X).
- SIG_TYPE_MASK = 0x0300,
-
- SIG_USE_BYREF = 0x1000, // If set convert one ptr as E_T_BYREF.
- SIG_VARARG = 0x4000, // If set, this is a paramarray type. Use szArray, not System.Array.
-
- SIG_FLAGS_NONE = 0 // '0' of this enum type.
- };
-
- #define IsSigIn(flags) ((flags & SIG_IN) == SIG_IN)
- #define IsSigOut(flags) ((flags & SIG_OUT) == SIG_OUT)
- #define IsSigRet(flags) ((flags & SIG_RET) == SIG_RET)
- #define IsSigOpt(flags) ((flags & SIG_OPT) == SIG_OPT)
- #define IsSigOutRet(flags) ((flags & (SIG_OUT|SIG_RET)) == (SIG_OUT|SIG_RET))
-
- #define IsSigFunc(flags) ((flags & SIG_TYPE_MASK) == SIG_FUNC)
- #define IsSigField(flags) ((flags & SIG_TYPE_MASK) == SIG_FIELD)
- #define IsSigElem(flags) ((flags & SIG_TYPE_MASK) == SIG_ELEM)
-
- #define IsSigUseByref(flags) ((flags & SIG_USE_BYREF) == SIG_USE_BYREF)
- #define IsSigVarArg(flags) ((flags & SIG_VARARG) == SIG_VARARG)
-
- HRESULT _ConvSignature(ITypeInfo *pITI, const TYPEDESC *pType, ULONG Flags, CQuickBytes &qbSigBuf, ULONG cbSig, ULONG *pcbSig, CQuickArray<BYTE> &qbNativeTypeBuf, ULONG cbNativeType, ULONG *pcbNativeType, BOOL bNewEnumMember, int iByRef=0);
-
- // For handling out-of-order vtables.
- CQuickArray<MemberInfo> m_MemberList;
- CWCHARPool *m_pMemberNames;
- int m_cMemberProps; // Count of props in memberlist.
- HRESULT BuildMemberList(ITypeInfo *pITI, int iStart, int iEnd, BOOL bInheritsIEnum);
- HRESULT FreeMemberList(ITypeInfo *pITI);
-
- // List of predefined token types for custom attributes.
-#define INTEROP_ATTRIBUTES() \
- INTEROP_ATTRIBUTE(DISPID) \
- INTEROP_ATTRIBUTE(CLASSINTERFACE) \
- INTEROP_ATTRIBUTE(INTERFACETYPE) \
- INTEROP_ATTRIBUTE(TYPELIBTYPE) \
- INTEROP_ATTRIBUTE(TYPELIBVAR) \
- INTEROP_ATTRIBUTE(TYPELIBFUNC) \
- INTEROP_ATTRIBUTE(COMSOURCEINTERFACES) \
- INTEROP_ATTRIBUTE(COMCONVERSIONLOSS) \
- INTEROP_ATTRIBUTE(GUID) \
- INTEROP_ATTRIBUTE(DEFAULTMEMBER) \
- INTEROP_ATTRIBUTE(COMALIASNAME) \
- INTEROP_ATTRIBUTE(PARAMARRAY) \
- INTEROP_ATTRIBUTE(LCIDCONVERSION) \
- INTEROP_ATTRIBUTE(DECIMALVALUE) \
- INTEROP_ATTRIBUTE(DATETIMEVALUE) \
- INTEROP_ATTRIBUTE(IUNKNOWNVALUE) \
- INTEROP_ATTRIBUTE(IDISPATCHVALUE) \
- INTEROP_ATTRIBUTE(COMVISIBLE) \
- INTEROP_ATTRIBUTE(SERIALIZABLE) \
- INTEROP_ATTRIBUTE_SPECIAL(COMEVENTINTERFACE) \
- INTEROP_ATTRIBUTE_SPECIAL(COCLASS) \
-
-#define INTEROP_ATTRIBUTE(x) ATTR_##x,
-#define INTEROP_ATTRIBUTE_SPECIAL(x) ATTR_##x,
- enum {INTEROP_ATTRIBUTES()
- // Last value gives array size.
- ATTR_COUNT};
-#undef INTEROP_ATTRIBUTE
-#undef INTEROP_ATTRIBUTE_SPECIAL
-
- mdToken m_tkAttr[ATTR_COUNT];
- HRESULT GetAttrType(int attr, mdToken *ptk);
-
- // look up table for known type
- mdTypeRef m_tkKnownTypes[MAX_TLB_VT];
-
- LPCWSTR m_szLibrary; // Name of typelib being imported.
- BOOL m_bGenerateTCEAdapters; // A flag indicating if the TCE adapters are being generated or not.
- BOOL m_bUnsafeInterfaces; // A flag indicating whether runtime security checks should be disabled on an interface
- BOOL m_bSafeArrayAsSystemArray; // A flag indicating whether to import SAFEARRAY's as System.Array's.
- BOOL m_bTransformDispRetVals; // A flag indicating if we should do [out,retval] transformation on disp only itfs.
- BOOL m_bPreventClassMembers; // A flag indicating if we should add members to CoClasses.
- BOOL m_bSerializableValueClasses; // A flag indicating if we should mark value classes as serializable.
- mdMemberRef m_tkSuppressCheckAttr; // Cached ctor for security check custom attribute
- ITypeLib *m_pITLB; // Typelib being imported.
- IMetaDataEmit2 *m_pEmit; // Emit API Interface pointer.
- IMetaDataImport2 *m_pImport; // Import API Interface pointer.
-
- BSTR m_wzNamespace; // Namespace of the created TypeDefs.
- mdTypeRef m_trObject; // Token of System.Object.
- mdTypeRef m_trValueType; // Token of System.ValueType.
- mdTypeRef m_trEnum; // Token of System.Enum.
- mdAssemblyRef m_arSystem; // AssemblyRef for classlib.
-
- ITypeInfo *m_pITI; // "Current" ITypeInfo being converted.
- ITypeInfo *m_pOrigITI; // Original "Current" ITypeInfo being converted,
- // represents TKIND_ALIAS or is equal to m_pITI.
-
- TYPEATTR *m_psAttr; // "TYPEATTR" of current ITypeInfo.
-
- BSTR m_szName; // Name of original current ITypeInfo.
- BSTR m_szMember; // Name of current Member (method or field).
- LPWSTR m_szMngName; // Full name of the managed type.
-
- ULONG m_cbVtableSlot; // Size of a vtable slot.
- ULONG m_Slot; // "Current" vtbl index within an interface.
-
- void *m_psClass; // "Current" class record.
- mdTypeDef m_tdTypeDef; // Current TypeDef.
- mdTypeDef m_tdHasDefault; // Most recent TypeDef with a default.
- enum {eImplIfaceNone, eImplIfaceDefault, eImplIface} m_ImplIface;
- mdToken m_tkInterface; // Interface being added to a coclass.
- BSTR m_szInterface; // Interface name for decoration.
-
- CImpTlbTypeRef m_TRMap; // Typeref map.
- CImpTlbLibRef m_LibRefs; // Referenced typelibs.
- CImpTlbDefItfToClassItfMap m_DefItfToClassItfMap; // The default interface to class interface map.
-
- CImpTlbReservedNames m_ReservedNames; // Reserved names.
- CImpTlbEventInfoMap m_EventInfoMap; // Map of event info's.
-
- ITypeLibImporterNotifySink *m_Notify; // Notification object.
- Assembly *m_pAssembly; // Containing assembly.
- Module *m_pModule; // Module we are emiting into.
-
-#if defined(TLB_STATS)
- LARGE_INTEGER m_freqVal; // Frequency of perf counter.
- BOOL m_bStats; // If true, collect timings.
-#endif // TLB_STATS
-};
-
-
-
-#endif
-
-//-eof-************************************************************************