CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::ShaderCompiler::Scanner Class Referenceabstract

#include <CeresEngine/Material/ShaderCompiler/Frontend/Scanner.hpp>

Inheritance diagram for CeresEngine::ShaderCompiler::Scanner:
CeresEngine::ShaderCompiler::PreProcessorScanner CeresEngine::ShaderCompiler::SLScanner CeresEngine::ShaderCompiler::GLSLScanner CeresEngine::ShaderCompiler::HLSLScanner

Public Member Functions

 Scanner (Log *log=nullptr)
 
virtual ~Scanner ()=default
 
bool scanSource (const SourceCodePtr &source)
 
void pushTokenString (const TokenPtrString &tokenString)
 
void popTokenString ()
 
TokenPtrString::ConstIterator getTopTokenStringIterator () const
 
virtual TokenPtr next ()=0
 
TokenPtr getActiveToken () const
 
TokenPtr getPreviousToken () const
 
const SourcePositiongetPosition () const
 
SourceCodegetSource () const
 
const SourceCodePtrgetSharedSource () const
 
const StringgetComment () const
 

Protected Types

using Tokens = Token::Types
 

Protected Member Functions

TokenPtr nextToken (bool scanComments, bool scanWhiteSpaces)
 
void storeStartPos ()
 
virtual TokenPtr scanToken ()=0
 
char take (char chr)
 
char takeIt ()
 
TokenPtr make (const Token::Types &type, bool takeChr=false)
 
TokenPtr make (const Token::Types &type, String &spell, bool takeChr=false)
 
TokenPtr make (const Token::Types &type, String &spell, const SourcePosition &pos, bool takeChr=false)
 
void error (const String &msg)
 
void errorUnexpected ()
 
void errorUnexpected (char expectedChar)
 
void errorUnexpectedEos ()
 
void ignore (const UniqueFunction< bool(char) const > &pred)
 
void ignoreWhiteSpaces (bool includeNewLines=true)
 
TokenPtr scanWhiteSpaces (bool includeNewLines=true)
 
TokenPtr scanCommentLine (bool scanComments)
 
TokenPtr scanCommentBlock (bool scanComments)
 
TokenPtr scanStringLiteral ()
 
TokenPtr scanCharLiteral ()
 
TokenPtr scanNumber (bool startWithPeriod=false)
 
TokenPtr scanNumberOrDot ()
 
TokenPtr scanVarArg (String &spell)
 
bool scanDigitSequence (String &spell)
 
bool isNewLine () const
 
bool is (const char chr) const
 
char chr () const
 
unsigned char uChr () const
 

Private Member Functions

TokenPtr nextTokenScan (bool scanComments, bool scanWhiteSpaces)
 
void appendComment (const String &s)
 
void appendMultiLineComment (const String &s)
 

Private Attributes

SourceCodePtr mSource
 
char mChr = 0
 
LogmLog = nullptr
 
SourcePosition mNextStartPos
 
TokenPtr mActiveToken
 
TokenPtr mPrevToken
 
Vector< TokenPtrString::ConstIterator > mTokenStringItStack
 
String mComment
 
UInt32 mCommentStartPos = 0
 
bool mCommentFirstLine = false
 

Member Typedef Documentation

◆ Tokens

Constructor & Destructor Documentation

◆ Scanner()

CeresEngine::ShaderCompiler::Scanner::Scanner ( Log log = nullptr)

◆ ~Scanner()

virtual CeresEngine::ShaderCompiler::Scanner::~Scanner ( )
virtualdefault

Member Function Documentation

◆ appendComment()

void CeresEngine::ShaderCompiler::Scanner::appendComment ( const String s)
private

◆ appendMultiLineComment()

void CeresEngine::ShaderCompiler::Scanner::appendMultiLineComment ( const String s)
private

◆ chr()

char CeresEngine::ShaderCompiler::Scanner::chr ( ) const
inlineprotected

◆ error()

void CeresEngine::ShaderCompiler::Scanner::error ( const String msg)
protected

◆ errorUnexpected() [1/2]

void CeresEngine::ShaderCompiler::Scanner::errorUnexpected ( )
protected

◆ errorUnexpected() [2/2]

void CeresEngine::ShaderCompiler::Scanner::errorUnexpected ( char  expectedChar)
protected

◆ errorUnexpectedEos()

void CeresEngine::ShaderCompiler::Scanner::errorUnexpectedEos ( )
protected

◆ getActiveToken()

TokenPtr CeresEngine::ShaderCompiler::Scanner::getActiveToken ( ) const

◆ getComment()

const String & CeresEngine::ShaderCompiler::Scanner::getComment ( ) const
inline

◆ getPosition()

const SourcePosition & CeresEngine::ShaderCompiler::Scanner::getPosition ( ) const
inline

◆ getPreviousToken()

TokenPtr CeresEngine::ShaderCompiler::Scanner::getPreviousToken ( ) const

◆ getSharedSource()

const SourceCodePtr & CeresEngine::ShaderCompiler::Scanner::getSharedSource ( ) const
inline

◆ getSource()

SourceCode * CeresEngine::ShaderCompiler::Scanner::getSource ( ) const
inline

◆ getTopTokenStringIterator()

TokenPtrString::ConstIterator CeresEngine::ShaderCompiler::Scanner::getTopTokenStringIterator ( ) const

◆ ignore()

void CeresEngine::ShaderCompiler::Scanner::ignore ( const UniqueFunction< bool(char) const > &  pred)
protected

◆ ignoreWhiteSpaces()

void CeresEngine::ShaderCompiler::Scanner::ignoreWhiteSpaces ( bool  includeNewLines = true)
protected

◆ is()

bool CeresEngine::ShaderCompiler::Scanner::is ( const char  chr) const
inlineprotected

◆ isNewLine()

bool CeresEngine::ShaderCompiler::Scanner::isNewLine ( ) const
inlineprotected

◆ make() [1/3]

TokenPtr CeresEngine::ShaderCompiler::Scanner::make ( const Token::Types type,
bool  takeChr = false 
)
protected

◆ make() [2/3]

TokenPtr CeresEngine::ShaderCompiler::Scanner::make ( const Token::Types type,
String spell,
bool  takeChr = false 
)
protected

◆ make() [3/3]

TokenPtr CeresEngine::ShaderCompiler::Scanner::make ( const Token::Types type,
String spell,
const SourcePosition pos,
bool  takeChr = false 
)
protected

◆ next()

virtual TokenPtr CeresEngine::ShaderCompiler::Scanner::next ( )
pure virtual

◆ nextToken()

TokenPtr CeresEngine::ShaderCompiler::Scanner::nextToken ( bool  scanComments,
bool  scanWhiteSpaces 
)
protected

◆ nextTokenScan()

TokenPtr CeresEngine::ShaderCompiler::Scanner::nextTokenScan ( bool  scanComments,
bool  scanWhiteSpaces 
)
private

◆ popTokenString()

void CeresEngine::ShaderCompiler::Scanner::popTokenString ( )

◆ pushTokenString()

void CeresEngine::ShaderCompiler::Scanner::pushTokenString ( const TokenPtrString tokenString)

◆ scanCharLiteral()

TokenPtr CeresEngine::ShaderCompiler::Scanner::scanCharLiteral ( )
protected

◆ scanCommentBlock()

TokenPtr CeresEngine::ShaderCompiler::Scanner::scanCommentBlock ( bool  scanComments)
protected

◆ scanCommentLine()

TokenPtr CeresEngine::ShaderCompiler::Scanner::scanCommentLine ( bool  scanComments)
protected

◆ scanDigitSequence()

bool CeresEngine::ShaderCompiler::Scanner::scanDigitSequence ( String spell)
protected

◆ scanNumber()

TokenPtr CeresEngine::ShaderCompiler::Scanner::scanNumber ( bool  startWithPeriod = false)
protected

◆ scanNumberOrDot()

TokenPtr CeresEngine::ShaderCompiler::Scanner::scanNumberOrDot ( )
protected

◆ scanSource()

bool CeresEngine::ShaderCompiler::Scanner::scanSource ( const SourceCodePtr source)

◆ scanStringLiteral()

TokenPtr CeresEngine::ShaderCompiler::Scanner::scanStringLiteral ( )
protected

◆ scanToken()

virtual TokenPtr CeresEngine::ShaderCompiler::Scanner::scanToken ( )
protectedpure virtual

◆ scanVarArg()

TokenPtr CeresEngine::ShaderCompiler::Scanner::scanVarArg ( String spell)
protected

◆ scanWhiteSpaces()

TokenPtr CeresEngine::ShaderCompiler::Scanner::scanWhiteSpaces ( bool  includeNewLines = true)
protected

◆ storeStartPos()

void CeresEngine::ShaderCompiler::Scanner::storeStartPos ( )
protected

◆ take()

char CeresEngine::ShaderCompiler::Scanner::take ( char  chr)
protected

◆ takeIt()

char CeresEngine::ShaderCompiler::Scanner::takeIt ( )
protected

◆ uChr()

unsigned char CeresEngine::ShaderCompiler::Scanner::uChr ( ) const
inlineprotected

Member Data Documentation

◆ mActiveToken

TokenPtr CeresEngine::ShaderCompiler::Scanner::mActiveToken
private

◆ mChr

char CeresEngine::ShaderCompiler::Scanner::mChr = 0
private

◆ mComment

String CeresEngine::ShaderCompiler::Scanner::mComment
private

◆ mCommentFirstLine

bool CeresEngine::ShaderCompiler::Scanner::mCommentFirstLine = false
private

◆ mCommentStartPos

UInt32 CeresEngine::ShaderCompiler::Scanner::mCommentStartPos = 0
private

◆ mLog

Log* CeresEngine::ShaderCompiler::Scanner::mLog = nullptr
private

◆ mNextStartPos

SourcePosition CeresEngine::ShaderCompiler::Scanner::mNextStartPos
private

◆ mPrevToken

TokenPtr CeresEngine::ShaderCompiler::Scanner::mPrevToken
private

◆ mSource

SourceCodePtr CeresEngine::ShaderCompiler::Scanner::mSource
private

◆ mTokenStringItStack

Vector<TokenPtrString::ConstIterator> CeresEngine::ShaderCompiler::Scanner::mTokenStringItStack
private

The documentation for this class was generated from the following file: