const QList<QDeclarativeTypeData::TypeReference> &resolvedTypes = unit->resolvedTypes();
const QDeclarativeTypeData::TypeReference &type = resolvedTypes.at(obj->type);
if (type.type) {
- COMPILE_EXCEPTION(prop, tr("\"%1.%2\" is not available in %3 %4.%5.").arg(elementName(obj)).arg(prop->name().toString()).arg(QString::fromUtf8(type.type->module())).arg(type.majorVersion).arg(type.minorVersion));
+ COMPILE_EXCEPTION(prop, tr("\"%1.%2\" is not available in %3 %4.%5.").arg(elementName(obj)).arg(prop->name().toString()).arg(type.type->module()).arg(type.majorVersion).arg(type.minorVersion));
} else {
COMPILE_EXCEPTION(prop, tr("\"%1.%2\" is not available due to component versioning.").arg(elementName(obj)).arg(prop->name().toString()));
}
QDeclarativeType *type = 0;
QDeclarativeImportedNamespace *typeNamespace = 0;
- unit->imports().resolveType(prop->name().toUtf8(), &type, 0, 0, 0, &typeNamespace);
+ unit->imports().resolveType(prop->name().toString(), &type, 0, 0, 0, &typeNamespace);
if (typeNamespace) {
COMPILE_CHECK(buildPropertyInNamespace(typeNamespace, prop, obj,
const QList<QDeclarativeTypeData::TypeReference> &resolvedTypes = unit->resolvedTypes();
const QDeclarativeTypeData::TypeReference &type = resolvedTypes.at(obj->type);
if (type.type) {
- COMPILE_EXCEPTION(prop, tr("\"%1.%2\" is not available in %3 %4.%5.").arg(elementName(obj)).arg(prop->name().toString()).arg(QString::fromUtf8(type.type->module())).arg(type.majorVersion).arg(type.minorVersion));
+ COMPILE_EXCEPTION(prop, tr("\"%1.%2\" is not available in %3 %4.%5.").arg(elementName(obj)).arg(prop->name().toString()).arg(type.type->module()).arg(type.majorVersion).arg(type.minorVersion));
} else {
COMPILE_EXCEPTION(prop, tr("\"%1.%2\" is not available due to component versioning.").arg(elementName(obj)).arg(prop->name().toString()));
}
// Setup attached property data
QDeclarativeType *type = 0;
- unit->imports().resolveType(ns, prop->name().toUtf8(), &type, 0, 0, 0);
+ unit->imports().resolveType(ns, prop->name().toString(), &type, 0, 0, 0);
if (!type || !type->attachedPropertiesType())
COMPILE_EXCEPTION(prop, tr("Non-existent attached object"));
QString typeName = parts.at(0);
QDeclarativeType *type = 0;
- unit->imports().resolveType(typeName.toUtf8(), &type, 0, 0, 0, 0);
+ unit->imports().resolveType(typeName, &type, 0, 0, 0, 0);
//handle enums on value types (where obj->typeName is empty)
QByteArray objTypeName = obj->typeName;
if (dot > 0) {
const QByteArray &scope = script.left(dot);
QDeclarativeType *type = 0;
- unit->imports().resolveType(scope, &type, 0, 0, 0, 0);
+ unit->imports().resolveType(QString::fromUtf8(script.left(dot)), &type, 0, 0, 0, 0);
if (!type && scope != "Qt")
return -1;
const QMetaObject *mo = type ? type->metaObject() : StaticQtMetaObject::get();
const QMetaObject *QDeclarativeCompiler::resolveType(const QByteArray& name) const
{
QDeclarativeType *qmltype = 0;
- if (!unit->imports().resolveType(name, &qmltype, 0, 0, 0, 0))
+ if (!unit->imports().resolveType(QString::fromUtf8(name), &qmltype, 0, 0, 0, 0))
return 0;
if (!qmltype)
return 0;
QByteArray customTypeName;
QDeclarativeType *qmltype = 0;
QString url;
- if (!unit->imports().resolveType(p->customType.toUtf8(), &qmltype, &url, 0, 0, 0))
+ if (!unit->imports().resolveType(p->customType.toString(), &qmltype, &url, 0, 0, 0))
COMPILE_EXCEPTION(p, tr("Invalid property type"));
if (!qmltype) {
{
public:
struct Data {
- QByteArray uri;
+ QString uri;
QString url;
int majversion;
int minversion;
QList<Data> imports;
- bool find_helper(QDeclarativeTypeLoader *typeLoader, const Data &data, const QByteArray& type, int *vmajor, int *vminor,
+ bool find_helper(QDeclarativeTypeLoader *typeLoader, const Data &data, const QString& type, int *vmajor, int *vminor,
QDeclarativeType** type_return, QString* url_return,
QString *base = 0, bool *typeRecursionDetected = 0);
- bool find(QDeclarativeTypeLoader *typeLoader, const QByteArray& type, int *vmajor, int *vminor, QDeclarativeType** type_return,
+ bool find(QDeclarativeTypeLoader *typeLoader, const QString& type, int *vmajor, int *vminor, QDeclarativeType** type_return,
QString* url_return, QString *base = 0, QList<QDeclarativeError> *errors = 0);
};
const QString& uri_arg, const QString& prefix,
int vmaj, int vmin, QDeclarativeScriptParser::Import::Type importType,
QDeclarativeImportDatabase *database, QList<QDeclarativeError> *errors);
- bool find(const QByteArray& type, int *vmajor, int *vminor,
+ bool find(const QString& type, int *vmajor, int *vminor,
QDeclarativeType** type_return, QString* url_return, QList<QDeclarativeError> *errors);
QDeclarativeImportedNamespace *findNamespace(const QString& type);
if (module)
import.modules.append(QDeclarativeTypeModuleVersion(module, data.minversion));
- QDeclarativeMetaType::ModuleApi moduleApi = QDeclarativeMetaType::moduleApi(data.uri, data.majversion, data.minversion);
+ QDeclarativeMetaType::ModuleApi moduleApi = QDeclarativeMetaType::moduleApi(data.uri.toUtf8(), data.majversion, data.minversion);
if (moduleApi.script || moduleApi.qobject) {
QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(engine);
QDeclarativeMetaType::ModuleApiInstance *a = ep->moduleApiInstances.value(moduleApi);
\sa addImport()
*/
-bool QDeclarativeImports::resolveType(const QByteArray& type,
+bool QDeclarativeImports::resolveType(const QString& type,
QDeclarativeType** type_return, QString* url_return, int *vmaj, int *vmin,
QDeclarativeImportedNamespace** ns_return, QList<QDeclarativeError> *errors) const
{
- QDeclarativeImportedNamespace* ns = d->findNamespace(QString::fromUtf8(type));
+ QDeclarativeImportedNamespace* ns = d->findNamespace(type);
if (ns) {
if (ns_return)
*ns_return = ns;
If either return pointer is 0, the corresponding search is not done.
*/
-bool QDeclarativeImports::resolveType(QDeclarativeImportedNamespace* ns, const QByteArray& type,
+bool QDeclarativeImports::resolveType(QDeclarativeImportedNamespace* ns, const QString& type,
QDeclarativeType** type_return, QString* url_return,
int *vmaj, int *vmin) const
{
return ns->find(d->typeLoader,type,vmaj,vmin,type_return,url_return);
}
-bool QDeclarativeImportedNamespace::find_helper(QDeclarativeTypeLoader *typeLoader, const Data &data, const QByteArray& type, int *vmajor, int *vminor,
+bool QDeclarativeImportedNamespace::find_helper(QDeclarativeTypeLoader *typeLoader, const Data &data, const QString& type, int *vmajor, int *vminor,
QDeclarativeType** type_return, QString* url_return,
QString *base, bool *typeRecursionDetected)
{
+ int vmaj = data.majversion;
+ int vmin = data.minversion;
+
if (vmaj >= 0 && vmin >= 0) {
QString qt = data.uri + QLatin1Char('/') + type;
QDeclarativeType *t = QDeclarativeMetaType::qmlType(qt,vmaj,vmin);
if (!typeWasDeclaredInQmldir && !data.isLibrary) {
// XXX search non-files too! (eg. zip files, see QT-524)
- QString url(data.url + QString::fromUtf8(type) + QLatin1String(".qml"));
+ QString url(data.url + type + QLatin1String(".qml"));
QString file = QDeclarativeEnginePrivate::urlToLocalFileOrQrc(url);
if (!typeLoader->absoluteFilePath(file).isEmpty()) {
if (base && *base == url) { // no recursion
}
}
- if (QDeclarativeMetaType::isModule(uri.toUtf8(), vmaj, vmin)) {
+ if (QDeclarativeMetaType::isModule(uri, vmaj, vmin))
versionFound = true;
- }
if (!versionFound && qmldircomponents.isEmpty()) {
if (errors) {
QDeclarativeError error; // we don't set the url or line or column as these will be set by the loader.
- if (QDeclarativeMetaType::isAnyModule(uri.toUtf8()))
+ if (QDeclarativeMetaType::isAnyModule(uri))
error.setDescription(QDeclarativeImportDatabase::tr("module \"%1\" version %2.%3 is not installed").arg(uri_arg).arg(vmaj).arg(vmin));
else
error.setDescription(QDeclarativeImportDatabase::tr("module \"%1\" is not installed").arg(uri_arg));
url += Slash;
QDeclarativeImportedNamespace::Data data;
- data.uri = uri.toUtf8();
+ data.uri = uri;
data.url = url;
data.majversion = vmaj;
data.minversion = vmin;
return true;
}
-bool QDeclarativeImportsPrivate::find(const QByteArray& type, int *vmajor, int *vminor, QDeclarativeType** type_return,
+bool QDeclarativeImportsPrivate::find(const QString& type, int *vmajor, int *vminor, QDeclarativeType** type_return,
QString* url_return, QList<QDeclarativeError> *errors)
{
QDeclarativeImportedNamespace *s = 0;
- int slash = type.indexOf('/');
+ int slash = type.indexOf(QLatin1Char('/'));
if (slash >= 0) {
- QString namespaceName = QString::fromUtf8(type.left(slash));
+ QString namespaceName = type.left(slash);
s = set.value(namespaceName);
if (!s) {
if (errors) {
}
return false;
}
- int nslash = type.indexOf('/',slash+1);
+ int nslash = type.indexOf(QLatin1Char('/'),slash+1);
if (nslash > 0) {
if (errors) {
QDeclarativeError error;
} else {
s = &unqualifiedset;
}
- QByteArray unqualifiedtype = slash < 0 ? type : type.mid(slash+1); // common-case opt (QString::mid works fine, but slower)
+ QString unqualifiedtype = slash < 0 ? type : type.mid(slash+1); // common-case opt (QString::mid works fine, but slower)
if (s) {
if (s->find(typeLoader,unqualifiedtype,vmajor,vminor,type_return,url_return, &base, errors))
return true;
if (s->imports.count() == 1 && !s->imports.at(0).isLibrary && url_return && s != &unqualifiedset) {
// qualified, and only 1 url
- *url_return = resolveLocalUrl(s->imports.at(0).url, QString::fromUtf8(unqualifiedtype) + QLatin1String(".qml"));
+ *url_return = resolveLocalUrl(s->imports.at(0).url, unqualifiedtype + QLatin1String(".qml"));
return true;
}
}
return set.value(type);
}
-bool QDeclarativeImportedNamespace::find(QDeclarativeTypeLoader *typeLoader, const QByteArray& type, int *vmajor, int *vminor, QDeclarativeType** type_return,
+bool QDeclarativeImportedNamespace::find(QDeclarativeTypeLoader *typeLoader, const QString& type, int *vmajor, int *vminor, QDeclarativeType** type_return,
QString* url_return, QString *base, QList<QDeclarativeError> *errors)
{
bool typeRecursionDetected = false;
void setBaseUrl(const QUrl &url);
QUrl baseUrl() const;
- bool resolveType(const QByteArray& type,
+ bool resolveType(const QString& type,
QDeclarativeType** type_return, QString* url_return,
int *version_major, int *version_minor,
QDeclarativeImportedNamespace** ns_return,
QList<QDeclarativeError> *errors = 0) const;
bool resolveType(QDeclarativeImportedNamespace*,
- const QByteArray& type,
+ const QString& type,
QDeclarativeType** type_return, QString* url_return,
int *version_major, int *version_minor) const;
struct VersionedUri {
VersionedUri()
: majorVersion(0) {}
- VersionedUri(const QByteArray &uri, int majorVersion)
+ VersionedUri(const QString &uri, int majorVersion)
: uri(uri), majorVersion(majorVersion) {}
bool operator==(const VersionedUri &other) const {
return other.majorVersion == majorVersion && other.uri == uri;
}
- QByteArray uri;
+ QString uri;
int majorVersion;
};
typedef QHash<VersionedUri, QDeclarativeTypeModule *> TypeModules;
QList<QDeclarativeMetaType::ModuleApi> moduleApis;
bool sorted;
};
- typedef QHash<QByteArray, ModuleApiList> ModuleApis;
+ typedef QHash<QString, ModuleApiList> ModuleApis;
ModuleApis moduleApis;
int moduleApiCount;
bool m_isInterface : 1;
const char *m_iid;
- QByteArray m_module;
+ QString m_module;
QByteArray m_name;
QString m_elementName;
int m_version_maj;
if (type.uri) name += '/';
name += type.elementName;
- d->m_module = type.uri;
+ d->m_module = QString::fromUtf8(type.uri);
d->m_name = name;
d->m_version_maj = type.versionMajor;
d->m_version_min = type.versionMinor;
delete d;
}
-QByteArray QDeclarativeType::module() const
+QString QDeclarativeType::module() const
{
return d->m_module;
}
return vmajor == d->m_version_maj && vminor >= d->m_version_min;
}
-bool QDeclarativeType::availableInVersion(const QByteArray &module, int vmajor, int vminor) const
+bool QDeclarativeType::availableInVersion(const QString &module, int vmajor, int vminor) const
{
Q_ASSERT(vmajor >= 0 && vminor >= 0);
return module == d->m_module && vmajor == d->m_version_maj && vminor >= d->m_version_min;
delete d; d = 0;
}
-QByteArray QDeclarativeTypeModule::module() const
+QString QDeclarativeTypeModule::module() const
{
return d->uri.uri;
}
if (type.listId) data->lists.setBit(type.listId, true);
if (type.uri) {
- QByteArray mod(type.uri);
+ QString mod = QString::fromUtf8(type.uri);
QDeclarativeMetaTypeData::VersionedUri versionedUri(mod, type.versionMajor);
QDeclarativeTypeModule *module = data->uriToModule.value(versionedUri);
QWriteLocker lock(metaTypeDataLock());
QDeclarativeMetaTypeData *data = metaTypeData();
- QByteArray uri(api.uri);
+ QString uri = QString::fromUtf8(api.uri);
QDeclarativeMetaType::ModuleApi import;
import.major = api.versionMajor;
import.minor = api.versionMinor;
/*
Returns true if a module \a uri of any version is installed.
*/
-bool QDeclarativeMetaType::isAnyModule(const QByteArray &uri)
+bool QDeclarativeMetaType::isAnyModule(const QString &uri)
{
QReadLocker lock(metaTypeDataLock());
QDeclarativeMetaTypeData *data = metaTypeData();
So if only 4.7 and 4.9 have been registered, 4.7,4.8, and 4.9 are valid, but not 4.6 nor 4.10.
*/
-bool QDeclarativeMetaType::isModule(const QByteArray &module, int versionMajor, int versionMinor)
+bool QDeclarativeMetaType::isModule(const QString &module, int versionMajor, int versionMinor)
{
Q_ASSERT(versionMajor >= 0 && versionMinor >= 0);
QReadLocker lock(metaTypeDataLock());
return false;
}
-QDeclarativeTypeModule *QDeclarativeMetaType::typeModule(const QByteArray &uri, int majorVersion)
+QDeclarativeTypeModule *QDeclarativeMetaType::typeModule(const QString &uri, int majorVersion)
{
QReadLocker lock(metaTypeDataLock());
QDeclarativeMetaTypeData *data = metaTypeData();
}
QDeclarativeMetaType::ModuleApi
-QDeclarativeMetaType::moduleApi(const QByteArray &uri, int versionMajor, int versionMinor)
+QDeclarativeMetaType::moduleApi(const QString &uri, int versionMajor, int versionMinor)
{
QReadLocker lock(metaTypeDataLock());
QDeclarativeMetaTypeData *data = metaTypeData();
by \a version_major and \a version_minor in module specified by \a uri. Returns null if no
type is registered.
*/
-QDeclarativeType *QDeclarativeMetaType::qmlType(const QMetaObject *metaObject, const QByteArray &module, int version_major, int version_minor)
+QDeclarativeType *QDeclarativeMetaType::qmlType(const QMetaObject *metaObject, const QString &module, int version_major, int version_minor)
{
Q_ASSERT(version_major >= 0 && version_minor >= 0);
QReadLocker lock(metaTypeDataLock());
static QDeclarativeType *qmlType(const QByteArray &, int, int);
static QDeclarativeType *qmlType(const QMetaObject *);
- static QDeclarativeType *qmlType(const QMetaObject *metaObject, const QByteArray &module, int version_major, int version_minor);
+ static QDeclarativeType *qmlType(const QMetaObject *metaObject, const QString &module, int version_major, int version_minor);
static QDeclarativeType *qmlType(int);
static QMetaProperty defaultProperty(const QMetaObject *);
static void registerCustomStringConverter(int, StringConverter);
static StringConverter customStringConverter(int);
- static bool isAnyModule(const QByteArray &uri);
- static bool isModule(const QByteArray &module, int versionMajor, int versionMinor);
- static QDeclarativeTypeModule *typeModule(const QByteArray &uri, int majorVersion);
+ static bool isAnyModule(const QString &uri);
+ static bool isModule(const QString &module, int versionMajor, int versionMinor);
+ static QDeclarativeTypeModule *typeModule(const QString &uri, int majorVersion);
static QList<QDeclarativePrivate::AutoParentFunction> parentFunctions();
QJSValue (*script)(QDeclarativeEngine *, QJSEngine *);
QObject *(*qobject)(QDeclarativeEngine *, QJSEngine *);
};
- static ModuleApi moduleApi(const QByteArray &, int, int);
+ static ModuleApi moduleApi(const QString &, int, int);
};
class QHashedStringRef;
const QByteArray &qmlTypeName() const;
const QString &elementName() const;
- QByteArray module() const;
+ QString module() const;
int majorVersion() const;
int minorVersion() const;
bool availableInVersion(int vmajor, int vminor) const;
- bool availableInVersion(const QByteArray &module, int vmajor, int vminor) const;
+ bool availableInVersion(const QString &module, int vmajor, int vminor) const;
QObject *create() const;
void create(QObject **, void **, size_t) const;
class QDeclarativeTypeModule
{
public:
- QByteArray module() const;
+ QString module() const;
int majorVersion() const;
int minimumMinorVersion() const;
}
foreach (QDeclarativeScriptParser::TypeReference *parserRef, scriptParser.referencedTypes()) {
- QByteArray typeName = parserRef->name.toUtf8();
-
TypeReference ref;
QString url;
QDeclarativeImportedNamespace *typeNamespace = 0;
QList<QDeclarativeError> errors;
- if (!m_imports.resolveType(typeName, &ref.type, &url, &majorVersion, &minorVersion,
+ if (!m_imports.resolveType(parserRef->name, &ref.type, &url, &majorVersion, &minorVersion,
&typeNamespace, &errors) || typeNamespace) {
// Known to not be a type:
// - known to be a namespace (Namespace {})