convert line ends
[canaan.git] / prj / cam / src / object / traisrch.cpp
blobfc92848ef6e6164d3feff2667f98ea5219e52ad0
1 /*
2 @Copyright Looking Glass Studios, Inc.
3 1996,1997,1998,1999,2000 Unpublished Work.
4 */
6 // $Header: r:/t2repos/thief2/src/object/traisrch.cpp,v 1.9 1998/10/05 17:28:33 mahk Exp $
7 #include <traisrch.h>
8 #include <dlisttem.h>
9 #include <osysbase.h>
10 #include <traitbas.h>
12 // Must be last header
13 #include <dbmem.h>
16 #ifdef __MSVC
17 template LinkQueryList;
18 template LinkQueryList::cParent;
19 //template cSimpleStack<QueryPtr>;
20 template cDList<class cSimpleDListNode<class QueryPtr>,1>;
21 #endif
23 ////////////////////////////////////////////////////////////
25 // cDepthFirstDonorQuery
27 ////////////////////////////////////////////////////////////
29 STDMETHODIMP_(BOOL) cDepthFirstObjectQuery::Done()
31 return CurObj == OBJ_NULL;
34 STDMETHODIMP_(ObjID) cDepthFirstObjectQuery::Object()
36 return CurObj;
39 STDMETHODIMP cDepthFirstObjectQuery::Next()
41 if (!Expand())
43 if (!Contract())
45 CurObj = OBJ_NULL;
46 return S_OK;
49 CurObj = Queries.Top()->Object();
50 return S_OK;
54 BOOL cDepthFirstObjectQuery::Expand()
56 if (CurObj == OBJ_NULL)
57 return FALSE;
59 IObjectQuery* query = Successors(CurObj);
60 Queries.Push(query);
61 return !query->Done();
64 BOOL cDepthFirstObjectQuery::Contract()
66 if (Queries.Top() == NULL)
67 return FALSE;
69 while(Queries.Top()->Done())
71 Queries.Pop()->Release();
72 if (Queries.Top() == NULL)
73 return FALSE;
74 Queries.Top()->Next();
76 return TRUE;
79 ////////////////////////////////////////
81 BOOL cConcretenessFilterQuery::Filter(ObjID obj)
83 switch(Which)
85 case kObjectConcrete:
86 return OBJ_IS_CONCRETE(obj);
88 case kObjectAbstract:
89 return OBJ_IS_ABSTRACT(obj);
91 case kObjectAll:
92 return TRUE;
94 default:
95 Warning(("Unknown concreteness for query: %d\n",Which));
97 return FALSE;