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 |