summaryrefslogtreecommitdiffstats
path: root/src/activeqt/container/qaxbase.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2016-02-10 09:56:41 +0100
committerFriedemann Kleint <Friedemann.Kleint@theqtcompany.com>2016-02-10 19:37:53 +0000
commit3d3b0abf45ad4bf6abd82d022e01080cd423c1c5 (patch)
tree0d4e26f7a5c07682c8b00472e72cb8295223d342 /src/activeqt/container/qaxbase.cpp
parentde83e48d7908e2f50d9cdbe41207b77a41332f2d (diff)
Introduce helper functions for ITypeInfo::GetNames().
Move code to axutils. Change-Id: I149d72bba2f250a2c11e144b449b55385fe280e2 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Diffstat (limited to 'src/activeqt/container/qaxbase.cpp')
-rw-r--r--src/activeqt/container/qaxbase.cpp74
1 files changed, 17 insertions, 57 deletions
diff --git a/src/activeqt/container/qaxbase.cpp b/src/activeqt/container/qaxbase.cpp
index acc319e..fb1351e 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(");
@@ -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 += ',';