⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kwqxmlattributes.cpp

📁 khtml在gtk上的移植版本
💻 CPP
字号:
/* * Copyright (C) 2003 Apple Computer, Inc.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  */#include "KWQXmlAttributes.h"#include "KWQXmlSimpleReader.h"#include "KWQAssertions.h"QXmlAttributes::QXmlAttributes(const char **saxStyleAttributes)    : _ref(0), _uris(0){    int length = 0;    if (saxStyleAttributes) {        for (const char **p = saxStyleAttributes; *p; p += 2) {            ASSERT(p[1]);            ++length;        }    }    _length = length;    if (!length) {        _names = 0;        _values = 0;        _uris = 0;    } else {        _names = new QString [length];        _values = new QString [length];    }    if (saxStyleAttributes) {        int i = 0;        for (const char **p = saxStyleAttributes; *p; p += 2) {            _names[i] = QString::fromUtf8(p[0]);            _values[i] = QString::fromUtf8(p[1]);            ++i;        }    }}QXmlAttributes::~QXmlAttributes(){    if (_ref && !--*_ref) {        delete _ref;        _ref = 0;    }    if (!_ref) {        delete [] _names;        delete [] _values;        delete [] _uris;    }}QXmlAttributes::QXmlAttributes(const QXmlAttributes &other)    : _ref(other._ref)    , _length(other._length)    , _names(other._names)    , _values(other._values)    , _uris(other._uris){    if (!_ref) {        _ref = new int (2);        other._ref = _ref;    } else {        ++*_ref;    }}QXmlAttributes &QXmlAttributes::operator=(const QXmlAttributes &other){    if (_ref && !--*_ref) {        delete _ref;        _ref = 0;    }    if (!_ref) {        delete [] _names;        delete [] _values;        delete [] _uris;    }    _ref = other._ref;    _length = other._length;    _names = other._names;    _values = other._values;    _uris = other._uris;    if (!_ref) {        _ref = new int (2);        other._ref = _ref;    } else {        ++*_ref;    }        return *this;}QString QXmlAttributes::localName(int index) const{    int colonPos = _names[index].find(':');    if (colonPos != -1)        // Peel off the prefix to return the localName.        return _names[index].right(_names[index].length() - colonPos - 1);    return _names[index];}QString QXmlAttributes::value(const QString &name) const{    for (int i = 0; i != _length; ++i) {        if (name == _names[i]) {            return _values[i];        }    }    return QString::null;}void QXmlAttributes::split(KWQXmlNamespace* ns){    for (int i = 0; i < _length; ++i) {        int colonPos = _names[i].find(':');        if (colonPos != -1) {            QString prefix = _names[i].left(colonPos);            QString uri;            if (prefix == "xmlns") {                // FIXME: The URI is the xmlns namespace? I seem to recall DOM lvl 3 saying something about this.            }            else                uri = ns->uriForPrefix(prefix);                        if (!uri.isEmpty()) {                if (!_uris)                    _uris = new QString[_length];                _uris[i] = uri;            }        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -