OGRE  2.0
Object-Oriented Graphics Rendering Engine
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Ogre::ScriptCompiler Class Reference

This is the main class for the compiler. More...

#include <OgreScriptCompiler.h>

+ Inheritance diagram for Ogre::ScriptCompiler:
+ Collaboration diagram for Ogre::ScriptCompiler:

Classes

class  AbstractTreeBuilder
 
struct  Error
 

Public Types

enum  {
  CE_STRINGEXPECTED, CE_NUMBEREXPECTED, CE_FEWERPARAMETERSEXPECTED, CE_VARIABLEEXPECTED,
  CE_UNDEFINEDVARIABLE, CE_OBJECTNAMEEXPECTED, CE_OBJECTALLOCATIONERROR, CE_INVALIDPARAMETERS,
  CE_DUPLICATEOVERRIDE, CE_UNEXPECTEDTOKEN, CE_OBJECTBASENOTFOUND, CE_UNSUPPORTEDBYRENDERSYSTEM,
  CE_REFERENCETOANONEXISTINGOBJECT
}
 
enum  {
  ID_ON = 1, ID_OFF = 2, ID_TRUE = 1, ID_FALSE = 2,
  ID_YES = 1, ID_NO = 2
}
 
typedef list< ErrorPtr >::type ErrorList
 
typedef SharedPtr< ErrorErrorPtr
 
typedef HashMap< String, uint32IdMap
 

Public Member Functions

 ScriptCompiler ()
 
virtual ~ScriptCompiler ()
 
bool _compile (AbstractNodeListPtr nodes, const String &group, bool doImports=true, bool doObjects=true, bool doVariables=true)
 Compiles the given abstract syntax tree. More...
 
bool _fireEvent (ScriptCompilerEvent *evt, void *retval)
 Internal method for firing the handleEvent method. More...
 
AbstractNodeListPtr _generateAST (const String &str, const String &source, bool doImports=false, bool doObjects=false, bool doVariables=false)
 Generates the AST from the given string script. More...
 
void addError (uint32 code, const String &file, int line, const String &msg="")
 Adds the given error to the compiler's list of errors. More...
 
void addNameExclusion (const String &type)
 Adds a name exclusion to the map. More...
 
bool compile (const String &str, const String &source, const String &group)
 Takes in a string of script code and compiles it into resources. More...
 
bool compile (const ConcreteNodeListPtr &nodes, const String &group)
 Compiles resources from the given concrete node list. More...
 
ScriptCompilerListenergetListener ()
 Returns the currently set listener. More...
 
const StringgetResourceGroup () const
 Returns the resource group currently set for this compiler. More...
 
void operator delete (void *ptr)
 
void operator delete (void *ptr, void *)
 
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 *)
 
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info More...
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, void *ptr)
 placement operator new More...
 
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info More...
 
void * operator new[] (size_t sz)
 
void removeNameExclusion (const String &type)
 Removes a name exclusion. More...
 
void setListener (ScriptCompilerListener *listener)
 Sets the listener used by the compiler. More...
 

Static Public Member Functions

static String formatErrorCode (uint32 code)
 

Private Types

typedef map< String, String >::type Environment
 
typedef map< String,
AbstractNodeListPtr >::type 
ImportCacheMap
 
typedef multimap< String,
String >::type 
ImportRequestMap
 

Private Member Functions

AbstractNodeListPtr convertToAST (const ConcreteNodeListPtr &nodes)
 
void initWordMap ()
 This function sets up the initial values in word id map. More...
 
bool isNameExcluded (const String &cls, AbstractNode *parent)
 Returns true if the given class is name excluded. More...
 
AbstractNodeListPtr loadImportPath (const String &name)
 Loads the requested script and converts it to an AST. More...
 
AbstractNodeListPtr locateTarget (AbstractNodeList *nodes, const String &target)
 Returns the abstract nodes from the given tree which represent the target. More...
 
void overlayObject (const AbstractNodePtr &source, ObjectAbstractNode *dest)
 This function overlays the given object on the destination object following inheritance rules. More...
 
void processImports (AbstractNodeListPtr &nodes)
 This built-in function processes import nodes. More...
 
void processObjects (AbstractNodeList *nodes, const AbstractNodeListPtr &top)
 Handles object inheritance and variable expansion. More...
 
void processVariables (AbstractNodeList *nodes)
 Handles processing the variables. More...
 

Private Attributes

Environment mEnv
 
ErrorList mErrors
 
String mGroup
 
IdMap mIds
 
ImportRequestMap mImportRequests
 
ImportCacheMap mImports
 
AbstractNodeList mImportTable
 
ScriptCompilerListenermListener
 

Friends

class AbstractTreeBuilder
 

Detailed Description

This is the main class for the compiler.

It calls the parser and processes the CST into an AST and then uses translators to translate the AST into the final resources.

Definition at line 188 of file OgreScriptCompiler.h.

Member Typedef Documentation

Definition at line 281 of file OgreScriptCompiler.h.

Definition at line 202 of file OgreScriptCompiler.h.

Definition at line 284 of file OgreScriptCompiler.h.

Definition at line 286 of file OgreScriptCompiler.h.

Member Enumeration Documentation

anonymous enum
Enumerator
CE_STRINGEXPECTED 
CE_NUMBEREXPECTED 
CE_FEWERPARAMETERSEXPECTED 
CE_VARIABLEEXPECTED 
CE_UNDEFINEDVARIABLE 
CE_OBJECTNAMEEXPECTED 
CE_OBJECTALLOCATIONERROR 
CE_INVALIDPARAMETERS 
CE_DUPLICATEOVERRIDE 
CE_UNEXPECTEDTOKEN 
CE_OBJECTBASENOTFOUND 
CE_UNSUPPORTEDBYRENDERSYSTEM 
CE_REFERENCETOANONEXISTINGOBJECT 

Definition at line 205 of file OgreScriptCompiler.h.

anonymous enum
Enumerator
ID_ON 
ID_OFF 
ID_TRUE 
ID_FALSE 
ID_YES 
ID_NO 

Definition at line 313 of file OgreScriptCompiler.h.

Constructor & Destructor Documentation

Ogre::ScriptCompiler::ScriptCompiler ( )
virtual Ogre::ScriptCompiler::~ScriptCompiler ( )
inlinevirtual

Definition at line 223 of file OgreScriptCompiler.h.

Member Function Documentation

bool Ogre::ScriptCompiler::_compile ( AbstractNodeListPtr  nodes,
const String group,
bool  doImports = true,
bool  doObjects = true,
bool  doVariables = true 
)

Compiles the given abstract syntax tree.

bool Ogre::ScriptCompiler::_fireEvent ( ScriptCompilerEvent evt,
void *  retval 
)

Internal method for firing the handleEvent method.

AbstractNodeListPtr Ogre::ScriptCompiler::_generateAST ( const String str,
const String source,
bool  doImports = false,
bool  doObjects = false,
bool  doVariables = false 
)

Generates the AST from the given string script.

void Ogre::ScriptCompiler::addError ( uint32  code,
const String file,
int  line,
const String msg = "" 
)

Adds the given error to the compiler's list of errors.

void Ogre::ScriptCompiler::addNameExclusion ( const String type)

Adds a name exclusion to the map.

Name exclusions identify object types which cannot accept names. This means that excluded types will always have empty names. All values in the object header are stored as object values.

bool Ogre::ScriptCompiler::compile ( const String str,
const String source,
const String group 
)

Takes in a string of script code and compiles it into resources.

Parameters
strThe script code
sourceThe source of the script code (e.g. a script file)
groupThe resource group to place the compiled resources into
bool Ogre::ScriptCompiler::compile ( const ConcreteNodeListPtr nodes,
const String group 
)

Compiles resources from the given concrete node list.

AbstractNodeListPtr Ogre::ScriptCompiler::convertToAST ( const ConcreteNodeListPtr nodes)
private
static String Ogre::ScriptCompiler::formatErrorCode ( uint32  code)
static
ScriptCompilerListener* Ogre::ScriptCompiler::getListener ( )

Returns the currently set listener.

const String& Ogre::ScriptCompiler::getResourceGroup ( ) const

Returns the resource group currently set for this compiler.

void Ogre::ScriptCompiler::initWordMap ( )
private

This function sets up the initial values in word id map.

bool Ogre::ScriptCompiler::isNameExcluded ( const String cls,
AbstractNode parent 
)
private

Returns true if the given class is name excluded.

AbstractNodeListPtr Ogre::ScriptCompiler::loadImportPath ( const String name)
private

Loads the requested script and converts it to an AST.

AbstractNodeListPtr Ogre::ScriptCompiler::locateTarget ( AbstractNodeList nodes,
const String target 
)
private

Returns the abstract nodes from the given tree which represent the target.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr)
inlineinherited

Definition at line 96 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
void *   
)
inlineinherited

Definition at line 102 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inlineinherited

Definition at line 108 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr)
inlineinherited

Definition at line 113 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inlineinherited

Definition at line 119 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

operator new, with debug line info

Definition at line 68 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz)
inlineinherited

Definition at line 73 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
void *  ptr 
)
inlineinherited

placement operator new

Definition at line 79 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

array operator new, with debug line info

Definition at line 86 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz)
inlineinherited

Definition at line 91 of file OgreMemoryAllocatedObject.h.

void Ogre::ScriptCompiler::overlayObject ( const AbstractNodePtr source,
ObjectAbstractNode dest 
)
private

This function overlays the given object on the destination object following inheritance rules.

void Ogre::ScriptCompiler::processImports ( AbstractNodeListPtr nodes)
private

This built-in function processes import nodes.

void Ogre::ScriptCompiler::processObjects ( AbstractNodeList nodes,
const AbstractNodeListPtr top 
)
private

Handles object inheritance and variable expansion.

void Ogre::ScriptCompiler::processVariables ( AbstractNodeList nodes)
private

Handles processing the variables.

void Ogre::ScriptCompiler::removeNameExclusion ( const String type)

Removes a name exclusion.

void Ogre::ScriptCompiler::setListener ( ScriptCompilerListener listener)

Sets the listener used by the compiler.

Friends And Related Function Documentation

friend class AbstractTreeBuilder
friend

Definition at line 310 of file OgreScriptCompiler.h.

Member Data Documentation

Environment Ogre::ScriptCompiler::mEnv
private

Definition at line 282 of file OgreScriptCompiler.h.

ErrorList Ogre::ScriptCompiler::mErrors
private

Definition at line 293 of file OgreScriptCompiler.h.

String Ogre::ScriptCompiler::mGroup
private

Definition at line 277 of file OgreScriptCompiler.h.

IdMap Ogre::ScriptCompiler::mIds
private

Definition at line 279 of file OgreScriptCompiler.h.

ImportRequestMap Ogre::ScriptCompiler::mImportRequests
private

Definition at line 287 of file OgreScriptCompiler.h.

ImportCacheMap Ogre::ScriptCompiler::mImports
private

Definition at line 285 of file OgreScriptCompiler.h.

AbstractNodeList Ogre::ScriptCompiler::mImportTable
private

Definition at line 290 of file OgreScriptCompiler.h.

ScriptCompilerListener* Ogre::ScriptCompiler::mListener
private

Definition at line 296 of file OgreScriptCompiler.h.


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