Warning, file /office/calligra/libs/pigment/KoUniqueNumberForIdServer.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002  *  Copyright (c) 2008 Cyrille Berger <cberger@cberger.net>
0003  *
0004  * This library is free software; you can redistribute it and/or
0005  * modify it under the terms of the GNU Lesser General Public
0006  * License as published by the Free Software Foundation; either
0007  * version 2.1 of the License, or (at your option) any later version.
0008  *
0009  * This library 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 GNU
0012  * Lesser General Public License for more details.
0013  *
0014  * You should have received a copy of the GNU Lesser General Public License
0015  * along with this library; see the file COPYING.LIB.  If not, write to
0016  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0017  * Boston, MA 02110-1301, USA.
0018 */
0019 
0020 #include "KoUniqueNumberForIdServer.h"
0021 
0022 #include <QHash>
0023 #include <QGlobalStatic>
0024 
0025 Q_GLOBAL_STATIC(KoUniqueNumberForIdServer, s_instance)
0026 
0027 struct Q_DECL_HIDDEN KoUniqueNumberForIdServer::Private {
0028     Private()
0029         : currentNumber(0) {}
0030 
0031     QHash<QString, quint32 > id2Number;
0032     quint32 currentNumber;
0033 };
0034 
0035 KoUniqueNumberForIdServer::KoUniqueNumberForIdServer()
0036     : d(new Private)
0037 {
0038 }
0039 
0040 KoUniqueNumberForIdServer::~KoUniqueNumberForIdServer()
0041 {
0042     delete d;
0043 }
0044 
0045 KoUniqueNumberForIdServer* KoUniqueNumberForIdServer::instance()
0046 {
0047     return s_instance;
0048 }
0049 
0050 quint32 KoUniqueNumberForIdServer::numberForId(const QString& _id)
0051 {
0052     QHash<QString, quint32>::iterator it = d->id2Number.find(_id);
0053     if (it != d->id2Number.end()) {
0054         return it.value();
0055     }
0056     quint32 number = ++d->currentNumber;
0057     d->id2Number[ _id ] = number;
0058     return number;
0059 }