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()41cow_wrapper_client2::cow_wrapper_client2() : maImpl() 42 { 43 } 44 cow_wrapper_client2(int nVal)45cow_wrapper_client2::cow_wrapper_client2( int nVal ) : 46 maImpl( cow_wrapper_client2_impl(nVal) ) 47 { 48 } 49 ~cow_wrapper_client2()50cow_wrapper_client2::~cow_wrapper_client2() 51 { 52 } 53 cow_wrapper_client2(const cow_wrapper_client2 & rSrc)54cow_wrapper_client2::cow_wrapper_client2( const cow_wrapper_client2& rSrc ) : 55 maImpl(rSrc.maImpl) 56 { 57 } 58 cow_wrapper_client2(cow_wrapper_client2 && rSrc)59cow_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)64cow_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)71cow_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)78void cow_wrapper_client2::modify( int nVal ) 79 { 80 maImpl->setValue( nVal ); 81 } 82 queryUnmodified() const83int cow_wrapper_client2::queryUnmodified() const 84 { 85 return maImpl->getValue(); 86 } 87 makeUnique()88void cow_wrapper_client2::makeUnique() 89 { 90 maImpl.make_unique(); 91 } is_unique() const92bool cow_wrapper_client2::is_unique() const 93 { 94 return maImpl.is_unique(); 95 } use_count() const96oslInterlockedCount cow_wrapper_client2::use_count() const 97 { 98 return maImpl.use_count(); 99 } swap(cow_wrapper_client2 & r)100void cow_wrapper_client2::swap( cow_wrapper_client2& r ) 101 { 102 o3tl::swap(maImpl, r.maImpl); 103 } 104 operator ==(const cow_wrapper_client2 & rRHS) const105bool cow_wrapper_client2::operator==( const cow_wrapper_client2& rRHS ) const 106 { 107 return maImpl == rRHS.maImpl; 108 } operator !=(const cow_wrapper_client2 & rRHS) const109bool cow_wrapper_client2::operator!=( const cow_wrapper_client2& rRHS ) const 110 { 111 return maImpl != rRHS.maImpl; 112 } operator <(const cow_wrapper_client2 & rRHS) const113bool cow_wrapper_client2::operator<( const cow_wrapper_client2& rRHS ) const 114 { 115 return maImpl < rRHS.maImpl; 116 } 117 118 cow_wrapper_client3()119cow_wrapper_client3::cow_wrapper_client3() : maImpl() 120 { 121 } 122 cow_wrapper_client3(int nVal)123cow_wrapper_client3::cow_wrapper_client3( int nVal ) : 124 maImpl( cow_wrapper_client2_impl(nVal) ) 125 { 126 } 127 ~cow_wrapper_client3()128cow_wrapper_client3::~cow_wrapper_client3() 129 { 130 } 131 cow_wrapper_client3(const cow_wrapper_client3 & rSrc)132cow_wrapper_client3::cow_wrapper_client3( const cow_wrapper_client3& rSrc ) : 133 maImpl(rSrc.maImpl) 134 { 135 } 136 cow_wrapper_client3(cow_wrapper_client3 && rSrc)137cow_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)142cow_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)149cow_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)156void cow_wrapper_client3::modify( int nVal ) 157 { 158 maImpl->setValue( nVal ); 159 } 160 queryUnmodified() const161int cow_wrapper_client3::queryUnmodified() const 162 { 163 return maImpl->getValue(); 164 } 165 makeUnique()166void cow_wrapper_client3::makeUnique() 167 { 168 maImpl.make_unique(); 169 } is_unique() const170bool cow_wrapper_client3::is_unique() const 171 { 172 return maImpl.is_unique(); 173 } use_count() const174oslInterlockedCount cow_wrapper_client3::use_count() const 175 { 176 return maImpl.use_count(); 177 } swap(cow_wrapper_client3 & r)178void cow_wrapper_client3::swap( cow_wrapper_client3& r ) 179 { 180 o3tl::swap(maImpl, r.maImpl); 181 } 182 operator ==(const cow_wrapper_client3 & rRHS) const183bool cow_wrapper_client3::operator==( const cow_wrapper_client3& rRHS ) const 184 { 185 return maImpl == rRHS.maImpl; 186 } operator !=(const cow_wrapper_client3 & rRHS) const187bool cow_wrapper_client3::operator!=( const cow_wrapper_client3& rRHS ) const 188 { 189 return maImpl != rRHS.maImpl; 190 } operator <(const cow_wrapper_client3 & rRHS) const191bool 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()200cow_wrapper_client4::cow_wrapper_client4() : 201 maImpl(theDefaultClient4::get()) 202 { 203 } 204 cow_wrapper_client4(int nVal)205cow_wrapper_client4::cow_wrapper_client4( int nVal ) : 206 maImpl( nVal ) 207 { 208 } 209 ~cow_wrapper_client4()210cow_wrapper_client4::~cow_wrapper_client4() 211 { 212 } 213 cow_wrapper_client4(const cow_wrapper_client4 & rSrc)214cow_wrapper_client4::cow_wrapper_client4( const cow_wrapper_client4& rSrc ) : 215 maImpl(rSrc.maImpl) 216 { 217 } 218 operator =(const cow_wrapper_client4 & rSrc)219cow_wrapper_client4& cow_wrapper_client4::operator=( const cow_wrapper_client4& rSrc ) 220 { 221 maImpl = rSrc.maImpl; 222 223 return *this; 224 } 225 is_default() const226bool cow_wrapper_client4::is_default() const 227 { 228 return maImpl.same_object(theDefaultClient4::get()); 229 } 230 operator ==(const cow_wrapper_client4 & rRHS) const231bool cow_wrapper_client4::operator==( const cow_wrapper_client4& rRHS ) const 232 { 233 return maImpl == rRHS.maImpl; 234 } operator !=(const cow_wrapper_client4 & rRHS) const235bool cow_wrapper_client4::operator!=( const cow_wrapper_client4& rRHS ) const 236 { 237 return maImpl != rRHS.maImpl; 238 } operator <(const cow_wrapper_client4 & rRHS) const239bool 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()248cow_wrapper_client5::cow_wrapper_client5() : 249 maImpl() 250 { 251 } 252 cow_wrapper_client5(int nX)253cow_wrapper_client5::cow_wrapper_client5(int nX) : 254 maImpl(nX) 255 { 256 } 257 cow_wrapper_client5(const cow_wrapper_client5 & rSrc)258cow_wrapper_client5::cow_wrapper_client5( const cow_wrapper_client5& rSrc ) : 259 maImpl( rSrc.maImpl ) 260 { 261 } 262 cow_wrapper_client5(cow_wrapper_client5 && rSrc)263cow_wrapper_client5::cow_wrapper_client5( cow_wrapper_client5&& rSrc ) noexcept : 264 maImpl( std::move( rSrc.maImpl ) ) 265 { 266 } 267 ~cow_wrapper_client5()268cow_wrapper_client5::~cow_wrapper_client5() 269 { 270 } 271 operator =(const cow_wrapper_client5 & rSrc)272cow_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)279cow_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) const286bool cow_wrapper_client5::operator==( const cow_wrapper_client5& rSrc ) const { 287 return maImpl == rSrc.maImpl; 288 } 289 operator !=(const cow_wrapper_client5 & rSrc) const290bool 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