added: helper to put chunk override groups in OSG files
[opensg.git] / Source / System / State / Base / OSGChunkListHandlerMixin.h
blobfab1b54a4c8dd8edb2723d269c571541f96acd2c
1 /*---------------------------------------------------------------------------*\
2 * OpenSG *
3 * *
4 * *
5 * Copyright (C) 2003 by the OpenSG Forum *
6 * *
7 * www.opensg.org *
8 * *
9 * contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de *
10 * *
11 \*---------------------------------------------------------------------------*/
12 /*---------------------------------------------------------------------------*\
13 * License *
14 * *
15 * This library is free software; you can redistribute it and/or modify it *
16 * under the terms of the GNU Library General Public License as published *
17 * by the Free Software Foundation, version 2. *
18 * *
19 * This library is distributed in the hope that it will be useful, but *
20 * WITHOUT ANY WARRANTY; without even the implied warranty of *
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
22 * Library General Public License for more details. *
23 * *
24 * You should have received a copy of the GNU Library General Public *
25 * License along with this library; if not, write to the Free Software *
26 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
27 * *
28 \*---------------------------------------------------------------------------*/
29 /*---------------------------------------------------------------------------*\
30 * Changes *
31 * *
32 * *
33 * *
34 * *
35 * *
36 * *
37 \*---------------------------------------------------------------------------*/
39 #ifndef _OSGCHUNKLISTHANDLERMIXIN_H_
40 #define _OSGCHUNKLISTHANDLERMIXIN_H_
41 #ifdef __sgi
42 #pragma once
43 #endif
45 #include "OSGBaseTypes.h"
47 #include <boost/bind.hpp>
49 OSG_BEGIN_NAMESPACE
51 class PrimeMaterial;
53 /*! \brief Mixin for handling map caches.
54 \ingroup GrpSystemFieldContainerMixins
55 \ingroup GrpLibOSGBase
58 template <class Desc>
59 class ChunkListHandlerMixin : public Desc::ParentT
61 /*========================== PRIVATE ================================*/
63 private:
65 typedef typename Desc::ParentT Inherited;
67 /*========================== PUBLIC =================================*/
69 public:
71 typedef ChunkListHandlerMixin<Desc> Self;
73 typedef typename Inherited::TypeObject TypeObject;
74 typedef typename Desc::FinalContainer FinalContainer;
75 typedef typename Desc::ChunkHelper ChunkHelper;
77 typedef typename Desc::ChunksFieldType MFChunksType;
79 class ListEditHandle : public MFChunksType::EditHandle
81 protected:
83 typedef typename MFChunksType::EditHandle Inherited;
84 typedef typename Inherited::HandledField FieldT;
86 public:
88 ListEditHandle(const ListEditHandle &source );
89 ListEditHandle( FieldT *pField,
90 const FieldDescriptionBase *pDescription,
91 FieldContainer *pContainer );
94 virtual bool add(FieldContainer *newFC) const;
97 typedef boost::shared_ptr<ListEditHandle> ListEditHandlePtr;
99 /*---------------------------------------------------------------------*/
100 /*! \name dcast */
101 /*! \{ */
103 /*! \} */
104 /*---------------------------------------------------------------------*/
105 /*! \name General Fieldcontainer Declaration */
106 /*! \{ */
108 /*! \} */
109 /*---------------------------------------------------------------------*/
110 /*! \name Constructors */
111 /*! \{ */
113 /*! \} */
114 /*---------------------------------------------------------------------*/
115 /*! \name Destructor */
116 /*! \{ */
118 /*! \} */
119 /*---------------------------------------------------------------------*/
120 /*! \name Helper */
121 /*! \{ */
123 /*! \} */
124 /*---------------------------------------------------------------------*/
125 /*! \name Get */
126 /*! \{ */
128 /*! \} */
129 /*---------------------------------------------------------------------*/
130 /*! \name Set */
131 /*! \{ */
133 /*! \} */
134 /*---------------------------------------------------------------------*/
135 /*! \name your_category */
136 /*! \{ */
138 /*! \} */
139 /*---------------------------------------------------------------------*/
140 /*! \name Container Access */
141 /*! \{ */
143 /*! \} */
144 /*---------------------------------------------------------------------*/
145 /*! \name your_category */
146 /*! \{ */
148 /*! \} */
149 /*---------------------------------------------------------------------*/
150 /*! \name Binary Access */
151 /*! \{ */
153 /*! \} */
154 /*---------------------------------------------------------------------*/
155 /*! \name your_operators */
156 /*! \{ */
158 /*! \} */
159 /*---------------------------------------------------------------------*/
160 /*! \name Assignment */
161 /*! \{ */
163 /*! \} */
164 /*---------------------------------------------------------------------*/
165 /*! \name Comparison */
166 /*! \{ */
168 /*! \} */
169 /*---------------------------------------------------------------------*/
170 /*! \name Dump */
171 /*! \{ */
173 virtual void dump( UInt32 uiIndent = 0,
174 const BitVector bvFlags = 0) const;
176 /*! \} */
177 /*========================= PROTECTED ===============================*/
179 protected:
181 /*---------------------------------------------------------------------*/
182 /*! \name Type information */
183 /*! \{ */
185 /*! \} */
186 /*---------------------------------------------------------------------*/
187 /*! \name Fields */
188 /*! \{ */
190 /*! \} */
191 /*---------------------------------------------------------------------*/
192 /*! \name Member */
193 /*! \{ */
195 ChunkListHandlerMixin(void);
196 ChunkListHandlerMixin(const ChunkListHandlerMixin &source);
198 virtual ~ChunkListHandlerMixin(void);
200 /*! \} */
201 /*---------------------------------------------------------------------*/
202 /*! \name Changed */
203 /*! \{ */
205 /*! \} */
206 /*---------------------------------------------------------------------*/
207 /*! \name MT Destruction */
208 /*! \{ */
210 /*! \} */
211 /*---------------------------------------------------------------------*/
212 /*! \name Edit */
213 /*! \{ */
215 /*! \} */
216 /*---------------------------------------------------------------------*/
217 /*! \name Edit */
218 /*! \{ */
220 EditFieldHandlePtr editHandleChunks(void);
222 /*! \} */
223 /*---------------------------------------------------------------------*/
224 /*! \name Sync */
225 /*! \{ */
227 /*! \} */
228 /*========================== PRIVATE ================================*/
230 private:
232 /*!\brief prohibit default function (move to 'public' if needed) */
233 void operator =(const ChunkListHandlerMixin &source);
236 OSG_END_NAMESPACE
238 #include "OSGChunkListHandlerMixin.inl"
240 #endif /* _OSGCHUNKLISTHANDLERMIXIN_H_ */