亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? qsettings.cpp

?? QT 開發環境里面一個很重要的文件
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
/******************************************************************************** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.**** This file is part of the QtCore module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include <qdebug.h>#include "qplatformdefs.h"#include "qsettings.h"#ifndef QT_NO_SETTINGS#include "qsettings_p.h"#include "qcache.h"#include "qfile.h"#include "qdir.h"#include "qfileinfo.h"#include "qmutex.h"#include "qlibraryinfo.h"#include "qtemporaryfile.h"#ifndef QT_NO_GEOM_VARIANT#include "qsize.h"#include "qpoint.h"#include "qrect.h"#endif // !QT_NO_GEOM_VARIANT#ifndef QT_NO_QOBJECT#include "qcoreapplication.h"#ifdef Q_OS_WIN // for homedirpath reading from registry#include "qt_windows.h"#include "qlibrary.h"#endif // Q_OS_WIN#endif // QT_NO_QOBJECT#include <stdlib.h>#ifndef CSIDL_COMMON_APPDATA#define CSIDL_COMMON_APPDATA	0x0023  // All Users\Application Data#endif#ifndef CSIDL_APPDATA#define CSIDL_APPDATA		0x001a	// <username>\Application Data#endif// ************************************************************************// QConfFile/*    QConfFile objects are explicitly shared within the application.    This ensures that modification to the settings done through one    QSettings object are immediately reflected in other setting    objects of the same application.*/struct QConfFileCustomFormat{    QString extension;    QSettings::ReadFunc readFunc;    QSettings::WriteFunc writeFunc;    Qt::CaseSensitivity caseSensitivity;};typedef QHash<QString, QConfFile *> ConfFileHash;typedef QCache<QString, QConfFile> ConfFileCache;typedef QHash<int, QString> PathHash;typedef QVector<QConfFileCustomFormat> CustomFormatVector;Q_GLOBAL_STATIC(ConfFileHash, usedHashFunc)Q_GLOBAL_STATIC(ConfFileCache, unusedCacheFunc)Q_GLOBAL_STATIC(PathHash, pathHashFunc)Q_GLOBAL_STATIC(CustomFormatVector, customFormatVectorFunc)Q_GLOBAL_STATIC(QMutex, globalMutex)#ifndef Q_OS_WINinline bool qt_isEvilFsTypeName(const char *name){    return (qstrncmp(name, "nfs", 3) == 0            || qstrncmp(name, "autofs", 6) == 0            || qstrncmp(name, "cachefs", 7) == 0);}#if defined(Q_OS_BSD4)# include <sys/param.h># include <sys/mount.h>static bool isLikelyToBeNfs(int handle){    struct statfs buf;    if (fstatfs(handle, &buf) != 0)        return false;    return qt_isEvilFsTypeName(buf.f_fstypename);}#elif (defined(Q_OS_LINUX) || defined(Q_OS_HURD)) && !defined(QT_LSB)# include <sys/vfs.h># ifndef NFS_SUPER_MAGIC#  define NFS_SUPER_MAGIC       0x00006969# endif# ifndef AUTOFS_SUPER_MAGIC#  define AUTOFS_SUPER_MAGIC    0x00000187# endif# ifndef AUTOFSNG_SUPER_MAGIC#  define AUTOFSNG_SUPER_MAGIC  0x7d92b1a0# endifstatic bool isLikelyToBeNfs(int handle){    struct statfs buf;    if (fstatfs(handle, &buf) != 0)        return false;    return buf.f_type == NFS_SUPER_MAGIC           || buf.f_type == AUTOFS_SUPER_MAGIC           || buf.f_type == AUTOFSNG_SUPER_MAGIC;}#elif defined(Q_OS_SOLARIS) || defined(Q_OS_IRIX) || defined(Q_OS_AIX) || defined(Q_OS_HPUX) \      || defined(Q_OS_OSF) || defined(Q_OS_QNX) || defined(Q_OS_QNX6) || defined(Q_OS_SCO) \      || defined(Q_OS_UNIXWARE) || defined(Q_OS_RELIANT)# include <sys/statvfs.h>static bool isLikelyToBeNfs(int handle){    struct statvfs buf;    if (fstatvfs(handle, &buf) != 0)        return false;    return qt_isEvilFsTypeName(buf.f_basetype);}#elsestatic inline bool isLikelyToBeNfs(int /* handle */){    return true;}#endifstatic bool unixLock(int handle, int lockType){    /*        NFS hangs on the fcntl() call below when statd or lockd isn't        running. There's no way to detect this. Our work-around for        now is to disable locking when we detect NFS (or AutoFS or        CacheFS, which are probably wrapping NFS).    */    if (isLikelyToBeNfs(handle))        return false;    struct flock fl;    fl.l_whence = SEEK_SET;    fl.l_start = 0;    fl.l_len = 0;    fl.l_type = lockType;    return fcntl(handle, F_SETLKW, &fl) == 0;}#endifQConfFile::QConfFile(const QString &fileName, bool _userPerms)    : name(fileName), size(0), ref(1), userPerms(_userPerms){    usedHashFunc()->insert(name, this);}ParsedSettingsMap QConfFile::mergedKeyMap() const{    ParsedSettingsMap result = originalKeys;    ParsedSettingsMap::const_iterator i;    for (i = removedKeys.begin(); i != removedKeys.end(); ++i)        result.remove(i.key());    for (i = addedKeys.begin(); i != addedKeys.end(); ++i)        result.insert(i.key(), i.value());    return result;}QConfFile *QConfFile::fromName(const QString &fileName, bool _userPerms){    QString absPath = QFileInfo(fileName).absoluteFilePath();    ConfFileHash *usedHash = usedHashFunc();    ConfFileCache *unusedCache = unusedCacheFunc();    QConfFile *confFile;    QMutexLocker locker(globalMutex());    if (!(confFile = usedHash->value(absPath))) {        if ((confFile = unusedCache->take(absPath)))            usedHash->insert(absPath, confFile);    }    if (confFile) {        confFile->ref.ref();        return confFile;    }    return new QConfFile(absPath, _userPerms);}void QConfFile::clearCache(){    QMutexLocker locker(globalMutex());    unusedCacheFunc()->clear();}// ************************************************************************// QSettingsPrivateQSettingsPrivate::QSettingsPrivate()    : spec(0), fallbacks(true), pendingChanges(false), status(QSettings::NoError){}QSettingsPrivate::~QSettingsPrivate(){}QString QSettingsPrivate::actualKey(const QString &key) const{    QString n = normalizedKey(key);    Q_ASSERT_X(!n.isEmpty(), "QSettings", "empty key");    n.prepend(groupPrefix);    return n;}/*    Returns a string that never starts nor ends with a slash (or an    empty string). Examples:            "foo"            becomes   "foo"            "/foo//bar///"   becomes   "foo/bar"            "///"            becomes   ""    This function is optimized to avoid a QString deep copy in the    common case where the key is already normalized.*/QString QSettingsPrivate::normalizedKey(const QString &key){    QString result = key;    int i = 0;    while (i < result.size()) {        while (result.at(i) == QLatin1Char('/')) {            result.remove(i, 1);            if (i == result.size())                goto after_loop;        }        while (result.at(i) != QLatin1Char('/')) {            ++i;            if (i == result.size())                return result;        }        ++i; // leave the slash alone    }after_loop:    if (!result.isEmpty())        result.truncate(i - 1); // remove the trailing slash    return result;}// see also qsettings_win.cpp and qsettings_mac.cpp#if !defined(Q_OS_WIN) && !defined(Q_OS_MAC)QSettingsPrivate *QSettingsPrivate::create(QSettings::Format format, QSettings::Scope scope,                                           const QString &organization, const QString &application){    return new QConfFileSettingsPrivate(format, scope, organization, application);}#endif#if !defined(Q_OS_WIN)QSettingsPrivate *QSettingsPrivate::create(const QString &fileName, QSettings::Format format){    return new QConfFileSettingsPrivate(fileName, format);}#endifvoid QSettingsPrivate::processChild(QString key, ChildSpec spec, QMap<QString, QString> &result){    if (spec != AllKeys) {        int slashPos = key.indexOf(QLatin1Char('/'));        if (slashPos == -1) {            if (spec != ChildKeys)                return;        } else {            if (spec != ChildGroups)                return;            key.truncate(slashPos);        }    }    result.insert(key, QString());}void QSettingsPrivate::beginGroupOrArray(const QSettingsGroup &group){    groupStack.push(group);    if (!group.name().isEmpty()) {        groupPrefix += group.name();        groupPrefix += QLatin1Char('/');    }}/*    We only set an error if there isn't one set already. This way the user always gets the    first error that occurred. We always allow clearing errors.*/void QSettingsPrivate::setStatus(QSettings::Status status) const{    if (status == QSettings::NoError || this->status == QSettings::NoError)        this->status = status;}void QSettingsPrivate::update(){    flush();    pendingChanges = false;}void QSettingsPrivate::requestUpdate(){    if (!pendingChanges) {        pendingChanges = true;#ifndef QT_NO_QOBJECT        Q_Q(QSettings);        QCoreApplication::postEvent(q, new QEvent(QEvent::UpdateRequest));#else        update();#endif    }}QStringList QSettingsPrivate::variantListToStringList(const QVariantList &l){    QStringList result;    QVariantList::const_iterator it = l.constBegin();    for (; it != l.constEnd(); ++it)        result.append(variantToString(*it));    return result;}QVariant QSettingsPrivate::stringListToVariantList(const QStringList &l){    QStringList outStringList = l;    for (int i = 0; i < outStringList.count(); ++i) {        const QString &str = outStringList.at(i);        if (str.startsWith(QLatin1Char('@'))) {            if (str.length() >= 2 && str.at(1) == QLatin1Char('@')) {                outStringList[i].remove(0, 1);            } else {                QVariantList variantList;                for (int j = 0; j < l.count(); ++j)                    variantList.append(stringToVariant(l.at(j)));                return variantList;            }        }    }    return outStringList;}QString QSettingsPrivate::variantToString(const QVariant &v){    QString result;    switch (v.type()) {        case QVariant::Invalid:            result = QLatin1String("@Invalid()");            break;        case QVariant::ByteArray: {            QByteArray a = v.toByteArray();            result = QLatin1String("@ByteArray(");            result += QString::fromLatin1(a.constData(), a.size());            result += QLatin1Char(')');            break;        }        case QVariant::String:        case QVariant::LongLong:        case QVariant::ULongLong:        case QVariant::Int:        case QVariant::UInt:        case QVariant::Bool:        case QVariant::Double:        case QVariant::KeySequence: {            result = v.toString();            if (result.startsWith(QLatin1Char('@')))                result.prepend(QLatin1Char('@'));            break;        }#ifndef QT_NO_GEOM_VARIANT        case QVariant::Rect: {            QRect r = qvariant_cast<QRect>(v);            result += QLatin1String("@Rect(");            result += QString::number(r.x());            result += QLatin1Char(' ');            result += QString::number(r.y());            result += QLatin1Char(' ');            result += QString::number(r.width());            result += QLatin1Char(' ');            result += QString::number(r.height());

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜一区二区三区视频| 国产91精品入口| 福利一区福利二区| 欧美日韩国产精选| 日韩美女久久久| 国产精品1区2区3区| 欧美裸体一区二区三区| 日韩理论片在线| 国产电影精品久久禁18| 日韩一级片网站| 亚洲一区在线看| 成人激情免费网站| 国产午夜精品福利| 九色porny丨国产精品| 欧美午夜宅男影院| 亚洲日本免费电影| 成人国产一区二区三区精品| 日韩一级二级三级| 日韩在线一二三区| 精品视频在线看| 亚洲一区视频在线观看视频| 成人一级视频在线观看| 久久婷婷成人综合色| 久久精品久久精品| 欧美成人激情免费网| 午夜精品国产更新| 欧美精品在线观看播放| 亚洲国产综合91精品麻豆| 在线日韩av片| 一区二区三区四区乱视频| 91蝌蚪porny| 一区二区三区在线观看国产| 99re这里都是精品| 1区2区3区国产精品| 91麻豆国产自产在线观看| 中文字幕视频一区| 97精品久久久午夜一区二区三区| 国产欧美综合在线| 97久久人人超碰| 亚洲激情图片qvod| 欧美亚洲高清一区| 午夜成人在线视频| 日韩精品一区二区三区视频播放| 紧缚捆绑精品一区二区| 久久久久国产精品人| 成人激情免费电影网址| 亚洲精品乱码久久久久久黑人| 91国产免费看| 日韩国产精品久久| 欧美xfplay| 国产suv精品一区二区三区| 国产精品国产馆在线真实露脸| 色婷婷av一区二区| 亚洲h在线观看| 亚洲精品一线二线三线无人区| 国产乱理伦片在线观看夜一区| 久久精品视频在线免费观看| 99免费精品视频| 丝袜脚交一区二区| 久久精品在这里| 欧美性大战xxxxx久久久| 久久国产免费看| 中文字幕一区在线| 91麻豆精品国产综合久久久久久| 国产精品亚洲专一区二区三区 | 波多野结衣91| 亚洲国产视频一区| 国产亚洲欧美一级| 欧美日韩精品电影| 国产高清精品久久久久| 亚洲韩国一区二区三区| 国产亚洲精品福利| 欧美裸体bbwbbwbbw| 国产成人激情av| 日韩1区2区日韩1区2区| 国产精品你懂的在线| 91精品国产综合久久久久久久| 国产a区久久久| 五月激情丁香一区二区三区| 日本一区二区三区dvd视频在线| 在线亚洲高清视频| 成人免费视频caoporn| 日韩高清不卡一区二区| 亚洲人成影院在线观看| 欧美成人a∨高清免费观看| 在线精品视频免费播放| 国产电影一区在线| 韩日av一区二区| 日本三级韩国三级欧美三级| 夜夜爽夜夜爽精品视频| 欧美激情一区二区| 精品日韩一区二区三区| 欧美久久久久久久久中文字幕| 成人免费看视频| 黄网站免费久久| 丝袜美腿亚洲综合| 亚洲国产精品自拍| 一区二区三区欧美亚洲| 中文字幕精品—区二区四季| 欧美电影免费观看高清完整版 | 精品免费99久久| 在线观看91av| 欧美综合天天夜夜久久| 91一区二区在线| 成人免费高清视频| 成人午夜免费av| 国产99久久久国产精品潘金| 九九热在线视频观看这里只有精品| 亚洲福中文字幕伊人影院| 亚洲精品免费在线| 一区二区三区不卡视频在线观看| 中文文精品字幕一区二区| 国产三级久久久| 久久久.com| 中文字幕亚洲一区二区av在线| 中文幕一区二区三区久久蜜桃| 日本一区二区免费在线| 国产视频一区在线播放| 欧美极品美女视频| 中文字幕在线一区| 亚洲精品国产成人久久av盗摄| 一区二区三区四区蜜桃| 亚洲福利一区二区| 久久91精品国产91久久小草 | 亚洲成人av电影在线| 亚洲一区二区三区四区五区黄 | 成人av网站在线| av电影一区二区| 日本高清免费不卡视频| 欧美日本国产一区| 日韩精品一区在线| 中文字幕av一区二区三区高| 日韩美女视频一区二区| 舔着乳尖日韩一区| 国产精品一区二区久激情瑜伽| 99久久综合精品| 欧美日韩国产乱码电影| 久久精品一区二区三区不卡| 中文字幕在线不卡| 日韩精品国产欧美| 成人性色生活片| 欧美精品高清视频| 欧美韩日一区二区三区四区| 亚洲尤物在线视频观看| 国产在线麻豆精品观看| 99精品视频一区| 777奇米四色成人影色区| 亚洲国产精品传媒在线观看| 一区二区在线看| 国产一区二区影院| 欧美色区777第一页| 久久婷婷色综合| 亚洲.国产.中文慕字在线| 国产成人精品午夜视频免费| 欧美日韩视频一区二区| 国产视频一区在线观看| 视频在线观看国产精品| 91在线porny国产在线看| 日韩视频免费直播| 中文字幕亚洲一区二区va在线| 麻豆精品视频在线观看免费| 9i看片成人免费高清| 日韩美女视频在线| 亚洲一区二区欧美激情| 成人免费高清视频| 精品久久久久久久久久久久包黑料 | 久久久久一区二区三区四区| 亚洲伊人伊色伊影伊综合网| 国产风韵犹存在线视精品| 欧美一区二区三区婷婷月色 | 日韩高清在线不卡| 91丨porny丨国产入口| 久久婷婷国产综合精品青草| 日韩高清一级片| 欧美曰成人黄网| 中文字幕的久久| 激情综合一区二区三区| 欧美一区二区三区色| 五月天网站亚洲| 欧美影视一区二区三区| 亚洲精品美国一| 色综合天天性综合| 国产精品麻豆久久久| 国产成人av影院| 国产亚洲欧洲一区高清在线观看| 毛片一区二区三区| 3d动漫精品啪啪1区2区免费| 亚洲风情在线资源站| 日本高清不卡视频| 亚洲综合久久久| 91福利视频久久久久| 亚洲情趣在线观看| 色乱码一区二区三区88| 综合自拍亚洲综合图不卡区| 国产东北露脸精品视频| 国产精品素人一区二区| 成人免费观看男女羞羞视频| **欧美大码日韩| 在线观看一区二区视频| 亚洲成人手机在线|