Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion generator/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,20 @@ namespace
QRegularExpression re("#define\\s+QTCORE_VERSION\\s+0x([0-9a-f]+)", QRegularExpression::CaseInsensitiveOption);
for (const QString &includeDir: getIncludeDirectories(commandLineIncludes))
{
QFileInfo fi(QDir(includeDir), "qtcoreversion.h");
std::list<std::string> candiate_paths;
candiate_paths.emplace_back("qtcoreversion.h");
candiate_paths.emplace_back("QtCore/qtcoreversion.h");
candiate_paths.emplace_back("QtCore.framework/Headers/qtcoreversion.h");
QFileInfo fi(QDir(includeDir), QString("qtcoreversion.h"));
for (const std::string &candidate : candiate_paths)
{
QFileInfo candidate_fi(QDir(includeDir), candidate.c_str());
if (candidate_fi.exists() && candidate_fi.isFile())
{
fi = candidate_fi;
break;
}
}
if (fi.exists())
{
QString filePath = fi.absoluteFilePath();
Expand Down
2 changes: 1 addition & 1 deletion generator/parser/name_compiler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ void NameCompiler::visitUnqualifiedName(UnqualifiedNameAST *node)
// ### cleanup
_M_name.last() += QLatin1String("<");
visitNodes(this, node->template_arguments);
_M_name.last().truncate(_M_name.last().count() - 1); // remove the last ','
_M_name.last().truncate(_M_name.last().length() - 1); // remove the last ','
_M_name.last() += QLatin1String(">");
}

Expand Down
27 changes: 27 additions & 0 deletions generator/simplecpp/simplecpp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3116,13 +3116,40 @@ static std::string getIncludePathFileName(const std::string &includePath, const
return path + header;
}

#ifdef __APPLE__
static std::string get_apple_framework_relative_path(const std::string& header)
{
std::string appleFrameworkHeader = {header};
// try the Framework path on Mac, if there is a path in front
// ### what about escaped slashes?
size_t slashPos = appleFrameworkHeader.find('/');
if (slashPos != std::string::npos)
{
constexpr auto framework_separator{ ".framework/Headers" };
appleFrameworkHeader.insert(slashPos, framework_separator);
}
return appleFrameworkHeader;
}
#endif // __APPLE__

static std::string openHeaderIncludePath(std::ifstream &f, const simplecpp::DUI &dui, const std::string &header)
{
for (std::list<std::string>::const_iterator it = dui.includePaths.begin(); it != dui.includePaths.end(); ++it) {
std::string simplePath = openHeader(f, getIncludePathFileName(*it, header));
if (!simplePath.empty())
return simplePath;
}
#ifdef __APPLE__
std::string appleFrameworkHeader = get_apple_framework_relative_path(header);
if (appleFrameworkHeader != header)
{
for (std::list<std::string>::const_iterator it = dui.includePaths.begin(); it != dui.includePaths.end(); ++it) {
std::string simplePath = openHeader(f, getIncludePathFileName(*it, appleFrameworkHeader));
if (!simplePath.empty())
return simplePath;
}
}
#endif // __APPLE__
return "";
}

Expand Down
3 changes: 3 additions & 0 deletions generator/simplecpp/simplecpp.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@
#endif

namespace simplecpp {

std::string get_apple_framework_relative_path(const std::string& header);

/** C code standard */
enum cstd_t { CUnknown=-1, C89, C99, C11, C17, C23 };

Expand Down
4 changes: 4 additions & 0 deletions src/PythonQtClassInfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,11 @@ void PythonQtClassInfo::setupCPPObject(const QByteArray& classname)
{
_isQObject = false;
_wrappedClassName = classname;
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
_metaTypeId = QMetaType::fromName(classname).id();
#else
_metaTypeId = QMetaType::type(classname);
#endif
if (_metaTypeId == 0) {
_metaTypeId = -1;
}
Expand Down
Loading