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

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

?? dom_elementimpl.h

?? It is WEB browser core module with source code. Very good!
?? H
字號:
/*
 * This file is part of the DOM implementation for KDE.
 *
 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
 *           (C) 1999 Antti Koivisto (koivisto@kde.org)
 *           (C) 2001 Peter Kelly (pmk@post.com)
 *           (C) 2001 Dirk Mueller (mueller@kde.org)
 * Copyright (C) 2003 Apple Computer, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public License
 * along with this library; see the file COPYING.LIB.  If not, write to
 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 *
 */
#ifndef _DOM_ELEMENTImpl_h_
#define _DOM_ELEMENTImpl_h_

#include "dom_nodeimpl.h"
#include "dom/dom_element.h"
#include "xml/dom_stringimpl.h"
#include "misc/shared.h"

#if APPLE_CHANGES
#ifdef __OBJC__
#define id id_AVOID_KEYWORD
#endif
#endif

namespace khtml {
    class CSSStyleSelector;
}

namespace DOM {

class ElementImpl;
class DocumentImpl;
class NamedAttrMapImpl;
class AtomicStringList;

// this has no counterpart in DOM, purely internal
// representation of the nodevalue of an Attr.
// the actual Attr (AttrImpl) with its value as textchild
// is only allocated on demand by the DOM bindings.
// Any use of AttrImpl inside khtml should be avoided.
class AttributeImpl : public khtml::Shared<AttributeImpl>
{
    friend class NamedAttrMapImpl;
    friend class ElementImpl;
    friend class AttrImpl;

public:
    // null value is forbidden !
    AttributeImpl(NodeImpl::Id id, const AtomicString& value)
        : m_id(id), _value(value), _impl(0)
        { };
    virtual ~AttributeImpl() {};
    
    const AtomicString& value() const { return _value; }
    const AtomicString& prefix() const { return _prefix; }
    NodeImpl::Id id() const { return m_id; }
    AttrImpl* attrImpl() const { return _impl; }

    bool isNull() const { return _value.isNull(); }
    bool isEmpty() const { return _value.isEmpty(); }
    
    virtual AttributeImpl* clone(bool preserveDecl=true) const;

private:
    void setValue(const AtomicString& value) {
        _value = value;
    }
    void setPrefix(const AtomicString& prefix) {
        _prefix = prefix;
    }
    void allocateImpl(ElementImpl* e);

protected:
    NodeImpl::Id m_id;
    AtomicString _prefix;
    AtomicString _value;
    AttrImpl* _impl;
};

// Attr can have Text and EntityReference children
// therefore it has to be a fullblown Node. The plan
// is to dynamically allocate a textchild and store the
// resulting nodevalue in the AttributeImpl upon
// destruction. however, this is not yet implemented.
class AttrImpl : public NodeBaseImpl
{
    friend class ElementImpl;
    friend class NamedAttrMapImpl;

public:
    AttrImpl(ElementImpl* element, DocumentPtr* docPtr, AttributeImpl* a);
    ~AttrImpl();

private:
    AttrImpl(const AttrImpl &other);
    AttrImpl &operator = (const AttrImpl &other);
public:

    // DOM methods & attributes for Attr
    bool specified() const { return m_specified; }
    ElementImpl* ownerElement() const { return m_element; }
    AttributeImpl* attrImpl() const { return m_attribute; }

    //DOMString value() const;
    void setValue( const DOMString &v, int &exceptioncode );

    // DOM methods overridden from  parent classes
    virtual DOMString nodeName() const;
    virtual unsigned short nodeType() const;
    virtual DOMString prefix() const;
    virtual void setPrefix(const DOMString &_prefix, int &exceptioncode );

    virtual DOMString nodeValue() const;
    virtual void setNodeValue( const DOMString &, int &exceptioncode );
    virtual NodeImpl *cloneNode ( bool deep );

    // Other methods (not part of DOM)
    virtual bool isAttributeNode() const { return true; }
    virtual bool childAllowed( NodeImpl *newChild );
    virtual bool childTypeAllowed( unsigned short type );

    virtual DOMString toString() const;

#if APPLE_CHANGES
    static Attr createInstance(AttrImpl *impl);
#endif

protected:
    ElementImpl* m_element;
    AttributeImpl* m_attribute;
};


class ElementImpl : public NodeBaseImpl
{
    friend class DocumentImpl;
    friend class NamedAttrMapImpl;
    friend class AttrImpl;
    friend class NodeImpl;
    friend class khtml::CSSStyleSelector;
public:
    ElementImpl(DocumentPtr *doc);
    ~ElementImpl();

    // Used to quickly determine whether or not an element has a given CSS class.
    virtual const AtomicStringList* getClassList() const;
    const AtomicString& getIDAttribute() const;
    const AtomicString& getAttribute( NodeImpl::Id id ) const;
    const AtomicString& getAttribute(const DOMString& localName) const { return getAttributeNS(QString::null, localName); }
    const AtomicString& getAttributeNS(const DOMString &namespaceURI,
                                       const DOMString &localName) const;
    void setAttribute( NodeImpl::Id id, DOMStringImpl* value, int &exceptioncode );
    void removeAttribute( NodeImpl::Id id, int &exceptioncode );
    bool hasAttributes() const;
    
    DOMString prefix() const { return m_prefix; }
    void setPrefix(const DOMString &_prefix, int &exceptioncode );

    // DOM methods overridden from  parent classes
    virtual DOMString tagName() const;
    virtual unsigned short nodeType() const;
    virtual NodeImpl *cloneNode ( bool deep );
    virtual DOMString nodeName() const;
    virtual bool isElementNode() const { return true; }
    virtual void insertedIntoDocument();
    virtual void removedFromDocument();

    // convenience methods which ignore exceptions
    void setAttribute (NodeImpl::Id id, const DOMString &value);

    NamedAttrMapImpl* attributes(bool readonly = false) const;

    // This method is called whenever an attribute is added, changed or removed.
    virtual void attributeChanged(AttributeImpl* attr, bool preserveDecls = false) {}

    // not part of the DOM
    void setAttributeMap ( NamedAttrMapImpl* list );

    // State of the element.
    virtual QString state() { return QString::null; }

    virtual void attach();
    virtual khtml::RenderStyle *styleForRenderer(khtml::RenderObject *parent);
    virtual khtml::RenderObject *createRenderer(RenderArena *, khtml::RenderStyle *);
    virtual void recalcStyle( StyleChange = NoChange );

    virtual void mouseEventHandler( MouseEvent */*ev*/, bool /*inside*/ ) {};
    virtual bool childAllowed( NodeImpl *newChild );
    virtual bool childTypeAllowed( unsigned short type );
 
    virtual AttributeImpl* createAttribute(NodeImpl::Id id, DOMStringImpl* value);
    
    void dispatchAttrRemovalEvent(AttributeImpl *attr);
    void dispatchAttrAdditionEvent(AttributeImpl *attr);

    virtual void accessKeyAction(bool sendToAnyEvent) { };

    virtual DOMString toString() const;

    virtual bool isURLAttribute(AttributeImpl *attr) const;
    
#ifndef NDEBUG
    virtual void dump(QTextStream *stream, QString ind = "") const;
#endif

#if APPLE_CHANGES
    static Element createInstance(ElementImpl *impl);
#endif

#ifndef NDEBUG
    virtual void formatForDebugger(char *buffer, unsigned length) const;
#endif

protected:
    virtual void createAttributeMap() const;
    DOMString openTagStartToString() const;

private:
    void updateId(const AtomicString& oldId, const AtomicString& newId);

    virtual void updateStyleAttributeIfNeeded() const {};

protected: // member variables
    mutable NamedAttrMapImpl *namedAttrMap;
    DOMStringImpl *m_prefix;
};


class XMLElementImpl : public ElementImpl
{

public:
    XMLElementImpl(DocumentPtr *doc, DOMStringImpl *_tagName);
    XMLElementImpl(DocumentPtr *doc, DOMStringImpl *_qualifiedName, DOMStringImpl *_namespaceURI);
    ~XMLElementImpl();

    // DOM methods overridden from  parent classes

    virtual DOMString localName() const;
    virtual NodeImpl *cloneNode ( bool deep );

    // Other methods (not part of DOM)
    virtual bool isXMLElementNode() const { return true; }
    virtual Id id() const { return m_id; }

protected:
    Id m_id;
};

// the map of attributes of an element
class NamedAttrMapImpl : public NamedNodeMapImpl
{
    friend class ElementImpl;
public:
    NamedAttrMapImpl(ElementImpl *e);
    virtual ~NamedAttrMapImpl();
    NamedAttrMapImpl(const NamedAttrMapImpl&);
    NamedAttrMapImpl &operator =(const NamedAttrMapImpl &other);

    // DOM methods & attributes for NamedNodeMap
    virtual AttrImpl *getNamedItem ( NodeImpl::Id id ) const;
    virtual Node removeNamedItem ( NodeImpl::Id id, int &exceptioncode );
    virtual Node setNamedItem ( NodeImpl* arg, int &exceptioncode );


    virtual AttrImpl *item ( unsigned long index ) const;
    unsigned long length() const { return len; }

    // Other methods (not part of DOM)
    virtual NodeImpl::Id mapId(const DOMString& namespaceURI,  const DOMString& localName,  bool readonly);
    AttributeImpl* attributeItem(unsigned long index) const { return attrs ? attrs[index] : 0; }
    AttributeImpl* getAttributeItem(NodeImpl::Id id) const;
    virtual bool isReadOnly() { return element ? element->isReadOnly() : false; }

    // used during parsing: only inserts if not already there
    // no error checking!
    void insertAttribute(AttributeImpl* newAttribute) {
        if (!getAttributeItem(newAttribute->id()))
            addAttribute(newAttribute);
        else
            newAttribute->deref();
    }

    virtual bool isHTMLAttributeMap() const;

    const AtomicString& id() const { return m_id; }
    void setID(const AtomicString& _id) { m_id = _id; }
    
protected:
    // this method is internal, does no error checking at all
    void addAttribute(AttributeImpl* newAttribute);
    // this method is internal, does no error checking at all
    void removeAttribute(NodeImpl::Id id);
    virtual void clearAttributes();
    void detachFromElement();

protected:
    ElementImpl *element;
    AttributeImpl **attrs;
    uint len;
    AtomicString m_id;
};

}; //namespace

#if APPLE_CHANGES
#undef id
#endif

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美综合色| 国产一区二区在线电影| 看电影不卡的网站| av中文字幕亚洲| 精品少妇一区二区三区视频免付费 | 日本亚洲视频在线| 成人国产精品免费观看视频| 日韩一本二本av| 亚洲第一成人在线| 色婷婷综合久色| 国产精品情趣视频| 久久精品国产99| 制服丝袜一区二区三区| 一区2区3区在线看| 99久久精品国产一区| 中文字幕乱码日本亚洲一区二区 | 亚洲精品视频观看| 北岛玲一区二区三区四区| 欧美不卡一区二区三区四区| 日欧美一区二区| 欧美中文字幕一区| 亚洲精品国产成人久久av盗摄| 国产iv一区二区三区| 2020国产精品自拍| 狠狠色丁香九九婷婷综合五月| 欧美一区二区精品在线| 亚洲一区二区免费视频| 欧美亚洲国产一区二区三区| 一区二区三区在线播放| 91色九色蝌蚪| 亚洲乱码国产乱码精品精98午夜 | 久久男人中文字幕资源站| 久久精品国产亚洲a| 日韩欧美亚洲另类制服综合在线| 午夜精品一区二区三区电影天堂| 欧美吞精做爰啪啪高潮| 亚洲一卡二卡三卡四卡无卡久久| 一本到高清视频免费精品| 亚洲精选视频免费看| 在线区一区二视频| 亚洲韩国精品一区| 欧美一区二区视频在线观看2020| 日韩精品福利网| 日本一区二区成人在线| av中文字幕一区| 亚洲午夜在线电影| 在线播放国产精品二区一二区四区 | 欧美精品久久一区| 天天综合色天天综合色h| 欧美日韩精品一区二区天天拍小说 | 精品一区二区成人精品| 精品播放一区二区| 国产mv日韩mv欧美| 亚洲欧美一区二区三区久本道91 | 国产色综合一区| 99精品久久99久久久久| 亚洲成人免费在线| 久久免费视频色| 91黄色激情网站| 日韩黄色在线观看| 国产精品美女www爽爽爽| 91极品视觉盛宴| 毛片av中文字幕一区二区| 国产欧美一区二区精品性色| 91蜜桃传媒精品久久久一区二区| 亚洲成人av资源| 久久久久久9999| 色欧美日韩亚洲| 久久99精品久久久久久动态图| 国产免费成人在线视频| 欧美老年两性高潮| 国产成人免费av在线| 亚洲国产精品自拍| 久久精品夜夜夜夜久久| 欧美日韩一区二区三区高清| 国产成人综合自拍| 视频一区二区三区中文字幕| 国产欧美综合色| 欧美大片国产精品| 日本高清视频一区二区| 国产福利一区二区| 日韩av一级电影| 亚洲精品视频在线观看免费 | 国产精品69毛片高清亚洲| 亚洲午夜精品在线| 中文字幕一区二区三区蜜月| 欧美tk丨vk视频| 欧美日韩视频在线一区二区 | 国产精品一区不卡| 日韩影院精彩在线| 亚洲日本欧美天堂| 欧美国产日韩亚洲一区| 精品播放一区二区| 日韩一级精品视频在线观看| 色婷婷av一区二区三区大白胸| 国产高清不卡一区| 韩国成人精品a∨在线观看| 亚洲r级在线视频| 亚洲一区二区在线免费观看视频| 中文字幕国产一区| 久久久不卡影院| 久久综合九色综合97婷婷女人| 5月丁香婷婷综合| 欧美性感一区二区三区| av影院午夜一区| 成人ar影院免费观看视频| 久久福利视频一区二区| 99久免费精品视频在线观看| 看片的网站亚洲| 久久国产综合精品| 精品一区二区三区视频在线观看 | 成人激情文学综合网| 国产iv一区二区三区| 国产91丝袜在线播放九色| 国产老妇另类xxxxx| 国产一区二区三区四区五区美女| 久久国产夜色精品鲁鲁99| 精品一区二区在线看| 国产乱码精品一品二品| 国产宾馆实践打屁股91| 波多野洁衣一区| 91极品视觉盛宴| 制服丝袜亚洲精品中文字幕| 日韩欧美自拍偷拍| 久久综合九色综合欧美就去吻| 久久这里只有精品首页| 久久久久久久性| 综合色天天鬼久久鬼色| 夜夜亚洲天天久久| 午夜精品福利一区二区三区蜜桃| 琪琪久久久久日韩精品| 国产一区二区不卡在线| 从欧美一区二区三区| 91丨porny丨首页| 欧美精品在线一区二区三区| 日韩限制级电影在线观看| 久久久精品国产99久久精品芒果| 国产欧美日韩激情| 亚洲与欧洲av电影| 久久99久久久久久久久久久| 国产一区二区三区四| 99久久99久久精品免费看蜜桃| 欧美视频一区二区| 精品美女在线播放| 亚洲人一二三区| 秋霞成人午夜伦在线观看| 丁香一区二区三区| 欧美日韩中文一区| 久久久综合激的五月天| 一区二区三区四区乱视频| 免费精品视频在线| av不卡在线观看| 日韩小视频在线观看专区| 国产精品免费aⅴ片在线观看| 午夜精品免费在线| 成人h动漫精品一区二| 欧美日韩免费视频| 国产精品水嫩水嫩| 婷婷中文字幕综合| 99精品国产视频| 久久久久国产精品人| 亚洲永久精品大片| 国产传媒久久文化传媒| 欧美日韩国产片| 欧美高清在线视频| 久久精品二区亚洲w码| 一本大道久久a久久精二百| 精品伦理精品一区| 午夜精品久久久久久久99樱桃 | 国产精品国产三级国产普通话99| 婷婷国产在线综合| 99视频热这里只有精品免费| 精品视频在线视频| 亚洲日本护士毛茸茸| 国产白丝网站精品污在线入口| 在线不卡欧美精品一区二区三区| 中文字幕在线观看一区二区| 国模冰冰炮一区二区| 欧美一区二区三区四区五区 | 亚洲高清在线视频| 不卡一区二区在线| 久久久影视传媒| 精品在线亚洲视频| 日韩久久久精品| 日本在线不卡一区| 精品视频色一区| 亚洲高清免费视频| 99精品久久久久久| 亚洲视频电影在线| 成人avav影音| 国产精品卡一卡二| 成人app在线| 国产精品的网站| 91亚洲精品久久久蜜桃| 国产精品免费视频观看| 成人午夜看片网址| 中国色在线观看另类| 丁香另类激情小说| 欧美国产精品久久| 成人h动漫精品|