Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/script_engine/script_class.h @ 8305

Last change on this file since 8305 was 8271, checked in by bensch, 18 years ago

merge

File size: 1.4 KB
RevLine 
[4838]1/*!
[8202]2 * @file script_class.h
[4838]3 * @brief Definition of ...
[3245]4*/
[1853]5
[8202]6#ifndef _SCRIPT_CLASS_H
7#define _SCRIPT_CLASS_H
[1853]8
[3543]9#include "base_object.h"
[1853]10
[8193]11#include "script.h"
12#include "lunar.h"
13
[4838]14// FORWARD DECLARATION
[3543]15
16
[8193]17/**
18 * Creates a factory to a Loadable Class.
19 * this should be used at the beginning of all the Classes that should be loadable (in the cc-file)
20 */
21#define CREATE_SCRIPTABLE_CLASS(CLASS_NAME, CLASS_ID) \
22    tScriptable<CLASS_NAME> global_##CLASS_NAME##_ScriptableClass(#CLASS_NAME, CLASS_ID)
[2036]23
[8193]24
25
[3955]26//! A class for ...
[8202]27class ScriptClass : protected BaseObject
[8193]28{
[1853]29
[8250]30  public:
31    virtual ~ScriptClass();
[1853]32
[8250]33    bool operator==(const std::string& name) { return (this->getName() == name); }
34    bool operator==(ClassID classID) { return (this->classID == classID); }
[3245]35
[8250]36    virtual void registerClass(Script* script) = 0;
37    virtual int insertObject(Script* L, BaseObject* obj, bool gc=false) = 0;
38
39  protected:
40    ScriptClass(const std::string& name, ClassID classID);
41
42  private:
43    ClassID             classID;
[1853]44};
45
[8193]46
47
48
49template <class T>
[8202]50class tScriptable : public ScriptClass
[8193]51{
[8250]52  public:
53    tScriptable(const std::string& name, ClassID classID)
54        : ScriptClass(name, classID)
55    { }
[8193]56
[8250]57    virtual void registerClass(Script* script)
58    {
59      Lunar<T>::Register(script);
60    }
61    virtual int insertObject(Script* L, BaseObject* obj, bool gc=false)
62    {
63      Lunar<T>::insertObject(L, dynamic_cast<T*>(obj), obj->getName(), gc);
64    }
[8193]65
66
[8250]67
[8193]68}
69;
70
71
[8202]72#endif /* _SCRIPT_CLASS_H */
Note: See TracBrowser for help on using the repository browser.