1 // Copyright (C) 2009 - 2010 Mathias Froehlich - Mathias.Froehlich@web.de
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Library General Public
5 // License as published by the Free Software Foundation; either
6 // version 2 of the License, or (at your option) any later version.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Library General Public License for more details.
13 // You should have received a copy of the GNU General Public License
14 // along with this program; if not, write to the Free Software
15 // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 #include "RTIObjectInstance.hxx"
19 #include "RTIObjectClass.hxx"
20 #include "HLAObjectInstance.hxx"
24 RTIObjectInstance::RTIObjectInstance(HLAObjectInstance* hlaObjectInstance) :
25 _hlaObjectInstance(hlaObjectInstance),
26 _pendingAttributeUpdateRequest(false)
30 RTIObjectInstance::~RTIObjectInstance()
35 RTIObjectInstance::getNumAttributes() const
37 return getObjectClass()->getNumAttributes();
41 RTIObjectInstance::getAttributeIndex(const std::string& name) const
43 return getObjectClass()->getAttributeIndex(name);
47 RTIObjectInstance::getAttributeName(unsigned index) const
49 return getObjectClass()->getAttributeName(index);
53 RTIObjectInstance::removeInstance(const RTIData& tag)
55 SGSharedPtr<HLAObjectInstance> hlaObjectInstance = _hlaObjectInstance.lock();
56 if (!hlaObjectInstance.valid())
58 hlaObjectInstance->removeInstance(tag);
62 RTIObjectInstance::reflectAttributeValues(const RTIIndexDataPairList& dataPairList, const RTIData& tag)
64 for (RTIIndexDataPairList::const_iterator i = dataPairList.begin();
65 i != dataPairList.end(); ++i) {
66 reflectAttributeValue(i->first, i->second);
69 SGSharedPtr<HLAObjectInstance> hlaObjectInstance = _hlaObjectInstance.lock();
70 if (!hlaObjectInstance.valid())
72 hlaObjectInstance->reflectAttributeValues(dataPairList, tag);
76 RTIObjectInstance::reflectAttributeValues(const RTIIndexDataPairList& dataPairList,
77 const SGTimeStamp& timeStamp, const RTIData& tag)
79 for (RTIIndexDataPairList::const_iterator i = dataPairList.begin();
80 i != dataPairList.end(); ++i) {
81 reflectAttributeValue(i->first, i->second);
84 SGSharedPtr<HLAObjectInstance> hlaObjectInstance = _hlaObjectInstance.lock();
85 if (!hlaObjectInstance.valid())
87 hlaObjectInstance->reflectAttributeValues(dataPairList, timeStamp, tag);