//---------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1992 - 1995
//
//  File:  globals.cxx
//
//  Contents:
//
//  History:
//----------------------------------------------------------------------------
#include "nds.hxx"
#pragma hdrstop

WCHAR *szProviderName = L"NDS";
CRITICAL_SECTION g_ContextCritSect;
CRITICAL_SECTION  BindCacheCritSect;

KWDLIST KeywordList[MAX_KEYWORDS] =
{
    { TOKEN_DOMAIN, L"domain"},
    { TOKEN_USER, L"user"},
    { TOKEN_GROUP, L"group"},
    { TOKEN_COMPUTER, L"computer"},
    { TOKEN_PRINTER, L"printqueue"},
    { TOKEN_SERVICE, L"service"},
    { TOKEN_FILESERVICE, L"fileservice"},
    { TOKEN_SCHEMA, L"schema"},
    { TOKEN_CLASS, L"class"},
    { TOKEN_FUNCTIONALSET, L"functionalset"},
    { TOKEN_FUNCTIONALSETALIAS, L"functionalsetalias"},
    { TOKEN_PROPERTY, L"property"},
    { TOKEN_SYNTAX, L"syntax"},
    { TOKEN_FILESHARE, L"fileshare"}
};

CClassCache *  pgClassCache;

SYNTAXMAP g_aNDSSyntaxMap[] =

{
  /* 0 */
  { TEXT("Unmappable"),  TEXT("Unknown"),  VT_UNKNOWN},

  /* 1 */
  { TEXT("String"),  TEXT("NDS Distinguished Name"),  VT_BSTR},

  /* 2 */
  { TEXT("String"),  TEXT("NDS Case Exact String"),   VT_BSTR},

  /* 3 */
  { TEXT("String"),  TEXT("NDS Case Ignore String"),  VT_BSTR},

  /* 4 */
  { TEXT("String"),  TEXT("NDS Printable String"),    VT_BSTR},

  /* 5 */
  { TEXT("String"),  TEXT("NDS Numeric String"),      VT_BSTR},

  /* 6 */
  { TEXT("Case Ignore List"), TEXT("NDS Case Ignore List"),  VT_VARIANT},

  /* 7 */
  { TEXT("Boolean"),    TEXT("NDS Boolean"),           VT_BOOL},

  /* 8 */
  { TEXT("Integer"),    TEXT("NDS Integer"),           VT_I4},

  /* 9 */
  { TEXT("Octet"),  TEXT("NDS Octet String"),     VT_VARIANT},

  /* 10 */
  { TEXT("String"),      TEXT("NDS Telephone Number"),  VT_BSTR},

  /* 11 */
  { TEXT("FaxNumber"),  TEXT("NDS Facsimile Number"),  VT_DISPATCH},

  /* 12 */
  { TEXT("NetAddress"),  TEXT("NDS Network Address"),   VT_DISPATCH},

  /* 13 */
  { TEXT("Octet List"),  TEXT("NDS Octet List"),        VT_VARIANT},

  /* 14 */
  { TEXT("Email"),  TEXT("NDS Email Address"),     VT_DISPATCH},

  /* 15 */
  { TEXT("Path"),  TEXT("NDS Path"),              VT_DISPATCH},

  /* 16 */
  { TEXT("Replica Pointer"),  TEXT("Replica Pointer"),       VT_DISPATCH},

  /* 17 */
  { TEXT("ACL"),  TEXT("NDS Object ACL"),        VT_DISPATCH},

  /* 18 */
  { TEXT("Postal Address"),  TEXT("NDS Postal Address"),     VT_DISPATCH},

  /* 19 */
  { TEXT("Timestamp"),  TEXT("NDS Timestamp"),          VT_DISPATCH},

  /* 20 */
  { TEXT("Object Class"),      TEXT("NDS Class Name"),         VT_BSTR},

  /* 21 */
  { TEXT("Octet"),   TEXT("NDS Stream"),            VT_VARIANT},

  /* 22 */
  { TEXT("Integer"),      TEXT("NDS Counter"),           VT_I4},

  /* 23 */
  { TEXT("Back Link"),     TEXT("NDS Back Link"),       VT_DISPATCH},

  /* 24 */
  { TEXT("Time"),           TEXT("NDS Time"),             VT_DATE},

  /* 25 */
  { TEXT("Typed Name"),     TEXT("NDS Typed Name"),      VT_DISPATCH},

  /* 26 */
  { TEXT("Hold"),     TEXT("NDS Hold"),            VT_DISPATCH},

  /* 27 */
  { TEXT("Integer"),     TEXT("NDS Interval"),           VT_I4}
};

DWORD g_cNDSSyntaxMap = (sizeof(g_aNDSSyntaxMap)/sizeof(g_aNDSSyntaxMap[0]));

SYNTAXINFO g_aNDSSyntax[] =
{
  { TEXT("String"),  VT_BSTR},
  { TEXT("Case Ignore List"), VT_VARIANT},
  { TEXT("Boolean"),    VT_BOOL},
  { TEXT("Octet"),  VT_VARIANT},
  { TEXT("FaxNumber"),VT_DISPATCH},
  { TEXT("NetAddress"),  VT_DISPATCH},
  { TEXT("Octet List"),  VT_VARIANT},
  { TEXT("Email"),  VT_DISPATCH},
  { TEXT("Path"),  VT_DISPATCH},
  { TEXT("Replica Pointer"),  VT_DISPATCH},
  { TEXT("ACL"),  VT_DISPATCH},
  { TEXT("Postal Address"),  VT_DISPATCH},
  { TEXT("Timestamp"),  VT_DISPATCH},
  { TEXT("Object Class"),      VT_BSTR},
  { TEXT("Back Link"),     VT_DISPATCH},
  { TEXT("Time"),           VT_DATE},
  { TEXT("Typed Name"),     VT_DISPATCH},
  { TEXT("Hold"),     VT_DISPATCH},
  { TEXT("Integer"),  VT_I4}
};

DWORD g_cNDSSyntax = (sizeof(g_aNDSSyntax)/sizeof(g_aNDSSyntax[0]));

ADSTYPE g_MapNdsTypeToADsType[] = {
    ADSTYPE_INVALID,                            /* Unknown */                             
    ADSTYPE_DN_STRING,                          /* Distinguished Name */                  
    ADSTYPE_CASE_EXACT_STRING,                  /* Case Exact String */                   
    ADSTYPE_CASE_IGNORE_STRING,                 /* Case Ignore String */                  
    ADSTYPE_PRINTABLE_STRING,                   /* Printable String */                    
    ADSTYPE_NUMERIC_STRING,                     /* Numeric String */                      
    ADSTYPE_CASEIGNORE_LIST,                /* Case Ignore List */                    
    ADSTYPE_BOOLEAN,                            /* Boolean */                             
    ADSTYPE_INTEGER,                            /* Integer */                             
    ADSTYPE_OCTET_STRING,                       /* Octet String */                        
    ADSTYPE_CASE_IGNORE_STRING,                 /* Telephone Number */                    
    ADSTYPE_FAXNUMBER,                      /* Facsimile Telephone Number */          
    ADSTYPE_NETADDRESS,                     /* Net Address */                         
    ADSTYPE_OCTET_LIST,                     /* Octet List */                          
    ADSTYPE_EMAIL,                          /* EMail Address */                       
    ADSTYPE_PATH,                           /* Path */                                
    ADSTYPE_REPLICAPOINTER,                 /* Replica Pointer */                     
    ADSTYPE_PROV_SPECIFIC,                      /* Object ACL */                          
    ADSTYPE_POSTALADDRESS,                  /* Postal Address */                      
    ADSTYPE_TIMESTAMP,                      /* Timestamp */                           
    ADSTYPE_OBJECT_CLASS,                       /* Class Name */                          
    ADSTYPE_OCTET_STRING,                       /* Stream */                              
    ADSTYPE_INTEGER,                            /* Counter */                             
    ADSTYPE_BACKLINK,                       /* Back Link */                           
    ADSTYPE_UTC_TIME,                           /* Time */                                
    ADSTYPE_TYPEDNAME,                      /* Typed Name */                          
    ADSTYPE_HOLD,                           /* Hold */                                
    ADSTYPE_INTEGER                             /* Interval */                            
};                                                                                        


DWORD g_cMapNdsTypeToADsType = (sizeof(g_MapNdsTypeToADsType)/sizeof(g_MapNdsTypeToADsType[0]));