539
|
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 }
|