00001
00002
00003
00004
00005
00006 #ifndef __BS_EMITTERDEFINITION_H__
00007 #define __BS_EMITTERDEFINITION_H__
00008
00009 #include <vector>
00010 #include "bsPrerequisites.h"
00011 #include "bsObjectDefinition.h"
00012 #include "bsAffector.h"
00013
00014 namespace BS_NMSP
00015 {
00016
00017 class ParseTreeNode;
00018
00024 class _BSAPI EmitterDefinition : public ObjectDefinition
00025 {
00026 public:
00027
00030 struct Function
00031 {
00033 String name;
00035 int numArguments;
00037 ParseTreeNode* node;
00038 };
00039
00040 public:
00041
00045 explicit EmitterDefinition(const String& name);
00046
00053 void _setIndex(int index);
00054
00061 int _getIndex() const;
00062
00069 Function& addFunction(const String& name, ParseTreeNode* node);
00070
00076 Function& getFunction(int index);
00077
00085 int getFunctionIndex(const String& name) const;
00086
00091 int getNumFunctions() const;
00092
00093 private:
00094
00095 int mIndex;
00096
00097
00098 std::vector<Function> mFunctions;
00099
00100 };
00101
00102 }
00103
00104 #endif