; 
; Exports of file esscli.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY esscli.dll
EXPORTS
; public: __thiscall CClassInfoArray::CClassInfoArray(void)
??0CClassInfoArray@@QAE@XZ
; public: __thiscall CClassInformation::CClassInformation(struct CClassInformation const &)
??0CClassInformation@@QAE@ABU0@@Z
; public: __thiscall CClassInformation::CClassInformation(void)
??0CClassInformation@@QAE@XZ
; public: __thiscall CContextMetaData::CContextMetaData(class CMetaData *,struct IWbemContext *)
??0CContextMetaData@@QAE@PAVCMetaData@@PAUIWbemContext@@@Z
; public: __thiscall CEvalNode::CEvalNode(class CEvalNode const &)
??0CEvalNode@@QAE@ABV0@@Z
; public: __thiscall CEvalNode::CEvalNode(void)
??0CEvalNode@@QAE@XZ
; public: __thiscall CEvalTree::CEvalTree(class CEvalTree const &)
??0CEvalTree@@QAE@ABV0@@Z
; public: __thiscall CEvalTree::CEvalTree(void)
??0CEvalTree@@QAE@XZ
; public: __thiscall CMetaData::CMetaData(class CMetaData const &)
??0CMetaData@@QAE@ABV0@@Z
; public: __thiscall CMetaData::CMetaData(void)
??0CMetaData@@QAE@XZ
; public: __thiscall CObjectInfo::CObjectInfo(void)
??0CObjectInfo@@QAE@XZ
; public: __thiscall CPropertyProjectionFilter::CPropertyProjectionFilter(class CPropertyProjectionFilter const &)
??0CPropertyProjectionFilter@@QAE@ABV0@@Z
; public: __thiscall CPropertyProjectionFilter::CPropertyProjectionFilter(void)
??0CPropertyProjectionFilter@@QAE@XZ
; public: __thiscall CReuseMemoryManager::CReuseMemoryManager(unsigned int,unsigned int)
??0CReuseMemoryManager@@QAE@II@Z
; public: __thiscall CSortedArray::CSortedArray(class CSortedArray &)
??0CSortedArray@@QAE@AAV0@@Z
; public: __thiscall CSortedArray::CSortedArray(int,int)
??0CSortedArray@@QAE@HH@Z
; public: __thiscall CSortedArray::CSortedArray(unsigned int,unsigned long *)
??0CSortedArray@@QAE@IPAK@Z
; public: __thiscall CStandardMetaData::CStandardMetaData(class CStandardMetaData const &)
??0CStandardMetaData@@QAE@ABV0@@Z
; public: __thiscall CStandardMetaData::CStandardMetaData(struct IWbemServices *)
??0CStandardMetaData@@QAE@PAUIWbemServices@@@Z
; public: __thiscall CTempMemoryManager::CTempMemoryManager(void)
??0CTempMemoryManager@@QAE@XZ
; public: __thiscall CTimeKeeper::CTimeKeeper(void)
??0CTimeKeeper@@QAE@XZ
; public: __thiscall CClassInfoArray::~CClassInfoArray(void)
??1CClassInfoArray@@QAE@XZ
; public: __thiscall CClassInformation::~CClassInformation(void)
??1CClassInformation@@QAE@XZ
; public: __thiscall CContextMetaData::~CContextMetaData(void)
??1CContextMetaData@@QAE@XZ
; public: virtual __thiscall CEvalNode::~CEvalNode(void)
??1CEvalNode@@UAE@XZ
; public: __thiscall CEvalTree::~CEvalTree(void)
??1CEvalTree@@QAE@XZ
; public: virtual __thiscall CMetaData::~CMetaData(void)
??1CMetaData@@UAE@XZ
; public: __thiscall CObjectInfo::~CObjectInfo(void)
??1CObjectInfo@@QAE@XZ
; public: __thiscall CPropertyProjectionFilter::~CPropertyProjectionFilter(void)
??1CPropertyProjectionFilter@@QAE@XZ
; public: __thiscall CReuseMemoryManager::~CReuseMemoryManager(void)
??1CReuseMemoryManager@@QAE@XZ
; public: __thiscall CSortedArray::~CSortedArray(void)
??1CSortedArray@@QAE@XZ
; public: virtual __thiscall CStandardMetaData::~CStandardMetaData(void)
??1CStandardMetaData@@UAE@XZ
; public: __thiscall CTempMemoryManager::~CTempMemoryManager(void)
??1CTempMemoryManager@@QAE@XZ
; public: __thiscall CTimeKeeper::~CTimeKeeper(void)
??1CTimeKeeper@@QAE@XZ
; public: bool __thiscall CClassInfoArray::operator=(class CClassInfoArray &)
??4CClassInfoArray@@QAE_NAAV0@@Z
; public: struct CClassInformation & __thiscall CClassInformation::operator=(struct CClassInformation const &)
??4CClassInformation@@QAEAAU0@ABU0@@Z
; public: class CContextMetaData & __thiscall CContextMetaData::operator=(class CContextMetaData const &)
??4CContextMetaData@@QAEAAV0@ABV0@@Z
; public: void __thiscall CEvalTree::operator=(class CEvalTree const &)
??4CEvalTree@@QAEXABV0@@Z
; public: class CMetaData & __thiscall CMetaData::operator=(class CMetaData const &)
??4CMetaData@@QAEAAV0@ABV0@@Z
; public: class CObjectInfo & __thiscall CObjectInfo::operator=(class CObjectInfo const &)
??4CObjectInfo@@QAEAAV0@ABV0@@Z
; public: class CPropertyProjectionFilter & __thiscall CPropertyProjectionFilter::operator=(class CPropertyProjectionFilter const &)
??4CPropertyProjectionFilter@@QAEAAV0@ABV0@@Z
; public: class CQueryAnalyser & __thiscall CQueryAnalyser::operator=(class CQueryAnalyser const &)
??4CQueryAnalyser@@QAEAAV0@ABV0@@Z
; public: class CReuseMemoryManager & __thiscall CReuseMemoryManager::operator=(class CReuseMemoryManager const &)
??4CReuseMemoryManager@@QAEAAV0@ABV0@@Z
; public: void __thiscall CSortedArray::operator=(class CSortedArray const &)
??4CSortedArray@@QAEXABV0@@Z
; public: class CStandardMetaData & __thiscall CStandardMetaData::operator=(class CStandardMetaData const &)
??4CStandardMetaData@@QAEAAV0@ABV0@@Z
; public: class CTempMemoryManager & __thiscall CTempMemoryManager::operator=(class CTempMemoryManager const &)
??4CTempMemoryManager@@QAEAAV0@ABV0@@Z
; public: class CTimeKeeper & __thiscall CTimeKeeper::operator=(class CTimeKeeper const &)
??4CTimeKeeper@@QAEAAV0@ABV0@@Z
; const  CEvalNode::`vftable'
??_7CEvalNode@@6B@
; const  CMetaData::`vftable'
??_7CMetaData@@6B@
; const  CPropertyProjectionFilter::`vftable'
??_7CPropertyProjectionFilter@@6B@
; const  CStandardMetaData::`vftable'
??_7CStandardMetaData@@6B@
; public: void __thiscall CSortedArray::`default constructor closure'(void)
??_FCSortedArray@@QAEXXZ
; public: int __thiscall CSortedArray::Add(unsigned long)
?Add@CSortedArray@@QAEHK@Z
; public: bool __thiscall CClassInfoArray::AddClass(struct CClassInformation *)
?AddClass@CClassInfoArray@@QAE_NPAUCClassInformation@@@Z
; public: int __thiscall CSortedArray::AddDataFrom(class CSortedArray const &)
?AddDataFrom@CSortedArray@@QAEHABV1@@Z
; public: int __thiscall CSortedArray::AddDataFrom(unsigned long const *,unsigned int)
?AddDataFrom@CSortedArray@@QAEHPBKI@Z
; public: bool __thiscall CPropertyProjectionFilter::AddProperty(class CPropertyName const &)
?AddProperty@CPropertyProjectionFilter@@QAE_NABVCPropertyName@@@Z
; public: virtual unsigned long __stdcall CMetaData::AddRef(void)
?AddRef@CMetaData@@UAGKXZ
; public: void * __thiscall CReuseMemoryManager::Allocate(void)
?Allocate@CReuseMemoryManager@@QAEPAXXZ
; public: void * __thiscall CTempMemoryManager::Allocate(unsigned int)
?Allocate@CTempMemoryManager@@QAEPAXI@Z
; protected: static long __stdcall CQueryAnalyser::AndDefiniteClassArrays(class CClassInfoArray *,class CClassInfoArray *,class CClassInfoArray *)
?AndDefiniteClassArrays@CQueryAnalyser@@KGJPAVCClassInfoArray@@00@Z
; protected: static long __stdcall CQueryAnalyser::AndPossibleClassArrays(class CClassInfoArray *,class CClassInfoArray *,class CClassInfoArray *)
?AndPossibleClassArrays@CQueryAnalyser@@KGJPAVCClassInfoArray@@00@Z
; protected: static long __stdcall CQueryAnalyser::AndQueryExpressions(struct QL_LEVEL_1_RPN_EXPRESSION *,struct QL_LEVEL_1_RPN_EXPRESSION *,struct QL_LEVEL_1_RPN_EXPRESSION *)
?AndQueryExpressions@CQueryAnalyser@@KGJPAUQL_LEVEL_1_RPN_EXPRESSION@@00@Z
; protected: static void __stdcall CQueryAnalyser::AppendQueryExpression(struct QL_LEVEL_1_RPN_EXPRESSION *,struct QL_LEVEL_1_RPN_EXPRESSION *)
?AppendQueryExpression@CQueryAnalyser@@KGXPAUQL_LEVEL_1_RPN_EXPRESSION@@0@Z
; public: long __thiscall CEvalTree::ApplyPredicate(class CLeafPredicate *)
?ApplyPredicate@CEvalTree@@QAEJPAVCLeafPredicate@@@Z
; public: static long __stdcall CEvalTree::BuildFromToken(class CContextMetaData *,class CImplicationList &,struct QL_LEVEL_1_TOKEN &,class CEvalNode * *)
?BuildFromToken@CEvalTree@@SGJPAVCContextMetaData@@AAVCImplicationList@@AAUQL_LEVEL_1_TOKEN@@PAPAVCEvalNode@@@Z
; public: static long __stdcall CEvalTree::BuildTwoPropFromToken(class CContextMetaData *,class CImplicationList &,struct QL_LEVEL_1_TOKEN &,class CEvalNode * *)
?BuildTwoPropFromToken@CEvalTree@@SGJPAVCContextMetaData@@AAVCImplicationList@@AAUQL_LEVEL_1_TOKEN@@PAPAVCEvalNode@@@Z
; public: static long __stdcall CQueryAnalyser::CanPointToClass(struct IWbemClassObject *,unsigned short const *,unsigned short const *,class CContextMetaData *)
?CanPointToClass@CQueryAnalyser@@SGJPAUIWbemClassObject@@PBG1PAVCContextMetaData@@@Z
; public: void __thiscall CClassInfoArray::Clear(void)
?Clear@CClassInfoArray@@QAEXXZ
; public: bool __thiscall CEvalTree::Clear(void)
?Clear@CEvalTree@@QAE_NXZ
; public: void __thiscall CObjectInfo::Clear(void)
?Clear@CObjectInfo@@QAEXXZ
; public: void __thiscall CReuseMemoryManager::Clear(void)
?Clear@CReuseMemoryManager@@QAEXXZ
; public: void __thiscall CStandardMetaData::Clear(void)
?Clear@CStandardMetaData@@QAEXXZ
; public: void __thiscall CTempMemoryManager::Clear(void)
?Clear@CTempMemoryManager@@QAEXXZ
; public: static class CEvalNode * __stdcall CEvalNode::CloneNode(class CEvalNode const *)
?CloneNode@CEvalNode@@SGPAV1@PBV1@@Z
; public: static long __stdcall CEvalTree::Combine(class CEvalNode *,class CEvalNode *,int,class CContextMetaData *,class CImplicationList &,bool,bool,class CEvalNode * *)
?Combine@CEvalTree@@SGJPAVCEvalNode@@0HPAVCContextMetaData@@AAVCImplicationList@@_N3PAPAV2@@Z
; protected: static long __stdcall CEvalTree::CombineLeafWithBranch(class CValueNode *,class CBranchingNode *,int,class CContextMetaData *,class CImplicationList &,bool,bool,class CEvalNode * *)
?CombineLeafWithBranch@CEvalTree@@KGJPAVCValueNode@@PAVCBranchingNode@@HPAVCContextMetaData@@AAVCImplicationList@@_N4PAPAVCEvalNode@@@Z
; public: long __thiscall CEvalTree::CombineWith(class CEvalTree &,class CContextMetaData *,int,long)
?CombineWith@CEvalTree@@QAEJAAV1@PAVCContextMetaData@@HJ@Z
; public: static int __stdcall CEvalTree::Compare(class CEvalNode *,class CEvalNode *)
?Compare@CEvalTree@@SGHPAVCEvalNode@@0@Z
; public: int __thiscall CSortedArray::Compare(class CSortedArray &)
?Compare@CSortedArray@@QAEHAAV1@@Z
; public: static int __stdcall CQueryAnalyser::CompareRequestedToProvided(class CClassInfoArray &,class CClassInfoArray &)
?CompareRequestedToProvided@CQueryAnalyser@@SGHAAVCClassInfoArray@@0@Z
; public: int __thiscall CSortedArray::CopyDataFrom(class CSortedArray const &)
?CopyDataFrom@CSortedArray@@QAEHABV1@@Z
; public: int __thiscall CSortedArray::CopyDataFrom(unsigned long const *,unsigned int)
?CopyDataFrom@CSortedArray@@QAEHPBKI@Z
; public: unsigned int __thiscall CSortedArray::CopyTo(unsigned long *,unsigned int)
?CopyTo@CSortedArray@@QAEIPAKI@Z
; public: static long __stdcall CEvalTree::CreateFromConjunction(class CContextMetaData *,class CImplicationList &,class CConjunction *,class CEvalNode * *)
?CreateFromConjunction@CEvalTree@@SGJPAVCContextMetaData@@AAVCImplicationList@@PAVCConjunction@@PAPAVCEvalNode@@@Z
; public: long __thiscall CEvalTree::CreateFromDNF(class CContextMetaData *,class CImplicationList &,class CDNFExpression *,class CEvalNode * *)
?CreateFromDNF@CEvalTree@@QAEJPAVCContextMetaData@@AAVCImplicationList@@PAVCDNFExpression@@PAPAVCEvalNode@@@Z
; public: long __thiscall CEvalTree::CreateFromQuery(class CContextMetaData *,struct QL_LEVEL_1_RPN_EXPRESSION *,long,long)
?CreateFromQuery@CEvalTree@@QAEJPAVCContextMetaData@@PAUQL_LEVEL_1_RPN_EXPRESSION@@JJ@Z
; public: long __thiscall CEvalTree::CreateFromQuery(class CContextMetaData *,unsigned short const *,int,struct QL_LEVEL_1_TOKEN *,long,long)
?CreateFromQuery@CEvalTree@@QAEJPAVCContextMetaData@@PBGHPAUQL_LEVEL_1_TOKEN@@JJ@Z
; public: long __thiscall CEvalTree::CreateFromQuery(class CContextMetaData *,unsigned short const *,long,long)
?CreateFromQuery@CEvalTree@@QAEJPAVCContextMetaData@@PBGJJ@Z
; public: long __thiscall CEvalTree::CreateProjection(class CEvalTree &,class CContextMetaData *,class CProjectionFilter *,enum EProjectionType,bool)
?CreateProjection@CEvalTree@@QAEJAAV1@PAVCContextMetaData@@PAVCProjectionFilter@@W4EProjectionType@@_N@Z
; public: bool __thiscall CTimeKeeper::DecorateObject(struct _IWmiObject *)
?DecorateObject@CTimeKeeper@@QAE_NPAU_IWmiObject@@@Z
; public: void __thiscall CSortedArray::Empty(void)
?Empty@CSortedArray@@QAEXXZ
; public: long __thiscall CEvalTree::Evaluate(struct IWbemObjectAccess *,class CSortedArray &)
?Evaluate@CEvalTree@@QAEJPAUIWbemObjectAccess@@AAVCSortedArray@@@Z
; public: static long __stdcall CEvalTree::Evaluate(class CObjectInfo &,class CEvalNode *,class CSortedArray &)
?Evaluate@CEvalTree@@SGJAAVCObjectInfo@@PAVCEvalNode@@AAVCSortedArray@@@Z
; public: unsigned int __thiscall CSortedArray::Find(unsigned long)
?Find@CSortedArray@@QAEIK@Z
; public: void __thiscall CReuseMemoryManager::Free(void *)
?Free@CReuseMemoryManager@@QAEXPAX@Z
; public: void __thiscall CTempMemoryManager::Free(void *,unsigned int)
?Free@CTempMemoryManager@@QAEXPAXI@Z
; long __stdcall GetAccessMask(void *,struct _ACL *,unsigned long *)
?GetAccessMask@@YGJPAXPAU_ACL@@PAK@Z
; public: unsigned long * __thiscall CSortedArray::GetArrayPtr(void)
?GetArrayPtr@CSortedArray@@QAEPAKXZ
; public: unsigned long __thiscall CSortedArray::GetAt(int)
?GetAt@CSortedArray@@QAEKH@Z
; public: struct CClassInformation * __thiscall CClassInfoArray::GetClass(int)
?GetClass@CClassInfoArray@@QAEPAUCClassInformation@@H@Z
; public: long __thiscall CContextMetaData::GetClass(unsigned short const *,struct _IWmiObject * *)
?GetClass@CContextMetaData@@QAEJPBGPAPAU_IWmiObject@@@Z
; public: virtual long __stdcall CMetaData::GetClass(unsigned short const *,struct IWbemContext *,struct IWbemClassObject * *)
?GetClass@CMetaData@@UAGJPBGPAUIWbemContext@@PAPAUIWbemClassObject@@@Z
; public: virtual long __thiscall CStandardMetaData::GetClass(unsigned short const *,struct IWbemContext *,struct _IWmiObject * *)
?GetClass@CStandardMetaData@@UAEJPBGPAUIWbemContext@@PAPAU_IWmiObject@@@Z
; public: static long __stdcall CQueryAnalyser::GetDefiniteInstanceClasses(struct QL_LEVEL_1_RPN_EXPRESSION *,class CClassInfoArray * &)
?GetDefiniteInstanceClasses@CQueryAnalyser@@SGJPAUQL_LEVEL_1_RPN_EXPRESSION@@AAPAVCClassInfoArray@@@Z
; protected: static long __stdcall CQueryAnalyser::GetInstanceClasses(struct QL_LEVEL_1_TOKEN &,class CClassInfoArray &)
?GetInstanceClasses@CQueryAnalyser@@KGJAAUQL_LEVEL_1_TOKEN@@AAVCClassInfoArray@@@Z
; public: long __thiscall CObjectInfo::GetLength(void)
?GetLength@CObjectInfo@@QAEJXZ
; public: static long __stdcall CQueryAnalyser::GetLimitingQueryForInstanceClass(struct QL_LEVEL_1_RPN_EXPRESSION *,struct CClassInformation &,unsigned short * &)
?GetLimitingQueryForInstanceClass@CQueryAnalyser@@SGJPAUQL_LEVEL_1_RPN_EXPRESSION@@AAUCClassInformation@@AAPAG@Z
; public: static long __stdcall CQueryAnalyser::GetNecessaryQueryForClass(struct QL_LEVEL_1_RPN_EXPRESSION *,struct IWbemClassObject *,class CWStringArray &,struct QL_LEVEL_1_RPN_EXPRESSION * &)
?GetNecessaryQueryForClass@CQueryAnalyser@@SGJPAUQL_LEVEL_1_RPN_EXPRESSION@@PAUIWbemClassObject@@AAVCWStringArray@@AAPAU2@@Z
; public: static long __stdcall CQueryAnalyser::GetNecessaryQueryForProperty(struct QL_LEVEL_1_RPN_EXPRESSION *,class CPropertyName &,struct QL_LEVEL_1_RPN_EXPRESSION * &)
?GetNecessaryQueryForProperty@CQueryAnalyser@@SGJPAUQL_LEVEL_1_RPN_EXPRESSION@@AAVCPropertyName@@AAPAU2@@Z
; public: int __thiscall CClassInfoArray::GetNumClasses(void)
?GetNumClasses@CClassInfoArray@@QAEHXZ
; public: struct _IWmiObject * __thiscall CObjectInfo::GetObjectAt(long)
?GetObjectAt@CObjectInfo@@QAEPAU_IWmiObject@@J@Z
; public: static long __stdcall CQueryAnalyser::GetPossibleInstanceClasses(struct QL_LEVEL_1_RPN_EXPRESSION *,class CClassInfoArray * &)
?GetPossibleInstanceClasses@CQueryAnalyser@@SGJPAUQL_LEVEL_1_RPN_EXPRESSION@@AAPAVCClassInfoArray@@@Z
; protected: static long __stdcall CQueryAnalyser::GetPropertiesThatMustDiffer(struct QL_LEVEL_1_RPN_EXPRESSION *,struct CClassInformation &,class CWStringArray &)
?GetPropertiesThatMustDiffer@CQueryAnalyser@@KGJPAUQL_LEVEL_1_RPN_EXPRESSION@@AAUCClassInformation@@AAVCWStringArray@@@Z
; public: static int __stdcall CEvalNode::GetType(class CEvalNode *)
?GetType@CEvalNode@@SGHPAV1@@Z
; protected: static long __stdcall CEvalTree::InnerCombine(class CEvalNode *,class CEvalNode *,int,class CContextMetaData *,class CImplicationList &,bool,bool,class CEvalNode * *)
?InnerCombine@CEvalTree@@KGJPAVCEvalNode@@0HPAVCContextMetaData@@AAVCImplicationList@@_N3PAPAV2@@Z
; public: void __thiscall CSortedArray::Insert(unsigned long)
?Insert@CSortedArray@@QAEXK@Z
; public: static bool __stdcall CEvalNode::IsAllFalse(class CEvalNode *)
?IsAllFalse@CEvalNode@@SG_NPAV1@@Z
; public: virtual bool __thiscall CEvalNode::IsAllFalse(void)
?IsAllFalse@CEvalNode@@UAE_NXZ
; public: bool __thiscall CEvalTree::IsFalse(void)
?IsFalse@CEvalTree@@QAE_NXZ
; public: virtual bool __thiscall CPropertyProjectionFilter::IsInSet(class CEvalNode *)
?IsInSet@CPropertyProjectionFilter@@UAE_NPAVCEvalNode@@@Z
; public: static bool __stdcall CEvalNode::IsInvalid(class CEvalNode *)
?IsInvalid@CEvalNode@@SG_NPAV1@@Z
; public: virtual bool __thiscall CEvalNode::IsInvalid(void)
?IsInvalid@CEvalNode@@UAE_NXZ
; public: int __thiscall CClassInfoArray::IsLimited(void)
?IsLimited@CClassInfoArray@@QAEHXZ
; public: static long __stdcall CEvalTree::IsMergeAdvisable(class CEvalNode *,class CEvalNode *,class CImplicationList &)
?IsMergeAdvisable@CEvalTree@@SGJPAVCEvalNode@@0AAVCImplicationList@@@Z
; public: static bool __stdcall CEvalNode::IsNoop(class CEvalNode *,int)
?IsNoop@CEvalNode@@SG_NPAV1@H@Z
; public: virtual bool __thiscall CEvalNode::IsNoop(int)
?IsNoop@CEvalNode@@UAE_NH@Z
; protected: static int __stdcall CQueryAnalyser::IsPropertyInClass(class CPropertyName &,struct IWbemClassObject *,class CWStringArray &)
?IsPropertyInClass@CQueryAnalyser@@KGHAAVCPropertyName@@PAUIWbemClassObject@@AAVCWStringArray@@@Z
; protected: static int __stdcall CQueryAnalyser::IsTokenAboutClass(struct QL_LEVEL_1_TOKEN &,struct IWbemClassObject *,class CWStringArray &)
?IsTokenAboutClass@CQueryAnalyser@@KGHAAUQL_LEVEL_1_TOKEN@@PAUIWbemClassObject@@AAVCWStringArray@@@Z
; protected: static int __stdcall CQueryAnalyser::IsTokenAboutProperty(struct QL_LEVEL_1_TOKEN &,class CPropertyName &)
?IsTokenAboutProperty@CQueryAnalyser@@KGHAAUQL_LEVEL_1_TOKEN@@AAVCPropertyName@@@Z
; long __stdcall IsUserAdministrator(void *)
?IsUserAdministrator@@YGJPAX@Z
; long __stdcall IsUserInGroup(void *,void *)
?IsUserInGroup@@YGJPAX0@Z
; public: bool __thiscall CEvalTree::IsValid(void)
?IsValid@CEvalTree@@QAE_NXZ
; protected: static long __stdcall CQueryAnalyser::NegateDefiniteClassArray(class CClassInfoArray *,class CClassInfoArray *)
?NegateDefiniteClassArray@CQueryAnalyser@@KGJPAVCClassInfoArray@@0@Z
; protected: static long __stdcall CQueryAnalyser::NegatePossibleClassArray(class CClassInfoArray *,class CClassInfoArray *)
?NegatePossibleClassArray@CQueryAnalyser@@KGJPAVCClassInfoArray@@0@Z
; protected: static long __stdcall CQueryAnalyser::NegateQueryExpression(struct QL_LEVEL_1_RPN_EXPRESSION *,struct QL_LEVEL_1_RPN_EXPRESSION *)
?NegateQueryExpression@CQueryAnalyser@@KGJPAUQL_LEVEL_1_RPN_EXPRESSION@@0@Z
; public: virtual long __thiscall CEvalNode::Optimize(class CContextMetaData *,class CEvalNode * *)
?Optimize@CEvalNode@@UAEJPAVCContextMetaData@@PAPAV1@@Z
; public: long __thiscall CEvalTree::Optimize(class CContextMetaData *)
?Optimize@CEvalTree@@QAEJPAVCContextMetaData@@@Z
; protected: static long __stdcall CQueryAnalyser::OrDefiniteClassArrays(class CClassInfoArray *,class CClassInfoArray *,class CClassInfoArray *)
?OrDefiniteClassArrays@CQueryAnalyser@@KGJPAVCClassInfoArray@@00@Z
; protected: static long __stdcall CQueryAnalyser::OrPossibleClassArrays(class CClassInfoArray *,class CClassInfoArray *,class CClassInfoArray *)
?OrPossibleClassArrays@CQueryAnalyser@@KGJPAVCClassInfoArray@@00@Z
; protected: static long __stdcall CQueryAnalyser::OrQueryExpressions(struct QL_LEVEL_1_RPN_EXPRESSION *,struct QL_LEVEL_1_RPN_EXPRESSION *,struct QL_LEVEL_1_RPN_EXPRESSION *)
?OrQueryExpressions@CQueryAnalyser@@KGJPAUQL_LEVEL_1_RPN_EXPRESSION@@00@Z
; public: static void __stdcall CEvalNode::PrintOffset(struct _iobuf *,int)
?PrintOffset@CEvalNode@@SGXPAU_iobuf@@H@Z
; public: static long __stdcall CEvalTree::Project(class CContextMetaData *,class CImplicationList &,class CEvalNode *,class CProjectionFilter *,enum EProjectionType,bool,class CEvalNode * *)
?Project@CEvalTree@@SGJPAVCContextMetaData@@AAVCImplicationList@@PAVCEvalNode@@PAVCProjectionFilter@@W4EProjectionType@@_NPAPAV4@@Z
; public: virtual long __stdcall CMetaData::QueryInterface(struct _GUID const &,void * *)
?QueryInterface@CMetaData@@UAGJABU_GUID@@PAPAX@Z
; public: void __thiscall CEvalTree::Rebase(unsigned long)
?Rebase@CEvalTree@@QAEXK@Z
; public: void __thiscall CSortedArray::Rebase(unsigned long)
?Rebase@CSortedArray@@QAEXK@Z
; public: virtual unsigned long __stdcall CMetaData::Release(void)
?Release@CMetaData@@UAGKXZ
; public: bool __thiscall CSortedArray::Remove(unsigned long)
?Remove@CSortedArray@@QAE_NK@Z
; public: void __thiscall CClassInfoArray::RemoveClass(int)
?RemoveClass@CClassInfoArray@@QAEXH@Z
; public: long __thiscall CEvalTree::RemoveIndex(int)
?RemoveIndex@CEvalTree@@QAEJH@Z
; protected: unsigned int __thiscall CTempMemoryManager::RoundUp(unsigned int)
?RoundUp@CTempMemoryManager@@IAEII@Z
; public: bool __thiscall CEvalTree::SetBool(int)
?SetBool@CEvalTree@@QAE_NH@Z
; public: bool __thiscall CObjectInfo::SetLength(long)
?SetLength@CObjectInfo@@QAE_NJ@Z
; public: void __thiscall CClassInfoArray::SetLimited(int)
?SetLimited@CClassInfoArray@@QAEXH@Z
; public: void __thiscall CObjectInfo::SetObjectAt(long,struct _IWmiObject *)
?SetObjectAt@CObjectInfo@@QAEXJPAU_IWmiObject@@@Z
; public: bool __thiscall CClassInfoArray::SetOne(unsigned short const *,int)
?SetOne@CClassInfoArray@@QAE_NPBGH@Z
; public: void __thiscall CSortedArray::SetSize(int)
?SetSize@CSortedArray@@QAEXH@Z
; public: static long __stdcall CQueryAnalyser::SimplifyQueryForChild(struct QL_LEVEL_1_RPN_EXPRESSION *,unsigned short const *,struct IWbemClassObject *,class CContextMetaData *,struct QL_LEVEL_1_RPN_EXPRESSION * &)
?SimplifyQueryForChild@CQueryAnalyser@@SGJPAUQL_LEVEL_1_RPN_EXPRESSION@@PBGPAUIWbemClassObject@@PAVCContextMetaData@@AAPAU2@@Z
; protected: static int __stdcall CQueryAnalyser::SimplifyTokenForChild(struct QL_LEVEL_1_TOKEN &,unsigned short const *,struct IWbemClassObject *,class CContextMetaData *)
?SimplifyTokenForChild@CQueryAnalyser@@KGHAAUQL_LEVEL_1_TOKEN@@PBGPAUIWbemClassObject@@PAVCContextMetaData@@@Z
; public: int __thiscall CSortedArray::Size(void)const 
?Size@CSortedArray@@QBEHXZ
; public: unsigned long * __thiscall CSortedArray::UnbindPtr(void)
?UnbindPtr@CSortedArray@@QAEPAKXZ
; public: long __thiscall CEvalTree::UtilizeGuarantee(class CEvalTree &,class CContextMetaData *)
?UtilizeGuarantee@CEvalTree@@QAEJAAV1@PAVCContextMetaData@@@Z
; protected: static int __stdcall CQueryAnalyser::ValidateSQLDateTime(unsigned short const *)
?ValidateSQLDateTime@CQueryAnalyser@@KGHPBG@Z
DllCanUnloadNow
DllGetClassObject
DllRegisterServer
DllUnregisterServer
