00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
#ifndef VTK_EXTENSIONS_OBJECT_H_
00017
# define VTK_EXTENSIONS_OBJECT_H_
00018
# include "vtkExtensionsCommonConfigure.h"
00019
# include <assert.h>
00020
00021
# include "vtkObject.h"
00022
00023
VTK_EXTENSIONS_NAMESPACE_BEGIN
00024
00025
class vtkExtensionsObjectInternal;
00026
class vtkUUID;
00027
00033 class VTK_EXTENSIONS_COMMON_EXPORT vtkExtensionsObject :
public vtkObject
00034 {
00035
public:
00036
static vtkExtensionsObject*
New (
void);
00037 vtkTypeRevisionMacro (vtkExtensionsObject,
vtkObject);
00038
void PrintSelf (ostream&,
vtkIndent);
00039
00041
const vtkUUID* GetUUID (
void)
const;
00042
00050
int SetUUID (
const char* a);
00051
00058
int SetUUID (
const unsigned char a[16]);
00059
00060
protected:
00061 vtkExtensionsObject (
void);
00062 ~vtkExtensionsObject();
00063
00064
private:
00065
00066 vtkExtensionsObjectInternal* Internal;
00067
00068
void Lock (
void)
const;
00069
void Unlock (
void)
const;
00070
00071
00072
public:
00073
00074
class ScopeLock;
00075
friend class ScopeLock;
00076 class ScopeLock
00077 {
00078
const vtkExtensionsObject* Object;
00079
00080
public:
00081 ScopeLock (
const vtkExtensionsObject*
const& a) : Object(a)
00082 { assert(this->Object != NULL); this->Object->Lock(); }
00083 ~
ScopeLock()
00084 { this->Object->Unlock(); }
00085 };
00086
00087
00088
private:
00094 vtkExtensionsObject (
const vtkExtensionsObject&);
00095
void operator= (
const vtkExtensionsObject&);
00097 };
00098
00099
VTK_EXTENSIONS_NAMESPACE_END
00100
00101
#endif
00102
00103
00104
00105