From 90825e2392b2d70e43c7a25b8a3752299a933894 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebindings@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kjsembed/bindwizard/doxygen2imp_cpp.xsl | 560 ++++++++++++++++++++++++++++++++ 1 file changed, 560 insertions(+) create mode 100644 kjsembed/bindwizard/doxygen2imp_cpp.xsl (limited to 'kjsembed/bindwizard/doxygen2imp_cpp.xsl') diff --git a/kjsembed/bindwizard/doxygen2imp_cpp.xsl b/kjsembed/bindwizard/doxygen2imp_cpp.xsl new file mode 100644 index 00000000..c65b5650 --- /dev/null +++ b/kjsembed/bindwizard/doxygen2imp_cpp.xsl @@ -0,0 +1,560 @@ + + + + + + + + + + + + + + +#include <qcstring.h> +#include <qimage.h> +#include <qpainter.h> +#include <qpalette.h> +#include <qpixmap.h> +#include <qfont.h> + +#include <kjs/object.h> + +#include <kjsembed/global.h> +#include <kjsembed/jsobjectproxy.h> +#include <kjsembed/jsopaqueproxy.h> +#include <kjsembed/jsbinding.h> + +#include <> +#include "_imp.h" + +/** + * Namespace containing the KJSEmbed library. + */ +namespace KJSEmbed { + +Imp::Imp( KJS::ExecState *exec, int mid, bool constructor ) + : JSProxyImp(exec), id(mid), cons(constructor) +{ +} + +Imp::~Imp() +{ +} + +/** + * Adds bindings for static methods and enum constants to the specified Object. + */ +void Imp::addStaticBindings( KJS::ExecState *exec, KJS::Object &object ) +{ + JSProxy::MethodTable methods[] = { + + _ + Method_ + + + { , "" }, + + { 0, 0 } + }; + + int idx = 0; + QCString lastName; + + while( methods[idx].name ) { + if ( lastName != methods[idx].name ) { + Imp *meth = new Imp( exec, methods[idx].id ); + object.put( exec , methods[idx].name, KJS::Object(meth) ); + lastName = methods[idx].name; + } + ++idx; + } + + + // + // Define the enum constants + // + struct EnumValue { + const char *id; + int val; + }; + + EnumValue enums[] = { + + // enum + + { "", :: }, + + { 0, 0 } + }; + + int enumidx = 0; + while( enums[enumidx].id ) { + object.put( exec, enums[enumidx].id, KJS::Number(enums[enumidx].val), KJS::ReadOnly ); + ++enumidx; + } + +} + +/** + * Adds bindings for instance methods to the specified Object. + */ +void Imp::addBindings( KJS::ExecState *exec, KJS::Object &object ) +{ + JSProxy::MethodTable methods[] = { + + _ + Method_ + + + { , "" }, + + { 0, 0 } + }; + + int idx = 0; + QCString lastName; + + while( methods[idx].name ) { + if ( lastName != methods[idx].name ) { + Imp *meth = new Imp( exec, methods[idx].id ); + object.put( exec , methods[idx].name, KJS::Object(meth) ); + lastName = methods[idx].name; + } + ++idx; + } +} + +/** + * Extract a pointer from an Object. + */ + *Imp::to( KJS::Object &self ) +{ + JSObjectProxy *ob = JSProxy::toObjectProxy( self.imp() ); + if ( ob ) { + QObject *obj = ob->object(); + if ( obj ) + return dynamic_cast< *>( obj ); + } + + JSOpaqueProxy *op = JSProxy::toOpaqueProxy( self.imp() ); + if ( !op ) + return 0; + + if ( op->typeName() != "" ) + return 0; + + return ( *)( op->toVoidStar() ); +} + +/** + * Select and invoke the correct constructor. + */ +KJS::Object Imp::construct( KJS::ExecState *exec, const KJS::List &args ) +{ + switch( id ) { + + + + _ + Constructor_ + case : + return ( exec, args ); + break; + + + + default: + break; + } + + QString msg = i18n("Cons has no constructor with id '%1'").arg(id); + KJS::Object err = KJS::Error::create( exec, KJS::ReferenceError, msg.utf8() ); + exec->setException( err ); + return err; +} + + + + + + _ + Constructor_ +KJS::Object Imp::( KJS::ExecState *exec, const KJS::List &args ) +{ + +#if 0 // This constructor has been disabled by the XSL template + + + + + + + + + QString arg = extractQString(exec, args, ); + + + QString arg = extractQString(exec, args, ); + + + QString arg = extractQString(exec, args, ); + + + const QCString arg = (args.size() >= ) ? args[].toString(exec).ascii() : 0; + + + const char *arg = (args.size() >= ) ? args[].toString(exec).ascii() : 0; + + + int arg = extractInt(exec, args, ); + + + uint arg = extractUInt(exec, args, ); + + + double arg = extractDouble(exec, args, ); + + + bool arg = extractBool(exec, args, ); + + + QFont arg = extractQFont(exec, args, ); + + + QPalette arg = extractQPalette(exec, args, ); + + + QStringList arg = extractQStringList(exec, args, ); + + + QStrList arg = extractQStrList(exec, args, ); + + + QPoint arg = extractQPoint(exec, args, ); + + + QRect arg = extractQRect(exec, args, ); + + + QSize arg = extractQSize(exec, args, ); + + + QPixmap arg = extractQPixmap(exec, args, ); + + + QImage arg = extractQImage(exec, args, ); + + + QColor arg = extractQColor(exec, args, ); + + + QDate arg = extractQDate(exec, args, ); + + + QTime arg = extractQTime(exec, args, ); + + + QDateTime arg = extractQDateTime(exec, args, ); + + + + Qt::WFlags arg; // TODO (hack for QCanvasView) + + + + // Unsupported parameter + return KJS::Object(); + + arg; // Dummy + + + + + // We should now create an instance of the object + + *ret = new ( + + arg, + ); + + +#endif // This constructor has been disabled by the XSL template + +} + + + + + +KJS::Value Imp::call( KJS::ExecState *exec, KJS::Object &self, const KJS::List &args ) +{ + instance = Imp::to( self ); + + switch( id ) { + + _ + Method_ + + + case : + return ( exec, self, args ); + break; + + + + default: + break; + } + + QString msg = i18n( "Imp has no method with id '%1'" ).arg( id ); + KJS::Object err = KJS::Error::create( exec, KJS::ReferenceError, msg.utf8() ); + exec->setException( err ); + return err; +} + + + + +Imp::_ + + + + + +KJS::Value ( KJS::ExecState *exec, KJS::Object &obj, const KJS::List &args ) +{ + + + + + + + QString arg = extractQString(exec, args, ); + + + QString arg = extractQString(exec, args, ); + + + QString arg = extractQString(exec, args, ); + + + const QCString arg = (args.size() >= ) ? args[].toString(exec).ascii() : 0; + + + const char *arg = (args.size() >= ) ? args[].toString(exec).ascii() : 0; + + + int arg = extractInt(exec, args, ); + + + uint arg = extractUInt(exec, args, ); + + + double arg = extractDouble(exec, args, ); + + + bool arg = extractBool(exec, args, ); + + + QFont arg = extractQFont(exec, args, ); + + + QPalette arg = extractQPalette(exec, args, ); + + + QStringList arg = extractQStringList(exec, args, ); + + + QStrList arg = extractQStrList(exec, args, ); + + + QPoint arg = extractQPoint(exec, args, ); + + + QRect arg = extractQRect(exec, args, ); + + + QSize arg = extractQSize(exec, args, ); + + + QPixmap arg = extractQPixmap(exec, args, ); + + + QImage arg = extractQImage(exec, args, ); + + + QColor arg = extractQColor(exec, args, ); + + + QDate arg = extractQDate(exec, args, ); + + + QTime arg = extractQTime(exec, args, ); + + + QDateTime arg = extractQDateTime(exec, args, ); + + + + + + QComboBox::Policy arg; // TODO (hack for combo box) + + + QFrame::Shape arg; // TODO (hack for frame) + + + QFrame::Shadow arg; // TODO (hack for frame) + + + FILE *arg; // TODO (hack for qfile) + + + QFile::Offset arg; // TODO (hack for qfile) + + + QFile::EncoderFn arg; // TODO (hack for qfile) + + + QFile::DecoderFn arg; // TODO (hack for qfile) + + + QCanvasSprite::FrameAnimationType arg; // TODO (hack for QCanvasSprite) + + + Qt::WFlags arg; // TODO (hack for QCanvasView) + + + + + + QByteArray arg; // TODO (hack for qfile) + + + QPointArray arg; // TODO (hack for qcanvas) + + + QPainter arg; // TODO (hack for qcanvas) + + + QPainter arg; // TODO (hack for qcanvas) + + + QWMatrix arg; // TODO (hack for qcanvasview) + + + + // Unsupported parameter + return KJS::Value(); + + arg; // Dummy + + + + + + + + + + + + + + + + + + bool ret; + ret = instance->( + arg, ); + return KJS::Boolean( ret ); + + + + int ret; + ret = instance->( + arg, ); + return KJS::Number( ret ); + + + + uint ret; + ret = instance->( + arg, ); + return KJS::Number( ret ); + + + + double ret; + ret = instance->( + arg, ); + return KJS::Number( ret ); + + + + QString ret; + ret = instance->( + arg, ); + return KJS::String( ret ); + + + + const char *ret; + ret = instance->( + arg, ); + return KJS::String( ret ); + + + + + + ret; + ret = instance->( + arg, ); + + return convertToValue( exec, ret ); + + + QStringList ret; + ret = instance->( + arg, ); + + return convertToValue( exec, ret ); + + + + + + instance->( + arg, ); + return KJS::Value(); // Returns void + + + + instance->( + arg, ); + return KJS::Value(); // Returns '' + + +} + + + + +} // namespace KJSEmbed + +// Local Variables: +// c-basic-offset: 4 +// End: + + + -- cgit v1.2.1