10 #ifndef smtk_model_EntityRefArrangementOps_h
11 #define smtk_model_EntityRefArrangementOps_h
13 #include "smtk/model/ArrangementKind.h"
29 static int addSimpleRelationship(
44 for (Arrangements::iterator arrIt = arr->begin(); arrIt != arr->end(); ++arrIt)
46 std::vector<int>::iterator it;
47 for (it = arrIt->details().begin(); it != arrIt->details().end(); ++it)
49 return T(c.
resource(), relations[*it]);
71 if (isCellEntity(entRec->entityFlags()))
73 appendAllCellHasUseRelations(c.
resource(), entRec, arr, result);
76 else if (isShellEntity(entRec->entityFlags()))
78 appendAllShellHasUseRelations(c.
resource(), entRec, arr, result);
83 if (isUseEntity(entRec->entityFlags()))
85 appendAllUseHasCellRelations(c.
resource(), entRec, arr, result);
92 appendAllSimpleRelations(c.
resource(), entRec, arr, result);
103 for (Arrangements::iterator arrIt = arr->begin(); arrIt != arr->end(); ++arrIt)
106 int relIdx, relSense;
107 if (arrIt->IndexAndSenseFromUseHasCell(relIdx, relSense) && relIdx >= 0)
109 typename T::value_type entry(resource, relations[relIdx]);
111 result.insert(result.end(), entry);
120 for (Arrangements::iterator arrIt = arr->begin(); arrIt != arr->end(); ++arrIt)
123 int relIdx, relSense;
125 if (arrIt->IndexSenseAndOrientationFromCellHasUse(relIdx, relSense, relOrient) && relIdx >= 0)
127 typename T::value_type entry(resource, relations[relIdx]);
129 result.insert(result.end(), entry);
134 static void appendAllShellHasUseRelations(
141 for (Arrangements::iterator arrIt = arr->begin(); arrIt != arr->end(); ++arrIt)
146 arrIt->IndexRangeFromShellHasUse(i0, i1);
147 for (
int i = i0; i < i1; ++i)
149 typename T::value_type entry(resource, relations[i]);
151 result.insert(result.end(), entry);
160 template<
typename T,
typename U>
169 for (Arrangements::iterator arrIt = arr->begin(); arrIt != arr->end(); ++arrIt)
174 arrIt->IndexRangeFromShellHasUse(i0, i1);
175 for (
int i = i0; i < i1; ++i)
177 typename T::value_type entry(resource, relations[i]);
178 rangeDetector.insert(i);
179 entRec->invalidateRelationByIndex(i);
182 result.insert(result.end(), entry);
193 for (Arrangements::iterator arrIt = arr->begin(); arrIt != arr->end(); ++arrIt)
195 std::vector<int>::iterator it;
196 for (it = arrIt->details().begin(); it != arrIt->details().end(); ++it)
200 typename T::value_type entry(resource, relations[*it]);
203 result.insert(result.end(), entry);
214 T EntityRef::embeddedEntities()
const
232 #endif // smtk_model_EntityRefArrangementOps_h