//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__CharacterData : public DOM::CharacterData, 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::CharacterData* CharacterData()
        x_DOM__CharacterData* xret = new x_DOM__CharacterData();
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__CharacterData() : CharacterData() {}
    static void x_2(Smoke::Stack x) {
        // DOM::CharacterData* CharacterData(const DOM::CharacterData&)
        x_DOM__CharacterData* xret = new x_DOM__CharacterData(*(const DOM::CharacterData*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__CharacterData(const DOM::CharacterData& x1) : CharacterData(x1) {}
    static void x_3(Smoke::Stack x) {
        // DOM::CharacterData* CharacterData(const DOM::Node&)
        x_DOM__CharacterData* xret = new x_DOM__CharacterData(*(const DOM::Node*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__CharacterData(const DOM::Node& x1) : CharacterData(x1) {}
    void x_4(Smoke::Stack x) {
        // DOM::CharacterData& operator=(const DOM::Node&)
        DOM::CharacterData& xret = this->DOM::CharacterData::operator=(*(const DOM::Node*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_5(Smoke::Stack x) {
        // DOM::CharacterData& operator=(const DOM::CharacterData&)
        DOM::CharacterData& xret = this->DOM::CharacterData::operator=(*(const DOM::CharacterData*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_6(Smoke::Stack x) {
        // DOM::DOMString data() const
        DOM::DOMString xret = ((const x_DOM__CharacterData*)this)->DOM::CharacterData::data();
        x[0].s_class = (void*)new DOM::DOMString(xret);
    }
    void x_7(Smoke::Stack x) {
        // void setData(const DOM::DOMString&)
        this->DOM::CharacterData::setData(*(const DOM::DOMString*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_8(Smoke::Stack x) {
        // unsigned long length() const
        unsigned long xret = ((const x_DOM__CharacterData*)this)->DOM::CharacterData::length();
        x[0].s_ulong = xret;
    }
    void x_9(Smoke::Stack x) {
        // DOM::DOMString substringData(const unsigned long, const unsigned long)
        DOM::DOMString xret = this->DOM::CharacterData::substringData((const unsigned long)x[1].s_ulong,(const unsigned long)x[2].s_ulong);
        x[0].s_class = (void*)new DOM::DOMString(xret);
    }
    void x_10(Smoke::Stack x) {
        // void appendData(const DOM::DOMString&)
        this->DOM::CharacterData::appendData(*(const DOM::DOMString*)x[1].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_11(Smoke::Stack x) {
        // void insertData(const unsigned long, const DOM::DOMString&)
        this->DOM::CharacterData::insertData((const unsigned long)x[1].s_ulong,*(const DOM::DOMString*)x[2].s_class);
        (void)x; // noop (for compiler warning)
    }
    void x_12(Smoke::Stack x) {
        // void deleteData(const unsigned long, const unsigned long)
        this->DOM::CharacterData::deleteData((const unsigned long)x[1].s_ulong,(const unsigned long)x[2].s_ulong);
        (void)x; // noop (for compiler warning)
    }
    void x_13(Smoke::Stack x) {
        // void replaceData(const unsigned long, const unsigned long, const DOM::DOMString&)
        this->DOM::CharacterData::replaceData((const unsigned long)x[1].s_ulong,(const unsigned long)x[2].s_ulong,*(const DOM::DOMString*)x[3].s_class);
        (void)x; // noop (for compiler warning)
    }
    ~x_DOM__CharacterData() { this->_binding->deleted(20, (void*)this); }
};
void xcall_DOM__CharacterData(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_DOM__CharacterData *xself = (x_DOM__CharacterData*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_DOM__CharacterData::x_1(args);	break;
        case 2: x_DOM__CharacterData::x_2(args);	break;
        case 3: x_DOM__CharacterData::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: delete (DOM::CharacterData*)xself;	break;
    }
}
class x_DOM__Comment : public DOM::Comment, 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::Comment* Comment()
        x_DOM__Comment* xret = new x_DOM__Comment();
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__Comment() : Comment() {}
    static void x_2(Smoke::Stack x) {
        // DOM::Comment* Comment(const DOM::Comment&)
        x_DOM__Comment* xret = new x_DOM__Comment(*(const DOM::Comment*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__Comment(const DOM::Comment& x1) : Comment(x1) {}
    static void x_3(Smoke::Stack x) {
        // DOM::Comment* Comment(const DOM::Node&)
        x_DOM__Comment* xret = new x_DOM__Comment(*(const DOM::Node*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__Comment(const DOM::Node& x1) : Comment(x1) {}
    void x_4(Smoke::Stack x) {
        // DOM::Comment& operator=(const DOM::Node&)
        DOM::Comment& xret = this->DOM::Comment::operator=(*(const DOM::Node*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_5(Smoke::Stack x) {
        // DOM::Comment& operator=(const DOM::Comment&)
        DOM::Comment& xret = this->DOM::Comment::operator=(*(const DOM::Comment*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    ~x_DOM__Comment() { this->_binding->deleted(21, (void*)this); }
};
void xcall_DOM__Comment(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_DOM__Comment *xself = (x_DOM__Comment*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_DOM__Comment::x_1(args);	break;
        case 2: x_DOM__Comment::x_2(args);	break;
        case 3: x_DOM__Comment::x_3(args);	break;
        case 4: xself->x_4(args);	break;
        case 5: xself->x_5(args);	break;
        case 6: delete (DOM::Comment*)xself;	break;
    }
}
class x_DOM__Counter : public DOM::Counter {
    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::Counter* Counter()
        x_DOM__Counter* xret = new x_DOM__Counter();
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__Counter() : Counter() {}
    static void x_2(Smoke::Stack x) {
        // DOM::Counter* Counter(const DOM::Counter&)
        x_DOM__Counter* xret = new x_DOM__Counter(*(const DOM::Counter*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__Counter(const DOM::Counter& x1) : Counter(x1) {}
    void x_3(Smoke::Stack x) {
        // DOM::Counter& operator=(const DOM::Counter&)
        DOM::Counter& xret = this->DOM::Counter::operator=(*(const DOM::Counter*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_4(Smoke::Stack x) {
        // DOM::DOMString identifier() const
        DOM::DOMString xret = ((const x_DOM__Counter*)this)->DOM::Counter::identifier();
        x[0].s_class = (void*)new DOM::DOMString(xret);
    }
    void x_5(Smoke::Stack x) {
        // DOM::DOMString listStyle() const
        DOM::DOMString xret = ((const x_DOM__Counter*)this)->DOM::Counter::listStyle();
        x[0].s_class = (void*)new DOM::DOMString(xret);
    }
    void x_6(Smoke::Stack x) {
        // DOM::DOMString separator() const
        DOM::DOMString xret = ((const x_DOM__Counter*)this)->DOM::Counter::separator();
        x[0].s_class = (void*)new DOM::DOMString(xret);
    }
    void x_7(Smoke::Stack x) {
        // bool isNull() const
        bool xret = ((const x_DOM__Counter*)this)->DOM::Counter::isNull();
        x[0].s_bool = xret;
    }
    ~x_DOM__Counter() { this->_binding->deleted(22, (void*)this); }
};
void xcall_DOM__Counter(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_DOM__Counter *xself = (x_DOM__Counter*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_DOM__Counter::x_1(args);	break;
        case 2: x_DOM__Counter::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: delete (DOM::Counter*)xself;	break;
    }
}
class x_DOM__CustomNodeFilter : public DOM::CustomNodeFilter, 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::CustomNodeFilter* CustomNodeFilter()
        x_DOM__CustomNodeFilter* xret = new x_DOM__CustomNodeFilter();
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__CustomNodeFilter() : CustomNodeFilter() {}
    void x_2(Smoke::Stack x) {
        // virtual short acceptNode(const DOM::Node&)
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<DOM::CustomNodeFilter*>(this))) {
            short xret = this->DOM::CustomNodeFilter::acceptNode(*(const DOM::Node*)x[1].s_class);
            x[0].s_short = xret;
        } else {
            short xret = this->acceptNode(*(const DOM::Node*)x[1].s_class);
            x[0].s_short = xret;
        }
    }
    void x_3(Smoke::Stack x) {
        // virtual bool isNull()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<DOM::CustomNodeFilter*>(this))) {
            bool xret = this->DOM::CustomNodeFilter::isNull();
            x[0].s_bool = xret;
        } else {
            bool xret = this->isNull();
            x[0].s_bool = xret;
        }
    }
    void x_4(Smoke::Stack x) {
        // virtual DOM::DOMString customNodeFilterType()
        if (dynamic_cast<__internal_SmokeClass*>(static_cast<DOM::CustomNodeFilter*>(this))) {
            DOM::DOMString xret = this->DOM::CustomNodeFilter::customNodeFilterType();
            x[0].s_class = (void*)new DOM::DOMString(xret);
        } else {
            DOM::DOMString xret = this->customNodeFilterType();
            x[0].s_class = (void*)new DOM::DOMString(xret);
        }
    }
    static void x_5(Smoke::Stack x) {
        // DOM::CustomNodeFilter* CustomNodeFilter(const DOM::CustomNodeFilter&)
        x_DOM__CustomNodeFilter* xret = new x_DOM__CustomNodeFilter(*(const DOM::CustomNodeFilter*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__CustomNodeFilter(const DOM::CustomNodeFilter& x1) : CustomNodeFilter(x1) {}
    virtual short acceptNode(const DOM::Node& x1) {
        Smoke::StackItem x[2];
        x[1].s_class = (void*)&x1;
        if (this->_binding->callMethod(256, (void*)this, x)) return (short)x[0].s_short;
        return this->DOM::CustomNodeFilter::acceptNode(x1);
    }
    virtual bool isNull() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(257, (void*)this, x)) return (bool)x[0].s_bool;
        return this->DOM::CustomNodeFilter::isNull();
    }
    virtual DOM::DOMString customNodeFilterType() {
        Smoke::StackItem x[1];
        if (this->_binding->callMethod(258, (void*)this, x)) {
            DOM::DOMString* xptr = (DOM::DOMString*)x[0].s_class;
            DOM::DOMString xret(*xptr);
            delete xptr;
            return xret;
        }
        return this->DOM::CustomNodeFilter::customNodeFilterType();
    }
    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__CustomNodeFilter() { this->_binding->deleted(23, (void*)this); }
};
void xcall_DOM__CustomNodeFilter(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_DOM__CustomNodeFilter *xself = (x_DOM__CustomNodeFilter*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_DOM__CustomNodeFilter::x_1(args);	break;
        case 2: xself->x_2(args);	break;
        case 3: xself->x_3(args);	break;
        case 4: xself->x_4(args);	break;
        case 5: x_DOM__CustomNodeFilter::x_5(args);	break;
        case 6: delete (DOM::CustomNodeFilter*)xself;	break;
    }
}
class x_DOM__DOMException : public DOM::DOMException, 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::DOMException* DOMException(unsigned short)
        x_DOM__DOMException* xret = new x_DOM__DOMException((unsigned short)x[1].s_ushort);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__DOMException(unsigned short x1) : DOMException(x1) {}
    static void x_2(Smoke::Stack x) {
        // DOM::DOMException* DOMException(const DOM::DOMException&)
        x_DOM__DOMException* xret = new x_DOM__DOMException(*(const DOM::DOMException*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__DOMException(const DOM::DOMException& x1) : DOMException(x1) {}
    void x_3(Smoke::Stack x) {
        // DOM::DOMException& operator=(const DOM::DOMException&)
        DOM::DOMException& xret = this->DOM::DOMException::operator=(*(const DOM::DOMException*)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__DOMException*)this)->DOM::DOMException::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::DOMException::codeAsString((int)x[1].s_int);
        x[0].s_class = (void*)new DOM::DOMString(xret);
    }
    static void x_6(Smoke::Stack x) {
        // static bool isDOMExceptionCode(int)
        bool xret = DOM::DOMException::isDOMExceptionCode((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::DOMException::code;
    }
    void x_8(Smoke::Stack x) {
        // unsigned short code=
        this->DOM::DOMException::code = (unsigned short)x[1].s_ushort;
    }
    static void x_9(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::INDEX_SIZE_ERR;
    }
    static void x_10(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::DOMSTRING_SIZE_ERR;
    }
    static void x_11(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::HIERARCHY_REQUEST_ERR;
    }
    static void x_12(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::WRONG_DOCUMENT_ERR;
    }
    static void x_13(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::INVALID_CHARACTER_ERR;
    }
    static void x_14(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::NO_DATA_ALLOWED_ERR;
    }
    static void x_15(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::NO_MODIFICATION_ALLOWED_ERR;
    }
    static void x_16(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::NOT_FOUND_ERR;
    }
    static void x_17(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::NOT_SUPPORTED_ERR;
    }
    static void x_18(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::INUSE_ATTRIBUTE_ERR;
    }
    static void x_19(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::INVALID_STATE_ERR;
    }
    static void x_20(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::SYNTAX_ERR;
    }
    static void x_21(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::INVALID_MODIFICATION_ERR;
    }
    static void x_22(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::NAMESPACE_ERR;
    }
    static void x_23(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::INVALID_ACCESS_ERR;
    }
    static void x_24(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::VALIDATION_ERR;
    }
    static void x_25(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::TYPE_MISMATCH_ERR;
    }
    static void x_26(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::SECURITY_ERR;
    }
    static void x_27(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::NETWORK_ERR;
    }
    static void x_28(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::ABORT_ERR;
    }
    static void x_29(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::URL_MISMATCH_ERR;
    }
    static void x_30(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::QUOTA_EXCEEDED_ERR;
    }
    static void x_31(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::TIMEOUT_ERR;
    }
    static void x_32(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::NOT_READABLE_ERR;
    }
    static void x_33(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::DATA_CLONE_ERR;
    }
    static void x_34(Smoke::Stack x) {
        x[0].s_enum = (long)DOM::DOMException::ENCODING_ERR;
    }
    static void xenum_operation(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
        switch(xtype) {
        case 61: //DOM::DOMException::ExceptionCode
            switch(xop) {
                case Smoke::EnumNew:
                    xdata = (void*)new DOM::DOMException::ExceptionCode;
                    break;
                case Smoke::EnumDelete:
                    delete (DOM::DOMException::ExceptionCode*)xdata;
                    break;
                case Smoke::EnumFromLong:
                    *(DOM::DOMException::ExceptionCode*)xdata = (DOM::DOMException::ExceptionCode)xvalue;
                    break;
                case Smoke::EnumToLong:
                    xvalue = (long)*(DOM::DOMException::ExceptionCode*)xdata;
                    break;
            }
            break;
        }
    }
    ~x_DOM__DOMException() { this->_binding->deleted(24, (void*)this); }
};
void xenum_DOM__DOMException(Smoke::EnumOperation xop, Smoke::Index xtype, void *&xdata, long &xvalue) {
    x_DOM__DOMException::xenum_operation(xop, xtype, xdata, xvalue);
}
void xcall_DOM__DOMException(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_DOM__DOMException *xself = (x_DOM__DOMException*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_DOM__DOMException::x_1(args);	break;
        case 2: x_DOM__DOMException::x_2(args);	break;
        case 3: xself->x_3(args);	break;
        case 4: xself->x_4(args);	break;
        case 5: x_DOM__DOMException::x_5(args);	break;
        case 6: x_DOM__DOMException::x_6(args);	break;
        case 7: xself->x_7(args);	break;
        case 8: xself->x_8(args);	break;
        case 9: x_DOM__DOMException::x_9(args);	break;
        case 10: x_DOM__DOMException::x_10(args);	break;
        case 11: x_DOM__DOMException::x_11(args);	break;
        case 12: x_DOM__DOMException::x_12(args);	break;
        case 13: x_DOM__DOMException::x_13(args);	break;
        case 14: x_DOM__DOMException::x_14(args);	break;
        case 15: x_DOM__DOMException::x_15(args);	break;
        case 16: x_DOM__DOMException::x_16(args);	break;
        case 17: x_DOM__DOMException::x_17(args);	break;
        case 18: x_DOM__DOMException::x_18(args);	break;
        case 19: x_DOM__DOMException::x_19(args);	break;
        case 20: x_DOM__DOMException::x_20(args);	break;
        case 21: x_DOM__DOMException::x_21(args);	break;
        case 22: x_DOM__DOMException::x_22(args);	break;
        case 23: x_DOM__DOMException::x_23(args);	break;
        case 24: x_DOM__DOMException::x_24(args);	break;
        case 25: x_DOM__DOMException::x_25(args);	break;
        case 26: x_DOM__DOMException::x_26(args);	break;
        case 27: x_DOM__DOMException::x_27(args);	break;
        case 28: x_DOM__DOMException::x_28(args);	break;
        case 29: x_DOM__DOMException::x_29(args);	break;
        case 30: x_DOM__DOMException::x_30(args);	break;
        case 31: x_DOM__DOMException::x_31(args);	break;
        case 32: x_DOM__DOMException::x_32(args);	break;
        case 33: x_DOM__DOMException::x_33(args);	break;
        case 34: x_DOM__DOMException::x_34(args);	break;
        case 35: delete (DOM::DOMException*)xself;	break;
    }
}
class x_DOM__DOMImplementation : public DOM::DOMImplementation {
    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::DOMImplementation* DOMImplementation()
        x_DOM__DOMImplementation* xret = new x_DOM__DOMImplementation();
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__DOMImplementation() : DOMImplementation() {}
    static void x_2(Smoke::Stack x) {
        // DOM::DOMImplementation* DOMImplementation(const DOM::DOMImplementation&)
        x_DOM__DOMImplementation* xret = new x_DOM__DOMImplementation(*(const DOM::DOMImplementation*)x[1].s_class);
        x[0].s_class = (void*)xret;
    }
    explicit x_DOM__DOMImplementation(const DOM::DOMImplementation& x1) : DOMImplementation(x1) {}
    void x_3(Smoke::Stack x) {
        // DOM::DOMImplementation& operator=(const DOM::DOMImplementation&)
        DOM::DOMImplementation& xret = this->DOM::DOMImplementation::operator=(*(const DOM::DOMImplementation*)x[1].s_class);
        x[0].s_class = (void*)&xret;
    }
    void x_4(Smoke::Stack x) {
        // bool hasFeature(const DOM::DOMString&, const DOM::DOMString&)
        bool xret = this->DOM::DOMImplementation::hasFeature(*(const DOM::DOMString*)x[1].s_class,*(const DOM::DOMString*)x[2].s_class);
        x[0].s_bool = xret;
    }
    void x_5(Smoke::Stack x) {
        // DOM::DocumentType createDocumentType(const DOM::DOMString&, const DOM::DOMString&, const DOM::DOMString&)
        DOM::DocumentType xret = this->DOM::DOMImplementation::createDocumentType(*(const DOM::DOMString*)x[1].s_class,*(const DOM::DOMString*)x[2].s_class,*(const DOM::DOMString*)x[3].s_class);
        x[0].s_class = (void*)new DOM::DocumentType(xret);
    }
    void x_6(Smoke::Stack x) {
        // DOM::Document createDocument(const DOM::DOMString&, const DOM::DOMString&, const DOM::DocumentType&)
        DOM::Document xret = this->DOM::DOMImplementation::createDocument(*(const DOM::DOMString*)x[1].s_class,*(const DOM::DOMString*)x[2].s_class,*(const DOM::DocumentType*)x[3].s_class);
        x[0].s_class = (void*)new DOM::Document(xret);
    }
    void x_7(Smoke::Stack x) {
        // DOM::DOMImplementation getInterface(const DOM::DOMString&) const
        DOM::DOMImplementation xret = ((const x_DOM__DOMImplementation*)this)->DOM::DOMImplementation::getInterface(*(const DOM::DOMString*)x[1].s_class);
        x[0].s_class = (void*)new DOM::DOMImplementation(xret);
    }
    void x_8(Smoke::Stack x) {
        // DOM::CSSStyleSheet createCSSStyleSheet(const DOM::DOMString&, const DOM::DOMString&)
        DOM::CSSStyleSheet xret = this->DOM::DOMImplementation::createCSSStyleSheet(*(const DOM::DOMString*)x[1].s_class,*(const DOM::DOMString*)x[2].s_class);
        x[0].s_class = (void*)new DOM::CSSStyleSheet(xret);
    }
    void x_9(Smoke::Stack x) {
        // DOM::HTMLDocument createHTMLDocument(const DOM::DOMString&)
        DOM::HTMLDocument xret = this->DOM::DOMImplementation::createHTMLDocument(*(const DOM::DOMString*)x[1].s_class);
        x[0].s_class = (void*)new DOM::HTMLDocument(xret);
    }
    void x_10(Smoke::Stack x) {
        // bool isNull() const
        bool xret = ((const x_DOM__DOMImplementation*)this)->DOM::DOMImplementation::isNull();
        x[0].s_bool = xret;
    }
    ~x_DOM__DOMImplementation() { this->_binding->deleted(25, (void*)this); }
};
void xcall_DOM__DOMImplementation(Smoke::Index xi, void *obj, Smoke::Stack args) {
    x_DOM__DOMImplementation *xself = (x_DOM__DOMImplementation*)obj;
    switch(xi) {
        case 0: xself->x_0(args);	break;
        case 1: x_DOM__DOMImplementation::x_1(args);	break;
        case 2: x_DOM__DOMImplementation::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: delete (DOM::DOMImplementation*)xself;	break;
    }
}

}
