//Auto-generated by /usr/bin/smokegen. DO NOT EDIT.
#include <khtml_includes.h>
#include <typeinfo>

#include <smoke.h>
#include <khtml_smoke.h>

class __internal_SmokeClass {};

namespace __smokekhtml {

class x_DOM__Element : public DOM::Element, public __internal_SmokeClass {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    static void x_1(Smoke::Stack x) {
        // DOM::Element* Element()
        x_DOM__Element* xret = new x_DOM__Element();
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__Element() : Element() {}
    static void x_2(Smoke::Stack x) {
        // DOM::Element* Element(const DOM::Node&)
        x_DOM__Element* xret = new x_DOM__Element(*(const DOM::Node*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__Element(const DOM::Node& x1) : Element(x1) {}
    static void x_3(Smoke::Stack x) {
        // DOM::Element* Element(const DOM::Element&)
        x_DOM__Element* xret = new x_DOM__Element(*(const DOM::Element*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__Element(const DOM::Element& x1) : Element(x1) {}
    void x_4(Smoke::Stack x) {
        // DOM::Element& operator=(const DOM::Node&)
        DOM::Element& xret = this->DOM::Element::operator=(*(const DOM::Node*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_5(Smoke::Stack x) {
        // DOM::Element& operator=(const DOM::Element&)
        DOM::Element& xret = this->DOM::Element::operator=(*(const DOM::Element*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_6(Smoke::Stack x) {
        // DOM::DOMString tagName() const
        DOM::DOMString xret = ((const x_DOM__Element*)this)->DOM::Element::tagName();
        x[0].s_class = (void*)new DOM::DOMString(xret);
    }
    void x_7(Smoke::Stack x) {
        // DOM::DOMString getAttribute(const DOM::DOMString&)
        DOM::DOMString xret = this->DOM::Element::getAttribute(*(const DOM::DOMString*)x[1].s_class);
        x[0].s_class = (void*)new DOM::DOMString(xret);
    }
    void x_8(Smoke::Stack x) {
        // void setAttribute(const DOM::DOMString&, const DOM::DOMString&)
        this->DOM::Element::setAttribute(*(const DOM::DOMString*)x[1].s_class,*(const DOM::DOMString*)x[2].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_9(Smoke::Stack x) {
        // void removeAttribute(const DOM::DOMString&)
        this->DOM::Element::removeAttribute(*(const DOM::DOMString*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_10(Smoke::Stack x) {
        // DOM::Attr getAttributeNode(const DOM::DOMString&)
        DOM::Attr xret = this->DOM::Element::getAttributeNode(*(const DOM::DOMString*)x[1].s_class);
        x[0].s_class = (void*)new DOM::Attr(xret);
    }
    void x_11(Smoke::Stack x) {
        // DOM::Attr setAttributeNode(const DOM::Attr&)
        DOM::Attr xret = this->DOM::Element::setAttributeNode(*(const DOM::Attr*)x[1].s_class);
        x[0].s_class = (void*)new DOM::Attr(xret);
    }
    void x_12(Smoke::Stack x) {
        // DOM::Attr removeAttributeNode(const DOM::Attr&)
        DOM::Attr xret = this->DOM::Element::removeAttributeNode(*(const DOM::Attr*)x[1].s_class);
        x[0].s_class = (void*)new DOM::Attr(xret);
    }
    void x_13(Smoke::Stack x) {
        // DOM::NodeList getElementsByTagName(const DOM::DOMString&)
        DOM::NodeList xret = this->DOM::Element::getElementsByTagName(*(const DOM::DOMString*)x[1].s_class);
        x[0].s_class = (void*)new DOM::NodeList(xret);
    }
    void x_14(Smoke::Stack x) {
        // DOM::NodeList getElementsByTagNameNS(const DOM::DOMString&, const DOM::DOMString&)
        DOM::NodeList xret = this->DOM::Element::getElementsByTagNameNS(*(const DOM::DOMString*)x[1].s_class,*(const DOM::DOMString*)x[2].s_class);
        x[0].s_class = (void*)new DOM::NodeList(xret);
    }
    void x_15(Smoke::Stack x) {
        // DOM::NodeList getElementsByClassName(const DOM::DOMString&)
        DOM::NodeList xret = this->DOM::Element::getElementsByClassName(*(const DOM::DOMString*)x[1].s_class);
        x[0].s_class = (void*)new DOM::NodeList(xret);
    }
    void x_16(Smoke::Stack x) {
        // DOM::DOMString getAttributeNS(const DOM::DOMString&, const DOM::DOMString&)
        DOM::DOMString xret = this->DOM::Element::getAttributeNS(*(const DOM::DOMString*)x[1].s_class,*(const DOM::DOMString*)x[2].s_class);
        x[0].s_class = (void*)new DOM::DOMString(xret);
    }
    void x_17(Smoke::Stack x) {
        // void setAttributeNS(const DOM::DOMString&, const DOM::DOMString&, const DOM::DOMString&)
        this->DOM::Element::setAttributeNS(*(const DOM::DOMString*)x[1].s_class,*(const DOM::DOMString*)x[2].s_class,*(const DOM::DOMString*)x[3].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_18(Smoke::Stack x) {
        // void removeAttributeNS(const DOM::DOMString&, const DOM::DOMString&)
        this->DOM::Element::removeAttributeNS(*(const DOM::DOMString*)x[1].s_class,*(const DOM::DOMString*)x[2].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_19(Smoke::Stack x) {
        // DOM::Attr getAttributeNodeNS(const DOM::DOMString&, const DOM::DOMString&)
        DOM::Attr xret = this->DOM::Element::getAttributeNodeNS(*(const DOM::DOMString*)x[1].s_class,*(const DOM::DOMString*)x[2].s_class);
        x[0].s_class = (void*)new DOM::Attr(xret);
    }
    void x_20(Smoke::Stack x) {
        // DOM::Attr setAttributeNodeNS(const DOM::Attr&)
        DOM::Attr xret = this->DOM::Element::setAttributeNodeNS(*(const DOM::Attr*)x[1].s_class);
        x[0].s_class = (void*)new DOM::Attr(xret);
    }
    void x_21(Smoke::Stack x) {
        // bool hasAttribute(const DOM::DOMString&)
        bool xret = this->DOM::Element::hasAttribute(*(const DOM::DOMString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    void x_22(Smoke::Stack x) {
        // bool hasAttributeNS(const DOM::DOMString&, const DOM::DOMString&)
        bool xret = this->DOM::Element::hasAttributeNS(*(const DOM::DOMString*)x[1].s_class,*(const DOM::DOMString*)x[2].s_class);
        x[0].s_bool = xret;
    }
    void x_23(Smoke::Stack x) {
        // DOM::CSSStyleDeclaration style()
        DOM::CSSStyleDeclaration xret = this->DOM::Element::style();
        x[0].s_class = (void*)new DOM::CSSStyleDeclaration(xret);
    }
    void x_24(Smoke::Stack x) {
        // DOM::Element firstElementChild() const
        DOM::Element xret = ((const x_DOM__Element*)this)->DOM::Element::firstElementChild();
        x[0].s_class = (void*)new DOM::Element(xret);
    }
    void x_25(Smoke::Stack x) {
        // DOM::Element lastElementChild() const
        DOM::Element xret = ((const x_DOM__Element*)this)->DOM::Element::lastElementChild();
        x[0].s_class = (void*)new DOM::Element(xret);
    }
    void x_26(Smoke::Stack x) {
        // DOM::Element previousElementSibling() const
        DOM::Element xret = ((const x_DOM__Element*)this)->DOM::Element::previousElementSibling();
        x[0].s_class = (void*)new DOM::Element(xret);
    }
    void x_27(Smoke::Stack x) {
        // DOM::Element nextElementSibling() const
        DOM::Element xret = ((const x_DOM__Element*)this)->DOM::Element::nextElementSibling();
        x[0].s_class = (void*)new DOM::Element(xret);
    }
    void x_28(Smoke::Stack x) {
        // unsigned long childElementCount() const
        unsigned long xret = ((const x_DOM__Element*)this)->DOM::Element::childElementCount();
        x[0].s_ulong = xret;
    }
    void x_29(Smoke::Stack x) {
        // DOM::Element querySelector(const DOM::DOMString&) const
        DOM::Element xret = ((const x_DOM__Element*)this)->DOM::Element::querySelector(*(const DOM::DOMString*)x[1].s_class);
        x[0].s_class = (void*)new DOM::Element(xret);
    }
    void x_30(Smoke::Stack x) {
        // DOM::NodeList querySelectorAll(const DOM::DOMString&) const
        DOM::NodeList xret = ((const x_DOM__Element*)this)->DOM::Element::querySelectorAll(*(const DOM::DOMString*)x[1].s_class);
        x[0].s_class = (void*)new DOM::NodeList(xret);
    }
    void x_31(Smoke::Stack x) {
        // bool isHTMLElement() const
        bool xret = ((const x_DOM__Element*)this)->DOM::Element::isHTMLElement();
        x[0].s_bool = xret;
    }
    void x_32(Smoke::Stack x) {
        // DOM::Element form() const
        DOM::Element xret = ((const x_DOM__Element*)this)->DOM::Element::form();
        x[0].s_class = (void*)new DOM::Element(xret);
    }
    static void x_33(Smoke::Stack x) {
        // static bool khtmlValidAttrName(const DOM::DOMString&)
        bool xret = DOM::Element::khtmlValidAttrName(*(const DOM::DOMString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    static void x_34(Smoke::Stack x) {
        // static bool khtmlValidPrefix(const DOM::DOMString&)
        bool xret = DOM::Element::khtmlValidPrefix(*(const DOM::DOMString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    static void x_35(Smoke::Stack x) {
        // static bool khtmlValidQualifiedName(const DOM::DOMString&)
        bool xret = DOM::Element::khtmlValidQualifiedName(*(const DOM::DOMString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    static void x_36(Smoke::Stack x) {
        // static bool khtmlMalformedQualifiedName(const DOM::DOMString&)
        bool xret = DOM::Element::khtmlMalformedQualifiedName(*(const DOM::DOMString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    static void x_37(Smoke::Stack x) {
        // static bool khtmlMalformedPrefix(const DOM::DOMString&)
        bool xret = DOM::Element::khtmlMalformedPrefix(*(const DOM::DOMString*)x[1].s_class);
        x[0].s_bool = xret;
    }
    ~x_DOM__Element() { this->_binding->deleted(33, (void*)this); }
};
void xcall_DOM__Element(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_DOM__Element *xself = (x_DOM__Element*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_DOM__Element::x_1(args);	break;
        case 2: x_DOM__Element::x_2(args);	break;
        case 3: x_DOM__Element::x_3(args);	break;
        case 4: xself->x_4(args);	break;
        case 5: xself->x_5(args);	break;
        case 6: xself->x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: xself->x_8(args);	break;
        case 9: xself->x_9(args);	break;
        case 10: xself->x_10(args);	break;
        case 11: xself->x_11(args);	break;
        case 12: xself->x_12(args);	break;
        case 13: xself->x_13(args);	break;
        case 14: xself->x_14(args);	break;
        case 15: xself->x_15(args);	break;
        case 16: xself->x_16(args);	break;
        case 17: xself->x_17(args);	break;
        case 18: xself->x_18(args);	break;
        case 19: xself->x_19(args);	break;
        case 20: xself->x_20(args);	break;
        case 21: xself->x_21(args);	break;
        case 22: xself->x_22(args);	break;
        case 23: xself->x_23(args);	break;
        case 24: xself->x_24(args);	break;
        case 25: xself->x_25(args);	break;
        case 26: xself->x_26(args);	break;
        case 27: xself->x_27(args);	break;
        case 28: xself->x_28(args);	break;
        case 29: xself->x_29(args);	break;
        case 30: xself->x_30(args);	break;
        case 31: xself->x_31(args);	break;
        case 32: xself->x_32(args);	break;
        case 33: x_DOM__Element::x_33(args);	break;
        case 34: x_DOM__Element::x_34(args);	break;
        case 35: x_DOM__Element::x_35(args);	break;
        case 36: x_DOM__Element::x_36(args);	break;
        case 37: x_DOM__Element::x_37(args);	break;
        case 38: delete (DOM::Element*)xself;	break;
    }
}
class x_DOM__Entity : public DOM::Entity, public __internal_SmokeClass {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    static void x_1(Smoke::Stack x) {
        // DOM::Entity* Entity()
        x_DOM__Entity* xret = new x_DOM__Entity();
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__Entity() : Entity() {}
    static void x_2(Smoke::Stack x) {
        // DOM::Entity* Entity(const DOM::Entity&)
        x_DOM__Entity* xret = new x_DOM__Entity(*(const DOM::Entity*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__Entity(const DOM::Entity& x1) : Entity(x1) {}
    static void x_3(Smoke::Stack x) {
        // DOM::Entity* Entity(const DOM::Node&)
        x_DOM__Entity* xret = new x_DOM__Entity(*(const DOM::Node*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__Entity(const DOM::Node& x1) : Entity(x1) {}
    void x_4(Smoke::Stack x) {
        // DOM::Entity& operator=(const DOM::Node&)
        DOM::Entity& xret = this->DOM::Entity::operator=(*(const DOM::Node*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_5(Smoke::Stack x) {
        // DOM::Entity& operator=(const DOM::Entity&)
        DOM::Entity& xret = this->DOM::Entity::operator=(*(const DOM::Entity*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_6(Smoke::Stack x) {
        // DOM::DOMString publicId() const
        DOM::DOMString xret = ((const x_DOM__Entity*)this)->DOM::Entity::publicId();
        x[0].s_class = (void*)new DOM::DOMString(xret);
    }
    void x_7(Smoke::Stack x) {
        // DOM::DOMString systemId() const
        DOM::DOMString xret = ((const x_DOM__Entity*)this)->DOM::Entity::systemId();
        x[0].s_class = (void*)new DOM::DOMString(xret);
    }
    void x_8(Smoke::Stack x) {
        // DOM::DOMString notationName() const
        DOM::DOMString xret = ((const x_DOM__Entity*)this)->DOM::Entity::notationName();
        x[0].s_class = (void*)new DOM::DOMString(xret);
    }
    ~x_DOM__Entity() { this->_binding->deleted(34, (void*)this); }
};
void xcall_DOM__Entity(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_DOM__Entity *xself = (x_DOM__Entity*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_DOM__Entity::x_1(args);	break;
        case 2: x_DOM__Entity::x_2(args);	break;
        case 3: x_DOM__Entity::x_3(args);	break;
        case 4: xself->x_4(args);	break;
        case 5: xself->x_5(args);	break;
        case 6: xself->x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: xself->x_8(args);	break;
        case 9: delete (DOM::Entity*)xself;	break;
    }
}
class x_DOM__EntityReference : public DOM::EntityReference, public __internal_SmokeClass {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    static void x_1(Smoke::Stack x) {
        // DOM::EntityReference* EntityReference()
        x_DOM__EntityReference* xret = new x_DOM__EntityReference();
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__EntityReference() : EntityReference() {}
    static void x_2(Smoke::Stack x) {
        // DOM::EntityReference* EntityReference(const DOM::EntityReference&)
        x_DOM__EntityReference* xret = new x_DOM__EntityReference(*(const DOM::EntityReference*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__EntityReference(const DOM::EntityReference& x1) : EntityReference(x1) {}
    static void x_3(Smoke::Stack x) {
        // DOM::EntityReference* EntityReference(const DOM::Node&)
        x_DOM__EntityReference* xret = new x_DOM__EntityReference(*(const DOM::Node*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__EntityReference(const DOM::Node& x1) : EntityReference(x1) {}
    void x_4(Smoke::Stack x) {
        // DOM::EntityReference& operator=(const DOM::Node&)
        DOM::EntityReference& xret = this->DOM::EntityReference::operator=(*(const DOM::Node*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_5(Smoke::Stack x) {
        // DOM::EntityReference& operator=(const DOM::EntityReference&)
        DOM::EntityReference& xret = this->DOM::EntityReference::operator=(*(const DOM::EntityReference*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    ~x_DOM__EntityReference() { this->_binding->deleted(35, (void*)this); }
};
void xcall_DOM__EntityReference(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_DOM__EntityReference *xself = (x_DOM__EntityReference*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_DOM__EntityReference::x_1(args);	break;
        case 2: x_DOM__EntityReference::x_2(args);	break;
        case 3: x_DOM__EntityReference::x_3(args);	break;
        case 4: xself->x_4(args);	break;
        case 5: xself->x_5(args);	break;
        case 6: delete (DOM::EntityReference*)xself;	break;
    }
}
class x_DOM__Event : public DOM::Event, public __internal_SmokeClass {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    static void x_1(Smoke::Stack x) {
        // DOM::Event* Event()
        x_DOM__Event* xret = new x_DOM__Event();
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__Event() : Event() {}
    static void x_2(Smoke::Stack x) {
        // DOM::Event* Event(const DOM::Event&)
        x_DOM__Event* xret = new x_DOM__Event(*(const DOM::Event*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__Event(const DOM::Event& x1) : Event(x1) {}
    void x_3(Smoke::Stack x) {
        // DOM::Event& operator=(const DOM::Event&)
        DOM::Event& xret = this->DOM::Event::operator=(*(const DOM::Event*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_4(Smoke::Stack x) {
        // DOM::DOMString type() const
        DOM::DOMString xret = ((const x_DOM__Event*)this)->DOM::Event::type();
        x[0].s_class = (void*)new DOM::DOMString(xret);
    }
    void x_5(Smoke::Stack x) {
        // DOM::Node target() const
        DOM::Node xret = ((const x_DOM__Event*)this)->DOM::Event::target();
        x[0].s_class = (void*)new DOM::Node(xret);
    }
    void x_6(Smoke::Stack x) {
        // DOM::Node currentTarget() const
        DOM::Node xret = ((const x_DOM__Event*)this)->DOM::Event::currentTarget();
        x[0].s_class = (void*)new DOM::Node(xret);
    }
    void x_7(Smoke::Stack x) {
        // unsigned short eventPhase() const
        unsigned short xret = ((const x_DOM__Event*)this)->DOM::Event::eventPhase();
        x[0].s_ushort = xret;
    }
    void x_8(Smoke::Stack x) {
        // bool bubbles() const
        bool xret = ((const x_DOM__Event*)this)->DOM::Event::bubbles();
        x[0].s_bool = xret;
    }
    void x_9(Smoke::Stack x) {
        // bool cancelable() const
        bool xret = ((const x_DOM__Event*)this)->DOM::Event::cancelable();
        x[0].s_bool = xret;
    }
    void x_10(Smoke::Stack x) {
        // unsigned long long timeStamp() const
        unsigned long long xret = ((const x_DOM__Event*)this)->DOM::Event::timeStamp();
        x[0].s_class = (void*)new unsigned long long(xret);
    }
    void x_11(Smoke::Stack x) {
        // void stopPropagation()
        this->DOM::Event::stopPropagation();
        (void)x; // noop (for compiler warning)
    }
    void x_12(Smoke::Stack x) {
        // void preventDefault()
        this->DOM::Event::preventDefault();
        (void)x; // noop (for compiler warning)
    }
    void x_13(Smoke::Stack x) {
        // void initEvent(const DOM::DOMString&, bool, bool)
        this->DOM::Event::initEvent(*(const DOM::DOMString*)x[1].s_class,(bool)x[2].s_bool,(bool)x[3].s_bool);
        (void)x; // noop (for compiler warning)
    }
    void x_14(Smoke::Stack x) {
        // bool isNull() const
        bool xret = ((const x_DOM__Event*)this)->DOM::Event::isNull();
        x[0].s_bool = xret;
    }
    static void x_15(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::Event::CAPTURING_PHASE;
    }
    static void x_16(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::Event::AT_TARGET;
    }
    static void x_17(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::Event::BUBBLING_PHASE;
    }
    static void xenum_operation(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
        switch(xtype) {
        case 92: //DOM::Event::PhaseType
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new DOM::Event::PhaseType;
                    break;
                case Smoke::EnumDelete:
                    delete (DOM::Event::PhaseType*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(DOM::Event::PhaseType*)xdata = (DOM::Event::PhaseType)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(DOM::Event::PhaseType*)xdata;
                    break;
            }
            break;
        }
    }
    ~x_DOM__Event() { this->_binding->deleted(36, (void*)this); }
};
void xenum_DOM__Event(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
    x_DOM__Event::xenum_operation(xop, xtype, xdata, xvalue);
}
void xcall_DOM__Event(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_DOM__Event *xself = (x_DOM__Event*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_DOM__Event::x_1(args);	break;
        case 2: x_DOM__Event::x_2(args);	break;
        case 3: xself->x_3(args);	break;
        case 4: xself->x_4(args);	break;
        case 5: xself->x_5(args);	break;
        case 6: xself->x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: xself->x_8(args);	break;
        case 9: xself->x_9(args);	break;
        case 10: xself->x_10(args);	break;
        case 11: xself->x_11(args);	break;
        case 12: xself->x_12(args);	break;
        case 13: xself->x_13(args);	break;
        case 14: xself->x_14(args);	break;
        case 15: x_DOM__Event::x_15(args);	break;
        case 16: x_DOM__Event::x_16(args);	break;
        case 17: x_DOM__Event::x_17(args);	break;
        case 18: delete (DOM::Event*)xself;	break;
    }
}
class x_DOM__EventException : public DOM::EventException, public __internal_SmokeClass {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    static void x_1(Smoke::Stack x) {
        // DOM::EventException* EventException(unsigned short)
        x_DOM__EventException* xret = new x_DOM__EventException((unsigned short)x[1].s_ushort);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__EventException(unsigned short x1) : EventException(x1) {}
    static void x_2(Smoke::Stack x) {
        // DOM::EventException* EventException(const DOM::EventException&)
        x_DOM__EventException* xret = new x_DOM__EventException(*(const DOM::EventException*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__EventException(const DOM::EventException& x1) : EventException(x1) {}
    void x_3(Smoke::Stack x) {
        // DOM::EventException& operator=(const DOM::EventException&)
        DOM::EventException& xret = this->DOM::EventException::operator=(*(const DOM::EventException*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_4(Smoke::Stack x) {
        // DOM::DOMString codeAsString() const
        DOM::DOMString xret = ((const x_DOM__EventException*)this)->DOM::EventException::codeAsString();
        x[0].s_class = (void*)new DOM::DOMString(xret);
    }
    static void x_5(Smoke::Stack x) {
        // static DOM::DOMString codeAsString(int)
        DOM::DOMString xret = DOM::EventException::codeAsString((int)x[1].s_int);
        x[0].s_class = (void*)new DOM::DOMString(xret);
    }
    static void x_6(Smoke::Stack x) {
        // static bool isEventExceptionCode(int)
        bool xret = DOM::EventException::isEventExceptionCode((int)x[1].s_int);
        x[0].s_bool = xret;
    }
    void x_7(Smoke::Stack x) {
        // unsigned short code
        x[0].s_ushort = this->DOM::EventException::code;
    }
    void x_8(Smoke::Stack x) {
        // unsigned short code=
        this->DOM::EventException::code = (unsigned short)x[1].s_ushort;
    }
    static void x_9(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::EventException::UNSPECIFIED_EVENT_TYPE_ERR;
    }
    static void x_10(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::EventException::_EXCEPTION_OFFSET;
    }
    static void x_11(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::EventException::_EXCEPTION_MAX;
    }
    static void xenum_operation(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
        switch(xtype) {
        case 95: //DOM::EventException::EventExceptionCode
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new DOM::EventException::EventExceptionCode;
                    break;
                case Smoke::EnumDelete:
                    delete (DOM::EventException::EventExceptionCode*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(DOM::EventException::EventExceptionCode*)xdata = (DOM::EventException::EventExceptionCode)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(DOM::EventException::EventExceptionCode*)xdata;
                    break;
            }
            break;
        }
    }
    ~x_DOM__EventException() { this->_binding->deleted(37, (void*)this); }
};
void xenum_DOM__EventException(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
    x_DOM__EventException::xenum_operation(xop, xtype, xdata, xvalue);
}
void xcall_DOM__EventException(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_DOM__EventException *xself = (x_DOM__EventException*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_DOM__EventException::x_1(args);	break;
        case 2: x_DOM__EventException::x_2(args);	break;
        case 3: xself->x_3(args);	break;
        case 4: xself->x_4(args);	break;
        case 5: x_DOM__EventException::x_5(args);	break;
        case 6: x_DOM__EventException::x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: xself->x_8(args);	break;
        case 9: x_DOM__EventException::x_9(args);	break;
        case 10: x_DOM__EventException::x_10(args);	break;
        case 11: x_DOM__EventException::x_11(args);	break;
        case 12: delete (DOM::EventException*)xself;	break;
    }
}
class x_DOM__EventListener : public DOM::EventListener, public __internal_SmokeClass {
    SmokeBinding* _binding;
public:
    void x_0(Smoke::Stack x) {
        // set the smoke binding
        _binding = (SmokeBinding*)x[1].s_class;
    }
    static void x_1(Smoke::Stack x) {
        // DOM::EventListener* EventListener()
        x_DOM__EventListener* xret = new x_DOM__EventListener();
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__EventListener() : EventListener() {}
    void x_2(Smoke::Stack x) {
        // virtual void handleEvent(DOM::Event&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<DOM::EventListener*>(this))) {
            this->DOM::EventListener::handleEvent(*(DOM::Event*)x[1].s_class);
            (void)x; // noop (for compiler warning)
        } else {
            this->handleEvent(*(DOM::Event*)x[1].s_class);
            (void)x; // noop (for compiler warning)
        }
    }
    void x_3(Smoke::Stack x) {
        // virtual DOM::DOMString eventListenerType()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<DOM::EventListener*>(this))) {
            DOM::DOMString xret = this->DOM::EventListener::eventListenerType();
            x[0].s_class = (void*)new DOM::DOMString(xret);
        } else {
            DOM::DOMString xret = this->eventListenerType();
            x[0].s_class = (void*)new DOM::DOMString(xret);
        }
    }
    static void x_4(Smoke::Stack x) {
        // DOM::EventListener* EventListener(const DOM::EventListener&)
        x_DOM__EventListener* xret = new x_DOM__EventListener(*(const DOM::EventListener*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__EventListener(const DOM::EventListener& x1) : EventListener(x1) {}
    virtual void handleEvent(DOM::Event& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(527, (void*)this, x)) return;
        this->DOM::EventListener::handleEvent(x1);
    }
    virtual DOM::DOMString eventListenerType() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(528, (void*)this, x)) {
            DOM::DOMString* xptr = (DOM::DOMString*)x[0].s_class;
            DOM::DOMString xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->DOM::EventListener::eventListenerType();
    }
    virtual bool deleteMe() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(434, (void*)this, x)) return (bool)x[0].s_bool;
        return this->DOM::DomShared::deleteMe();
    }
    ~x_DOM__EventListener() { this->_binding->deleted(38, (void*)this); }
};
void xcall_DOM__EventListener(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_DOM__EventListener *xself = (x_DOM__EventListener*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_DOM__EventListener::x_1(args);	break;
        case 2: xself->x_2(args);	break;
        case 3: xself->x_3(args);	break;
        case 4: x_DOM__EventListener::x_4(args);	break;
        case 5: delete (DOM::EventListener*)xself;	break;
    }
}

}
