1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  *   Licensed to the Apache Software Foundation (ASF) under one or more
12  *   contributor license agreements. See the NOTICE file distributed
13  *   with this work for additional information regarding copyright
14  *   ownership. The ASF licenses this file to you under the Apache
15  *   License, Version 2.0 (the "License"); you may not use this file
16  *   except in compliance with the License. You may obtain a copy of
17  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #include "cow_wrapper_clients.hxx"
21 #include <rtl/instance.hxx>
22 
23 namespace o3tltests {
24 
25 class cow_wrapper_client2_impl
26 {
27 public:
cow_wrapper_client2_impl()28     cow_wrapper_client2_impl() : mnValue(0) {}
cow_wrapper_client2_impl(int nVal)29     explicit cow_wrapper_client2_impl( int nVal ) : mnValue(nVal) {}
setValue(int nVal)30     void setValue( int nVal ) { mnValue = nVal; }
getValue() const31     int  getValue() const { return mnValue; }
32 
operator ==(const cow_wrapper_client2_impl & rRHS) const33     bool operator==( const cow_wrapper_client2_impl& rRHS ) const { return mnValue == rRHS.mnValue; }
operator !=(const cow_wrapper_client2_impl & rRHS) const34     bool operator!=( const cow_wrapper_client2_impl& rRHS ) const { return mnValue != rRHS.mnValue; }
operator <(const cow_wrapper_client2_impl & rRHS) const35     bool operator<( const cow_wrapper_client2_impl& rRHS ) const { return mnValue < rRHS.mnValue; }
36 
37 private:
38     int mnValue;
39 };
40 
cow_wrapper_client2()41 cow_wrapper_client2::cow_wrapper_client2() : maImpl()
42 {
43 }
44 
cow_wrapper_client2(int nVal)45 cow_wrapper_client2::cow_wrapper_client2( int nVal ) :
46     maImpl( cow_wrapper_client2_impl(nVal) )
47 {
48 }
49 
~cow_wrapper_client2()50 cow_wrapper_client2::~cow_wrapper_client2()
51 {
52 }
53 
cow_wrapper_client2(const cow_wrapper_client2 & rSrc)54 cow_wrapper_client2::cow_wrapper_client2( const cow_wrapper_client2& rSrc ) :
55     maImpl(rSrc.maImpl)
56 {
57 }
58 
cow_wrapper_client2(cow_wrapper_client2 && rSrc)59 cow_wrapper_client2::cow_wrapper_client2( cow_wrapper_client2&& rSrc ) noexcept :
60     maImpl( std::move( rSrc.maImpl ) )
61 {
62 }
63 
operator =(const cow_wrapper_client2 & rSrc)64 cow_wrapper_client2& cow_wrapper_client2::operator=( const cow_wrapper_client2& rSrc )
65 {
66     maImpl = rSrc.maImpl;
67 
68     return *this;
69 }
70 
operator =(cow_wrapper_client2 && rSrc)71 cow_wrapper_client2& cow_wrapper_client2::operator=(cow_wrapper_client2&& rSrc) noexcept
72 {
73     maImpl = std::move(rSrc.maImpl);
74 
75     return *this;
76 }
77 
modify(int nVal)78 void cow_wrapper_client2::modify( int nVal )
79 {
80     maImpl->setValue( nVal );
81 }
82 
queryUnmodified() const83 int  cow_wrapper_client2::queryUnmodified() const
84 {
85     return maImpl->getValue();
86 }
87 
makeUnique()88 void cow_wrapper_client2::makeUnique()
89 {
90     maImpl.make_unique();
91 }
is_unique() const92 bool cow_wrapper_client2::is_unique() const
93 {
94     return maImpl.is_unique();
95 }
use_count() const96 oslInterlockedCount cow_wrapper_client2::use_count() const
97 {
98     return maImpl.use_count();
99 }
swap(cow_wrapper_client2 & r)100 void cow_wrapper_client2::swap( cow_wrapper_client2& r )
101 {
102     o3tl::swap(maImpl, r.maImpl);
103 }
104 
operator ==(const cow_wrapper_client2 & rRHS) const105 bool cow_wrapper_client2::operator==( const cow_wrapper_client2& rRHS ) const
106 {
107     return maImpl == rRHS.maImpl;
108 }
operator !=(const cow_wrapper_client2 & rRHS) const109 bool cow_wrapper_client2::operator!=( const cow_wrapper_client2& rRHS ) const
110 {
111     return maImpl != rRHS.maImpl;
112 }
operator <(const cow_wrapper_client2 & rRHS) const113 bool cow_wrapper_client2::operator<( const cow_wrapper_client2& rRHS ) const
114 {
115     return maImpl < rRHS.maImpl;
116 }
117 
118 
cow_wrapper_client3()119 cow_wrapper_client3::cow_wrapper_client3() : maImpl()
120 {
121 }
122 
cow_wrapper_client3(int nVal)123 cow_wrapper_client3::cow_wrapper_client3( int nVal ) :
124     maImpl( cow_wrapper_client2_impl(nVal) )
125 {
126 }
127 
~cow_wrapper_client3()128 cow_wrapper_client3::~cow_wrapper_client3()
129 {
130 }
131 
cow_wrapper_client3(const cow_wrapper_client3 & rSrc)132 cow_wrapper_client3::cow_wrapper_client3( const cow_wrapper_client3& rSrc ) :
133     maImpl(rSrc.maImpl)
134 {
135 }
136 
cow_wrapper_client3(cow_wrapper_client3 && rSrc)137 cow_wrapper_client3::cow_wrapper_client3( cow_wrapper_client3&& rSrc ) noexcept :
138     maImpl( std::move( rSrc.maImpl ) )
139 {
140 }
141 
operator =(const cow_wrapper_client3 & rSrc)142 cow_wrapper_client3& cow_wrapper_client3::operator=( const cow_wrapper_client3& rSrc )
143 {
144     maImpl = rSrc.maImpl;
145 
146     return *this;
147 }
148 
operator =(cow_wrapper_client3 && rSrc)149 cow_wrapper_client3& cow_wrapper_client3::operator=(cow_wrapper_client3&& rSrc) noexcept
150 {
151     maImpl = std::move(rSrc.maImpl);
152 
153     return *this;
154 }
155 
modify(int nVal)156 void cow_wrapper_client3::modify( int nVal )
157 {
158     maImpl->setValue( nVal );
159 }
160 
queryUnmodified() const161 int  cow_wrapper_client3::queryUnmodified() const
162 {
163     return maImpl->getValue();
164 }
165 
makeUnique()166 void cow_wrapper_client3::makeUnique()
167 {
168     maImpl.make_unique();
169 }
is_unique() const170 bool cow_wrapper_client3::is_unique() const
171 {
172     return maImpl.is_unique();
173 }
use_count() const174 oslInterlockedCount cow_wrapper_client3::use_count() const
175 {
176     return maImpl.use_count();
177 }
swap(cow_wrapper_client3 & r)178 void cow_wrapper_client3::swap( cow_wrapper_client3& r )
179 {
180     o3tl::swap(maImpl, r.maImpl);
181 }
182 
operator ==(const cow_wrapper_client3 & rRHS) const183 bool cow_wrapper_client3::operator==( const cow_wrapper_client3& rRHS ) const
184 {
185     return maImpl == rRHS.maImpl;
186 }
operator !=(const cow_wrapper_client3 & rRHS) const187 bool cow_wrapper_client3::operator!=( const cow_wrapper_client3& rRHS ) const
188 {
189     return maImpl != rRHS.maImpl;
190 }
operator <(const cow_wrapper_client3 & rRHS) const191 bool cow_wrapper_client3::operator<( const cow_wrapper_client3& rRHS ) const
192 {
193     return maImpl < rRHS.maImpl;
194 }
195 
196 
197 namespace { struct theDefaultClient4 : public rtl::Static< o3tl::cow_wrapper< int >,
198                                                             theDefaultClient4 > {}; }
199 
cow_wrapper_client4()200 cow_wrapper_client4::cow_wrapper_client4() :
201     maImpl(theDefaultClient4::get())
202 {
203 }
204 
cow_wrapper_client4(int nVal)205 cow_wrapper_client4::cow_wrapper_client4( int nVal ) :
206     maImpl( nVal )
207 {
208 }
209 
~cow_wrapper_client4()210 cow_wrapper_client4::~cow_wrapper_client4()
211 {
212 }
213 
cow_wrapper_client4(const cow_wrapper_client4 & rSrc)214 cow_wrapper_client4::cow_wrapper_client4( const cow_wrapper_client4& rSrc ) :
215     maImpl(rSrc.maImpl)
216 {
217 }
218 
operator =(const cow_wrapper_client4 & rSrc)219 cow_wrapper_client4& cow_wrapper_client4::operator=( const cow_wrapper_client4& rSrc )
220 {
221     maImpl = rSrc.maImpl;
222 
223     return *this;
224 }
225 
is_default() const226 bool cow_wrapper_client4::is_default() const
227 {
228     return maImpl.same_object(theDefaultClient4::get());
229 }
230 
operator ==(const cow_wrapper_client4 & rRHS) const231 bool cow_wrapper_client4::operator==( const cow_wrapper_client4& rRHS ) const
232 {
233     return maImpl == rRHS.maImpl;
234 }
operator !=(const cow_wrapper_client4 & rRHS) const235 bool cow_wrapper_client4::operator!=( const cow_wrapper_client4& rRHS ) const
236 {
237     return maImpl != rRHS.maImpl;
238 }
operator <(const cow_wrapper_client4 & rRHS) const239 bool cow_wrapper_client4::operator<( const cow_wrapper_client4& rRHS ) const
240 {
241     return maImpl < rRHS.maImpl;
242 }
243 
244 bool BogusRefCountPolicy::s_bShouldIncrement = false;
245 bool BogusRefCountPolicy::s_bShouldDecrement = false;
246 sal_uInt32 BogusRefCountPolicy::s_nEndOfScope = 0;
247 
cow_wrapper_client5()248 cow_wrapper_client5::cow_wrapper_client5() :
249     maImpl()
250 {
251 }
252 
cow_wrapper_client5(int nX)253 cow_wrapper_client5::cow_wrapper_client5(int nX) :
254     maImpl(nX)
255 {
256 }
257 
cow_wrapper_client5(const cow_wrapper_client5 & rSrc)258 cow_wrapper_client5::cow_wrapper_client5( const cow_wrapper_client5& rSrc ) :
259     maImpl( rSrc.maImpl )
260 {
261 }
262 
cow_wrapper_client5(cow_wrapper_client5 && rSrc)263 cow_wrapper_client5::cow_wrapper_client5( cow_wrapper_client5&& rSrc ) noexcept :
264     maImpl( std::move( rSrc.maImpl ) )
265 {
266 }
267 
~cow_wrapper_client5()268 cow_wrapper_client5::~cow_wrapper_client5()
269 {
270 }
271 
operator =(const cow_wrapper_client5 & rSrc)272 cow_wrapper_client5& cow_wrapper_client5::operator=( const cow_wrapper_client5& rSrc )
273 {
274     maImpl = rSrc.maImpl;
275 
276     return *this;
277 }
278 
operator =(cow_wrapper_client5 && rSrc)279 cow_wrapper_client5& cow_wrapper_client5::operator=(cow_wrapper_client5&& rSrc) noexcept
280 {
281     maImpl = std::move( rSrc.maImpl );
282 
283     return *this;
284 }
285 
operator ==(const cow_wrapper_client5 & rSrc) const286 bool cow_wrapper_client5::operator==( const cow_wrapper_client5& rSrc ) const {
287     return maImpl == rSrc.maImpl;
288 }
289 
operator !=(const cow_wrapper_client5 & rSrc) const290 bool cow_wrapper_client5::operator!=( const cow_wrapper_client5& rSrc ) const {
291     return maImpl != rSrc.maImpl;
292 }
293 
294 } // namespace o3tltests
295 
296 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
297