Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1999, Microsoft Corp. All rights reserved.
//
// FILE
//
// attrdef.h
//
// SYNOPSIS
//
// Declares the class AttributeDefinition.
//
// MODIFICATION HISTORY
//
// 03/01/1999 Original version.
//
///////////////////////////////////////////////////////////////////////////////
#ifndef ATTRDEF_H
#define ATTRDEF_H
#if _MSC_VER >= 1000
#pragma once
#endif
class SdoDictionary;
///////////////////////////////////////////////////////////////////////////////
//
// CLASS
//
// AttributeDefinition
//
// DESCRIPTION
//
// Encapsulates all the information about an attribute in the dictionary.
//
///////////////////////////////////////////////////////////////////////////////
class AttributeDefinition { public:
void AddRef() const throw () { InterlockedIncrement(&refCount); }
void Release() const throw ();
// Retrieve attribute information based on the ATTRIBUTEINFO enum.
HRESULT getInfo( ATTRIBUTEINFO infoId, VARIANT* pVal ) const throw ();
// Retrieve attribute information based on the SDO property ID.
HRESULT getProperty( LONG propId, VARIANT* pVal ) const throw ();
// Create a new, empty definition.
static HRESULT createInstance(AttributeDefinition** newDef) throw ();
///////
// Functions for indexing attributes with qsort/bsearch.
///////
static int __cdecl searchById( const ULONG* key, const AttributeDefinition* const* def ) throw (); static int __cdecl sortById( const AttributeDefinition* const* def1, const AttributeDefinition* const* def2 ) throw ();
static int __cdecl searchByName( PCWSTR key, const AttributeDefinition* const* def ) throw (); static int __cdecl sortByName( const AttributeDefinition* const* def1, const AttributeDefinition* const* def2 ) throw ();
static int __cdecl searchByLdapName( PCWSTR key, const AttributeDefinition* const* def ) throw (); static int __cdecl sortByLdapName( const AttributeDefinition* const* def1, const AttributeDefinition* const* def2 ) throw ();
protected: AttributeDefinition() throw (); ~AttributeDefinition() throw ();
public: /////////
// I made these public for two reasons:
// (1) I'm lazy.
// (2) The SdoDictionary class only gives out const pointers to
// AttributeDefinition's, so they will be read-only anyway.
/////////
ULONG id; // Internal attribute ID.
ULONG syntax; // Syntax.
ULONG restrictions; // ATTRIBUTERESTRICTIONS flags.
ULONG vendor; // Vendor ID -- zero if RADIUS standard.
BSTR name; // Display name.
BSTR description; // Description.
BSTR ldapName; // LDAP name (used for persisting attribute).
LPSAFEARRAY enumNames; // Array of enum names (null if not enumerable).
LPSAFEARRAY enumValues; // Array of enum values.
private: mutable LONG refCount; // Reference count.
// Not implemented.
AttributeDefinition(const AttributeDefinition&); AttributeDefinition& operator=(const AttributeDefinition&); };
#endif // ATTRDEF_H
|