comparison Renderer/Engine/SceneGraphIterator.cc @ 0:04e28d8d3c6f

first commit
author Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
date Mon, 08 Nov 2010 01:23:25 +0900
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:04e28d8d3c6f
1 #include "SceneGraphIterator.h"
2
3 void
4 SceneGraphIterator::set(SceneGraphPtr _list)
5 {
6 list = cur = _list;
7 }
8
9 /**
10 * 次の SceneGraph があるか返す
11 *
12 * @retval 1 next がある
13 * @retval 0 next がない
14 */
15 int
16 SceneGraphIterator::hasNext(void)
17 {
18 return (cur->next) ? 1 : 0;
19 }
20
21 /**
22 * 指定した名前をもつ SceneGraph が以降存在するか
23 *
24 * @param id 検索したい SceneGraph の ID
25 * @retval 1 next がある
26 * @retval 0 next がない
27 */
28 int
29 SceneGraphIterator::hasNext(int id)
30 {
31 SceneGraphPtr p;
32
33 for (p = cur->next; p; p = p->next) {
34 if (p->sgid == id) {
35 return 1;
36 }
37 }
38
39 return 0;
40 }
41
42 /*!
43 指定したグループが以降存在するか
44
45 @param id 検索したい Group の ID
46 @retval 1 next がある
47 @retval 0 next がない
48 */
49 int
50 SceneGraphIterator::hasNextGroup(int id)
51 {
52 SceneGraphPtr p;
53 for (p = cur->next; p; p = p->next) {
54 if (p->gid == id) {
55 return 1;
56 }
57 }
58
59 return 0;
60 }
61
62 /**
63 * iterator を次に進める
64 */
65 void
66 SceneGraphIterator::next(void)
67 {
68 cur = cur->next;
69 }
70
71 /**
72 * iterator を指定した ID を持つ SceneGraph まで進める
73 * SceneGraph が無い場合、NULL にする
74 *
75 * @param id 検索したい SceneGraph の ID
76 */
77 void
78 SceneGraphIterator::next(int id)
79 {
80 SceneGraphPtr p;
81
82 for (p = cur->next; p; p = p->next) {
83 if (p->sgid == id) {
84 break;
85 }
86 }
87
88 cur = p;
89 }
90
91 /*!
92 iterator を指定した Group ID を持つ SceneGraph まで進める
93
94 @param id 検索したい SceneGraph の Group ID
95 */
96 void
97 SceneGraphIterator::nextGroup(int id)
98 {
99 SceneGraphPtr p;
100
101 for (p = cur->next; p; p = p->next) {
102 if (p->gid == id) {
103 break;
104 }
105 }
106
107 cur = p;
108 }
109
110 /**
111 * 参照中の SceneGraph を削除する
112 */
113 void
114 SceneGraphIterator::remove(void)
115 {
116 cur->remove();
117 }
118
119 /**
120 * 参照中の SceneGraph を返す
121 *
122 * @return current SceneGraph
123 */
124 SceneGraphPtr
125 SceneGraphIterator::get(void)
126 {
127 return cur;
128 }