示例#1
0
文件: main.cpp 项目: KDE/jsmoke
static Smoke* 
loadSmokeModule(QString moduleName) {
    QFileInfo file(QString("libsmoke") + moduleName);
    QLibrary lib(file.filePath());

    if (moduleName == "qtcore") {
        init_qtcore_Smoke();
        return qtcore_Smoke;
    }

    QString init_name = "init_" + moduleName + "_Smoke";
    InitSmokeFn init = (InitSmokeFn) lib.resolve(init_name.toLatin1());

    if (!init)
        qFatal("Couldn't resolve %s: %s", qPrintable(init_name), qPrintable(lib.errorString()));
    
    (*init)();

    QString smoke_name = moduleName + "_Smoke";
    Smoke** smoke = (Smoke**) lib.resolve(smoke_name.toLatin1());
    if (!smoke)
        qFatal("Couldn't resolve %s: %s", qPrintable(smoke_name), qPrintable(lib.errorString()));

    return *smoke;
}
示例#2
0
文件: qtcore.cpp 项目: KDE/jsmoke
void qtscript_initialize_jsmoke_qtcore_bindings(QScriptValue& extensionObject)
{
static bool initialized = false;

    if (!initialized) {
        init_qtcore_Smoke();
        JSmoke::Module qtcore_module = { "qtcore", new JSmoke::Binding(qtcore_Smoke) };
        JSmoke::Global::modules[qtcore_Smoke] = qtcore_module;    
    
        JSmoke::Global::QObjectClassId = qtcore_Smoke->idClass("QObject");
        JSmoke::Global::QDateClassId = qtcore_Smoke->idClass("QDate");
        JSmoke::Global::QDateTimeClassId = qtcore_Smoke->idClass("QDateTime");
        JSmoke::Global::QTimeClassId = qtcore_Smoke->idClass("QTime");
        JSmoke::Global::QEventClassId = qtcore_Smoke->idClass("QEvent");

        JSmoke::Marshall::installHandlers(JSmoke::QtCoreHandlers);
        
        JSmoke::Global::registerTypeResolver(JSmoke::Global::QEventClassId, qeventTypeResolver);
        JSmoke::Global::registerTypeResolver(JSmoke::Global::QObjectClassId, qobjectTypeResolver );
                                                        
        JSmoke::Global::startFinalizerThread();
        initialized = true;
    }
    
    QScriptEngine* engine = extensionObject.engine();
    JSmoke::Global::initializeClasses(engine, qtcore_Smoke);
               
    QScriptValue QtClass = engine->globalObject().property(QString("Qt"));
    JSmoke::Global::QtEnum = engine->newFunction(QtEnum_ctor);
    QtClass.setProperty("Enum", JSmoke::Global::QtEnum);            
    QtClass.setProperty("Debug", engine->newFunction(Debug_ctor).call());

    QScriptValue QVariantClass = engine->globalObject().property(QString("QVariant"));
    QVariantClass.setProperty("fromValue", engine->newFunction(QVariant_fromValue));
    QVariantClass.property("prototype").setProperty("valueOf", engine->newFunction(QVariant_valueOf));

    JSmoke::registerQtCoreTypes(engine);
        
    return;
}
示例#3
0
void init_qtcore_CSmoke() {
    init_qtcore_Smoke();
}