add ignore pattern for git
[web/konrad/chester.git] / dptr_noncopy.h
1 //d-ptr header
2 //
3 // (c) Konrad Rosenbaum, 2010-2011
4 // Copying and distribution of this file, with or without modification,
5 // are permitted in any medium without royalty provided the copyright
6 // notice and this notice are preserved.  This file is offered as-is,
7 // without any warranty.
8
9 #include "dptr_base.h"
10
11
12 #ifndef DPTR_NONCOPY_CLASS_0_1_H
13 #define DPTR_NONCOPY_CLASS_0_1_H
14 //hide the namespace
15 /// \cond never
16 namespace Chester_0_1{
17 /// \endcond
18
19 /** \brief Base class of non-shared d-pointers.
20
21 Use in conjunction with DECLARE_NONCOPY_DPTR and DEFINE_NONCOPY_DPTR */
22 class NonCopyDPtr
23 {
24         public:
25                 ///instantiates a non-shared d-pointer
26                 NonCopyDPtr(){}
27                 ///deletes a non-shared d-pointer
28                 virtual ~NonCopyDPtr(){}
29         private:
30                 ///hides the copy constructor
31                 NonCopyDPtr(const NonCopyDPtr&){}
32                 ///hides the assignment operator
33                 NonCopyDPtr& operator=(const NonCopyDPtr&){return *this;}
34 };
35
36 //hide the namespace
37 /// \cond never
38 };
39 using namespace Chester_0_1;
40 /// \endcond
41 #endif
42
43 #ifdef DEFINE_NONCOPY_DPTR
44 #undef DEFINE_NONCOPY_DPTR
45 #endif
46
47 /** \brief Creates definitions for methods of the non-shared, non-copy d-pointer wrapper. 
48
49 This variant is not shared between instances of the containing class.
50
51 To be used in implementation where the actual d-pointer class is implemented.
52
53 \param Class the base class within which the d-pointer was declared*/
54 #define DEFINE_NONCOPY_DPTR(Class) \
55  Class::DPrivate::DPrivate(){d=new Class::Private;}\
56  Class::DPrivate::DPrivate(const Class::DPrivate&){}\
57  Class::DPrivate::~DPrivate(){delete d;}\
58  Class::DPrivate& Class::DPrivate::operator=(const Class::DPrivate&)\
59  {return *this;}