File indexing completed on 2024-12-08 09:41:53
0001 /* 0002 SPDX-FileCopyrightText: 2010 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.net> 0003 SPDX-FileContributor: Stephen Kelly <stephen@kdab.com> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #include "kbihash_p.h" 0009 0010 #include <QBuffer> 0011 #include <QCoreApplication> 0012 #include <QDataStream> 0013 #include <QDebug> 0014 #include <QString> 0015 0016 int main(int argc, char **argv) 0017 { 0018 QCoreApplication app(argc, argv); 0019 KBiHash<int, QString> biHash; 0020 biHash.insert(5, "5.5"); 0021 biHash.insert(6, "6.6"); 0022 biHash.insert(7, "7.7"); 0023 biHash.insert(8, "8.8"); 0024 0025 qDebug() << "left to right"; 0026 KBiHash<int, QString>::left_iterator it1 = biHash.leftBegin(); 0027 while (it1 != biHash.leftEnd()) { 0028 qDebug() << it1.key() << it1.value(); 0029 if (it1.key() == 7) { 0030 qDebug() << "erase" << it1.key() << ":" << it1.value(); 0031 it1 = biHash.eraseLeft(it1); 0032 } else { 0033 ++it1; 0034 } 0035 } 0036 qDebug() << "right to left"; 0037 KBiHash<int, QString>::right_const_iterator it2 = biHash.rightConstBegin(); 0038 const KBiHash<int, QString>::right_const_iterator end2 = biHash.rightConstEnd(); 0039 while (it2 != end2) { 0040 qDebug() << it2.key() << it2.value(); 0041 ++it2; 0042 } 0043 0044 KBiHash<int, QString>::right_iterator it3 = biHash.rightBegin(); 0045 while (it3 != biHash.rightEnd()) { 0046 if (it3.value() == 5) { 0047 const int newValue = 55; 0048 qDebug() << "update" << it3.key() << ":" << it3.value() << "to" << newValue; 0049 biHash.updateLeft(it3, newValue); 0050 } 0051 ++it3; 0052 } 0053 0054 KBiHash<int, QString>::left_iterator it4 = biHash.leftBegin(); 0055 while (it4 != biHash.leftEnd()) { 0056 if (it4.value() == "6.6") { 0057 const QLatin1String newValue("66.66"); 0058 qDebug() << "update" << it4.key() << ":" << it4.value() << "to" << newValue; 0059 biHash.updateRight(it4, newValue); 0060 } 0061 ++it4; 0062 } 0063 0064 KBiHash<int, QString>::right_const_iterator it5 = biHash.constFindRight("5.5"); 0065 qDebug() << "found" << it5.key() << it5.value(); 0066 0067 KBiHash<int, QString>::left_const_iterator it6 = biHash.constFindLeft(6); 0068 qDebug() << "found" << it6.key() << it6.value(); 0069 0070 qDebug() << "subscript operator" << biHash[8]; 0071 0072 qDebug() << "left to right"; 0073 KBiHash<int, QString>::left_iterator it7 = biHash.leftBegin(); 0074 while (it7 != biHash.leftEnd()) { 0075 qDebug() << it7.key() << it7.value(); 0076 if (it7.key() == 7) { 0077 it7 = biHash.eraseLeft(it7); 0078 } else { 0079 ++it7; 0080 } 0081 } 0082 0083 KBiHash<int, QString> biHash2; 0084 biHash2.insert(8, "8.8"); 0085 biHash2.insert(9, "9.9"); 0086 biHash2.insert(10, "10.10"); 0087 biHash2.insert(11, "11.11"); 0088 0089 qDebug() << biHash2; 0090 qDebug() << biHash; 0091 0092 KBiHash<int, QString> biHash3 = biHash.unite(biHash2); 0093 0094 qDebug() << biHash; 0095 qDebug() << biHash3; 0096 0097 QByteArray ba; 0098 QBuffer outBuffer(&ba); 0099 outBuffer.open(QIODevice::WriteOnly); 0100 QDataStream out(&outBuffer); 0101 out << biHash; 0102 outBuffer.close(); 0103 0104 KBiHash<int, QString> biHash4; 0105 0106 QBuffer inBuffer(&ba); 0107 inBuffer.open(QIODevice::ReadOnly); 0108 QDataStream in(&inBuffer); 0109 0110 in >> biHash4; 0111 0112 qDebug() << biHash4; 0113 0114 qDebug() << (biHash == biHash4) << (biHash != biHash4); 0115 0116 QHash<int, QString> hash; 0117 hash.insert(1, "1"); 0118 hash.insert(2, "2"); 0119 hash.insert(3, "3"); 0120 0121 KBiHash<int, QString> biHash5 = KBiHash<int, QString>::fromHash(hash); 0122 0123 qDebug() << biHash5; 0124 0125 KBiHash<int, QString>::left_iterator it8 = biHash5.findLeft(1); 0126 qDebug() << (it8 == biHash.leftEnd()); 0127 qDebug() << it8.key(); 0128 // qDebug() << it8.key() << it8.value(); 0129 0130 return 0; 0131 }