| Index: xfa/src/fxfa/src/fm2js/xfa_lexer.h
|
| diff --git a/xfa/src/fxfa/src/fm2js/xfa_lexer.h b/xfa/src/fxfa/src/fm2js/xfa_lexer.h
|
| index 85b647e46ccf13e06f76e9733f6e1cafaa08486b..14b927d6d93b199eacd1a405091d612d92daa876 100644
|
| --- a/xfa/src/fxfa/src/fm2js/xfa_lexer.h
|
| +++ b/xfa/src/fxfa/src/fm2js/xfa_lexer.h
|
| @@ -6,6 +6,9 @@
|
|
|
| #ifndef _XFA_FM_LEXER_H
|
| #define _XFA_FM_LEXER_H
|
| +
|
| +#include <memory>
|
| +
|
| enum XFA_FM_TOKEN {
|
| TOKand,
|
| TOKlparen,
|
| @@ -76,26 +79,28 @@ enum XFA_FM_TOKEN {
|
| TOKnumber,
|
| TOKreserver
|
| };
|
| +
|
| struct XFA_FMKeyword {
|
| XFA_FM_TOKEN m_type;
|
| uint32_t m_uHash;
|
| const FX_WCHAR* m_keword;
|
| };
|
| +
|
| const FX_WCHAR* XFA_FM_KeywordToString(XFA_FM_TOKEN op);
|
| +
|
| class CXFA_FMToken {
|
| public:
|
| CXFA_FMToken();
|
| - CXFA_FMToken(FX_DWORD uLineNum);
|
| - ~CXFA_FMToken();
|
| + explicit CXFA_FMToken(FX_DWORD uLineNum);
|
| +
|
| CFX_WideStringC m_wstring;
|
| XFA_FM_TOKEN m_type;
|
| FX_DWORD m_uLinenum;
|
| - CXFA_FMToken* m_pNext;
|
| };
|
| +
|
| class CXFA_FMLexer {
|
| public:
|
| CXFA_FMLexer(const CFX_WideStringC& wsFormcalc, CXFA_FMErrorInfo* pErrorInfo);
|
| - ~CXFA_FMLexer();
|
| CXFA_FMToken* NextToken();
|
| FX_DWORD Number(CXFA_FMToken* t, const FX_WCHAR* p, const FX_WCHAR*& pEnd);
|
| FX_DWORD String(CXFA_FMToken* t, const FX_WCHAR* p, const FX_WCHAR*& pEnd);
|
| @@ -106,10 +111,8 @@ class CXFA_FMLexer {
|
| XFA_FM_TOKEN IsKeyword(const CFX_WideStringC& p);
|
| void SetCurrentLine(FX_DWORD line) { m_uCurrentLine = line; }
|
| void SetToken(CXFA_FMToken* pToken) {
|
| - if (m_pToken) {
|
| - delete m_pToken;
|
| - }
|
| - m_pToken = pToken;
|
| + if (m_pToken.get() != pToken)
|
| + m_pToken.reset(pToken);
|
| }
|
| const FX_WCHAR* SavePos() { return m_ptr; }
|
| void RestorePos(const FX_WCHAR* pPos) { m_ptr = pPos; }
|
| @@ -118,11 +121,11 @@ class CXFA_FMLexer {
|
|
|
| protected:
|
| CXFA_FMToken* Scan();
|
| - const FX_WCHAR* m_pScript;
|
| +
|
| const FX_WCHAR* m_ptr;
|
| - FX_STRSIZE m_uLength;
|
| FX_DWORD m_uCurrentLine;
|
| - CXFA_FMToken* m_pToken;
|
| + std::unique_ptr<CXFA_FMToken> m_pToken;
|
| CXFA_FMErrorInfo* m_pErrorInfo;
|
| };
|
| +
|
| #endif
|
|
|