00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef LOG4QT_PROPERTIES_H
00026 #define LOG4QT_PROPERTIES_H
00027
00028
00029
00030
00031
00032
00033 #include <QtCore/QHash>
00034 #include <QtCore/QStringList>
00035
00036
00037
00038
00039
00040
00041 class QIODevice;
00042 class QSettings;
00043
00044
00045 namespace Log4Qt
00046 {
00050 class Properties : public QHash<QString, QString>
00051 {
00052 public:
00053 Properties(Properties *pDefaultProperties = 0);
00054
00055
00056
00057
00058 public:
00059 Properties *defaultProperties() const;
00060 QString property(const QString &rKey) const;
00061 QString property(const QString &rKey,
00062 const QString &rDefaultValue) const;
00063 void setDefaultProperties(Properties *pDefault);
00064 void setProperty(const QString &rKey,
00065 const QString &rValue);
00066
00067
00068 void load(QIODevice *pDevice);
00069
00089 void load(const QSettings &rSettings);
00090
00091 QStringList propertyNames() const;
00092
00093
00094 private:
00095 void parseProperty(const QString &rProperty,
00096 int line);
00097 static int hexDigitValue(const QChar &rDigit);
00098 static QString trimLeft(const QString &rString);
00099
00100 private:
00101 Properties *mpDefaultProperties;
00102 static const char msEscapeChar;
00103 static const char *msValueEscapeCodes;
00104 static const char *msValueEscapeChars;
00105 static const char *msKeyEscapeCodes;
00106 static const char *msKeyEscapeChars;
00107 };
00108
00109
00110
00111
00112
00113
00114 #ifndef QT_NO_DEBUG_STREAM
00115
00131 QDebug operator<<(QDebug debug,
00132 const Properties &rProperties);
00133 #endif // QT_NO_DEBUG_STREAM
00134
00135
00136
00137
00138
00139
00140 inline Properties::Properties(Properties *pDefaultProperties) :
00141 mpDefaultProperties(pDefaultProperties)
00142 {}
00143
00144 inline Properties *Properties::defaultProperties() const
00145 { return mpDefaultProperties; }
00146
00147 inline void Properties::setDefaultProperties(Properties *pDefaultProperties)
00148 { mpDefaultProperties = pDefaultProperties; }
00149
00150 inline void Properties::setProperty(const QString &rKey,
00151 const QString &rValue)
00152 { insert(rKey, rValue); }
00153
00154
00155 }
00156
00157
00158 Q_DECLARE_TYPEINFO(Log4Qt::Properties, Q_MOVABLE_TYPE);
00159
00160
00161 #endif // LOG4QT_PROPERTIES_H