#include <OgreCompositorScriptCompiler.h>

Public Member Functions | |
| CompositorScriptCompiler (void) | |
| ~CompositorScriptCompiler (void) | |
| virtual const String & | getClientBNFGrammer (void) const |
| gets BNF Grammar for Compositor script. | |
| virtual const String & | getClientGrammerName (void) const |
| get the name of the Compositor script BNF grammar. | |
| void | parseScript (DataStreamPtr &stream, const String &groupName) |
| Compile a compositor script from a data stream using a specific resource group name. | |
| bool | compile (const String &source, const String &sourceName) |
| compile the source - performs 2 passes. | |
| void * | operator new (size_t sz, const char *file, int line, const char *func) |
| operator new, with debug line info | |
| void * | operator new (size_t sz) |
| void * | operator new (size_t sz, void *ptr) |
| placement operator new | |
| void * | operator new[] (size_t sz, const char *file, int line, const char *func) |
| array operator new, with debug line info | |
| void * | operator new[] (size_t sz) |
| void | operator delete (void *ptr) |
| void | operator delete (void *ptr, const char *, int, const char *) |
| void | operator delete[] (void *ptr) |
| void | operator delete[] (void *ptr, const char *, int, const char *) |
Protected Types | |
| enum | TokenID { ID_UNKOWN = 0, ID_TARGET_WIDTH, ID_TARGET_HEIGHT, ID_TARGET_WIDTH_SCALED, ID_TARGET_HEIGHT_SCALED, ID_PF_A8R8G8B8, ID_PF_R8G8B8A8, ID_PF_R8G8B8, ID_PF_FLOAT16_R, ID_PF_FLOAT16_RGB, ID_PF_FLOAT16_RGBA, ID_PF_FLOAT32_R, ID_PF_FLOAT32_RGB, ID_PF_FLOAT32_RGBA, ID_PF_FLOAT16_GR, ID_PF_FLOAT32_GR, ID_PREVIOUS, ID_NONE, ID_RENDER_QUAD, ID_CLEAR, ID_STENCIL, ID_RENDER_SCENE, ID_CLR_COLOUR, ID_CLR_DEPTH, ID_ST_ALWAYS_FAIL, ID_ST_ALWAYS_PASS, ID_ST_LESS, ID_ST_LESS_EQUAL, ID_ST_EQUAL, ID_ST_NOT_EQUAL, ID_ST_GREATER_EQUAL, ID_ST_GREATER, ID_ST_KEEP, ID_ST_ZERO, ID_ST_REPLACE, ID_ST_INCREMENT, ID_ST_DECREMENT, ID_ST_INCREMENT_WRAP, ID_ST_DECREMENT_WRAP, ID_ST_INVERT, ID_ON, ID_OFF, ID_TRUE, ID_FALSE, ID_AUTOTOKENSTART } |
| enum | CompositorScriptSection { CSS_NONE, CSS_COMPOSITOR, CSS_TECHNIQUE, CSS_TARGET, CSS_PASS } |
| Enum to identify compositor sections. More... | |
| typedef void(CompositorScriptCompiler::* | CSC_Action )(void) |
| typedef std::map < size_t, CSC_Action > | TokenActionMap |
| typedef TokenActionMap::iterator | TokenActionIterator |
| enum | OperationType { otUNKNOWN, otRULE, otAND, otOR, otOPTIONAL, otREPEAT, otDATA, otNOT_TEST, otINSERT_TOKEN, otEND } |
| enum | SystemRuleToken { _no_token_ = SystemTokenBase, _character_, _value_, _no_space_skip_ } |
| enum | BNF_ID { BNF_UNKOWN = 0, BNF_SYNTAX, BNF_RULE, BNF_IDENTIFIER, BNF_IDENTIFIER_RIGHT, BNF_IDENTIFIER_CHARACTERS, BNF_ID_BEGIN, BNF_ID_END, BNF_CONSTANT_BEGIN, BNF_SET_RULE, BNF_EXPRESSION, BNF_AND_TERM, BNF_OR_TERM, BNF_TERM, BNF_TERM_ID, BNF_CONSTANT, BNF_OR, BNF_TERMINAL_SYMBOL, BNF_TERMINAL_START, BNF_REPEAT_EXPRESSION, BNF_REPEAT_BEGIN, BNF_REPEAT_END, BNF_SET, BNF_SET_BEGIN, BNF_SET_END, BNF_NOT_TEST, BNF_NOT_TEST_BEGIN, BNF_CONDITIONAL_TOKEN_INSERT, BNF_OPTIONAL_EXPRESSION, BNF_NOT_EXPRESSION, BNF_NOT_CHK, BNF_OPTIONAL_BEGIN, BNF_OPTIONAL_END, BNF_NO_TOKEN_START, BNF_SINGLEQUOTE, BNF_SINGLE_QUOTE_EXC, BNF_SET_END_EXC, BNF_ANY_CHARACTER, BNF_SPECIAL_CHARACTERS1, BNF_SPECIAL_CHARACTERS2, BNF_WHITE_SPACE_CHK, BNF_LETTER, BNF_LETTER_DIGIT, BNF_DIGIT, BNF_WHITE_SPACE, BNF_ALPHA_SET, BNF_NUMBER_SET, BNF_SPECIAL_CHARACTER_SET1, BNF_SPECIAL_CHARACTER_SET2, BNF_SPECIAL_CHARACTER_SET3, BNF_NOT_CHARS, BNF_AUTOTOKENSTART } |
| typedef std::vector < TokenRule > | TokenRuleContainer |
| typedef TokenRuleContainer::iterator | TokenRuleIterator |
| typedef std::vector < LexemeTokenDef > | LexemeTokenDefContainer |
| typedef LexemeTokenDefContainer::iterator | LexemeTokenDefIterator |
| typedef std::map < String, size_t > | LexemeTokenMap |
| typedef LexemeTokenMap::iterator | TokenKeyIterator |
| typedef std::vector < TokenInst > | TokenInstContainer |
| typedef TokenInstContainer::iterator | TokenInstIterator |
| typedef std::map < size_t, String > | LabelContainer |
| storage container for string labels defined in source container uses Token index as a key associated with a label | |
Protected Member Functions | |
| virtual void | executeTokenAction (const size_t tokenID) |
| Execute an Action associated with a token. | |
| virtual size_t | getAutoTokenIDStart () const |
| Get the start position of auto generated token IDs. | |
| virtual void | setupTokenDefinitions (void) |
| Associate all the lexemes used in a material script with their corresponding tokens and actions. | |
| void | addLexemeTokenAction (const String &lexeme, const size_t token, const CSC_Action action=0) |
| void | addLexemeAction (const String &lexeme, const CSC_Action action) |
| void | logParseError (const String &error) |
| void | parseOpenBrace (void) |
| void | parseCloseBrace (void) |
| void | parseCompositor (void) |
| void | parseTechnique (void) |
| void | parseTexture (void) |
| void | parseTarget (void) |
| void | parseInput (void) |
| void | parseTargetOutput (void) |
| void | parseOnlyInitial (void) |
| void | parseVisibilityMask (void) |
| void | parseLodBias (void) |
| void | parseMaterialScheme (void) |
| void | parsePass (void) |
| void | parseMaterial (void) |
| void | parseFirstRenderQueue (void) |
| void | parseLastRenderQueue (void) |
| void | parseIdentifier (void) |
| void | parseClearBuffers (void) |
| void | parseClearColourValue (void) |
| void | parseClearDepthValue (void) |
| void | parseClearStencilValue (void) |
| void | parseStencilCheck (void) |
| void | parseStencilFunc (void) |
| void | parseStencilRefVal (void) |
| void | parseStencilMask (void) |
| void | parseStencilFailOp (void) |
| void | parseStencilDepthFailOp (void) |
| void | parseStencilPassOp (void) |
| void | parseStencilTwoSided (void) |
| StencilOperation | extractStencilOp (void) |
| CompareFunction | extractCompareFunc (void) |
| bool | doPass1 () |
| perform pass 1 of compile process scans source for lexemes that can be tokenized and then performs general semantic and context verification on each lexeme before it is tokenized. | |
| bool | doPass2 () |
| performs Pass 2 of compile process which is execution of the tokens | |
| const TokenInst & | getNextToken (const size_t expectedTokenID=0) const |
| Gets the next token from the instruction que. | |
| const TokenInst & | getCurrentToken (const size_t expectedTokenID=0) const |
| Gets the current token from the instruction que. | |
| bool | testNextTokenID (const size_t expectedTokenID) const |
| If a next token instruction exist then test if its token ID matches. | |
| bool | testCurrentTokenID (const size_t expectedTokenID) const |
| If a current token instruction exist then test if its token ID matches. | |
| void | skipToken (void) const |
| skip to the next token in the pass2 queue. | |
| void | replaceToken (void) |
| go back to the previous token in the pass2 queue. | |
| float | getNextTokenValue (void) const |
| Gets the next token's associated floating point value in the instruction que that was parsed from the text source. | |
| float | getCurrentTokenValue (void) const |
| Gets the current token's associated floating point value in the instruction que that was parsed from the text source. | |
| const String & | getNextTokenLabel (void) const |
| Gets the next token's associated text label in the instruction que that was parsed from the text source. | |
| const String & | getCurrentTokenLabel (void) const |
| Gets the next token's associated text label in the instruction que that was parsed from the text source. | |
| size_t | getNextTokenID (void) const |
| Get the next token's ID value. | |
| size_t | getCurrentTokenID (void) const |
| Get the current token's ID value. | |
| const String & | getNextTokenLexeme (void) const |
| Get the next token's lexeme string. | |
| const String & | getCurrentTokenLexeme (void) const |
| Get the current token's lexeme string. | |
| size_t | getPass2TokenQueCount (void) const |
| Gets the number of tokens waiting in the instruction que that need to be processed by an token action in pass 2. | |
| size_t | getRemainingTokensForAction (void) const |
| Get the number of tokens not processed by action token. | |
| void | setPass2TokenQuePosition (size_t pos, const bool activateAction=false) |
| Manually set the Pass2 Token que position. | |
| size_t | getPass2TokenQuePosition (void) const |
| Get the current position in the Pass2 Token Que. | |
| bool | setNextActionQuePosition (size_t pos, const bool search=false) |
| Set the position of the next token action in the Pass2 Token Que. | |
| size_t | addLexemeToken (const String &lexeme, const size_t token, const bool hasAction=false, const bool caseSensitive=false) |
| Add a lexeme token association. | |
| void | setClientBNFGrammer (void) |
| Sets up the parser rules for the client based on the BNF Grammar text passed in. | |
| void | findEOL () |
| find the eol character | |
| bool | isFloatValue (float &fvalue, size_t &charsize) const |
| check to see if the text at the present position in the source is a numerical constant | |
| bool | isCharacterLabel (const size_t rulepathIDX) |
| Check if source at current position is supposed to be a user defined character label. | |
| bool | isLexemeMatch (const String &lexeme, const bool caseSensitive) const |
| check to see if the text is in the lexeme text library | |
| bool | isEndOfSource () const |
| Check if pass 1 has parsed to the end of the source. | |
| bool | positionToNextLexeme () |
| position to the next possible valid symbol | |
| bool | processRulePath (size_t rulepathIDX) |
| process input source text using rulepath to determine allowed tokens | |
| void | setActiveContexts (const uint contexts) |
| setup ActiveContexts - should be called by subclass to setup initial language contexts | |
| void | skipComments () |
| comment specifiers are hard coded | |
| void | skipEOL () |
| find end of line marker and move past it | |
| void | skipWhiteSpace () |
| skip all the white space which includes spaces and tabs | |
| bool | ValidateToken (const size_t rulepathIDX, const size_t activeRuleID) |
| check if current position in source has the lexeme text equivalent to the TokenID | |
| void | verifyTokenRuleLinks (const String &grammerName) |
| scan through all the rules and initialize token definition with index to rules for non-terminal tokens. | |
| void | checkTokenActionTrigger (void) |
| Checks the last token instruction and if it has an action then it triggers the action of the previously found token having an action. | |
| String | getBNFGrammerTextFromRulePath (size_t ruleID, const size_t level=0) |
| Get the text representation of the rule path. | |
Protected Attributes | |
| CompositorScriptContext | mScriptContext |
| TokenState * | mClientTokenState |
| TokenState * | mActiveTokenState |
| Active token que, definitions, rules currently being used by parser. | |
| size_t | mPass2TokenQuePosition |
| the location within the token instruction container where pass 2 is | |
| size_t | mPreviousActionQuePosition |
| the que position of the previous token that had an action. | |
| size_t | mNextActionQuePosition |
| the que position for the next token that has an action. | |
| const String * | mSource |
| pointer to the source to be compiled | |
| String | mSourceName |
| name of the source to be compiled | |
| size_t | mEndOfSource |
| size_t | mCurrentLine |
| size_t | mCharPos |
| current line number in source being tokenized | |
| size_t | mErrorCharPos |
| position in current line in source being tokenized | |
| std::map< size_t, float > | mConstants |
| character position in source where last error occurred | |
| LabelContainer | mLabels |
| bool | mLabelIsActive |
| flag indicates when a label is being parsed. | |
| size_t | mActiveLabelKey |
| the key of the active label being built during pass 1. | |
| String * | mActiveLabel |
| The active label that is receiving characters during pass 1. | |
| bool | mNoSpaceSkip |
| flag being true indicates that spaces are not to be skipped automatically gets set to false when mLabelIsActive goes to false | |
| bool | mNoTerminalToken |
| if flag is true then next terminal token is not added to token que if found but does effect rule path flow | |
| size_t | mInsertTokenID |
| TokenID to insert if next rule finds a terminal token if zero then no token inserted. | |
| uint | mActiveContexts |
| Active Contexts pattern used in pass 1 to determine which tokens are valid for a certain context. | |
Static Protected Attributes | |
| static TokenActionMap | mTokenActionMap |
| Map of Token value as key to an Action. | |
| static const size_t | SystemTokenBase = 1000 |
Classes | |
| struct | CompositorScriptContext |
| Struct for holding the script context while parsing. More... | |
Definition at line 42 of file OgreCompositorScriptCompiler.h.
typedef void(CompositorScriptCompiler::* Ogre::CompositorScriptCompiler::CSC_Action)(void) [protected] |
Definition at line 128 of file OgreCompositorScriptCompiler.h.
typedef std::map<size_t, CSC_Action> Ogre::CompositorScriptCompiler::TokenActionMap [protected] |
Definition at line 129 of file OgreCompositorScriptCompiler.h.
typedef TokenActionMap::iterator Ogre::CompositorScriptCompiler::TokenActionIterator [protected] |
Definition at line 130 of file OgreCompositorScriptCompiler.h.
typedef std::vector<TokenRule> Ogre::Compiler2Pass::TokenRuleContainer [protected, inherited] |
Definition at line 173 of file OgreCompiler2Pass.h.
typedef TokenRuleContainer::iterator Ogre::Compiler2Pass::TokenRuleIterator [protected, inherited] |
Definition at line 174 of file OgreCompiler2Pass.h.
typedef std::vector<LexemeTokenDef> Ogre::Compiler2Pass::LexemeTokenDefContainer [protected, inherited] |
Definition at line 227 of file OgreCompiler2Pass.h.
typedef LexemeTokenDefContainer::iterator Ogre::Compiler2Pass::LexemeTokenDefIterator [protected, inherited] |
Definition at line 228 of file OgreCompiler2Pass.h.
typedef std::map<String, size_t> Ogre::Compiler2Pass::LexemeTokenMap [protected, inherited] |
Definition at line 230 of file OgreCompiler2Pass.h.
typedef LexemeTokenMap::iterator Ogre::Compiler2Pass::TokenKeyIterator [protected, inherited] |
Definition at line 231 of file OgreCompiler2Pass.h.
typedef std::vector<TokenInst> Ogre::Compiler2Pass::TokenInstContainer [protected, inherited] |
Definition at line 245 of file OgreCompiler2Pass.h.
typedef TokenInstContainer::iterator Ogre::Compiler2Pass::TokenInstIterator [protected, inherited] |
Definition at line 246 of file OgreCompiler2Pass.h.
typedef std::map<size_t, String> Ogre::Compiler2Pass::LabelContainer [protected, inherited] |
storage container for string labels defined in source container uses Token index as a key associated with a label
Definition at line 286 of file OgreCompiler2Pass.h.
enum Ogre::CompositorScriptCompiler::TokenID [protected] |
Definition at line 72 of file OgreCompositorScriptCompiler.h.
enum Ogre::CompositorScriptCompiler::CompositorScriptSection [protected] |
Enum to identify compositor sections.
Definition at line 107 of file OgreCompositorScriptCompiler.h.
enum Ogre::Compiler2Pass::OperationType [protected, inherited] |
Definition at line 157 of file OgreCompiler2Pass.h.
enum Ogre::Compiler2Pass::SystemRuleToken [protected, inherited] |
Definition at line 177 of file OgreCompiler2Pass.h.
enum Ogre::Compiler2Pass::BNF_ID [protected, inherited] |
Definition at line 184 of file OgreCompiler2Pass.h.
| Ogre::CompositorScriptCompiler::CompositorScriptCompiler | ( | void | ) |
| Ogre::CompositorScriptCompiler::~CompositorScriptCompiler | ( | void | ) |
| virtual const String& Ogre::CompositorScriptCompiler::getClientBNFGrammer | ( | void | ) | const [virtual] |
| virtual const String& Ogre::CompositorScriptCompiler::getClientGrammerName | ( | void | ) | const [virtual] |
| void Ogre::CompositorScriptCompiler::parseScript | ( | DataStreamPtr & | stream, | |
| const String & | groupName | |||
| ) |
Compile a compositor script from a data stream using a specific resource group name.
| stream | Weak reference to a data stream which is the source of the material script | |
| groupName | The name of the resource group that resources which are parsed are to become a member of. If this group is loaded or unloaded, then the resources discovered in this script will be loaded / unloaded with it. |
Definition at line 64 of file OgreCompositorScriptCompiler.h.
References Ogre::Compiler2Pass::compile().
| virtual void Ogre::CompositorScriptCompiler::executeTokenAction | ( | const size_t | tokenID | ) | [protected, virtual] |
Execute an Action associated with a token.
Gets called when the compiler finishes tokenizing a section of the source that has been parsed.
Implements Ogre::Compiler2Pass.
| virtual size_t Ogre::CompositorScriptCompiler::getAutoTokenIDStart | ( | ) | const [protected, virtual] |
Get the start position of auto generated token IDs.
Implements Ogre::Compiler2Pass.
Definition at line 143 of file OgreCompositorScriptCompiler.h.
| virtual void Ogre::CompositorScriptCompiler::setupTokenDefinitions | ( | void | ) | [protected, virtual] |
Associate all the lexemes used in a material script with their corresponding tokens and actions.
Implements Ogre::Compiler2Pass.
| void Ogre::CompositorScriptCompiler::addLexemeTokenAction | ( | const String & | lexeme, | |
| const size_t | token, | |||
| const CSC_Action | action = 0 | |||
| ) | [protected] |
| void Ogre::CompositorScriptCompiler::addLexemeAction | ( | const String & | lexeme, | |
| const CSC_Action | action | |||
| ) | [protected] |
Definition at line 148 of file OgreCompositorScriptCompiler.h.
| void Ogre::CompositorScriptCompiler::logParseError | ( | const String & | error | ) | [protected] |
| void Ogre::CompositorScriptCompiler::parseOpenBrace | ( | void | ) | [protected] |