20
20
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22
22
* @author: $LastChangedBy: dutka $
23
* @date: $LastChangedDate: 2007-05-02 14:59:25 +0200 (mer 02 mai 2007) $
24
* Id: $Id: t_Pointer_cast.cxx 424 2007-05-02 12:59:25Z dutka $
23
* @date: $LastChangedDate: 2009-05-28 14:47:53 +0200 (jeu. 28 mai 2009) $
24
* Id: $Id: t_Pointer_cast.cxx 1262 2009-05-28 12:47:53Z dutka $
26
26
#include <iostream>
29
29
#include "OTtestcode.hxx"
30
#include "OStream.hxx"
30
31
#include "PersistentObject.hxx"
31
32
#include "Pointer.hxx"
33
34
using namespace OT;
34
35
using namespace OT::Test;
35
36
using namespace OT::Base::Common;
37
using namespace OT::Base::Common;
37
39
class BaseClass : public PersistentObject
40
42
BaseClass(const String & name) : PersistentObject(name)
42
std::cout << "BaseClass(const String & name) ("
44
OStream fullprint(std::cout);
46
fullprint << "BaseClass(const String & name) ("
43
47
<< getName() << ")" << std::endl;
45
49
BaseClass(const BaseClass & other) : PersistentObject(other)
47
std::cout << "BaseClass(const BaseClass & other) ("
51
OStream fullprint(std::cout);
53
fullprint << "BaseClass(const BaseClass & other) ("
48
54
<< getName() << ")" << std::endl;
50
56
virtual ~BaseClass()
52
std::cout << "~BaseClass ("
58
OStream fullprint(std::cout);
60
fullprint << "~BaseClass ("
53
61
<< getName() << ")" << std::endl;
55
63
virtual void doit() const
57
std::cout << "BaseClass::doit ("
65
OStream fullprint(std::cout);
67
fullprint << "BaseClass::doit ("
58
68
<< getName() << ")" << std::endl;
60
70
virtual BaseClass * clone() const
72
82
explicit DerivedClass(const String & name) : BaseClass(name)
74
std::cout << "DerivedClass(const String & name) ("
84
OStream fullprint(std::cout);
86
fullprint << "DerivedClass(const String & name) ("
75
87
<< getName() << ")" << std::endl;
77
89
explicit DerivedClass(const DerivedClass & other) : BaseClass(other)
79
std::cout << "DerivedClass(const String & name) ("
91
OStream fullprint(std::cout);
93
fullprint << "DerivedClass(const String & name) ("
80
94
<< getName() << ")" << std::endl;
82
96
virtual ~DerivedClass()
84
std::cout << "~DerivedClass ("
98
OStream fullprint(std::cout);
100
fullprint << "~DerivedClass ("
85
101
<< getName() << ")" << std::endl;
87
103
virtual void doit() const
89
std::cout << "DerivedClass::doit ("
105
OStream fullprint(std::cout);
107
fullprint << "DerivedClass::doit ("
90
108
<< getName() << ")" << std::endl;
92
110
virtual DerivedClass * clone() const
112
130
virtual void doit() const
114
std::cout << "NotDerivedClass::doit ("
132
OStream fullprint(std::cout);
134
fullprint << "NotDerivedClass::doit ("
115
135
<< getName() << ")" << std::endl;
117
137
virtual NotDerivedClass * clone() const
125
145
void functionThatCastPointer(const Pointer<BaseClass> & p_base)
127
std::cout << "void functionThatCastPointer(const Pointer<BaseClass> & p_base)" << std::endl;
147
OStream fullprint(std::cout);
149
fullprint << "void functionThatCastPointer(const Pointer<BaseClass> & p_base)" << std::endl;
131
153
Pointer<BaseClass> functionThatReturnPointer(const Pointer<DerivedClass> & p_derived)
133
std::cout << "Pointer<BaseClass> functionThatReturnPointer(const Pointer<DerivedClass> & p_derived)" << std::endl;
155
OStream fullprint(std::cout);
157
fullprint << "Pointer<BaseClass> functionThatReturnPointer(const Pointer<DerivedClass> & p_derived)" << std::endl;
134
158
p_derived->doit();
135
159
return p_derived;