123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- #pragma once
- #include "BeefySysLib/Common.h"
- #include "../DebugCommon.h"
- NS_BF_BEGIN
- typedef Array<String> SubstituteList;
- class DemangleBase
- {
- public:
- DbgLanguage mLanguage;
- int mCurIdx;
- String mResult;
- bool mFailed;
- String mMangledName;
- SubstituteList mSubstituteList;
- bool mInArgs;
- bool mBeefFixed;
- public:
- DemangleBase();
- bool Failed();
- void Require(bool result);
- };
- class DwDemangler : public DemangleBase
- {
- public:
- SubstituteList mTemplateList;
- bool mIsFirstName;
- int mTemplateDepth;
- bool mOmitSubstituteAdd;
- bool mCaptureTargetType;
- bool mFunctionPopSubstitute;
- bool mRawDemangle;
- public:
- bool DemangleEnd();
- bool DemangleArrayType(StringImpl& outName);
- bool DemangleBuiltinType(StringImpl& outName);
- bool DemangleFunctionType(StringImpl& outName);
- bool DemangleSourceName(StringImpl& outName);
- bool DemangleRefQualifier(StringImpl& outName);
- bool DemangleType(StringImpl& outName);
- bool DemangleNestedName(StringImpl& outName);
- bool DemangleCVQualifiers(StringImpl& outName);
- bool DemangleOperatorName(StringImpl& outName);
- bool DemangleExprPriamry(StringImpl& outName);
- bool DemangleTemplateArgPack(StringImpl& outName);
- bool DemangleTemplateArg(StringImpl& outName);
- bool DemangleTemplateArgs(StringImpl& outName);
- bool DemangleUnqualifiedName(StringImpl& outName);
- bool DemangleInternalName(StringImpl& outName);
- bool DemangleSubstitution(StringImpl& outName);
- bool DemangleTemplateParam(StringImpl& outName);
- bool DemangleUnscopedName(StringImpl& outName);
- bool DemangleClassEnumType(StringImpl& outName);
- bool DemangleLocalName(StringImpl& outName);
- bool DemangleName(StringImpl& outName, bool* outHasTemplateArgs = NULL);
- bool DemangleFunction(StringImpl& outName);
- public:
- DwDemangler();
- String Demangle(const StringImpl& mangledName);
- };
- class MsDemangler : public DemangleBase
- {
- public:
- int mCurIdx;
- public:
- int DemangleNumber();
- bool DemangleString(StringImpl& outName);
- bool DemangleTemplateName(StringImpl& outName, String* primaryName = NULL);
- bool DemangleCV(StringImpl& outName);
- bool DemangleModifiedType(StringImpl& outName, bool isPtr);
- bool DemangleType(StringImpl& outName);
- bool DemangleScopedName(StringImpl& outName, String* primaryName = NULL);
- bool DemangleName(StringImpl& outName);
- static bool IsData(const StringImpl& mangledName);
- public:
- MsDemangler();
- String Demangle(const StringImpl& mangledName);
- };
- class MsDemangleScanner : public DemangleBase
- {
- public:
- bool mIsData;
- public:
- int DemangleNumber();
- bool DemangleString();
- bool DemangleTemplateName();
- bool DemangleCV();
- bool DemangleModifiedType(bool isPtr);
- bool DemangleType();
- bool DemangleScopedName();
- bool DemangleName();
- public:
- MsDemangleScanner();
- void Process(const StringImpl& mangledName);
- };
- class BfDemangler
- {
- public:
- enum Flags
- {
- Flag_None,
- Flag_CaptureTargetType = 1,
- Flag_RawDemangle = 2,
- Flag_BeefFixed = 4
- };
- public:
- static String Demangle(const StringImpl& mangledName, DbgLanguage language, Flags flags = Flag_None);
- static bool IsData(const StringImpl& mangledName);
- };
- NS_BF_END
|