亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲欧洲日韩一区二区三区| 欧美性xxxxxx少妇| 蜜臀久久久久久久| 亚洲va在线va天堂| 亚洲国产美女搞黄色| 亚洲尤物在线视频观看| 亚洲国产美女搞黄色| 亚洲成在线观看| 天天综合色天天综合色h| 日韩电影在线观看网站| 日本美女一区二区| 国产麻豆91精品| 国产99精品国产| 91视频免费播放| 欧美日韩一区二区三区视频| 欧美色图在线观看| 欧美成人性福生活免费看| 精品久久久久av影院 | 欧美日韩第一区日日骚| 欧美性色欧美a在线播放| 欧美美女一区二区在线观看| 91精品国产综合久久婷婷香蕉| 日韩精品一区二区三区三区免费 | 国产麻豆视频精品| eeuss影院一区二区三区 | 精品国产不卡一区二区三区| 久久久国产一区二区三区四区小说| 欧美国产精品劲爆| 亚洲一区二区三区小说| 黄一区二区三区| 97久久超碰国产精品电影| 欧美猛男gaygay网站| 久久久久久久久久看片| 亚洲综合免费观看高清在线观看| 日韩国产欧美三级| 99视频精品全部免费在线| 欧美日韩国产a| 国产精品美女一区二区| 午夜电影一区二区| 99re这里只有精品首页| 日韩一级二级三级| 亚洲男女一区二区三区| 国产一二三精品| 欧美亚洲精品一区| 日本一区二区三区四区| 日韩精品欧美精品| 色香蕉成人二区免费| xvideos.蜜桃一区二区| 亚洲国产一区在线观看| av男人天堂一区| 欧美电影免费观看完整版| 亚洲va天堂va国产va久| www.欧美日韩国产在线| 久久久一区二区三区| 免费成人在线网站| 欧美日韩久久久| 亚洲天天做日日做天天谢日日欢 | 91欧美一区二区| 国产精品免费视频观看| 寂寞少妇一区二区三区| 欧美高清激情brazzers| 亚洲一区二区三区四区的| 91在线播放网址| 国产精品福利av| 成人性生交大片免费看视频在线| 26uuu久久天堂性欧美| 精品在线免费视频| 欧美一二三在线| 日本亚洲三级在线| 7777女厕盗摄久久久| 亚洲成人黄色影院| 欧美日韩成人一区| 日韩精品每日更新| 欧美精品久久一区二区三区| 一区二区三区四区av| 色婷婷综合五月| 亚洲欧美日韩国产成人精品影院 | 欧美日韩视频在线第一区| 亚洲综合免费观看高清完整版在线| 不卡的电视剧免费网站有什么| 国产精品私人自拍| 91天堂素人约啪| 亚洲精品中文在线| 欧美日韩情趣电影| 麻豆精品国产91久久久久久| 日韩亚洲电影在线| 国产精品一区二区无线| 国产目拍亚洲精品99久久精品| 国产精品18久久久久久久久 | 欧美a一区二区| www国产成人免费观看视频 深夜成人网| 狠狠色综合日日| 亚洲桃色在线一区| 欧美日韩国产影片| 精品亚洲porn| 国产精品伦理一区二区| 在线观看免费视频综合| 秋霞影院一区二区| 国产精品丝袜一区| 欧美少妇性性性| 国产美女精品人人做人人爽 | 全国精品久久少妇| 久久久午夜电影| 色诱视频网站一区| 久久99国产精品久久99 | 91激情五月电影| 日日摸夜夜添夜夜添精品视频| 亚洲精品在线免费观看视频| 成人免费看黄yyy456| 亚洲不卡av一区二区三区| 久久伊人中文字幕| 欧美日韩国产高清一区二区| 久久99久久精品欧美| 亚洲欧洲综合另类| 久久新电视剧免费观看| 日本乱码高清不卡字幕| 国产原创一区二区三区| 亚洲在线成人精品| 国产精品伦理在线| 欧美一级一区二区| 一本到三区不卡视频| 韩国精品免费视频| 日韩中文字幕91| 中文字幕一区二区三| 2020国产精品久久精品美国| 欧美日韩一区国产| 91在线无精精品入口| 国产一区亚洲一区| 日本不卡一区二区三区高清视频| 国产精品护士白丝一区av| 久久综合久久鬼色中文字| 91精品国产丝袜白色高跟鞋| 色综合久久久久久久久久久| 国产成a人亚洲| 国内久久婷婷综合| 久久国产精品72免费观看| 日日噜噜夜夜狠狠视频欧美人| 1024精品合集| 亚洲欧洲成人精品av97| 国产视频在线观看一区二区三区| 欧美xxxx在线观看| 日韩欧美综合一区| 91麻豆精品久久久久蜜臀| 一本大道久久精品懂色aⅴ| a级精品国产片在线观看| 成人激情小说乱人伦| 粉嫩av一区二区三区粉嫩| 国产精品18久久久久| 国产美女主播视频一区| 国产高清久久久| 国产精品影音先锋| 国产一区二区美女诱惑| 精品影院一区二区久久久| 日本欧美大码aⅴ在线播放| 石原莉奈在线亚洲二区| 全部av―极品视觉盛宴亚洲| 日本不卡一区二区三区| 日韩电影在线观看电影| 天天操天天干天天综合网| 免费在线一区观看| 久久精品国产精品青草| 久久国产欧美日韩精品| 国产一区二区导航在线播放| 精品一二三四区| 成人午夜看片网址| 99视频精品免费视频| 日本高清不卡aⅴ免费网站| 欧美丝袜丝交足nylons| 69堂国产成人免费视频| 久久这里只有精品视频网| 久久久久久久国产精品影院| 国产欧美精品国产国产专区| 国产精品成人一区二区艾草 | 日韩国产精品久久久久久亚洲| 久久av资源网| av亚洲精华国产精华精华| 在线视频欧美精品| 日韩精品一区国产麻豆| 国产精品国产三级国产普通话蜜臀 | 欧美大片一区二区三区| 国产三级三级三级精品8ⅰ区| 国产精品欧美经典| 亚洲一卡二卡三卡四卡无卡久久 | 精品一区二区国语对白| 成人网男人的天堂| 欧美日韩综合色| 精品日本一线二线三线不卡 | 91黄视频在线观看| 欧美大片在线观看一区| 亚洲摸摸操操av| 精品一区二区三区av| 色诱亚洲精品久久久久久| 欧美一级欧美三级在线观看| 中文字幕一区在线观看视频| 三级影片在线观看欧美日韩一区二区| 国产精品亚洲专一区二区三区| 欧美性视频一区二区三区| 国产亚洲欧美在线| 日韩黄色免费网站| 99精品欧美一区|