File indexing completed on 2024-04-28 11:35:45
0001 /* This file is part of the KDE project 0002 Copyright (C) 2007 Matthias Kretz <kretz@kde.org> 0003 0004 This program is free software; you can redistribute it and/or 0005 modify it under the terms of the GNU General Public License as 0006 published by the Free Software Foundation; either version 2 of 0007 the License or (at your option) version 3 of the license. 0008 0009 This program is distributed in the hope that it will be useful, 0010 but WITHOUT ANY WARRANTY; without even the implied warranty of 0011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0012 GNU General Public License for more details. 0013 0014 You should have received a copy of the GNU General Public License 0015 along with this program. If not, see <http://www.gnu.org/licenses/>. 0016 0017 */ 0018 0019 #include <kglobal.h> 0020 #include <QDebug> 0021 0022 class A 0023 { 0024 public: 0025 A() : i(1) {} 0026 int i; 0027 }; 0028 0029 K_GLOBAL_STATIC(A, globalA) 0030 K_GLOBAL_STATIC(A, globalA2) 0031 0032 class B 0033 { 0034 public: 0035 ~B() 0036 { 0037 Q_ASSERT(globalA.isDestroyed()); 0038 qDebug() << "All global statics were successfully destroyed."; 0039 } 0040 }; 0041 0042 Q_GLOBAL_STATIC(B, globalB) 0043 0044 int main(int, char **) 0045 { 0046 Q_ASSERT(globalB); 0047 0048 Q_ASSERT(!globalA.isDestroyed()); 0049 A *a = globalA; 0050 Q_ASSERT(a); 0051 A &x = *globalA; 0052 Q_ASSERT(a == &x); 0053 Q_ASSERT(a == globalA); 0054 Q_ASSERT(globalA->i == 1); 0055 Q_ASSERT(!globalA.isDestroyed()); 0056 0057 Q_ASSERT(!globalA2.isDestroyed()); 0058 Q_ASSERT(globalA2); 0059 Q_ASSERT(globalA2->i == 1); 0060 Q_ASSERT(!globalA2.isDestroyed()); 0061 globalA2.destroy(); 0062 Q_ASSERT(globalA2.isDestroyed()); 0063 0064 // silence warnings 0065 Q_UNUSED(globalB) 0066 Q_UNUSED(a) 0067 Q_UNUSED(x) 0068 0069 return 0; 0070 }