00001 #ifndef XDKWRL_TRAVERSER_H
00002 #define XDKWRL_TRAVERSER_H
00003
00004 #include <xdkwrl/config.h>
00005 #include <xdkwrl/tools/transformator.h>
00006
00007 namespace wrl
00008 {
00009 class Node;
00010
00011 class Anchor;
00012 class Appearance;
00013 class AudioClip;
00014 class Background;
00015 class Billboard;
00016 class Box;
00017 class Collision;
00018 class Color;
00019 class ColorInterpolator;
00020 class Cone;
00021 class Contour2D;
00022 class Coordinate;
00023 class CoordinateDeformer;
00024 class CoordinateInterpolator;
00025 class Cylinder;
00026 class CylinderSensor;
00027 class DirectionalLight;
00028 class ElevationGrid;
00029 class Extrusion;
00030 class Fog;
00031 class FontStyle;
00032 class GeoCoordinate;
00033 class GeoElevationGrid;
00034 class GeoLOD;
00035 class GeoLocation;
00036 class GeoMetadata;
00037 class GeoOrigin;
00038 class GeoPositionInterpolator;
00039 class GeoTouchSensor;
00040 class GeoViewpoint;
00041 class Group;
00042 class ImageTexture;
00043 class IndexedFaceSet;
00044 class IndexedLineSet;
00045 class Inline;
00046 class InlineLoadControl;
00047 class LOD;
00048 class Material;
00049 class MovieTexture;
00050 class NavigationInfo;
00051 class Normal;
00052 class NormalInterpolator;
00053 class NurbsCurve;
00054 class NurbsCurve2D;
00055 class NurbsGroup;
00056 class NurbsPositionInterpolator;
00057 class NurbsSurface;
00058 class NurbsTextureSurface;
00059 class OrientationInterpolator;
00060 class PixelTexture;
00061 class PlaneSensor;
00062 class PointLight;
00063 class PointSet;
00064 class Polyline2D;
00065 class PositionInterpolator;
00066 class ProximitySensor;
00067 class ScalarInterpolator;
00068 class Shape;
00069 class Sound;
00070 class Sphere;
00071 class SphereSensor;
00072 class SpotLight;
00073 class Switch;
00074 class Text;
00075 class TextureCoordinate;
00076 class TextureTransform;
00077 class TimeSensor;
00078 class TouchSensor;
00079 class Transform;
00080 class TrimmedSurface;
00081 class Viewpoint;
00082 class VisibilitySensor;
00083 class WorldInfo;
00084
00085
00086
00087 class XDKWRL_EXPORT Traverser
00088 {
00089 public:
00090 void operator()(wrl::Node* node);
00091 virtual ~Traverser() {}
00092 protected:
00093 virtual void treat(Anchor*);
00094 virtual void treat(Appearance*);
00095 virtual void treat(AudioClip*);
00096 virtual void treat(Background*);
00097 virtual void treat(Billboard*);
00098 virtual void treat(Box*);
00099 virtual void treat(Collision*);
00100 virtual void treat(Color*);
00101 virtual void treat(ColorInterpolator*);
00102 virtual void treat(Cone*);
00103 virtual void treat(Contour2D*);
00104 virtual void treat(Coordinate*);
00105 virtual void treat(CoordinateDeformer*);
00106 virtual void treat(CoordinateInterpolator*);
00107 virtual void treat(Cylinder*);
00108 virtual void treat(CylinderSensor*);
00109 virtual void treat(DirectionalLight*);
00110 virtual void treat(ElevationGrid*);
00111 virtual void treat(Extrusion*);
00112 virtual void treat(Fog*);
00113 virtual void treat(FontStyle*);
00114 virtual void treat(GeoCoordinate*);
00115 virtual void treat(GeoElevationGrid*);
00116 virtual void treat(GeoLOD*);
00117 virtual void treat(GeoLocation*);
00118 virtual void treat(GeoMetadata*);
00119 virtual void treat(GeoOrigin*);
00120 virtual void treat(GeoPositionInterpolator*);
00121 virtual void treat(GeoTouchSensor*);
00122 virtual void treat(GeoViewpoint*);
00123 virtual void treat(Group*);
00124 virtual void treat(ImageTexture*);
00125 virtual void treat(IndexedFaceSet*);
00126 virtual void treat(IndexedLineSet*);
00127 virtual void treat(Inline*);
00128 virtual void treat(InlineLoadControl*);
00129 virtual void treat(LOD*);
00130 virtual void treat(Material*);
00131 virtual void treat(MovieTexture*);
00132 virtual void treat(NavigationInfo*);
00133 virtual void treat(Normal*);
00134 virtual void treat(NormalInterpolator*);
00135 virtual void treat(NurbsCurve*);
00136 virtual void treat(NurbsCurve2D*);
00137 virtual void treat(NurbsGroup*);
00138 virtual void treat(NurbsPositionInterpolator*);
00139 virtual void treat(NurbsSurface*);
00140 virtual void treat(NurbsTextureSurface*);
00141 virtual void treat(OrientationInterpolator*);
00142 virtual void treat(PixelTexture*);
00143 virtual void treat(PlaneSensor*);
00144 virtual void treat(PointLight*);
00145 virtual void treat(PointSet*);
00146 virtual void treat(Polyline2D*);
00147 virtual void treat(PositionInterpolator*);
00148 virtual void treat(ProximitySensor*);
00149 virtual void treat(ScalarInterpolator*);
00150 virtual void treat(Shape*);
00151 virtual void treat(Sound*);
00152 virtual void treat(Sphere*);
00153 virtual void treat(SphereSensor*);
00154 virtual void treat(SpotLight*);
00155 virtual void treat(Switch*);
00156 virtual void treat(Text*);
00157 virtual void treat(TextureCoordinate*);
00158 virtual void treat(TextureTransform*);
00159 virtual void treat(TimeSensor*);
00160 virtual void treat(TouchSensor*);
00161 virtual void treat(Transform*);
00162 virtual void treat(TrimmedSurface*);
00163 virtual void treat(Viewpoint*);
00164 virtual void treat(VisibilitySensor*);
00165 virtual void treat(WorldInfo*);
00166 protected:
00167 inline const TransformatorHierarchy& transformHierarchy() const;
00168 inline TransformatorHierarchy& transformHierarchy();
00169 private:
00170 TransformatorHierarchy transformHierarchy_;
00171 };
00172
00173
00174
00175 inline const TransformatorHierarchy&
00176 Traverser::transformHierarchy() const
00177 {
00178 return transformHierarchy_;
00179 }
00180 inline TransformatorHierarchy&
00181 Traverser::transformHierarchy()
00182 {
00183 return transformHierarchy_;
00184 }
00185 }
00186
00187 #endif // XDKWRL_TRAVERSER_H
00188
00189
00190
00191
00192
00193