#define MAX_TOKEN_LENGTH 1024 #define MAXCOMPONENTS 64 #define TOKEN_IDENTIFIER 1 #define TOKEN_COMMA 2 // This no longer exists // #define TOKEN_BSLASH 3 #define TOKEN_END 4 #define TOKEN_DOMAIN 5 #define TOKEN_USER 6 #define TOKEN_GROUP 7 #define TOKEN_PRINTER 8 #define TOKEN_COMPUTER 9 #define TOKEN_SERVICE 10 #define TOKEN_ATSIGN 11 #define TOKEN_EXCLAMATION 12 #define TOKEN_COLON 13 #define TOKEN_FSLASH 14 #define TOKEN_PROVIDER 15 #define TOKEN_FILESERVICE 16 #define TOKEN_SCHEMA 17 #define TOKEN_CLASS 18 #define TOKEN_FUNCTIONALSET 19 #define TOKEN_FUNCTIONALSETALIAS 20 #define TOKEN_PROPERTY 21 #define TOKEN_SYNTAX 22 #define TOKEN_FILESHARE 23 #define TOKEN_PERIOD 24 #define TOKEN_EQUAL 25 #define TOKEN_NAMESPACE 26 #define TOKEN_TREE 27 #define TOKEN_LDAPOBJECT 28 #define TOKEN_LOCALITY 29 #define TOKEN_ORGANIZATION 30 #define TOKEN_ORGANIZATIONUNIT 31 #define TOKEN_COUNTRY 32 #define TOKEN_ROOTDSE 33 #define TOKEN_SEMICOLON 34 #define TOKEN_OPENBRACKET 40 #define TOKEN_CLOSEBRACKET 41 #define TOKEN_QUOTE 42 #define TOKEN_DOLLAR 43 #define TOKEN_NAME 44 #define TOKEN_DESC 45 #define TOKEN_OBSOLETE 46 #define TOKEN_SUP 47 #define TOKEN_EQUALITY 48 #define TOKEN_ORDERING 49 #define TOKEN_SUBSTR 50 #define TOKEN_SINGLE_VALUE 52 #define TOKEN_COLLECTIVE 53 #define TOKEN_DYNAMIC 54 #define TOKEN_NO_USER_MODIFICATION 55 #define TOKEN_USAGE 56 #define TOKEN_ABSTRACT 57 #define TOKEN_STRUCTURAL 58 #define TOKEN_AUXILIARY 59 #define TOKEN_MUST 60 #define TOKEN_MAY 61 #define TOKEN_AUX 62 #define TOKEN_NOT 63 #define TOKEN_FORM 64 #define TOKEN_OPEN_CURLY 65 #define TOKEN_CLOSE_CURLY 66 // // Token X is used for terms like X- in the schema. // These are provider specific and need to be ignored. // #define TOKEN_X 67 #define PATHTYPE_WINDOWS 1 #define PATHTYPE_X500 2 typedef struct _component { LPTSTR szComponent; LPTSTR szValue; }COMPONENT, *PCOMPONENT; typedef struct _objectinfo { LPTSTR ProviderName; LPTSTR NamespaceName; LPTSTR TreeName; LPTSTR DisplayTreeName; DWORD ObjectType; LPTSTR ObjectClass; DWORD dwServerPresent; DWORD dwPathType; DWORD NumComponents; COMPONENT ComponentArray[MAXCOMPONENTS]; COMPONENT DisplayComponentArray[MAXCOMPONENTS]; DWORD PortNumber; LPWSTR szStrBuf; LPWSTR szDisplayStrBuf; LPWSTR szStrBufPtr; LPWSTR szDisplayStrBufPtr; } OBJECTINFO, *POBJECTINFO; typedef struct _kwdlist { DWORD dwTokenId; LPTSTR Keyword; } KWDLIST, *PKWDLIST; extern KWDLIST KeywordList[]; extern DWORD gdwKeywordListSize; class FAR CLexer { public: __declspec(dllexport) CLexer(LPTSTR szBuffer); __declspec(dllexport) ~CLexer(); BOOL CLexer::IsKeyword(LPTSTR szToken, LPDWORD pdwToken); TCHAR CLexer::NextChar(); void CLexer::PushbackChar(); __declspec(dllexport) HRESULT CLexer::GetNextToken(LPTSTR szToken, LPDWORD pdwToken); HRESULT CLexer::GetNextToken(LPTSTR szToken, LPTSTR szDisplayToken, LPDWORD pdwToken); HRESULT CLexer::PushBackToken(); __declspec(dllexport) void CLexer::SetAtDisabler(BOOL bFlag); BOOL CLexer::GetAtDisabler(); __declspec(dllexport) void CLexer::SetFSlashDisabler(BOOL bFlag); BOOL CLexer::GetFSlashDisabler(); __declspec(dllexport) void CLexer::SetExclaimnationDisabler(BOOL bFlag); BOOL CLexer::GetExclaimnationDisabler(); private: LPTSTR _ptr; LPTSTR _Buffer; DWORD _dwLastTokenLength; DWORD _dwLastToken; DWORD _dwEndofString; BOOL _bAtDisabled; BOOL _bFSlashDisabled; BOOL _bExclaimDisabled; }; HRESULT ADsObject( LPWSTR pszADsPathName, POBJECTINFO pObjectInfo ); HRESULT GetNextToken( CLexer *pTokenizer, POBJECTINFO pObjectInfo, LPWSTR *ppszToken, LPWSTR *ppszDisplayToken, DWORD *pdwToken ); HRESULT GetNextToken( CLexer *pTokenizer, POBJECTINFO pObjectInfo, LPWSTR *ppszToken, DWORD *pdwToken ); HRESULT ADsObjectParse(CLexer * pTokenizer, POBJECTINFO pObjectInfo); HRESULT LDAPObject(CLexer * pTokenizer, POBJECTINFO pObjectInfo); HRESULT DsPathName(CLexer * pTokenizer, POBJECTINFO pObjectInfo); HRESULT PathName(CLexer * pTokenizer, POBJECTINFO pObjectInfo); HRESULT Component(CLexer * pTokenizer, POBJECTINFO pObjectInfo); HRESULT Type(CLexer * pTokenizer, POBJECTINFO pObjectInfo); HRESULT ProviderName(CLexer * pTokenizer, POBJECTINFO pObjectInfo); HRESULT AddTreeName(POBJECTINFO pObjectInfo, LPTSTR szToken, LPTSTR szDisplayToken); HRESULT AddPortNumber(POBJECTINFO pObjectInfo, DWORD dwPort); HRESULT SetType(POBJECTINFO pObjectInfo, DWORD dwToken); HRESULT SchemaPathName(CLexer * pTokenizer, POBJECTINFO pObjectInfo); HRESULT SchemaComponent(CLexer * pTokenizer, POBJECTINFO pObjectInfo); VOID FreeObjectInfo( POBJECTINFO pObjectInfo ); HRESULT InitObjectInfo( LPWSTR pszADsPathName, POBJECTINFO pObjectInfo ); HRESULT AddComponent( POBJECTINFO pObjectInfo, LPTSTR szComponent, LPTSTR szValue, LPTSTR szDisplayComponent, LPTSTR szDisplayValue ); HRESULT AddProviderName( POBJECTINFO pObjectInfo, LPTSTR szToken ); HRESULT AddNamespaceName( POBJECTINFO pObjectInfo, LPTSTR szToken ); HRESULT GetDisplayName( LPWSTR szName, LPWSTR *ppszDisplayName ); HRESULT GetLDAPTypeName( LPWSTR szName, LPWSTR *ppszDisplayName );