git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@479 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
syntheticpp 2006-01-16 13:29:09 +00:00
parent d33f2e6585
commit 47e962d64b
4 changed files with 33 additions and 29 deletions

View file

@ -226,18 +226,6 @@
RelativePath="..\..\include\loki\Pimpl.h"
>
</File>
<File
RelativePath="..\..\include\loki\Pimpl.h"
>
</File>
<File
RelativePath="..\..\include\loki\PimplDef.h"
>
</File>
<File
RelativePath="..\..\include\loki\PimplDef.h"
>
</File>
<File
RelativePath="..\..\include\loki\SafeFormat.h"
>

View file

@ -23,8 +23,6 @@
#include "type.h"
#include "type2.h"
#include <loki/PimplDef.h>
#include <loki/SafeFormat.h>
@ -97,7 +95,7 @@ namespace Loki // gcc!!
/////////////////////////////////////////
// class C definition
/////////////////////////////////////////
C::C() : d(rlife)
C::C() : d(rinit)
{}
void C::foo()
@ -208,24 +206,28 @@ P2::P2(){d->data = 2;}
P3::P3(){d->data = 3;}
P4::P4(){d->data = 4;}
P5::P5(){d->data = 5;}
P6::P6(){d->data = 6;}
R1::R1(){d.data = 11;}
R2::R2(){d.data = 22;}
R3::R3(){d.data = 33;}
R4::R4():d(t){d.data = 44;}
R5::R5():d(t){d.data = 55;}
R6::R6():d(t){d.data = 66;}
R4::R4():d(rinit){d.data = 44;}
R5::R5():d(rinit){d.data = 55;}
R6::R6():d(rinit){d.data = 66;}
void test_more()
{
Loki::Printf("\nmore tests:\n");
Loki::Printf("\n\nMore tests:\n");
Loki::Printf("\nCreating Pimpls\n");
P1* p1 = new P1;
P2* p2 = new P2;
P3* p3 = new P3;
P4* p4 = new P4;
P5* p5 = new P5;
P6* p6 = new P6;
Loki::Printf("\nCreating Rimpls\n");
R1* r1 = new R1;
R2* r2 = new R2;
R3* r3 = new R3;
@ -234,13 +236,16 @@ void test_more()
R6* r6 = new R6;
delete p1;
Loki::Printf("\nDeleting Pimpls\n");
delete p1;
delete p2;
delete p3;
delete p4;
delete p5;
delete p6;
delete r1;
Loki::Printf("\nDeleting Rimpls\n");
delete r1;
delete r2;
delete r3;
delete r4;

View file

@ -15,6 +15,7 @@
#include <loki/Pimpl.h>
//#define TEST_WITH_BOOST
#ifdef TEST_WITH_BOOST
#include <boost/shared_ptr.hpp>
@ -64,7 +65,7 @@ public:
void foo();
private:
Rimpl<C>::Life rlife;
Rimpl<C>::Init rinit;
Rimpl<C>::Type& d;
};
@ -146,6 +147,15 @@ typedef Loki::PtrImpl
>
Pimpl5;
typedef Loki::PtrImpl
<
Loki::Impl<B>,
Loki::Impl<B>*,
Loki::AutoDeletePimpl,
Loki::DeclaredPimpl
>
Pimpl6;
// Pimpl
@ -241,13 +251,13 @@ Pimpl8;
template<class T>
struct R
{
typedef Loki::PimplLife
typedef Loki::Private::AutoPtrHolder
<
T,
T*,
Loki::AutoDeletePimpl
>
Life;
Init;
};
@ -256,12 +266,13 @@ struct P2 : private Pimpl2 {P2();};
struct P3 : private Pimpl3 {P3();};
struct P4 {Pimpl4 d; P4();};
struct P5 {Pimpl5 d; P5();};
struct P6 {Pimpl6 d; P6();};
struct R1 : private Rimpl1 {R1();};
struct R2 : private Rimpl2 {R2();};
struct R3 : private Rimpl3 {R3();};
struct R4 {Rimpl4& d; R<Rimpl4>::Life t; R4();};
struct R5 {Rimpl5& d; R<Rimpl5>::Life t; R5();};
struct R6 {Rimpl6& d; R<Rimpl6>::Life t; R6();};
struct R4 {Rimpl4& d; R<Rimpl4>::Init rinit; R4();};
struct R5 {Rimpl5& d; R<Rimpl5>::Init rinit; R5();};
struct R6 {Rimpl6& d; R<Rimpl6>::Init rinit; R6();};

View file

@ -30,7 +30,7 @@ public:
void foo();
private:
Pimpl<A>::Type d;
Pimpl<A2>::Type d;
};
@ -57,7 +57,7 @@ public:
void foo();
private:
Rimpl<C2>::Life rlife;
Rimpl<C2>::Init rint;
Rimpl<C2>::Type& d;
};