Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Aug 9, 2013, 9:26:46 PM (11 years ago)
Author:
landauf
Message:

BaseObject now requires a Context instead of a creator (BaseObject*) in its constructor.
Namespace, Level, and Scene inherit from Context

Location:
code/branches/core6/src/libraries/core
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • code/branches/core6/src/libraries/core/BaseObject.cc

    r9590 r9629  
    5555        @brief Constructor: Registers the object in the BaseObject-list.
    5656    */
    57     BaseObject::BaseObject(BaseObject* creator) : bInitialized_(false)
     57    BaseObject::BaseObject(Context* context) : bInitialized_(false)
    5858    {
    5959        RegisterRootObject(BaseObject);
     
    7070        this->mainStateFunctor_ = 0;
    7171
     72        if (context)
     73            this->setContext(context);
     74
     75        BaseObject* creator = orxonox_cast<BaseObject*>(context);
    7276        this->setCreator(creator);
    7377        if (this->creator_)
     
    201205        {
    202206            this->networkTemplateNames_.insert(temp->getLink());
    203            
     207
    204208            Template* link;
    205209            assert(!(link = Template::getTemplate(temp->getLink())) || !link->isLink());
  • code/branches/core6/src/libraries/core/BaseObject.h

    r9607 r9629  
    6565
    6666        public:
    67             BaseObject(BaseObject* creator);
     67            BaseObject(Context* context);
    6868            virtual ~BaseObject();
    6969            virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
  • code/branches/core6/src/libraries/core/Loader.cc

    r9557 r9629  
    209209
    210210            orxout(verbose, context::loader) << "  creating root-namespace..." << endl;
    211             Namespace* rootNamespace = new Namespace(0);
     211            Namespace* rootNamespace = new Namespace(Context::getRootContext());
    212212            rootNamespace->setLoaderIndentation("    ");
    213213            rootNamespace->setFile(file);
  • code/branches/core6/src/libraries/core/Namespace.cc

    r7401 r9629  
    4040    CreateFactory(Namespace);
    4141
    42     Namespace::Namespace(BaseObject* creator) : BaseObject(creator),
     42    Namespace::Namespace(Context* context) : BaseObject(context), Context(context),
    4343      bAutogeneratedFileRootNamespace_(false),
    4444      bRoot_(false),
  • code/branches/core6/src/libraries/core/Namespace.h

    r7401 r9629  
    4040#include <string>
    4141#include "BaseObject.h"
     42#include "object/Context.h"
    4243
    4344namespace orxonox
    4445{
    45     class Namespace : public BaseObject
     46    class Namespace : public BaseObject, public Context
    4647    {
    4748        public:
    48             Namespace(BaseObject* creator);
     49            Namespace(Context* context);
    4950            virtual ~Namespace();
    5051
  • code/branches/core6/src/libraries/core/Template.cc

    r9564 r9629  
    4040    CreateFactory(Template);
    4141
    42     Template::Template(BaseObject* creator) : BaseObject(creator)
     42    Template::Template(Context* context) : BaseObject(context)
    4343    {
    4444        this->xmlelement_ = new TiXmlElement("");
  • code/branches/core6/src/libraries/core/Template.h

    r7401 r9629  
    5151    {
    5252        public:
    53             Template(BaseObject* creator);
     53            Template(Context* context);
    5454            virtual ~Template();
    5555
  • code/branches/core6/src/libraries/core/XMLPort.cc

    r9564 r9629  
    8989                        orxout(verbose, context::xml) << object->getLoaderIndentation() << "fabricating " << child->Value() << "..." << endl;
    9090
    91                         BaseObject* newObject = orxonox_cast<BaseObject*>(identifier->fabricate(object));
     91                        BaseObject* newObject = orxonox_cast<BaseObject*>(identifier->fabricate(object->getContext()));
    9292                        newObject->setLoaderIndentation(object->getLoaderIndentation() + "  ");
    9393
  • code/branches/core6/src/libraries/core/class/Identifier.cc

    r9606 r9629  
    174174        @return The new object
    175175    */
    176     OrxonoxClass* Identifier::fabricate(BaseObject* creator)
     176    OrxonoxClass* Identifier::fabricate(Context* context)
    177177    {
    178178        if (this->factory_)
    179179        {
    180             return this->factory_->fabricate(creator);
     180            return this->factory_->fabricate(context);
    181181        }
    182182        else
  • code/branches/core6/src/libraries/core/class/Identifier.h

    r9626 r9629  
    125125            inline bool hasFactory() const { return (this->factory_ != 0); }
    126126
    127             OrxonoxClass* fabricate(BaseObject* creator);
     127            OrxonoxClass* fabricate(Context* context);
    128128
    129129            /// Returns true if the class can be loaded through XML.
  • code/branches/core6/src/libraries/core/class/SubclassIdentifier.h

    r9563 r9629  
    163163
    164164            /// Creates a new object of the type of the assigned Identifier and dynamic_casts it to the minimal type given by T.
    165             T* fabricate(BaseObject* creator) const
    166             {
    167                 OrxonoxClass* newObject = this->identifier_->fabricate(creator);
     165            T* fabricate(Context* context) const
     166            {
     167                OrxonoxClass* newObject = this->identifier_->fabricate(context);
    168168
    169169                // Check if the creation was successful
  • code/branches/core6/src/libraries/core/object/ClassFactory.h

    r9602 r9629  
    5555        public:
    5656            virtual ~Factory() {};
    57             virtual OrxonoxClass* fabricate(BaseObject* creator) = 0;
     57            virtual OrxonoxClass* fabricate(Context* context) = 0;
    5858    };
    5959
     
    8282                @return The new object
    8383            */
    84             inline OrxonoxClass* fabricate(BaseObject* creator)
     84            inline OrxonoxClass* fabricate(Context* context)
    8585            {
    86                 return static_cast<OrxonoxClass*>(new T(creator));
     86                return static_cast<OrxonoxClass*>(new T(context));
    8787            }
    8888    };
  • code/branches/core6/src/libraries/core/object/Context.cc

    r9610 r9629  
    5656    /*static*/ Context* Context::getRootContext()
    5757    {
    58         static Context rootContext;
     58        static Context rootContext(NULL);
    5959        return &rootContext;
    6060    }
  • code/branches/core6/src/libraries/core/object/Context.h

    r9610 r9629  
    4848            static Context* getRootContext();
    4949
    50             Context(Context* context = NULL);
     50            Context(Context* context);
    5151            virtual ~Context();
    5252
Note: See TracChangeset for help on using the changeset viewer.