move to new external dptr
authorkonrad <konrad@6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33>
Tue, 28 Dec 2010 22:59:52 +0000 (22:59 +0000)
committerkonrad <konrad@6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33>
Tue, 28 Dec 2010 22:59:52 +0000 (22:59 +0000)
git-svn-id: https://silmor.de/svn/softmagic/elam/trunk@693 6e3c4bff-ac9f-4ac1-96c5-d2ea494d3e33

12 files changed:
src/dptr.h [deleted file]
src/elam.pro
src/elambinary.cpp
src/elambinary.h
src/elamcharclass.cpp
src/elamcharclass.h
src/elamengine.cpp
src/elamengine.h
src/elamexpression.cpp
src/elamexpression.h
src/elamunary.cpp
src/elamunary.h

diff --git a/src/dptr.h b/src/dptr.h
deleted file mode 100644 (file)
index b6c79b9..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-//d-ptr header
-//
-// (c) Konrad Rosenbaum, 2010
-// protected under the GNU LGPL v3 or at your option any newer
-
-#ifndef DPTR_H
-#define DPTR_H
-
-/** \page dptr Automatic d-Pointers
-to be written
-
-\see dptr.h
-*/
-
-/** \file "dptr.h"
-Automatic d-Pointers Header File
-
-Please see \ref dptr "Automatic d-Pointers"
-for a tutorial.
-*/
-
-/** \brief Expands to the fully qualified name of the d-pointer class.
-\param Class the fully qualified name of the class the d-pointer was declared in.*/
-#define DPTR_CLASS_NAME(Class) Class::Private
-///Expands to the local name of d-pointer classes (Private).
-#define DPTR_NAME Private
-///Expands to the local name of the d-pointer wrapper class (DPrivate).
-#define DPTR_WRAPPER_NAME DPrivate
-
-/** \brief Declares a smart shared or non-shared d-pointer, to be used inside class declaration.
-
-It also declares the internal nested classes DPrivate and Private - Private is the actual d-pointer class, while DPrivate is a wrapper that automatically allocates, copies and deallocates the d-pointer.
-
-The wrapper DPointer class contains these methods:
-   - constructor, copy constructor for creating instances of Private
-    - used by automatic and explicit constructors of the containing class
-   - destructor for deallocation of Private
-    - used by the destructor of the containing class
-   - assignment operator to copy the content of Private
-    - used by the assignment operator of the containing class
-   - pointer operator to actually access the Private data
-
-You can use DEFINE_DPTR to define the necessary methods for a non-shared d-pointer or DEFINE_SHARED_DPTR if you want to share d-pointer data between instances of the containing class. It is recommended that non-shared d-pointer classes (Private) are derived from DPtr and the shared variants be derived from SharedDPtr.
-
-The d-pointer class Private is only forward declared, you have to fully declare and implement it in the code where you are using it, i.e. where you are implementing the containing class.
-
-\param dp name of the d-pointer*/
-#define DECLARE_DPTR(dp) \
- private:\
- class Private; \
- class DPrivate{\
-  public:DPrivate();DPrivate(const DPrivate&);~DPrivate();\
-  DPrivate&operator=(const DPrivate&);\
-  const Private*operator->()const{return d;}\
-  Private*operator->(){return d;}\
-  DPrivate clone()const;\
-  private:Private*d;\
- }; \
- DPrivate dp;
-
- /** \brief Alias for DECLARE_DPTR for convenience.
-
-\param dp name of the d-pointer*/
-#define DECLARE_SHARED_DPTR(dp) DECLARE_DPTR(dp)
-
-/** \brief Base class of non-shared d-pointers.
-
-Use in conjunction with DECLARE_DPTR and DEFINE_DPTR */
-class DPtr
-{
-       public:
-               ///instantiates a non-shared d-pointer
-               DPtr(){}
-               ///deletes a non-shared d-pointer
-               virtual ~DPtr(){}
-};
-
-/** \brief Creates definitions for methods of the non-shared d-pointer wrapper. 
-
-This variant is not shared between instances of the containing class.
-
-To be used in implementation where the actual d-pointer class is implemented.
-
-\param Class the base class within which the d-pointer was declared*/
-#define DEFINE_DPTR(Class) \
- Class::DPrivate::DPrivate(){d=new Class::Private;}\
- Class::DPrivate::DPrivate(const Class::DPrivate&dp){d=new Class::Private(*(dp.d));}\
- Class::DPrivate::~DPrivate(){delete d;}\
- Class::DPrivate Class::DPrivate::clone()const{DPrivate r;*(r.d)=*d;return r;}\
- Class::DPrivate& Class::DPrivate::operator=(const Class::DPrivate&dp)\
- {*d=*(dp.d);return *this;}
-
-/** \brief Base class of shared d-pointers.
-
-Use in conjunction with DECLARE_SHARED_DPTR and DEFINE_SHARED_DPTR */
-class SharedDPtr
-{
-       private:
-               int cnt;
-       public:
-               ///instantiates a shared d-pointer
-               SharedDPtr(){cnt=1;}
-               ///deletes a shared d-pointer
-               virtual ~SharedDPtr(){}
-               ///called by the wrapper to attach to a new instance
-               virtual void attach(){cnt++;}
-               ///called by the wrapper to detach from an instance
-               virtual void detach(){cnt--;if(cnt==0)delete this;}
-};
-
-/** \brief Defines the methods of the shared d-pointer wrapper.
-
-This implements the shared version of the d-pointer wrapper.
-To be used in implementation where the actual d-pointer class is implemented.
-
-\param Class the base class within which the d-pointer was declared*/
-#define DEFINE_SHARED_DPTR(Class) \
- Class::DPrivate::DPrivate(){d=new Class::Private;}\
- Class::DPrivate::DPrivate(const DPrivate&dp){d=dp.d;d->attach();}\
- Class::DPrivate::~DPrivate(){d->detach();}\
- Class::DPrivate Class::DPrivate::clone()const{DPrivate r;*(r.d)=*d;return r;}\
- Class::DPrivate& Class::DPrivate::operator=(const DPrivate&dp)\
- {d->detach();d=dp.d;d->attach();return *this;}
-
-
-#endif
index 2d4f42a..03d8718 100644 (file)
@@ -9,7 +9,6 @@ RCC_DIR = .ctmp
 
 
 HEADERS += \
-       dptr.h \
        elam.h \
        elamunary.h \
        elambinary.h \
index 7a21280..7a7d182 100644 (file)
@@ -7,6 +7,7 @@
 #include "elamvalue.h"
 
 #include <QDebug>
+#include "../dptr/dptr_shared.h"
 
 namespace ELAM {
 /////////////////////////////////////////////////////////////////
index 6ab4f6d..63d426a 100644 (file)
@@ -10,7 +10,7 @@
 #include <QObject>
 #include <QVariant>
 
-#include "dptr.h"
+#include "../dptr/dptr_base.h"
 
 namespace ELAM {
 class Engine;
index 45996f3..f67dfc4 100644 (file)
@@ -7,6 +7,7 @@
 #include "elamvalue.h"
 
 #include <QDebug>
+#include "../dptr/dptr_shared.h"
 
 namespace ELAM {
 
index d6c2b88..f40f24d 100644 (file)
@@ -12,7 +12,7 @@
 
 #include "elamexpression.h"
 
-#include "dptr.h"
+#include "../dptr/dptr_base.h"
 
 namespace ELAM {
 
index da3cbbf..c7b7dc2 100644 (file)
@@ -7,6 +7,7 @@
 #include "elamvalue.h"
 
 #include <QDebug>
+#include "../dptr/dptr.h"
 
 namespace ELAM {
 ///////////////////////////////////////////////////////////////////////////////
index 196dcc5..9e45738 100644 (file)
@@ -15,7 +15,7 @@
 #include "elambinary.h"
 #include "elamcharclass.h"
 
-#include "dptr.h"
+#include "../dptr/dptr_base.h"
 
 namespace ELAM {
 
index e2d0169..494d279 100644 (file)
@@ -8,6 +8,7 @@
 #include <QDebug>
 #include <QPointer>
 #include "elamengine.h"
+#include "../dptr/dptr_shared.h"
 
 namespace ELAM {
 
index cde9d65..7b16286 100644 (file)
@@ -7,7 +7,7 @@
 #define ELAM_EXPRESSION_H
 
 #include "elamvalue.h"
-#include "dptr.h"
+#include "../dptr/dptr_base.h"
 
 namespace ELAM {
 
index 3014de7..2fbbf19 100644 (file)
@@ -7,6 +7,7 @@
 #include "elamvalue.h"
 
 #include <QDebug>
+#include "../dptr/dptr_shared.h"
 
 namespace ELAM {
 
index 1e8b1a2..b42c29f 100644 (file)
@@ -10,7 +10,7 @@
 #include <QObject>
 #include <QVariant>
 
-#include "dptr.h"
+#include "../dptr/dptr_base.h"
 
 namespace ELAM {
 class Engine;