summaryrefslogtreecommitdiffstats
path: root/src/activeqt/container/qaxbase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/activeqt/container/qaxbase.cpp')
-rw-r--r--src/activeqt/container/qaxbase.cpp83
1 files changed, 22 insertions, 61 deletions
diff --git a/src/activeqt/container/qaxbase.cpp b/src/activeqt/container/qaxbase.cpp
index acc319e..472e041 100644
--- a/src/activeqt/container/qaxbase.cpp
+++ b/src/activeqt/container/qaxbase.cpp
@@ -663,13 +663,10 @@ QByteArray QAxEventSink::findProperty(DISPID dispID)
if (!typeinfo)
return propname;
- BSTR names;
- UINT cNames;
- typeinfo->GetNames(dispID, &names, 1, &cNames);
- if (cNames) {
- propname = QString::fromWCharArray(names).toLatin1();
- SysFreeString(names);
- }
+
+ const QByteArray propnameI = qaxTypeInfoName(typeinfo, dispID);
+ if (!propnameI.isEmpty())
+ propname = propnameI;
typeinfo->Release();
QByteArray propsignal(propname + "Changed(");
@@ -1406,7 +1403,7 @@ bool QAxBase::initializeRemote(IUnknown** ptr)
at = server.indexOf(QChar::fromLatin1('@'));
if (at != -1) {
user = server.left(at);
- server = server.mid(at+1);
+ server.remove(0, at + 1);
at = user.indexOf(QChar::fromLatin1(':'));
if (at != -1) {
@@ -1416,7 +1413,7 @@ bool QAxBase::initializeRemote(IUnknown** ptr)
at = user.indexOf(QChar::fromLatin1('/'));
if (at != -1) {
domain = user.left(at);
- user = user.mid(at+1);
+ user.remove(0, at + 1);
}
}
@@ -2298,17 +2295,9 @@ void MetaObjectGenerator::readEnumInfo()
int value = vardesc->lpvarValue->lVal;
int memid = vardesc->memid;
// Get the name of the value
- BSTR valuename;
- QByteArray valueName;
- UINT maxNamesOut;
- enuminfo->GetNames(memid, &valuename, 1, &maxNamesOut);
- if (maxNamesOut) {
- valueName = QString::fromWCharArray(valuename).toLatin1();
- SysFreeString(valuename);
- } else {
+ QByteArray valueName = qaxTypeInfoName(enuminfo, memid);
+ if (valueName.isEmpty())
valueName = "value" + QByteArray::number(valueindex++);
- }
-
if (clashCheck.contains(QString::fromLatin1(valueName)))
valueName += QByteArray::number(++clashIndex);
@@ -2457,25 +2446,15 @@ void MetaObjectGenerator::readFuncsInfo(ITypeInfo *typeinfo, ushort nFuncs)
if (!funcdesc)
break;
- QByteArray function;
QByteArray type;
QByteArray prototype;
QList<QByteArray> parameters;
// parse function description
- BSTR bstrNames[256];
- UINT maxNames = 255;
- UINT maxNamesOut;
- typeinfo->GetNames(funcdesc->memid, (BSTR*)&bstrNames, maxNames, &maxNamesOut);
- QList<QByteArray> names;
- int p;
- for (p = 0; p < (int)maxNamesOut; ++p) {
- names << QString::fromWCharArray(bstrNames[p]).toLatin1();
- SysFreeString(bstrNames[p]);
- }
-
+ const QByteArrayList names = qaxTypeInfoNames(typeinfo, funcdesc->memid);
+ const int maxNamesOut = names.size();
// function name
- function = names.at(0);
+ const QByteArray &function = names.at(0);
if ((maxNamesOut == 3 && function == "QueryInterface") ||
(maxNamesOut == 1 && function == "AddRef") ||
(maxNamesOut == 1 && function == "Release") ||
@@ -2574,7 +2553,7 @@ void MetaObjectGenerator::readFuncsInfo(ITypeInfo *typeinfo, ushort nFuncs)
bool defargs;
do {
QByteArray pnames;
- for (p = 0; p < parameters.count(); ++p) {
+ for (int p = 0; p < parameters.count(); ++p) {
pnames += parameters.at(p);
if (p < parameters.count() - 1)
pnames += ',';
@@ -2640,24 +2619,17 @@ void MetaObjectGenerator::readVarsInfo(ITypeInfo *typeinfo, ushort nVars)
}
// get variable name
- BSTR bstrName;
- UINT maxNames = 1;
- UINT maxNamesOut;
- typeinfo->GetNames(vardesc->memid, &bstrName, maxNames, &maxNamesOut);
- if (maxNamesOut != 1 || !bstrName) {
+ const QByteArray variableName = qaxTypeInfoName(typeinfo, vardesc->memid);
+ if (variableName.isEmpty()) {
typeinfo->ReleaseVarDesc(vardesc);
continue;
}
- QByteArray variableType;
- QByteArray variableName;
- uint flags = 0;
- variableName = QString::fromWCharArray(bstrName).toLatin1();
- SysFreeString(bstrName);
+ uint flags = 0;
// get variable type
TYPEDESC typedesc = vardesc->elemdescVar.tdesc;
- variableType = guessTypes(typedesc, typeinfo, variableName);
+ const QByteArray variableType = guessTypes(typedesc, typeinfo, variableName);
// generate meta property
if (!hasProperty(variableName)) {
@@ -2798,29 +2770,17 @@ void MetaObjectGenerator::readEventInterface(ITypeInfo *eventinfo, IConnectionPo
continue;
}
- QByteArray function;
QByteArray prototype;
QList<QByteArray> parameters;
- // parse event function description
- BSTR bstrNames[256];
- UINT maxNames = 255;
- UINT maxNamesOut;
- eventinfo->GetNames(funcdesc->memid, (BSTR*)&bstrNames, maxNames, &maxNamesOut);
- QList<QByteArray> names;
- int p;
- for (p = 0; p < (int)maxNamesOut; ++p) {
- names << QString::fromWCharArray(bstrNames[p]).toLatin1();
- SysFreeString(bstrNames[p]);
- }
+ // parse event function description, get event function prototype
+ const QByteArrayList names = qaxTypeInfoNames(eventinfo, funcdesc->memid);
- // get event function prototype
- function = names.at(0);
QByteArray type; // dummy - we don't care about return values for signals
prototype = createPrototype(/*in*/ funcdesc, eventinfo, names, /*out*/type, parameters);
if (!hasSignal(prototype)) {
QByteArray pnames;
- for (p = 0; p < parameters.count(); ++p) {
+ for (int p = 0; p < parameters.count(); ++p) {
pnames += parameters.at(p);
if (p < parameters.count() - 1)
pnames += ',';
@@ -3872,7 +3832,7 @@ bool QAxBase::dynamicCallHelper(const char *name, void *inout, QList<QVariant> &
parse = !varc && normFunction.length() > function.length() + 2;
if (parse) {
QString args = QLatin1String(normFunction);
- args = args.mid(function.length() + 1);
+ args.remove(0, function.length() + 1);
// parse argument string int list of arguments
QString curArg;
const QChar *c = args.unicode();
@@ -4492,7 +4452,8 @@ QVariant QAxBase::asVariant() const
else if (d->ptr)
qvar.setValue(d->ptr);
} else {
- cn = cn.mid(cn.lastIndexOf(':') + 1) + '*';
+ cn.remove(0, cn.lastIndexOf(':') + 1);
+ cn += '*';
QObject *object = qObject();
int typeId = QMetaType::type(cn);
if (typeId == QMetaType::UnknownType)