windows-nt/Source/XPSP1/NT/net/ias/protocol/proxy/dsobj.h
2020-09-26 16:20:57 +08:00

93 lines
2.2 KiB
C++

///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000, Microsoft Corp. All rights reserved.
//
// FILE
//
// dsobj.h
//
// SYNOPSIS
//
// Declares the class DataStoreObject.
//
// MODIFICATION HISTORY
//
// 02/12/2000 Original version.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef DSOBJ_H
#define DSOBJ_H
#if _MSC_VER >= 1000
#pragma once
#endif
#include <datastore2.h>
_COM_SMARTPTR_TYPEDEF(IDataStoreObject, __uuidof(IDataStoreObject));
_COM_SMARTPTR_TYPEDEF(IDataStoreContainer, __uuidof(IDataStoreContainer));
_COM_SMARTPTR_TYPEDEF(IDataStoreProperty, __uuidof(IDataStoreProperty));
///////////////////////////////////////////////////////////////////////////////
//
// CLASS
//
// DataStoreObject
//
// DESCRIPTION
//
// Provides a read-only wrapper around IDataStoreObject and
// IDataStoreContainer.
//
///////////////////////////////////////////////////////////////////////////////
class DataStoreObject
{
public:
DataStoreObject() throw ();
DataStoreObject(IUnknown* pUnk, PCWSTR path = NULL);
~DataStoreObject() throw ();
//////////
// Methods for reading mandatory and optional properties.
//////////
void getValue(PCWSTR name, BSTR* value);
void getValue(PCWSTR name, BSTR* value, BSTR defaultValue);
void getValue(PCWSTR name, ULONG* value);
void getValue(PCWSTR name, ULONG* value, ULONG defaultValue);
void getValue(PCWSTR name, bool* value);
void getValue(PCWSTR name, bool* value, bool defaultValue);
//////////
// Methods for iterating through the children.
//////////
LONG numChildren();
bool nextChild(DataStoreObject& obj);
// Returns true if the embedded in IDataStoreObject is NULL.
bool empty() const throw ();
private:
void attach(IDataStoreObject* obj) throw ();
bool getChild(PCWSTR name, DataStoreObject& obj);
bool hasChildren();
bool getValue(
PCWSTR name,
VARTYPE vt,
VARIANT* value,
bool mandatory
);
IDataStoreObjectPtr object;
IDataStoreContainerPtr container;
IEnumVARIANTPtr children;
};
#endif // DSOBJ_H