(四) - 分析 QXmlStream.h 文件框架 - TokenType - QXmlStreamAttribute
Q_CORE_EXPORT QXmlStreamStringRef
Q_CORE_EXPORT QXmlStreamAttribute
Q_CORE_EXPORT QXmlStreamAttributes : public QVector<QXmlStreamAttribute>
Q_CORE_EXPORT QXmlStreamNamespaceDeclaration
Q_CORE_EXPORT QXmlStreamNotationDeclaration
Q_CORE_EXPORT QXmlStreamEntityDeclaration
Q_CORE_EXPORT QXmlStreamEntityResolver
Q_CORE_EXPORT QXmlStreamReader
Q_CORE_EXPORT QXmlStreamWrite
STEP1、分析代码
class Q_CORE_EXPORT QXmlStreamAttribute {
QXmlStreamStringRef m_name, m_namespaceUri, m_qualifiedName, m_value;
void *reserved;
uint m_isDefault : 1;
friend class QXmlStreamReaderPrivate;
friend class QXmlStreamAttributes;
public:
QXmlStreamAttribute();
QXmlStreamAttribute(const QString &qualifiedName, const QString &value);
QXmlStreamAttribute(const QString &namespaceUri, const QString &name, const QString &value);
QXmlStreamAttribute(const QXmlStreamAttribute &);
QXmlStreamAttribute& operator=(const QXmlStreamAttribute &);
~QXmlStreamAttribute();
inline QStringRef namespaceUri() const { return m_namespaceUri; }
inline QStringRef name() const { return m_name; }
inline QStringRef qualifiedName() const { return m_qualifiedName; }
inline QStringRef prefix() const {
return QStringRef(m_qualifiedName.string(),
m_qualifiedName.position(),
qMax(0, m_qualifiedName.size() - m_name.size() - 1));
}
inline QStringRef value() const { return m_value; }
inline bool isDefault() const { return m_isDefault; }
inline bool operator==(const QXmlStreamAttribute &other) const {
return (value() == other.value()
&& (namespaceUri().isNull() ? (qualifiedName() == other.qualifiedName())
: (namespaceUri() == other.namespaceUri() && name() == other.name())));
}
inline bool operator!=(const QXmlStreamAttribute &other) const
{ return !operator==(other); }
};
Q_DECLARE_TYPEINFO(QXmlStreamAttribute, Q_MOVABLE_TYPE);
class Q_CORE_EXPORT QXmlStreamAttributes : public QVector<QXmlStreamAttribute>
{
public:
inline QXmlStreamAttributes() {}
QStringRef value(const QString &namespaceUri, const QString &name) const;
QStringRef value(const QString &namespaceUri, QLatin1String name) const;
QStringRef value(QLatin1String namespaceUri, QLatin1String name) const;
QStringRef value(const QString &qualifiedName) const;
QStringRef value(QLatin1String qualifiedName) const;
void append(const QString &namespaceUri, const QString &name, const QString &value);
void append(const QString &qualifiedName, const QString &value);
inline bool hasAttribute(const QString &qualifiedName) const
{
return !value(qualifiedName).isNull();
}
inline bool hasAttribute(QLatin1String qualifiedName) const
{
return !value(qualifiedName).isNull();
}
inline bool hasAttribute(const QString &namespaceUri, const QString &name) const
{
return !value(namespaceUri, name).isNull();
}
using QVector<QXmlStreamAttribute>::append;
};
浙公网安备 33010602011771号