/*! Returns the QTextCodec which matches the \link QTextCodec::mibEnum() MIBenum\endlink \a mib. */ QTextCodec* QTextCodec::codecForMib(int mib) { setup(); // Qt 3 used 1000 (mib for UCS2) as its identifier for the utf16 codec. Map // this correctly for compatibility. if (mib == 1000) mib = 1015; QList<QTextCodec*>::ConstIterator i; for (int i = 0; i < all->size(); ++i) { QTextCodec *cursor = all->at(i); if (cursor->mibEnum() == mib) return cursor; } return createForMib(mib); }
/*! Returns the QTextCodec which matches the \link QTextCodec::mibEnum() MIBenum\endlink \a mib. */ QTextCodec* QTextCodec::codecForMib(int mib) { QMutexLocker locker(textCodecsMutex()); setup(); if (!validCodecs()) return 0; QByteArray key = "MIB: " + QByteArray::number(mib); QTextCodecCache *cache = qTextCodecCache(); QTextCodec *codec; if (cache) { codec = cache->value(key); if (codec) return codec; } QList<QTextCodec*>::ConstIterator i; for (int i = 0; i < all->size(); ++i) { QTextCodec *cursor = all->at(i); if (cursor->mibEnum() == mib) { if (cache) cache->insert(key, cursor); return cursor; } } codec = createForMib(mib); // Qt 3 used 1000 (mib for UCS2) as its identifier for the utf16 codec. Map // this correctly for compatibility. if (!codec && mib == 1000) return codecForMib(1015); if (codec && cache) cache->insert(key, codec); return codec; }
QTextCodec *QTextCodecPlugin::create(const QString &name) { if (name.startsWith(QLatin1String("MIB: "))) return createForMib(name.mid(4).toInt()); return createForName(name.toLatin1()); }