X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fhla%2FRTIObjectClass.hxx;h=80101ea554c1b5dd10f1a34667c5d5cb76aeb409;hb=d4db4fcac304c44e97d8db51f94cd25117b3956d;hp=e659b983ba58898b79e3fa530a7668826d72ba3e;hpb=baf511684119e219906fa37f3e7c7f43151bb435;p=simgear.git diff --git a/simgear/hla/RTIObjectClass.hxx b/simgear/hla/RTIObjectClass.hxx index e659b983..80101ea5 100644 --- a/simgear/hla/RTIObjectClass.hxx +++ b/simgear/hla/RTIObjectClass.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2009 - 2010 Mathias Froehlich - Mathias.Froehlich@web.de +// Copyright (C) 2009 - 2012 Mathias Froehlich - Mathias.Froehlich@web.de // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public @@ -19,102 +19,44 @@ #define RTIObjectClass_hxx #include -#include #include "simgear/structure/SGReferenced.hxx" -#include "simgear/structure/SGSharedPtr.hxx" -#include "simgear/structure/SGWeakPtr.hxx" #include "RTIData.hxx" #include "HLAObjectClass.hxx" namespace simgear { +class RTIData; class RTIObjectInstance; class HLAObjectClass; class RTIObjectClass : public SGReferenced { public: - RTIObjectClass(HLAObjectClass* hlaObjectClass); + RTIObjectClass(HLAObjectClass* objectClass); virtual ~RTIObjectClass(); - virtual std::string getName() const = 0; + virtual bool resolveAttributeIndex(const std::string& name, unsigned index) = 0; virtual unsigned getNumAttributes() const = 0; - virtual unsigned getAttributeIndex(const std::string& name) const = 0; - virtual unsigned getOrCreateAttributeIndex(const std::string& name) = 0; - virtual bool publish(const std::set& indexSet) = 0; + virtual bool publish(const HLAIndexList& indexList) = 0; virtual bool unpublish() = 0; - virtual bool subscribe(const std::set& indexSet, bool) = 0; + virtual bool subscribe(const HLAIndexList& indexList, bool) = 0; virtual bool unsubscribe() = 0; // Factory to create an object instance that can be used in this current federate virtual RTIObjectInstance* registerObjectInstance(HLAObjectInstance*) = 0; + // Call back into HLAObjectClass void discoverInstance(RTIObjectInstance* objectInstance, const RTIData& tag) const; void startRegistration() const; void stopRegistration() const; - void setAttributeDataType(unsigned index, SGSharedPtr dataType) - { - if (_attributeDataVector.size() <= index) - return; - _attributeDataVector[index]._dataType = dataType; - } - const HLADataType* getAttributeDataType(unsigned index) const - { - if (_attributeDataVector.size() <= index) - return 0; - return _attributeDataVector[index]._dataType.get(); - } - - HLAUpdateType getAttributeUpdateType(unsigned index) const - { - if (_attributeDataVector.size() <= index) - return HLAUndefinedUpdate; - return _attributeDataVector[index]._updateType; - } - void setAttributeUpdateType(unsigned index, HLAUpdateType updateType) - { - if (_attributeDataVector.size() <= index) - return; - _attributeDataVector[index]._updateType = updateType; - } - - bool getAttributeSubscribed(unsigned index) const - { - if (_attributeDataVector.size() <= index) - return false; - return _attributeDataVector[index]._subscribed; - } - bool getAttributePublished(unsigned index) const - { - if (_attributeDataVector.size() <= index) - return false; - return _attributeDataVector[index]._published; - } - std::string getAttributeName(unsigned index) const - { - if (_attributeDataVector.size() <= index) - return std::string(); - return _attributeDataVector[index]._name; - } - -protected: - struct AttributeData { - AttributeData(const std::string& name) : _name(name), _subscribed(false), _published(false), _updateType(HLAUndefinedUpdate) {} - std::string _name; - SGSharedPtr _dataType; - bool _subscribed; - bool _published; - HLAUpdateType _updateType; - }; - typedef std::vector AttributeDataVector; - AttributeDataVector _attributeDataVector; - private: - SGWeakPtr _hlaObjectClass; + HLAObjectClass* _objectClass; + + friend class HLAObjectClass; }; }