root/OpenSceneGraph/trunk/include/osg/CopyOp @ 13041

Revision 13041, 3.2 kB (checked in by robert, 3 years ago)

Ran script to remove trailing spaces and tabs

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
2 *
3 * This library is open source and may be redistributed and/or modified under
4 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5 * (at your option) any later version.  The full license is in LICENSE file
6 * included with this distribution, and on the openscenegraph.org website.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 * OpenSceneGraph Public License for more details.
12*/
13
14#ifndef OSG_COPYOP
15#define OSG_COPYOP 1
16
17#include <osg/Export>
18
19namespace osg {
20
21class Referenced;
22class Object;
23class Image;
24class Texture;
25class StateSet;
26class StateAttribute;
27class StateAttributeCallback;
28class Uniform;
29class Node;
30class Drawable;
31class Array;
32class PrimitiveSet;
33class Shape;
34class NodeCallback;
35
36
37/** Copy Op(erator) used to control whether shallow or deep copy is used
38  * during copy construction and clone operation.*/
39class OSG_EXPORT CopyOp
40{
41
42    public:
43
44        enum Options
45        {
46            SHALLOW_COPY                = 0,
47            DEEP_COPY_OBJECTS           = 1<<0,
48            DEEP_COPY_NODES             = 1<<1,
49            DEEP_COPY_DRAWABLES         = 1<<2,
50            DEEP_COPY_STATESETS         = 1<<3,
51            DEEP_COPY_STATEATTRIBUTES   = 1<<4,
52            DEEP_COPY_TEXTURES          = 1<<5,
53            DEEP_COPY_IMAGES            = 1<<6,
54            DEEP_COPY_ARRAYS            = 1<<7,
55            DEEP_COPY_PRIMITIVES        = 1<<8,
56            DEEP_COPY_SHAPES            = 1<<9,
57            DEEP_COPY_UNIFORMS          = 1<<10,
58            DEEP_COPY_CALLBACKS         = 1<<11,
59            DEEP_COPY_USERDATA          = 1<<12,
60            DEEP_COPY_ALL               = 0x7FFFFFFF
61        };
62
63        typedef unsigned int CopyFlags;
64
65        inline CopyOp(CopyFlags flags=SHALLOW_COPY):_flags(flags) {}
66        virtual ~CopyOp() {}
67
68        void setCopyFlags(CopyFlags flags) { _flags = flags; }
69        CopyFlags getCopyFlags() const { return _flags; }
70
71        virtual Referenced*     operator() (const Referenced* ref) const;
72        virtual Object*         operator() (const Object* obj) const;
73        virtual Node*           operator() (const Node* node) const;
74        virtual Drawable*       operator() (const Drawable* drawable) const;
75        virtual StateSet*       operator() (const StateSet* stateset) const;
76        virtual StateAttribute* operator() (const StateAttribute* attr) const;
77        virtual Texture*        operator() (const Texture* text) const;
78        virtual Image*          operator() (const Image* image) const;
79        virtual Array*          operator() (const Array* array) const;
80        virtual PrimitiveSet*   operator() (const PrimitiveSet* primitives) const;
81        virtual Shape*          operator() (const Shape* shape) const;
82        virtual Uniform*        operator() (const Uniform* shape) const;
83        virtual NodeCallback*   operator() (const NodeCallback* nodecallback) const;
84        virtual StateAttributeCallback* operator() (const StateAttributeCallback* stateattributecallback) const;
85
86    protected:
87
88        CopyFlags _flags;
89};
90
91}
92
93#endif
Note: See TracBrowser for help on using the browser.