windows-nt/Source/XPSP1/NT/admin/wmi/wbem/winmgmt/esscli/dumbnode.h
2020-09-26 16:20:57 +08:00

65 lines
1.8 KiB
C++

/*++
Copyright (C) 1996-1999 Microsoft Corporation
Module Name:
DUMBNODE.H
Abstract:
WBEM Dumb Node
History:
--*/
#ifndef __WMI_DUMBNODE__H_
#define __WMI_DUMBNODE__H_
#include "evaltree.h"
//
// This node is used when not enough information exists about the objects being
// tested to perform fast, strongly typed, handle-based comparisons. Instead,
// it is based on the core query engine code for evaluating a token. Having
// evaluated a token, it can take a NULL, TRUE, or FALSE branches.
//
class CDumbNode : public CBranchingNode
{
protected:
QL_LEVEL_1_TOKEN m_Token;
int EvaluateToken(IWbemPropertySource *pTestObj, QL_LEVEL_1_TOKEN& Tok);
LPWSTR NormalizePath(LPCWSTR wszObjectPath);
public:
CDumbNode(QL_LEVEL_1_TOKEN& Token);
CDumbNode(const CDumbNode& Other, BOOL bChildren = TRUE);
virtual ~CDumbNode();
HRESULT Validate(IWbemClassObject* pClass);
virtual CEvalNode* Clone() const {return new CDumbNode(*this);}
virtual CBranchingNode* CloneSelf() const
{return new CDumbNode(*this, FALSE);}
virtual HRESULT Compile(CContextMetaData* pNamespace,
CImplicationList& Implications);
virtual HRESULT CombineBranchesWith(CBranchingNode* pArg2, int nOp,
CContextMetaData* pNamespace,
CImplicationList& Implications,
bool bDeleteThis, bool bDeleteArg2,
CEvalNode** ppRes);
virtual long GetSubType();
virtual int SubCompare(CEvalNode* pOther);
virtual int ComparePrecedence(CBranchingNode* pOther);
virtual HRESULT Evaluate(CObjectInfo& ObjInfo, INTERNAL CEvalNode** ppNext);
virtual void Dump(FILE* f, int nOffset);
virtual HRESULT OptimizeSelf();
};
#endif