9 #include "resourceptr.h" 
   10 #include "rtti/objectptr.h" 
   17         constexpr 
const char* 
members  = 
"Members";                     
 
   39             mMemberType(memberType),
 
   40             mMembersPropertyName(std::move(membersName)),
 
   41             mChildrenPropertyName(std::move(childrenName))              { }
 
   51         rttr::property getMembersProperty() 
const;
 
   56         rttr::property getChildrenProperty() 
const;
 
   70         std::string mMembersPropertyName;
 
   71         std::string mChildrenPropertyName;
 
   90         Group() : 
IGroup(RTTI_OF(T), group::members, group::children) { }
 
  143         std::unordered_map<std::string, T*> mMap;                   
 
  162         mMap.reserve(mMembers.size());
 
  163         for (
const auto& member : mMembers)
 
  165             mMap.emplace(std::make_pair(member->mID, member.get()));
 
  174         auto it = mMap.find(
id);
 
  175         if (it != mMap.end())
 
  185         if (
object != 
nullptr)
 
  189         for (
const auto& child : mChildren)
 
  192             if (
object != 
nullptr)
 
  209         return rtti::ObjectPtr<M>(findObjectRecursive(
id));
 
  219 #define DEFINE_GROUP_1(Type)                                                                                                                            \ 
  220     RTTI_BEGIN_CLASS(Type)                                                                                                                              \ 
  221         RTTI_PROPERTY(nap::group::members,  &Type::mMembers,    nap::rtti::EPropertyMetaData::Embedded | nap::rtti::EPropertyMetaData::ReadOnly)        \ 
  222         RTTI_PROPERTY(nap::group::children, &Type::mChildren,   nap::rtti::EPropertyMetaData::Embedded | nap::rtti::EPropertyMetaData::ReadOnly)        \ 
  226 #define DEFINE_GROUP_2(Type, ObjectType)                                                                                                                \ 
  227     RTTI_BEGIN_CLASS(Type, "Groups together a set of '"#ObjectType"' objects")                                                                          \ 
  228         RTTI_PROPERTY(nap::group::members,  &Type::mMembers,    nap::rtti::EPropertyMetaData::Embedded | nap::rtti::EPropertyMetaData::ReadOnly)        \ 
  229         RTTI_PROPERTY(nap::group::children, &Type::mChildren,   nap::rtti::EPropertyMetaData::Embedded | nap::rtti::EPropertyMetaData::ReadOnly)        \ 
  232 #define GET_DEFINE_GROUP_MACRO(_1,_2,NAME,...) NAME 
  240 #define DEFINE_GROUP(...) GET_DEFINE_GROUP_MACRO(__VA_ARGS__, DEFINE_GROUP_2, DEFINE_GROUP_1)(__VA_ARGS__)