OpenBarnyard
 
Loading...
Searching...
No Matches
TFileLexerUTF8.h
Go to the documentation of this file.
1#pragma once
2#include "TFileLexer.h"
3#include "File/TFile.h"
4#include "Toshi/TArray.h"
5
7
8class TFileLexerUTF8 : public TObject
9{
10public:
12
13public:
14 struct Token
15 {
16 public:
17 void assign( const Token& token );
18
19 public:
23 };
24
26 {
27 public:
29 {
30 return TREINTERPRETCAST( Token*, this + 1 );
31 }
32
33 static LookaheadTokens* Allocate( TINT a_iCount = 1 )
34 {
35 return TREINTERPRETCAST(
37 TMalloc( sizeof( LookaheadTokens ) + sizeof( Token ) * a_iCount )
38 );
39 }
40
41 static void Free( Token* a_pHeadToken )
42 {
43 TFree( FromToken( a_pHeadToken ) );
44 }
45
46 static LookaheadTokens* FromToken( Token* a_pHeadToken )
47 {
48 return TREINTERPRETCAST(
50 TREINTERPRETCAST( uintptr_t, a_pHeadToken ) - sizeof( LookaheadTokens )
51 );
52 }
53
54 public:
56 };
57
58public:
60 TFileLexerUTF8( TFile* a_pInputStream, TINT a_iTokenLookaheadSize );
62
64 void SetCharacterLookaheadSize( TINT a_iLookaheadSize );
65 void SetInputStream( TFile* a_pInputStream );
66 void Define( const TCHAR* a_szDefinition );
67
68private:
69 TFile* m_pFile; // 0x04
70 TINT m_bUnk1; // 0x08
71 TINT m_iCharLookaheadSize; // 0x0C
72 TINT m_iUnk3; // 0x10
73 TINT* m_piCharLookahead; // 0x14
74 TINT m_iUnk4; // 0x18
75 TINT m_iUnk5; // 0x1C
76 TINT m_iUnk6; // 0x20
77 TINT m_iTokenLookaheadSize; // 0x24
78 TINT m_iTokenLookaheadMask; // 0x28
79 Token m_Token; // 0x2C
80 Token* m_LookaheadTokens; // 0x38
81 TINT m_iTokenLookaheadBuffered; // 0x3C
82 TINT m_iTokenLookaheadFront; // 0x40
83 TINT m_iTokenLookaheadBack; // 0x44
84 TINT m_iSomeNum; // 0x48
85 TBOOL m_bFlags[ 4 ]; // 0x4C
86 TBOOL m_bAllowPreprocessor; // 0x6C
87 TBOOL m_bUnk7; // 0x6D
88 TArray<TString8> m_Defines; // 0x70
89 TGenericEmitter m_oEmitter; // 0x80
90};
91
void * TMalloc(TSIZE a_uiSize, Toshi::TMemory::MemBlock *a_pMemBlock, const TCHAR *a_szFileName, TINT a_iLineNum)
Allocates memory from a specific memory block.
Definition TMemory.cpp:973
void TFree(void *a_pMem)
Frees previously allocated memory.
Definition TMemory.cpp:1054
Core file system interface for the Toshi engine.
#define TREINTERPRETCAST(TYPE, VALUE)
Definition Defines.h:68
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
char TCHAR
Definition Typedefs.h:20
int TINT
Definition Typedefs.h:7
bool TBOOL
Definition Typedefs.h:6
Definition TFile.h:128
void SetCharacterLookaheadSize(TINT a_iLookaheadSize)
void SetInputStream(TFile *a_pInputStream)
TDECLARE_CLASS(TFileLexerUTF8, TObject)
TBOOL ComputePreprocessorAllow()
void Define(const TCHAR *a_szDefinition)
void assign(const Token &token)
TFileLexer::TOKEN m_type
static void Free(Token *a_pHeadToken)
static LookaheadTokens * Allocate(TINT a_iCount=1)
static LookaheadTokens * FromToken(Token *a_pHeadToken)