OpenClonk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
C4FindObjectDef Class Reference

#include <C4FindObject.h>

Inheritance diagram for C4FindObjectDef:
[legend]
Collaboration diagram for C4FindObjectDef:
[legend]

Public Member Functions

 C4FindObjectDef (C4PropList *def)
 
int32_t Count (const C4ObjectList &Objs)
 
int32_t Count (const C4ObjectList &Objs, const C4LSectors &Sct)
 
C4ObjectFind (const C4ObjectList &Objs)
 
C4ObjectFind (const C4ObjectList &Objs, const C4LSectors &Sct)
 
C4ValueArrayFindMany (const C4ObjectList &Objs)
 
C4ValueArrayFindMany (const C4ObjectList &Objs, const C4LSectors &Sct)
 
void SetSort (C4SortObject *pToSort)
 

Static Public Member Functions

static C4FindObjectCreateByValue (const C4Value &Data, C4SortObject **ppSortObj=nullptr, const C4Object *context=nullptr, bool *has_layer_check=nullptr)
 

Protected Member Functions

virtual bool Check (C4Object *pObj)
 
virtual bool IsImpossible ()
 
virtual C4RectGetBounds ()
 
virtual bool UseShapes ()
 
virtual bool IsEnsured ()
 

Detailed Description

Definition at line 174 of file C4FindObject.h.

Constructor & Destructor Documentation

C4FindObjectDef::C4FindObjectDef ( C4PropList def)
inline

Definition at line 177 of file C4FindObject.h.

178  : def(def) { }

Member Function Documentation

bool C4FindObjectDef::Check ( C4Object pObj)
protectedvirtual

Implements C4FindObject.

Definition at line 630 of file C4FindObject.cpp.

References C4PropList::GetPrototype().

631 {
632  return pObj->GetPrototype() == def;
633 }
C4PropList * GetPrototype() const
Definition: C4PropList.h:83

Here is the call graph for this function:

int32_t C4FindObject::Count ( const C4ObjectList Objs)
inherited

Definition at line 242 of file C4FindObject.cpp.

References C4FindObject::Check(), C4FindObject::IsEnsured(), C4FindObject::IsImpossible(), and C4ObjectList::ObjectCount().

Referenced by C4FindObject::Count().

243 {
244  // Trivial cases
245  if (IsImpossible())
246  return 0;
247  if (IsEnsured())
248  return Objs.ObjectCount();
249  // Count
250  int32_t iCount = 0;
251  for (C4Object *obj : Objs)
252  if (obj->Status && Check(obj))
253  iCount++;
254  return iCount;
255 }
virtual bool IsEnsured()
Definition: C4FindObject.h:97
virtual bool IsImpossible()
Definition: C4FindObject.h:96
int ObjectCount(C4ID id=C4ID::None) const
virtual bool Check(C4Object *pObj)=0

Here is the call graph for this function:

Here is the caller graph for this function:

int32_t C4FindObject::Count ( const C4ObjectList Objs,
const C4LSectors Sct 
)
inherited

Definition at line 309 of file C4FindObject.cpp.

References C4FindObject::Check(), C4FindObject::Count(), C4LArea::FirstObjects(), C4LArea::FirstObjectShapes(), C4FindObject::GetBounds(), C4GameObjects::GetNextMarker(), C4FindObject::IsEnsured(), C4FindObject::IsImpossible(), C4LArea::Next(), C4LArea::NextObjects(), C4LArea::NextObjectShapes(), C4ObjectList::ObjectCount(), Objects, C4LSector::ObjectShapes, C4GameObjects::Sectors, and C4FindObject::UseShapes().

310 {
311  // Trivial cases
312  if (IsImpossible())
313  return 0;
314  if (IsEnsured())
315  return Objs.ObjectCount();
316  // Check bounds
317  C4Rect *pBounds = GetBounds();
318  if (!pBounds)
319  return Count(Objs);
320  else if (UseShapes())
321  {
322  // Get area
323  C4LArea Area(&::Objects.Sectors, *pBounds); C4LSector *pSct;
324  C4ObjectList *pLst = Area.FirstObjectShapes(&pSct);
325  // Check if a single-sector check is enough
326  if (!Area.Next(pSct))
327  return Count(pSct->ObjectShapes);
328  // Create marker, count over all areas
329  uint32_t iMarker = ::Objects.GetNextMarker();
330  int32_t iCount = 0;
331  for (; pLst; pLst=Area.NextObjectShapes(pLst, &pSct))
332  for (C4Object *obj : Objs)
333  if (obj->Status)
334  if (obj->Marker != iMarker)
335  {
336  obj->Marker = iMarker;
337  if (Check(obj))
338  iCount++;
339  }
340  return iCount;
341  }
342  else
343  {
344  // Count objects per area
345  C4LArea Area(&::Objects.Sectors, *pBounds); C4LSector *pSct;
346  int32_t iCount = 0;
347  for (C4ObjectList *pLst=Area.FirstObjects(&pSct); pLst; pLst=Area.NextObjects(pLst, &pSct))
348  iCount += Count(*pLst);
349  return iCount;
350  }
351 }
virtual bool UseShapes()
Definition: C4FindObject.h:95
virtual bool IsEnsured()
Definition: C4FindObject.h:97
Definition: C4Rect.h:29
virtual C4Rect * GetBounds()
Definition: C4FindObject.h:94
uint32_t GetNextMarker()
virtual bool IsImpossible()
Definition: C4FindObject.h:96
C4ObjectList ObjectShapes
Definition: C4Sector.h:49
int32_t Count(const C4ObjectList &Objs)
C4LSectors Sectors
Definition: C4GameObjects.h:42
int ObjectCount(C4ID id=C4ID::None) const
virtual bool Check(C4Object *pObj)=0
C4GameObjects Objects
Definition: C4Globals.cpp:48

Here is the call graph for this function:

C4FindObject * C4FindObject::CreateByValue ( const C4Value Data,
C4SortObject **  ppSortObj = nullptr,
const C4Object context = nullptr,
bool *  has_layer_check = nullptr 
)
staticinherited

Definition at line 34 of file C4FindObject.cpp.

References C4FindObject::C4FindObjectAnd, C4FindObject::C4FindObjectNot, C4FindObject::C4FindObjectOr, C4FO_Action, C4FO_ActionTarget, C4FO_And, C4FO_AnyContainer, C4FO_AnyLayer, C4FO_AtPoint, C4FO_AtRect, C4FO_Category, C4FO_Container, C4FO_Controller, C4FO_Distance, C4FO_Exclude, C4FO_Func, C4FO_ID, C4FO_InArray, C4FO_InRect, C4FO_Layer, C4FO_Not, C4FO_OCF, C4FO_OnLine, C4FO_Or, C4FO_Owner, C4FO_Procedure, C4FO_Property, C4SO_First, C4SO_Last, Clamp(), C4SortObject::CreateByValue(), C4Value::getArray(), C4String::GetCStr(), C4ValueArray::GetSize(), C4Object::GetX(), C4Object::GetY(), iSize, and C4FindObjectFunc::SetPar().

Referenced by CreateCriterionsFromPars().

35 {
36  // Must be an array
37  C4ValueArray *pArray = C4Value(DataVal).getArray();
38  if (!pArray) return nullptr;
39 
40  const C4ValueArray &Data = *pArray;
41  int32_t iType = Data[0].getInt();
42  if (Inside<int32_t>(iType, C4SO_First, C4SO_Last))
43  {
44  // this is not a FindObject but a sort condition!
45  // sort condition not desired here?
46  if (!ppSortObj) return nullptr;
47  // otherwise, create it!
48  *ppSortObj = C4SortObject::CreateByValue(iType, Data, context);
49  // done
50  return nullptr;
51  }
52 
53  switch (iType)
54  {
55  case C4FO_Not:
56  {
57  // Create child condition
58  C4FindObject *pCond = C4FindObject::CreateByValue(Data[1], nullptr, context, has_layer_check);
59  if (!pCond) return nullptr;
60  // wrap
61  return new C4FindObjectNot(pCond);
62  }
63 
64  case C4FO_And: case C4FO_Or:
65  {
66  // Trivial case (one condition)
67  if (Data.GetSize() == 2)
68  return C4FindObject::CreateByValue(Data[1], nullptr, context, has_layer_check);
69  // Create all childs
70  int32_t i;
71  C4FindObject **ppConds = new C4FindObject *[Data.GetSize() - 1];
72  for (i = 0; i < Data.GetSize() - 1; i++)
73  ppConds[i] = C4FindObject::CreateByValue(Data[i + 1], nullptr, context, has_layer_check);
74  // Count real entries, move them to start of list
75  int32_t iSize = 0;
76  for (i = 0; i < Data.GetSize() - 1; i++)
77  if (ppConds[i])
78  if (iSize++ != i)
79  ppConds[iSize-1] = ppConds[i];
80  // Create
81  if (iType == C4FO_And)
82  return new C4FindObjectAnd(iSize, ppConds);
83  else
84  return new C4FindObjectOr(iSize, ppConds);
85  }
86 
87  case C4FO_Exclude:
88  return new C4FindObjectExclude(Data[1].getObj());
89 
90  case C4FO_ID:
91  return new C4FindObjectDef(Data[1].getPropList());
92 
93 
94  // #973: For all criteria using coordinates: If FindObject et al. are called in object context, offset by object center
95  case C4FO_InRect:
96  {
97  int32_t x = Data[1].getInt();
98  int32_t y = Data[2].getInt();
99  int32_t w = Data[3].getInt();
100  int32_t h = Data[4].getInt();
101  if (context)
102  {
103  x += context->GetX();
104  y += context->GetY();
105  }
106  return new C4FindObjectInRect(C4Rect(x, y, w, h));
107  }
108 
109  case C4FO_AtPoint:
110  {
111  int32_t x = Data[1].getInt();
112  int32_t y = Data[2].getInt();
113  if (context)
114  {
115  x += context->GetX();
116  y += context->GetY();
117  }
118  return new C4FindObjectAtPoint(x, y);
119  }
120 
121  case C4FO_AtRect:
122  {
123  int32_t x = Data[1].getInt();
124  int32_t y = Data[2].getInt();
125  int32_t w = Data[3].getInt();
126  int32_t h = Data[4].getInt();
127  if (context)
128  {
129  x += context->GetX();
130  y += context->GetY();
131  }
132  return new C4FindObjectAtRect(x, y, w, h);
133  }
134 
135  case C4FO_OnLine:
136  {
137  int32_t x1 = Data[1].getInt();
138  int32_t y1 = Data[2].getInt();
139  int32_t x2 = Data[3].getInt();
140  int32_t y2 = Data[4].getInt();
141  if (context)
142  {
143  x1 += context->GetX();
144  x2 += context->GetX();
145  y1 += context->GetY();
146  y2 += context->GetY();
147  }
148  return new C4FindObjectOnLine(x1, y1, x2, y2);
149  }
150 
151  case C4FO_Distance:
152  {
153  int32_t x = Data[1].getInt();
154  int32_t y = Data[2].getInt();
155  if (context)
156  {
157  x += context->GetX();
158  y += context->GetY();
159  }
160  return new C4FindObjectDistance(x, y, Data[3].getInt());
161  }
162 
163  case C4FO_OCF:
164  return new C4FindObjectOCF(Data[1].getInt());
165 
166  case C4FO_Category:
167  return new C4FindObjectCategory(Data[1].getInt());
168 
169  case C4FO_Action:
170  {
171  C4String *pStr = Data[1].getStr();
172  if (!pStr) return nullptr;
173  // Don't copy, it should be safe
174  return new C4FindObjectAction(pStr->GetCStr());
175  }
176 
177  case C4FO_Func:
178  {
179  // Get function name
180  C4String *pStr = Data[1].getStr();
181  if (!pStr) return nullptr;
182  // Construct
183  C4FindObjectFunc *pFO = new C4FindObjectFunc(pStr);
184  // Add parameters
185  for (int i = 2; i < Data.GetSize(); i++)
186  pFO->SetPar(i - 2, Data[i]);
187  // Done
188  return pFO;
189  }
190 
191  case C4FO_ActionTarget:
192  {
193  int index = 0;
194  if (Data.GetSize() >= 3)
195  index = Clamp(Data[2].getInt(), 0, 1);
196  return new C4FindObjectActionTarget(Data[1].getObj(), index);
197  }
198 
199  case C4FO_Procedure:
200  return new C4FindObjectProcedure(Data[1].getStr());
201 
202  case C4FO_Container:
203  return new C4FindObjectContainer(Data[1].getObj());
204 
205  case C4FO_AnyContainer:
206  return new C4FindObjectAnyContainer();
207 
208  case C4FO_Owner:
209  return new C4FindObjectOwner(Data[1].getInt());
210 
211  case C4FO_Controller:
212  return new C4FindObjectController(Data[1].getInt());
213 
214  case C4FO_Layer:
215  // explicit layer check given. do not add implicit layer check
216  if (has_layer_check) *has_layer_check = true;
217  return new C4FindObjectLayer(Data[1].getObj());
218 
219  case C4FO_InArray:
220  return new C4FindObjectInArray(Data[1].getArray());
221 
222  case C4FO_Property:
223  {
224  // Get property name
225  C4String *pStr = Data[1].getStr();
226  if (!pStr) return nullptr;
227  // Construct
229  // Done
230  return pFO;
231  }
232 
233  case C4FO_AnyLayer:
234  // do not add implicit layer check
235  if (has_layer_check) *has_layer_check = true;
236  return nullptr;
237 
238  }
239  return nullptr;
240 }
int32_t GetY() const
Definition: C4Object.h:287
friend class C4FindObjectNot
Definition: C4FindObject.h:70
static C4FindObject * CreateByValue(const C4Value &Data, C4SortObject **ppSortObj=nullptr, const C4Object *context=nullptr, bool *has_layer_check=nullptr)
const char * GetCStr() const
Definition: C4StringTable.h:49
Definition: C4Rect.h:29
T Clamp(T bval, T lbound, T rbound)
Definition: Standard.h:46
friend class C4FindObjectAnd
Definition: C4FindObject.h:71
int32_t GetX() const
Definition: C4Object.h:286
C4ValueArray * getArray() const
Definition: C4Value.h:118
int32_t GetSize() const
Definition: C4ValueArray.h:36
void SetPar(int i, const C4Value &val)
friend class C4FindObjectOr
Definition: C4FindObject.h:72
static C4SortObject * CreateByValue(const C4Value &Data, const C4Object *context=nullptr)
int iSize
Definition: TstC4NetIO.cpp:35

Here is the call graph for this function:

Here is the caller graph for this function:

C4Object * C4FindObject::Find ( const C4ObjectList Objs)
inherited

Definition at line 257 of file C4FindObject.cpp.

References C4FindObject::Check(), C4SortObject::Compare(), and C4FindObject::IsImpossible().

Referenced by C4FindObject::Find().

258 {
259  // Trivial case
260  if (IsImpossible())
261  return nullptr;
262  // Search
263  // Double-check object status, as object might be deleted after Check()!
264  C4Object *pBestResult = nullptr;
265  for (C4Object *obj : Objs)
266  if (obj->Status)
267  if (Check(obj))
268  if (obj->Status)
269  {
270  // no sorting: Use first object found
271  if (!pSort) return obj;
272  // Sorting: Check if found object is better
273  if (!pBestResult || pSort->Compare(obj, pBestResult) > 0)
274  if (obj->Status)
275  pBestResult = obj;
276  }
277  return pBestResult;
278 }
virtual int32_t Compare(C4Object *pObj1, C4Object *pObj2)=0
virtual bool IsImpossible()
Definition: C4FindObject.h:96
virtual bool Check(C4Object *pObj)=0

Here is the call graph for this function:

Here is the caller graph for this function:

C4Object * C4FindObject::Find ( const C4ObjectList Objs,
const C4LSectors Sct 
)
inherited

Definition at line 353 of file C4FindObject.cpp.

References C4SortObject::Compare(), C4FindObject::Find(), C4LArea::FirstObjects(), C4LArea::FirstObjectShapes(), C4FindObject::GetBounds(), C4FindObject::IsImpossible(), C4LArea::NextObjects(), C4LArea::NextObjectShapes(), Objects, C4GameObjects::Sectors, C4PropList::Status, and C4FindObject::UseShapes().

354 {
355  // Trivial case
356  if (IsImpossible())
357  return nullptr;
358  C4Object *pBestResult = nullptr;
359  // Check bounds
360  C4Rect *pBounds = GetBounds();
361  if (!pBounds)
362  return Find(Objs);
363  // Traverse areas, return first matching object w/o sort or best with sort
364  else if (UseShapes())
365  {
366  C4LArea Area(&::Objects.Sectors, *pBounds); C4LSector *pSct;
367  C4Object *pObj;
368  for (C4ObjectList *pLst=Area.FirstObjectShapes(&pSct); pLst; pLst=Area.NextObjectShapes(pLst, &pSct))
369  if ((pObj = Find(*pLst)))
370  {
371  if (!pSort)
372  return pObj;
373  else if (!pBestResult || pSort->Compare(pObj, pBestResult) > 0)
374  if (pObj->Status)
375  pBestResult = pObj;
376  }
377  }
378  else
379  {
380  C4LArea Area(&::Objects.Sectors, *pBounds); C4LSector *pSct;
381  C4Object *pObj;
382  for (C4ObjectList *pLst=Area.FirstObjects(&pSct); pLst; pLst=Area.NextObjects(pLst, &pSct))
383  {
384  if ((pObj = Find(*pLst)))
385  {
386  if (!pSort)
387  return pObj;
388  else if (!pBestResult || pSort->Compare(pObj, pBestResult) > 0)
389  if (pObj->Status)
390  pBestResult = pObj;
391  }
392  }
393  }
394  return pBestResult;
395 }
virtual bool UseShapes()
Definition: C4FindObject.h:95
Definition: C4Rect.h:29
virtual C4Rect * GetBounds()
Definition: C4FindObject.h:94
virtual int32_t Compare(C4Object *pObj1, C4Object *pObj2)=0
virtual bool IsImpossible()
Definition: C4FindObject.h:96
int32_t Status
Definition: C4PropList.h:169
C4LSectors Sectors
Definition: C4GameObjects.h:42
C4Object * Find(const C4ObjectList &Objs)
C4GameObjects Objects
Definition: C4Globals.cpp:48

Here is the call graph for this function:

C4ValueArray * C4FindObject::FindMany ( const C4ObjectList Objs)
inherited

Definition at line 281 of file C4FindObject.cpp.

References C4VObj(), C4FindObject::Check(), C4ValueArray::GetSize(), C4FindObject::IsImpossible(), iSize, C4ValueArray::SetSize(), and C4SortObject::SortObjects().

Referenced by C4EditCursor::DoContextMenu(), C4FindObject::FindMany(), and C4Landscape::P::PrepareFreeShape().

282 {
283  // Trivial case
284  if (IsImpossible())
285  return new C4ValueArray();
286  // Set up array
287  C4ValueArray *pArray = new C4ValueArray(32);
288  int32_t iSize = 0;
289  // Search
290  for (C4Object *obj : Objs)
291  if (obj->Status)
292  if (Check(obj))
293  {
294  // Grow the array, if neccessary
295  if (iSize >= pArray->GetSize())
296  pArray->SetSize(iSize * 2);
297  // Add object
298  (*pArray)[iSize++] = C4VObj(obj);
299  }
300  // Shrink array
301  pArray->SetSize(iSize);
302  // Recheck object status (may shrink array again)
303  CheckObjectStatus(pArray);
304  // Apply sorting
305  if (pSort) pSort->SortObjects(pArray);
306  return pArray;
307 }
void SortObjects(C4ValueArray *pArray)
C4Value C4VObj(C4Object *pObj)
Definition: C4Value.cpp:90
void SetSize(int32_t inSize)
virtual bool IsImpossible()
Definition: C4FindObject.h:96
int32_t GetSize() const
Definition: C4ValueArray.h:36
virtual bool Check(C4Object *pObj)=0
int iSize
Definition: TstC4NetIO.cpp:35

Here is the call graph for this function:

Here is the caller graph for this function:

C4ValueArray * C4FindObject::FindMany ( const C4ObjectList Objs,
const C4LSectors Sct 
)
inherited

Definition at line 398 of file C4FindObject.cpp.

References C4VObj(), C4FindObject::Check(), C4FindObject::FindMany(), C4LArea::FirstObjects(), C4LArea::FirstObjectShapes(), C4FindObject::GetBounds(), C4GameObjects::GetNextMarker(), C4ValueArray::GetSize(), C4FindObject::IsImpossible(), iSize, C4LArea::Next(), C4LArea::NextObjects(), C4LArea::NextObjectShapes(), Objects, C4LSector::ObjectShapes, C4GameObjects::Sectors, C4ValueArray::SetSize(), C4SortObject::SortObjects(), and C4FindObject::UseShapes().

399 {
400  // Trivial case
401  if (IsImpossible())
402  return new C4ValueArray();
403  C4Rect *pBounds = GetBounds();
404  if (!pBounds)
405  return FindMany(Objs);
406  // Prepare for array that may be generated
407  C4ValueArray *pArray; int32_t iSize;
408  // Check shape lists?
409  if (UseShapes())
410  {
411  // Get area
412  C4LArea Area(&::Objects.Sectors, *pBounds); C4LSector *pSct;
413  C4ObjectList *pLst = Area.FirstObjectShapes(&pSct);
414  // Check if a single-sector check is enough
415  if (!Area.Next(pSct))
416  return FindMany(pSct->ObjectShapes);
417  // Set up array
418  pArray = new C4ValueArray(32); iSize = 0;
419  // Create marker, search all areas
420  uint32_t iMarker = ::Objects.GetNextMarker();
421  for (; pLst; pLst=Area.NextObjectShapes(pLst, &pSct))
422  for (C4Object *obj : *pLst)
423  if (obj->Status)
424  if (obj->Marker != iMarker)
425  {
426  obj->Marker = iMarker;
427  if (Check(obj))
428  {
429  // Grow the array, if neccessary
430  if (iSize >= pArray->GetSize())
431  pArray->SetSize(iSize * 2);
432  // Add object
433  (*pArray)[iSize++] = C4VObj(obj);
434  }
435  }
436  }
437  else
438  {
439  // Set up array
440  pArray = new C4ValueArray(32); iSize = 0;
441  // Search
442  C4LArea Area(&::Objects.Sectors, *pBounds); C4LSector *pSct;
443  for (C4ObjectList *pLst=Area.FirstObjects(&pSct); pLst; pLst=Area.NextObjects(pLst, &pSct))
444  for (C4Object *obj : *pLst)
445  if (obj->Status)
446  if (Check(obj))
447  {
448  // Grow the array, if neccessary
449  if (iSize >= pArray->GetSize())
450  pArray->SetSize(iSize * 2);
451  // Add object
452  (*pArray)[iSize++] = C4VObj(obj);
453  }
454  }
455  // Shrink array
456  pArray->SetSize(iSize);
457  // Recheck object status (may shrink array again)
458  CheckObjectStatus(pArray);
459  // Apply sorting
460  if (pSort) pSort->SortObjects(pArray);
461  return pArray;
462 }
virtual bool UseShapes()
Definition: C4FindObject.h:95
void SortObjects(C4ValueArray *pArray)
Definition: C4Rect.h:29
virtual C4Rect * GetBounds()
Definition: C4FindObject.h:94
C4Value C4VObj(C4Object *pObj)
Definition: C4Value.cpp:90
C4ValueArray * FindMany(const C4ObjectList &Objs)
uint32_t GetNextMarker()
void SetSize(int32_t inSize)
virtual bool IsImpossible()
Definition: C4FindObject.h:96
C4ObjectList ObjectShapes
Definition: C4Sector.h:49
int32_t GetSize() const
Definition: C4ValueArray.h:36
C4LSectors Sectors
Definition: C4GameObjects.h:42
virtual bool Check(C4Object *pObj)=0
C4GameObjects Objects
Definition: C4Globals.cpp:48
int iSize
Definition: TstC4NetIO.cpp:35

Here is the call graph for this function:

virtual C4Rect* C4FindObject::GetBounds ( )
inlineprotectedvirtualinherited

Reimplemented in C4FindObjectDistance, C4FindObjectOnLine, C4FindObjectAtRect, C4FindObjectAtPoint, C4FindObjectInRect, C4FindObjectOr, and C4FindObjectAnd.

Definition at line 94 of file C4FindObject.h.

Referenced by C4FindObjectAnd::C4FindObjectAnd(), C4FindObjectOr::C4FindObjectOr(), C4FindObject::Count(), C4FindObject::Find(), and C4FindObject::FindMany().

94 { return nullptr; }

Here is the caller graph for this function:

virtual bool C4FindObject::IsEnsured ( )
inlineprotectedvirtualinherited

Reimplemented in C4FindObjectCategory, C4FindObjectOr, C4FindObjectAnd, and C4FindObjectNot.

Definition at line 97 of file C4FindObject.h.

Referenced by C4FindObject::Count(), and C4FindObjectNot::IsImpossible().

97 { return false; }

Here is the caller graph for this function:

bool C4FindObjectDef::IsImpossible ( )
protectedvirtual

Reimplemented from C4FindObject.

Definition at line 635 of file C4FindObject.cpp.

References C4Def::Count, and C4PropList::GetDef().

636 {
637  return !def || !def->GetDef() || !def->GetDef()->Count;
638 }
virtual C4Def const * GetDef() const
Definition: C4PropList.cpp:640
int32_t Count
Definition: C4Def.h:182

Here is the call graph for this function:

void C4FindObject::SetSort ( C4SortObject pToSort)
inherited

Definition at line 481 of file C4FindObject.cpp.

Referenced by CreateCriterionsFromPars().

482 {
483  delete pSort;
484  pSort = pToSort;
485 }

Here is the caller graph for this function:

virtual bool C4FindObject::UseShapes ( )
inlineprotectedvirtualinherited

Reimplemented in C4FindObjectOnLine, C4FindObjectAtRect, C4FindObjectAtPoint, C4FindObjectOr, and C4FindObjectAnd.

Definition at line 95 of file C4FindObject.h.

Referenced by C4FindObjectAnd::C4FindObjectAnd(), C4FindObjectOr::C4FindObjectOr(), C4FindObject::Count(), C4FindObject::Find(), and C4FindObject::FindMany().

95 { return false; }

Here is the caller graph for this function:


The documentation for this class was generated from the following files: