diff options
Diffstat (limited to 'src/binder/inc/textualidentityparser.hpp')
-rw-r--r-- | src/binder/inc/textualidentityparser.hpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/binder/inc/textualidentityparser.hpp b/src/binder/inc/textualidentityparser.hpp new file mode 100644 index 0000000000..02af033cfb --- /dev/null +++ b/src/binder/inc/textualidentityparser.hpp @@ -0,0 +1,70 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. +// ============================================================ +// +// TextualIdentityParser.hpp +// + + +// +// Defines the TextualIdentityParser class +// +// ============================================================ + +#ifndef __BINDER__TEXTUAL_IDENTITY_PARSER_HPP__ +#define __BINDER__TEXTUAL_IDENTITY_PARSER_HPP__ + +#include "bindertypes.hpp" +#include "stringlexer.hpp" + +namespace BINDER_SPACE +{ + class AssemblyVersion; + class AssemblyIdentity; + + class TextualIdentityParser : public StringLexer + { + public: + TextualIdentityParser(AssemblyIdentity *pAssemblyIdentity); + ~TextualIdentityParser(); + + virtual BOOL IsSeparatorChar(WCHAR wcChar); + virtual StringLexer::LEXEME_TYPE GetLexemeType(WCHAR wcChar); + + static HRESULT Parse(/* in */ SString &textualIdentity, + /* out */ AssemblyIdentity *pAssemblyIdentity, + /* in */ BOOL fPermitUnescapedQuotes = FALSE); + static HRESULT ToString(/* in */ AssemblyIdentity *pAssemblyIdentity, + /* in */ DWORD dwIdentityFlags, + /* out */ SString &textualIdentity); + + static BOOL ParseVersion(/* in */ SString &versionString, + /* out */ AssemblyVersion *pAssemblyVersion); + + static BOOL HexToBlob(/* in */ SString &publicKeyOrToken, + /* in */ BOOL fValidateHex, + /* in */ BOOL fIsToken, + /* out */ SBuffer &publicKeyOrTokenBLOB); + static void BlobToHex(/* in */ SBuffer &publicKeyOrTokenBLOB, + /* out */ SString &publicKeyOrToken); + + BOOL ParseString(/* in */ SString &textualString, + /* out */ SString &contentString); + + protected: + BOOL Parse(/* in */ SString &textualIdentity, + /* in */ BOOL fPermitUnescapedQuotes = FALSE); + + BOOL PopulateAssemblyIdentity(/* in */ SString &attributeString, + /* in */ SString &valueString); + + static void EscapeString(/* in */ SString &input, + /* out*/ SString &result); + + AssemblyIdentity *m_pAssemblyIdentity; + DWORD m_dwAttributesSeen; + }; +}; + +#endif |