PersistentWorldStateSegment.h
Go to the documentation of this file.
1 /*
2 * This file is part of ArmarX.
3 *
4 * ArmarX is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 *
8 * ArmarX is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * @package MemoryX::MemoryTypes
17 * @author Thomas von der Heyde (tvh242 at hotmail dot com)
18 * @date 2014
19 * @copyright http://www.gnu.org/licenses/gpl-2.0.txt
20 * GNU General Public License
21 */
22 
23 #pragma once
24 
26 
28 #include <MemoryX/interface/core/EntityBase.h>
29 #include <MemoryX/interface/memorytypes/MemoryEntities.h>
30 #include <MemoryX/interface/memorytypes/MemorySegments.h>
31 
32 namespace memoryx
33 {
35  virtual public PersistentEntitySegment,
36  virtual public PersistentWorldStateSegmentBase
37  {
38  public:
39  PersistentWorldStateSegment(CollectionInterfacePrx entityCollection,
41  bool useMongoIds = true) :
42  PersistentEntitySegment(entityCollection, ic, useMongoIds),
43  PersistentWorldStateSegmentBase()
44  {
45  }
46 
47  ObjectInstanceBasePtr
48  getWorldInstanceById(const ::std::string& id,
49  const ::Ice::Current& = Ice::emptyCurrent) const
50  {
51  ObjectInstanceBasePtr res = ObjectInstanceBasePtr::dynamicCast(getEntityById(id));
52 
53  if (!res)
54  {
55  ARMARX_WARNING_S << "Entity with id " << id << " is not of type ObjectInstance!"
56  << std::endl;
57  }
58 
59  return res;
60  }
61 
62  ObjectInstanceBasePtr
63  getWorldInstanceByName(const ::std::string& name,
64  const ::Ice::Current& = Ice::emptyCurrent) const
65  {
66  ObjectInstanceBasePtr res = ObjectInstanceBasePtr::dynamicCast(getEntityByName(name));
67 
68  if (!res)
69  {
70  ARMARX_WARNING_S << "Entity with name " << name << " is not of type ObjectInstance!"
71  << std::endl;
72  }
73 
74  return res;
75  }
76 
77  ObjectInstanceList
78  getWorldInstancesByClass(const ::std::string& className,
79  const ::Ice::Current& c = Ice::emptyCurrent) const
80  {
81  NameList classList;
82  classList.push_back(className);
83  return getWorldInstancesByClassList(classList, c);
84  }
85 
86  ObjectInstanceList
87  getWorldInstancesByClassList(const NameList& classList,
88  const ::Ice::Current& c = Ice::emptyCurrent) const
89  {
90  ObjectInstanceList result;
91  armarx::ScopedSharedLockPtr lock(getReadLock(c));
92 
93 
94  for (EntityMap::const_iterator it = entityMap.begin(); it != entityMap.end(); ++it)
95  {
96  ObjectInstanceBasePtr inst = ObjectInstanceBasePtr::dynamicCast(it->second);
97  ClassProbabilityMap instClasses = inst->getClasses();
98 
99  for (NameList::const_iterator itCls = classList.begin(); itCls != classList.end();
100  ++itCls)
101  {
102  if (instClasses.count(*itCls))
103  {
104  result.push_back(inst);
105  break;
106  }
107  }
108  }
109 
110  return result;
111  }
112  };
113 
115 
116 } // namespace memoryx
cyberglove_with_calib_22dof.ic
ic
Definition: cyberglove_with_calib_22dof.py:22
memoryx::PersistentWorldStateSegment::PersistentWorldStateSegment
PersistentWorldStateSegment(CollectionInterfacePrx entityCollection, Ice::CommunicatorPtr ic, bool useMongoIds=true)
Definition: PersistentWorldStateSegment.h:39
memoryx::PersistentWorldStateSegment::getWorldInstancesByClassList
ObjectInstanceList getWorldInstancesByClassList(const NameList &classList, const ::Ice::Current &c=Ice::emptyCurrent) const
Definition: PersistentWorldStateSegment.h:87
memoryx::PersistentWorldStateSegment::getWorldInstanceById
ObjectInstanceBasePtr getWorldInstanceById(const ::std::string &id, const ::Ice::Current &=Ice::emptyCurrent) const
Definition: PersistentWorldStateSegment.h:48
PersistentEntitySegment.h
memoryx
VirtualRobot headers.
Definition: CommonPlacesTester.cpp:48
c
constexpr T c
Definition: UnscentedKalmanFilterTest.cpp:46
memoryx::PersistentWorldStateSegment
Definition: PersistentWorldStateSegment.h:34
memoryx::PersistentWorldStateSegment::getWorldInstancesByClass
ObjectInstanceList getWorldInstancesByClass(const ::std::string &className, const ::Ice::Current &c=Ice::emptyCurrent) const
Definition: PersistentWorldStateSegment.h:78
IceInternal::Handle<::Ice::Communicator >
armarx::ScopedSharedLockPtr
std::shared_ptr< ScopedSharedLock > ScopedSharedLockPtr
Definition: Synchronization.h:175
ARMARXCOMPONENT_IMPORT_EXPORT
#define ARMARXCOMPONENT_IMPORT_EXPORT
Definition: ImportExportComponent.h:38
memoryx::PersistentWorldStateSegment::getWorldInstanceByName
ObjectInstanceBasePtr getWorldInstanceByName(const ::std::string &name, const ::Ice::Current &=Ice::emptyCurrent) const
Definition: PersistentWorldStateSegment.h:63
ARMARX_WARNING_S
#define ARMARX_WARNING_S
Definition: Logging.h:213
memoryx::PersistentEntitySegment
The PersistentEntitySegment class is the base class for all memory segments containing memoryx::Entit...
Definition: PersistentEntitySegment.h:105
ImportExportComponent.h