mirror of
https://github.com/ModOrganizer2/modorganizer.git
synced 2026-07-27 13:58:24 -07:00
Separated out the include what you use mappings into separate files, more improvements
This commit is contained in:
+68
-8
@@ -274,13 +274,70 @@ def setup_IWYU(env):
|
||||
SCons.Defaults.StaticObjectEmitter = static_emitter
|
||||
|
||||
def emitter(target, source, env):
|
||||
env.Depends(target, ('$IWYU_MAPPING_FILE', '$IWYU_MASSAGE'))
|
||||
env.Depends(target, env['IWYU_MAPPING_FILE'])
|
||||
env.Depends(target, env['IWYU_MASSAGE'])
|
||||
return target, source
|
||||
|
||||
def _concat_list(prefixes, list, suffixes, env, f=lambda x: x, target=None, source=None):
|
||||
""" Creates a new list from 'list' by first interpolating each element
|
||||
in the list using the 'env' dictionary and then calling f on the
|
||||
list, and concatenate the 'prefix' and 'suffix' LISTS onto each element of the list.
|
||||
A trailing space on the last element of 'prefix' or leading space on the
|
||||
first element of 'suffix' will cause them to be put into separate list
|
||||
elements rather than being concatenated.
|
||||
"""
|
||||
|
||||
if not list:
|
||||
return list
|
||||
|
||||
l = f(SCons.PathList.PathList(list).subst_path(env, target, source))
|
||||
if l is not None:
|
||||
list = l
|
||||
|
||||
# This bit replaces current concat_ixes
|
||||
|
||||
result = []
|
||||
|
||||
def process_stringlist(s):
|
||||
return [ str(env.subst(p, SCons.Subst.SUBST_RAW))
|
||||
for p in Flatten([s]) if p != '' ]
|
||||
|
||||
# ensure that prefix and suffix are strings
|
||||
prefixes = process_stringlist(prefixes)
|
||||
prefix = ''
|
||||
if len(prefixes) != 0:
|
||||
if prefixes[-1][-1] != ' ':
|
||||
prefix = prefixes.pop()
|
||||
|
||||
suffixes = process_stringlist(suffixes)
|
||||
suffix = ''
|
||||
if len(suffixes) != 0:
|
||||
if suffixes[-1][0] != ' ':
|
||||
suffix = suffixes.pop(0)
|
||||
|
||||
for x in list:
|
||||
if isinstance(x, SCons.Node.FS.File):
|
||||
result.append(x)
|
||||
continue
|
||||
x = str(x)
|
||||
if x:
|
||||
result.append(prefixes)
|
||||
if prefix:
|
||||
if x[:len(prefix)] != prefix:
|
||||
x = prefix + x
|
||||
result.append(x)
|
||||
if suffix:
|
||||
if x[-len(suffix):] != suffix:
|
||||
result[-1] = result[-1] + suffix
|
||||
result.append(suffixes)
|
||||
return result
|
||||
|
||||
env['_concat_list'] = _concat_list
|
||||
# Note to self: command 2>&1 | other command appears to work as I would hope
|
||||
# except it eats errors
|
||||
iwyu = SCons.Builder.Builder(
|
||||
action=[
|
||||
'-$IWYU $IWYU_FLAGS -Xiwyu --mapping_file=$IWYU_MAPPING_FILE $IWYU_COMCOM $SOURCE 2>&1 | $IWYU_MASSAGE',
|
||||
'$IWYU_MASSAGE $IWYU $IWYU_FLAGS $IWYU_MAPPINGS $IWYU_COMCOM $SOURCE',
|
||||
Touch('$TARGET')
|
||||
],
|
||||
emitter=emitter,
|
||||
@@ -305,9 +362,6 @@ def setup_IWYU(env):
|
||||
'-Wno-inconsistent-missing-override',
|
||||
'--system-header-prefix=Q',
|
||||
'--system-header-prefix=boost/',
|
||||
# Attempt to get QT to recognise clang output. So far it has not worked well.
|
||||
'-fdiagnostics-format=msvc',
|
||||
'-fno-show-column',
|
||||
# clang says it sets this to 1700 but pretty sure vc12 is 1800
|
||||
#'-fmsc-version=1800', '-D_MSC_VER=1800',
|
||||
'-fmsc-version=1700',
|
||||
@@ -330,9 +384,15 @@ def setup_IWYU(env):
|
||||
env['IWYU_CPPDEFFLAGS'] = '${_defines(IWYU_DEFPREFIX, CPPDEFINES, IWYU_DEFSUFFIX, __env__)}'
|
||||
env['IWYU_CPPINCFLAGS'] = '$( ${_concat(IWYU_INCPREFIX, CPPPATH, IWYU_INCSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)'
|
||||
env['IWYU_PCHFILES'] = '$( ${_concat(IWYU_INCLUDEPREFIX, PCHSTOP, IWYU_INCLUDESUFFIX, __env__, target=TARGET, source=SOURCE)} $)'
|
||||
env['IWYU_MAPPING_FILE'] = env.File('#/qtmappings.imp')
|
||||
env['IWYU_MASSAGE'] = env.File('#/massage_messages.py')
|
||||
|
||||
env['IWYU_MAPPING_FILE'] = [
|
||||
env.File('#/modorganizer/qt5_4.imp'),
|
||||
env.File('#/modorganizer/win.imp'),
|
||||
env.File('#/modorganizer/mappings.imp')
|
||||
]
|
||||
env['IWYU_MAPPING_PREFIX'] = ['-Xiwyu', '--mapping_file=']
|
||||
env['IWYU_MAPPING_SUFFIX'] = ''
|
||||
env['IWYU_MAPPINGS'] = '$( ${_concat_list(IWYU_MAPPING_PREFIX, IWYU_MAPPING_FILE, IWYU_MAPPING_SUFFIX, __env__, f=lambda l: [ str(x) for x in l], target=TARGET, source=SOURCE)} $)'
|
||||
env['IWYU_MASSAGE'] = env.File('#/modorganizer/massage_messages.py')
|
||||
|
||||
# Create base environment
|
||||
vars = setup_config_variables()
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
[
|
||||
|
||||
# for boost???
|
||||
# These are probably correct but might need a revisit as if you look at the boost documentation pages, it
|
||||
# can give you huge lists of alternate includes...
|
||||
{ symbol: [ "BOOST_FOREACH", "private", "<boost/foreach.hpp>", "public" ] },
|
||||
|
||||
{ include: [ "@\"boost/bind/.*\"", "private", "<boost/bind.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/algorithm/string/.*\"", "private", "<boost/algorithm/string.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/assign/.*\"", "private", "<boost/assign.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/filesystem/.*\"", "private", "<boost/filesystem.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/format/.*\"", "private", "<boost/format.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/function/.*\"", "private", "<boost/function.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/local/.*\"", "private", "<boost/locale.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/python/.*\"", "private", "<boost/python.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/signals2/.*\"", "private", "<boost/signals2.hpp>", "public" ] },
|
||||
{ include: [ "\"boost/smart_ptr/scoped_array.hpp\"", "private", "<boost/scoped_array.hpp>", "public" ] },
|
||||
{ include: [ "\"boost/smart_ptr/shared_ptr.hpp\"", "private", "<boost/shared_ptr.hpp>", "public" ] },
|
||||
# this appears to be excessive
|
||||
#{ include: [ "@\"boost/thread/.*\"", "private", "<boost/thread.hpp>", "public" ] },
|
||||
|
||||
# And this is specific to us
|
||||
{ include: [ "\"appconfig.inc\"", "private", "\"appconfig.h\"", "public" ] },
|
||||
|
||||
]
|
||||
|
||||
# Ones I don't yet know how to deal with
|
||||
#include "boost/fusion/container/vector/vector10_fwd.hpp" // for fusion
|
||||
#include "boost/iterator/iterator_facade.hpp" // for operator!=
|
||||
#include "boost/iterator/iterator_facade.hpp"
|
||||
+32
-7
@@ -4,6 +4,8 @@
|
||||
|
||||
import fileinput
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
removing = None
|
||||
|
||||
@@ -11,15 +13,18 @@ includes = dict
|
||||
|
||||
foundline = 0
|
||||
|
||||
for line in fileinput.input():
|
||||
def process_next_line(line):
|
||||
# Look for '\) : ([^:])?:'
|
||||
# Replace with ') : \1 I0000:
|
||||
global removing
|
||||
global includes
|
||||
global foundline
|
||||
line = line.rstrip()
|
||||
if removing:
|
||||
if line == '':
|
||||
removing = None
|
||||
print
|
||||
continue
|
||||
return
|
||||
else:
|
||||
# Really we should stash these so that if we get a 'class xxx' in the
|
||||
# add lines we can print it here. also we could do the case fixing.
|
||||
@@ -29,16 +34,22 @@ for line in fileinput.input():
|
||||
print '%s(%s) : warning I0001: Unnecessary include of %s' % (removing, m.group(2), m.group(1))
|
||||
foundline = m.group(1)
|
||||
else:
|
||||
m = re.match(r'- (.*); +// lines (.*)-', line)
|
||||
m = re.match(r'- (.*) +// lines (.*)-', line)
|
||||
if m:
|
||||
print '%s(%s) : warning I0002: Unnecessary forward ref of %s' % (removing, m.group(2), m.group(1))
|
||||
foundline = m.group(1)
|
||||
else:
|
||||
print '********* I got confused **********'
|
||||
|
||||
line = re.sub(r'\)\s*:\s*([^:]*):', r') : \1 I1234:', line)
|
||||
# Sadly qt doesn't seem to support 'info' in the issues tab.
|
||||
line = re.sub(r': note I1234:', r': warning I1234:', line)
|
||||
# Replace clang :line:column: type: with ms (line) : type nnnn:
|
||||
# filename:line:column type:
|
||||
# replace with brackets
|
||||
line = re.sub(r':(\d+):\d+: ([^:]*):', r'(\1) : \2 I1234:', line)
|
||||
|
||||
if ': note I1234:' in line:
|
||||
line = ' ' + line
|
||||
line = line.replace(': note I1234:', '')
|
||||
|
||||
print line
|
||||
if line.endswith(' should remove these lines:'):
|
||||
removing = (line.split(' '))[0]
|
||||
@@ -71,4 +82,18 @@ namespace Ui { class AboutDialog; } // lines 31-31
|
||||
---
|
||||
"""
|
||||
|
||||
# added lines should come after the first entry with a line number.
|
||||
# added lines should come after the first entry with a line number.
|
||||
|
||||
process = subprocess.Popen(sys.argv[1:],
|
||||
stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
|
||||
while True:
|
||||
output = process.stdout.readline()
|
||||
if output == '' and process.poll() is not None:
|
||||
break
|
||||
if output:
|
||||
process_next_line(output)
|
||||
rc = process.poll()
|
||||
# The return code you get appears to be more to do with the amount of output
|
||||
# generated than any real error. We should error if any ': error:' lines are
|
||||
# detected
|
||||
|
||||
|
||||
-320
@@ -1,320 +0,0 @@
|
||||
[
|
||||
# Overrides. Some classes are defined by the spec to reside in their own headers but actually use the same
|
||||
# header as another class. It might make some sense using this for every class in QT...
|
||||
{ symbol: [ "QAbstractItemModel", "private", "<QAbstractItemModel>", "public" ] },
|
||||
{ symbol: [ "QAbstractTableModel", "private", "<QAbstractTableModel>", "public" ] },
|
||||
{ symbol: [ "QAtomicInt", "private", "<QAtomicInt>", "public"] },
|
||||
{ symbol: [ "QCloseEvent", "private", "<QCloseEvent>", "public" ] },
|
||||
{ symbol: [ "QDate", "private", "<QDate>", "public"] },
|
||||
{ symbol: [ "QDragEnterEvent", "private", "<QDragEnterEvent>", "public" ] },
|
||||
{ symbol: [ "QDropEvent", "private", "<QDropEvent>", "public" ] },
|
||||
{ symbol: [ "QIntValidator", "private", "<QIntValidator>", "public" ] },
|
||||
{ symbol: [ "QKeyEvent", "private", "<QKeyEvent>", "public" ] },
|
||||
{ symbol: [ "QListWidgetItem", "private", "<QListWidgetItem>", "public" ] },
|
||||
{ symbol: [ "QModelIndex", "private", "<QModelIndex>", "public" ] },
|
||||
{ symbol: [ "QModelIndexList", "private", "<QModelIndexList>", "public" ] },
|
||||
{ symbol: [ "QMouseEvent", "private", "<QMouseEvent>", "public" ] },
|
||||
{ symbol: [ "@QMutableHashIterator(::.*)?", "private", "<QMutableHashIterator>", "public" ] },
|
||||
{ symbol: [ "QPersistentModelIndex", "private", "<QPersistentModelIndex>", "public" ] },
|
||||
{ symbol: [ "QResizeEvent", "private", "<QResizeEvent>", "public" ] },
|
||||
{ symbol: [ "QScopedArrayPointer", "private", "<QScopedArrayPointer>", "public" ] },
|
||||
{ symbol: [ "QStyleOptionSlider", "private", "<QStyleOptionSlider>", "public" ] },
|
||||
{ symbol: [ "QStyleOptionViewItem", "private", "<QStyleOptionViewItem>", "public" ] },
|
||||
{ symbol: [ "QTableWidgetItem", "private", "<QTableWidgetItem>", "public" ] },
|
||||
{ symbol: [ "QTime", "private", "<QTime>", "public"] },
|
||||
{ symbol: [ "QTreeWidgetItem", "private", "<QTreeWidgetItem>", "public" ] },
|
||||
{ symbol: [ "QVBoxLayout", "private", "<QVBoxLayout>", "public" ] },
|
||||
{ symbol: [ "QWebHitTestResult", "private", "<QWebHitTestResult>", "public" ] },
|
||||
{ symbol: [ "qobject_cast", "private", "<QObject>", "public"] },
|
||||
|
||||
# these are in QMetaType but the documentation is slightly unclear as to where they are meant to be defined.
|
||||
{ symbol: [ "QVariantList", "private", "<QVariant>", "public" ] },
|
||||
{ symbol: [ "QVariantMap", "private", "<QVariant>", "public" ] },
|
||||
|
||||
#Normal header overrides
|
||||
# Possibly we should add in the QtCore/ (see MOC generated files which always do)
|
||||
|
||||
{ include: [ "@\"(QtConcurrent/)?qtconcurrentrun\\.h\"", "private", "<QtConcurrentRun>", "public" ] },
|
||||
|
||||
{ include: [ "@\"(QtCore/)?qabstractproxymodel\\.h\"", "private", "<QAbstractProxyModel>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qalgorithms\\.h\"", "private", "<QtAlgorithms>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qbytearray\\.h\"", "private", "<QByteArray>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qchar\\.h\"", "private", "<QChar>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qcoreapplication\\.h\"", "private", "<QCoreApplication>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qcoreevent\\.h\"", "private", "<QEvent>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qdatastream\\.h\"", "private", "<QDataStream>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qdatetime\\.h\"", "private", "<QDateTime>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qdebug\\.h\"", "private", "<QDebug>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qdir\\.h\"", "private", "<QDir>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qdiriterator\\.h\"", "private", "<QDirIterator>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qfile\\.h\"", "private", "<QFile>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qfileinfo\\.h\"", "private", "<QFileInfo>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qflags\\.h\"", "private", "<QFlags>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qfuture\\.h\"", "private", "<QFuture>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qglobal\\.h\"", "private", "<QtGlobal>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qhash\\.h\"", "private", "<QHash>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qiodevice\\.h\"", "private", "<QIODevice>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qitemselectionmodel\\.h\"", "private", "<QItemSelectionModel>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qjsonvalue\\.h\"", "private", "<QJsonValue>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qlibrary\\.h\"", "private", "<QLibrary>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qlist\\.h\"", "private", "<QList>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qlocale\\.h\"", "private", "<QLocale>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qlogging\\.h\"", "private", "<QtDebug>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qmap\\.h\"", "private", "<QMap>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qnamespace\\.h\"", "private", "<Qt>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qobject\\.h\"", "private", "<QObject>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qobjectdefs\\.h\"", "private", "<QObject>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qpoint\\.h\"", "private", "<QPoint>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qrect\\.h\"", "private", "<QRect>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qregexp\\.h\"", "private", "<QRegExp>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qscopedpointer\\.h\"", "private", "<QScopedPointer>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qset\\.h\"", "private", "<QSet>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qsharedpointer_impl\\.h\"", "private", "<QSharedPointer>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qsize\\.h\"", "private", "<QSize>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qstandardpaths\\.h\"", "private", "<QStandardPaths>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qstring\\.h\"", "private", "<QString>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qstringlist\\.h\"", "private", "<QStringList>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qurl\\.h\"", "private", "<QUrl>", "public" ] },
|
||||
{ include: [ "@\"(QtCore/)?qvariant\\.h\"", "private", "<QVariant>", "public" ] },
|
||||
|
||||
{ include: [ "@\"(QtGui/)?qbrush\\.h\"", "private", "<QBrush>", "public" ] },
|
||||
{ include: [ "@\"(QtGui/)?qcolor\\.h\"", "private", "<QColor>", "public" ] },
|
||||
{ include: [ "@\"(QtGui/)?qcursor\\.h\"", "private", "<QCursor>", "public" ] },
|
||||
{ include: [ "@\"(QtGui/)?qfont\\.h\"", "private", "<QFont>", "public" ] },
|
||||
{ include: [ "@\"(QtGui/)?qfontmetrics\\.h\"", "private", "<QFontMetrics>", "public" ] },
|
||||
{ include: [ "@\"(QtGui/)?qicon\\.h\"", "private", "<QIcon>", "public" ] },
|
||||
{ include: [ "@\"(QtGui/)?qimage\\.h\"", "private", "<QImage>", "public" ] },
|
||||
{ include: [ "@\"(QtGui/)?qkeysequence\\.h\"", "private", "<QKeySequence>", "public" ] },
|
||||
{ include: [ "@\"(QtGui/)?qpainter\\.h\"", "private", "<QPainter>", "public" ] },
|
||||
{ include: [ "@\"(QtGui/)?qpalette\\.h\"", "private", "<QPalette>", "public" ] },
|
||||
{ include: [ "@\"(QtGui/)?qpen\\.h\"", "private", "<QPen>", "public" ] },
|
||||
{ include: [ "@\"(QtGui/)?qpixmap\\.h\"", "private", "<QPixmap>", "public" ] },
|
||||
|
||||
{ include: [ "@\"(QtNetwork/)?qhostaddress\\.h\"", "private", "<QHostAddress>", "public" ] },
|
||||
{ include: [ "@\"(QtNetwork/)?qnetworkaccessmanager\\.h\"", "private", "<QNetworkAccessManager>", "public" ] },
|
||||
{ include: [ "@\"(QtNetwork/)?qnetworkrequest\\.h\"", "private", "<QNetworkRequest>", "public" ] },
|
||||
|
||||
{ include: [ "@\"(QtWidgets/)?qabstractbutton\\.h\"", "private", "<QAbstractButton>", "public" ] },
|
||||
{ include: [ "@\"(QtWidgets/)?qabstractitemview\\.h\"", "private", "<QAbstractItemView>", "public" ] },
|
||||
{ include: [ "@\"(QtWidgets/)?qaction\\.h\"", "private", "<QAction>", "public" ] },
|
||||
{ include: [ "@\"(QtWidgets/)?qboxlayout\\.h\"", "private", "<QBoxLayout>", "public" ] },
|
||||
{ include: [ "@\"(QtWidgets/)?qdialog\\.h\"", "private", "<QDialog>", "public" ] },
|
||||
{ include: [ "@\"(QtWidgets/)?qframe\\.h\"", "private", "<QFrame>", "public" ] },
|
||||
{ include: [ "@\"(QtWidgets/)?qlayout\\.h\"", "private", "<QLayout>", "public" ] },
|
||||
{ include: [ "@\"(QtWidgets/)?qlayoutitem\\.h\"", "private", "<QLayoutItem>", "public" ] },
|
||||
{ include: [ "@\"(QtWidgets/)?qlineedit\\.h\"", "private", "<QLineEdit>", "public" ] },
|
||||
{ include: [ "@\"(QtWidgets/)?qsizepolicy\\.h\"", "private", "<QSizePolicy>", "public" ] },
|
||||
{ include: [ "@\"(QtWidgets/)?qstyle\\.h\"", "private", "<QStyle>", "public" ] },
|
||||
{ include: [ "@\"(QtWidgets/)?qstyleoption\\.h\"", "private", "<QStyleOption>", "public" ] },
|
||||
{ include: [ "@\"(QtWidgets/)?qtabbar\\.h\"", "private", "<QTabBar>", "public" ] },
|
||||
{ include: [ "@\"(QtWidgets/)?qtabwidget\\.h\"", "private", "<QTabWidget>", "public" ] },
|
||||
{ include: [ "@\"(QtWidgets/)?qtextedit\\.h\"", "private", "<QTextEdit>", "public" ] },
|
||||
{ include: [ "@\"(QtWidgets/)?qwidget\\.h\"", "private", "<QWidget>", "public" ] },
|
||||
|
||||
{ include: [ "@\"(QtWebKit/)?qwebsettings\\.h\"", "private", "<QWebSettings>", "public" ] },
|
||||
|
||||
{ include: [ "@\"(QtWebKitWidgets/)?qwebpage\\.h\"", "private", "<QWebPage>", "public" ] },
|
||||
|
||||
# I need to find out where these are and group them as above.
|
||||
{ include: [ "\"qapplication.h\"", "private", "<QApplication>", "public" ] },
|
||||
{ include: [ "\"qbuffer.h\"", "private", "<QBuffer>", "public" ] },
|
||||
{ include: [ "\"qcheckbox.h\"", "private", "<QCheckBox>", "public" ] },
|
||||
{ include: [ "\"qclipboard.h\"", "private", "<QClipboard>", "public" ] },
|
||||
{ include: [ "\"qcombobox.h\"", "private", "<QComboBox>", "public" ] },
|
||||
{ include: [ "\"qcommandlinkbutton.h\"", "private", "<QCommandLinkButton>", "public" ] },
|
||||
{ include: [ "\"qcryptographichash.h\"", "private", "<QCryptographicHash>", "public" ] },
|
||||
{ include: [ "\"qdesktopwidget.h\"", "private", "<QDesktopWidget>", "public" ] },
|
||||
{ include: [ "\"qdialogbuttonbox.h\"", "private", "<QDialogButtonBox>", "public" ] },
|
||||
{ include: [ "\"qfiledialog.h\"", "private", "<QFileDialog>", "public" ] },
|
||||
{ include: [ "\"qfilesystemmodel.h\"", "private", "<QFileSystemModel>", "public" ] },
|
||||
{ include: [ "\"qfilesystemwatcher.h\"", "private", "<QFileSystemWatcher>", "public" ] },
|
||||
{ include: [ "\"qgroupbox.h\"", "private", "<QGroupBox>", "public" ] },
|
||||
{ include: [ "\"qheaderview.h\"", "private", "<QHeaderView>", "public" ] },
|
||||
{ include: [ "\"qinputdialog.h\"", "private", "<QInputDialog>", "public" ] },
|
||||
{ include: [ "\"qitemdelegate.h\"", "private", "<QItemDelegate>", "public" ] },
|
||||
{ include: [ "\"qjsonarray.h\"", "private", "<QJsonArray>", "public" ] },
|
||||
{ include: [ "\"qjsondocument.h\"", "private", "<QJsonDocument>", "public" ] },
|
||||
{ include: [ "\"qjsonobject.h\"", "private", "<QJsonObject>", "public" ] },
|
||||
{ include: [ "\"qlabel.h\"", "private", "<QLabel>", "public" ] },
|
||||
{ include: [ "\"qlcdnumber.h\"", "private", "<QLCDNumber>", "public" ] },
|
||||
{ include: [ "\"qlistwidget.h\"", "private", "<QListWidget>", "public" ] },
|
||||
{ include: [ "\"qlocalserver.h\"", "private", "<QLocalServer>", "public" ] },
|
||||
{ include: [ "\"qlocalsocket.h\"", "private", "<QLocalSocket>", "public" ] },
|
||||
{ include: [ "\"qmainwindow.h\"", "private", "<QMainWindow>", "public" ] },
|
||||
{ include: [ "\"qmenu.h\"", "private", "<QMenu>", "public" ] },
|
||||
{ include: [ "\"qmessagebox.h\"", "private", "<QMessageBox>", "public" ] },
|
||||
{ include: [ "\"qmetatype.h\"", "private", "<QMetaType>", "public" ] },
|
||||
{ include: [ "\"qmimedata.h\"", "private", "<QMimeData>", "public" ] },
|
||||
{ include: [ "\"qmutex.h\"", "private", "<QMutex>", "public" ] },
|
||||
{ include: [ "\"qnetworkcookie.h\"", "private", "<QNetworkCookie>", "public" ] },
|
||||
{ include: [ "\"qnetworkcookiejar.h\"", "private", "<QNetworkCookieJar>", "public" ] },
|
||||
{ include: [ "\"qnetworkdiskcache.h\"", "private", "<QNetworkDiskCache>", "public" ] },
|
||||
{ include: [ "\"qnetworkinterface.h\"", "private", "<QNetworkInterface>", "public" ] },
|
||||
{ include: [ "\"qnetworkreply.h\"", "private", "<QNetworkReply>", "public" ] },
|
||||
{ include: [ "\"qpixmapcache.h\"", "private", "<QPixmapCache>", "public" ] },
|
||||
{ include: [ "\"qprocess.h\"", "private", "<QProcess>", "public" ] },
|
||||
{ include: [ "\"qprogressbar.h\"", "private", "<QProgressBar>", "public" ] },
|
||||
{ include: [ "\"qprogressdialog.h\"", "private", "<QProgressDialog>", "public" ] },
|
||||
{ include: [ "\"qproxystyle.h\"", "private", "<QProxyStyle>", "public" ] },
|
||||
{ include: [ "\"qpushbutton.h\"", "private", "<QPushButton>", "public" ] },
|
||||
{ include: [ "\"qqueue.h\"", "private", "<QQueue>", "public" ] },
|
||||
{ include: [ "\"qradiobutton.h\"", "private", "<QRadioButton>", "public" ] },
|
||||
{ include: [ "\"qscrollbar.h\"", "private", "<QScrollBar>", "public" ] },
|
||||
{ include: [ "\"qsettings.h\"", "private", "<QSettings>", "public" ] },
|
||||
{ include: [ "\"qsharedmemory.h\"", "private", "<QSharedMemory>", "public" ] },
|
||||
{ include: [ "\"qshortcut.h\"", "private", "<QShortcut>", "public" ] },
|
||||
{ include: [ "\"qsignalmapper.h\"", "private", "<QSignalMapper>", "public" ] },
|
||||
{ include: [ "\"qsortfilterproxymodel.h\"", "private", "<QSortFilterProxyModel>", "public" ] },
|
||||
{ include: [ "\"qsplashscreen.h\"", "private", "<QSplashScreen>", "public" ] },
|
||||
{ include: [ "\"qsplitter.h\"", "private", "<QSplitter>", "public" ] },
|
||||
{ include: [ "\"qsslsocket.h\"", "private", "<QSslSocket>", "public" ] },
|
||||
{ include: [ "\"qstackedwidget.h\"", "private", "<QStackedWidget>", "public" ] },
|
||||
{ include: [ "\"qstatusbar.h\"", "private", "<QStatusBar>", "public" ] },
|
||||
{ include: [ "\"qstyleditemdelegate.h\"", "private", "<QStyledItemDelegate>", "public" ] },
|
||||
{ include: [ "\"qstylefactory.h\"", "private", "<QStyleFactory>", "public" ] },
|
||||
{ include: [ "\"qsyntaxhighlighter.h\"", "private", "<QSyntaxHighlighter>", "public" ] },
|
||||
{ include: [ "\"qtablewidget.h\"", "private", "<QTableWidget>", "public" ] },
|
||||
{ include: [ "\"qtemporaryfile.h\"", "private", "<QTemporaryFile>", "public" ] },
|
||||
{ include: [ "\"qtextbrowser.h\"", "private", "<QTextBrowser>", "public" ] },
|
||||
{ include: [ "\"qtextcodec.h\"", "private", "<QTextCodec>", "public" ] },
|
||||
{ include: [ "\"qtextstream.h\"", "private", "<QTextStream>", "public" ] },
|
||||
{ include: [ "\"qthread.h\"", "private", "<QThread>", "public" ] },
|
||||
{ include: [ "\"qtimer.h\"", "private", "<QTimer>", "public" ] },
|
||||
{ include: [ "\"qtoolbar.h\"", "private", "<QToolBar>", "public" ] },
|
||||
{ include: [ "\"qtoolbutton.h\"", "private", "<QToolButton>", "public" ] },
|
||||
{ include: [ "\"qtooltip.h\"", "private", "<QToolTip>", "public" ] },
|
||||
{ include: [ "\"qtranslator.h\"", "private", "<QTranslator>", "public" ] },
|
||||
{ include: [ "\"qtreeview.h\"", "private", "<QTreeView>", "public" ] },
|
||||
{ include: [ "\"qtreewidget.h\"", "private", "<QTreeWidget>", "public" ] },
|
||||
{ include: [ "\"qurlquery.h\"", "private", "<QUrlQuery>", "public" ] },
|
||||
{ include: [ "\"qvalidator.h\"", "private", "<QValidator>", "public" ] },
|
||||
{ include: [ "\"qvector.h\"", "private", "<QVector>", "public" ] },
|
||||
{ include: [ "\"qwebframe.h\"", "private", "<QWebFrame>", "public" ] },
|
||||
{ include: [ "\"qwebhistory.h\"", "private", "<QWebHistory>", "public" ] },
|
||||
{ include: [ "\"qwebview.h\"", "private", "<QWebView>", "public" ] },
|
||||
{ include: [ "\"qwhatsthis.h\"", "private", "<QWhatsThis>", "public" ] },
|
||||
{ include: [ "\"qwidgetaction.h\"", "private", "<QWidgetAction>", "public" ] },
|
||||
{ include: [ "\"qimagereader.h\"", "private", "<QImageReader>", "public" ] },
|
||||
{ include: [ "\"qdeclarativecontext.h\"", "private", "<QDeclarativeContext>", "public" ] },
|
||||
{ include: [ "\"qdeclarativeview.h\"", "private", "<QDeclarativeView>", "public" ] },
|
||||
# looks wrong
|
||||
# { include: [ "\"qgraphicsitem.h\"", "private", "<QGraphicsObject>", "public" ] },
|
||||
|
||||
# Microsft visual C?
|
||||
|
||||
{ include: [ "<xios_base>", "private", "<ios_base>", "public" ] },
|
||||
{ include: [ "<xlocale>", "private", "<locale>", "public" ] },
|
||||
{ include: [ "<xstring>", "private", "<string>", "public" ] },
|
||||
{ include: [ "<xutility>", "private", "<utility>", "public" ] },
|
||||
|
||||
# Windows
|
||||
# Looks like the doucmentation says the 1st char is u/c the rest are l/c
|
||||
# You have to be kidding me. ULONG is defined in winsmcrd.h?
|
||||
{ symbol: [ "ULONG", "private", "<windef.h>", "private" ] },
|
||||
|
||||
{ include: [ "<winnls.h>", "private", "<stringapiset.h>", "private" ] }, # Stringapiset.h
|
||||
{ include: [ "<stringapiset.h>", "private", "<Windows.h>", "public" ] },
|
||||
|
||||
# These are all in windef.h apparently. Which m/s then says 'use Windows.h'
|
||||
{ include: [ "<basetsd.h>", "private", "<windef.h>", "private" ] }, # or in winnt apparently
|
||||
{ include: [ "<handleapi.h>", "private", "<windef.h>", "private" ] },
|
||||
{ include: [ "<libloaderapi.h>", "private", "<windef.h>", "private" ] },
|
||||
{ include: [ "<minwindef.h>", "private", "<windef.h>", "private" ] },
|
||||
|
||||
# Similary, but for winbase.h
|
||||
{ include: [ "<LMCons.h>", "private", "<winbase.h>", "private" ] },
|
||||
{ include: [ "<errhandlingapi.h>", "private", "<winbase.h>", "private" ] },
|
||||
{ include: [ "<excpt.h>", "private", "<winbase.h>", "private" ] },
|
||||
{ include: [ "<minwinbase.h>", "private", "<winbase.h>", "private" ] },
|
||||
{ include: [ "<namedpipeapi.h>", "private", "<winbase.h>", "private" ] },
|
||||
{ include: [ "<securitybaseapi.h>", "private", "<winbase.h>", "private" ] },
|
||||
|
||||
# These ones say xxxx.h (include Windows.h) on the ms web site
|
||||
{ include: [ "<datetimeapi.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<fileapi.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<verrsrc.h>", "private", "<Windows.h>", "public" ] }, # VerRsrc.h
|
||||
{ include: [ "<winbase.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<windef.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<winerror.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<winnt.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<winuser.h>", "private", "<Windows.h>", "public" ] },
|
||||
|
||||
# These ones are in Windows.h but the documentation post windows 8 says they are individual headers,
|
||||
# which looks like M/S are trying to get their act together. Maybe.
|
||||
{ include: [ "<processenv.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<processthreadsapi.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<synchapi.h>", "private", "<Windows.h>", "public" ] },
|
||||
|
||||
# These ones are *not* defined to be in Windows.h, but it seems to work. These should probably be cleaned up
|
||||
{ include: [ "<DbgHelp.h>", "private", "<Windows.h>", "public" ] },
|
||||
# These 3 should go to Shellapi.h
|
||||
{ include: [ "<ShellAPI.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<Shellapi.h>", "private", "<Windows.h>", "public" ] }, # official name according to website
|
||||
{ include: [ "<shellapi.h>", "private", "<Windows.h>", "public" ] },
|
||||
#
|
||||
{ include: [ "<knownfolders.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<ShlObj.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<objidl.h>", "private", "<Windows.h>", "public" ] },
|
||||
|
||||
# Files that are included by other files which seem to then come for free in Windows.h but
|
||||
# shouldn't. Again, should be cleaned up.
|
||||
|
||||
{ include: [ "<basetyps.h>", "private", "<objbase.h>", "private" ] },
|
||||
{ include: [ "<combaseapi.h>", "private", "<objbase.h>", "private" ] },
|
||||
{ include: [ "<objbase.h>", "private", "<Windows.h>", "public" ] },
|
||||
|
||||
{ include: [ "<wtypesbase.h>", "private", "<WTypes.h>", "private" ] },
|
||||
{ include: [ "<WTypes.h>", "private", "<Windows.h>", "public" ] },
|
||||
|
||||
{ include: [ "<guiddef.h>", "private", "<Rpc.h>", "private" ] },
|
||||
{ include: [ "<Rpc.h>", "private", "<Windows.h>", "public" ] },
|
||||
|
||||
# Huh? This one is sane?
|
||||
{ include: [ "<shlguid.h>", "private", "<shobjidl.h>", "public" ] },
|
||||
|
||||
# And for boost???
|
||||
# These are probably correct but might need a revisit as if you look at the boost documentation pages, it
|
||||
# can give you huge lists of alternate includes...
|
||||
{ symbol: [ "BOOST_FOREACH", "private", "<boost/foreach.hpp>", "public" ] },
|
||||
|
||||
{ include: [ "@\"boost/bind/.*\"", "private", "<boost/bind.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/algorithm/string/.*\"", "private", "<boost/algorithm/string.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/assign/.*\"", "private", "<boost/assign.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/filesystem/.*\"", "private", "<boost/filesystem.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/format/.*\"", "private", "<boost/format.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/function/.*\"", "private", "<boost/function.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/python/.*\"", "private", "<boost/python.hpp>", "public" ] },
|
||||
{ include: [ "@\"boost/signals2/.*\"", "private", "<boost/signals2.hpp>", "public" ] },
|
||||
{ include: [ "\"boost/smart_ptr/scoped_array.hpp\"", "private", "<boost/scoped_array.hpp>", "public" ] },
|
||||
{ include: [ "\"boost/smart_ptr/shared_ptr.hpp\"", "private", "<boost/shared_ptr.hpp>", "public" ] },
|
||||
|
||||
# And this is specific to us
|
||||
{ include: [ "\"appconfig.inc\"", "private", "\"appconfig.h\"", "public" ] },
|
||||
|
||||
]
|
||||
|
||||
# Warning: QtGroupingProxy is not provided by Qt
|
||||
|
||||
|
||||
#include "qpluginloader.h"
|
||||
#include "qnetworkproxy.h"
|
||||
|
||||
# Ones I don't yet know how to deal with
|
||||
#include "boost/fusion/container/vector/vector10_fwd.hpp" // for fusion
|
||||
#include "boost/iterator/iterator_facade.hpp" // for operator!=
|
||||
#include <crtdbg.h> // for operator delete[], etc
|
||||
|
||||
#include "QtCore/qiterator.h"
|
||||
#include "QtCore/qtypeinfo.h" // for swap
|
||||
#include "QtCore/qtypetraits.h"
|
||||
#include "QtCore/qtypetraits.h" // for remove_reference<>::type
|
||||
#include "QtGui/qwindowdefs_win.h" // for HINSTANCE
|
||||
#include "QtWidgets/qabstractitemdelegate.h"
|
||||
#include "boost/iterator/iterator_facade.hpp"
|
||||
#include <xmemory0> // for _Simple_types<>::value_type
|
||||
#include <xtree> // for _Tree_const_iterator
|
||||
|
||||
# typical error on stdout (?)
|
||||
#source\hookdll\dllmain.cpp(220) : warning C4244: '=' : conversion from 'int' to 'char', possible loss of data
|
||||
# error from include-what-you-use (on stderr? at least it's in red)
|
||||
#source\hookdll\dllmain.cpp(2220) : warning: case value not in enumerated type 'FILE_INFORMATION_CLASS' (aka '_FILE_INFORMATION_CLASS') [-Wswitch]
|
||||
@@ -0,0 +1,82 @@
|
||||
[
|
||||
# Microsft visual C?
|
||||
|
||||
{ include: [ "<xiosbase>", "private", "<ios_base>", "public" ] },
|
||||
{ include: [ "<xlocale>", "private", "<locale>", "public" ] },
|
||||
{ include: [ "<xstring>", "private", "<string>", "public" ] },
|
||||
{ include: [ "<xutility>", "private", "<utility>", "public" ] },
|
||||
|
||||
{ include: [ "<sys/stat.inl>", "private", "<sys/stat.h>", "public" ] },
|
||||
|
||||
# Windows
|
||||
# Looks like the doucmentation says the 1st char is u/c the rest are l/c
|
||||
# You have to be kidding me. ULONG is defined in winsmcrd.h?
|
||||
{ symbol: [ "ULONG", "private", "<windef.h>", "private" ] },
|
||||
|
||||
{ include: [ "<winnls.h>", "private", "<stringapiset.h>", "private" ] }, # Stringapiset.h
|
||||
{ include: [ "<stringapiset.h>", "private", "<Windows.h>", "public" ] },
|
||||
|
||||
# These are all in windef.h apparently. Which m/s then says 'use Windows.h'
|
||||
{ include: [ "<basetsd.h>", "private", "<windef.h>", "private" ] }, # or in winnt apparently
|
||||
{ include: [ "<handleapi.h>", "private", "<windef.h>", "private" ] },
|
||||
{ include: [ "<libloaderapi.h>", "private", "<windef.h>", "private" ] },
|
||||
{ include: [ "<minwindef.h>", "private", "<windef.h>", "private" ] },
|
||||
|
||||
# Similary, but for winbase.h
|
||||
{ include: [ "<LMCons.h>", "private", "<winbase.h>", "private" ] },
|
||||
{ include: [ "<errhandlingapi.h>", "private", "<winbase.h>", "private" ] },
|
||||
{ include: [ "<excpt.h>", "private", "<winbase.h>", "private" ] },
|
||||
{ include: [ "<minwinbase.h>", "private", "<winbase.h>", "private" ] },
|
||||
{ include: [ "<namedpipeapi.h>", "private", "<winbase.h>", "private" ] },
|
||||
{ include: [ "<securitybaseapi.h>", "private", "<winbase.h>", "private" ] },
|
||||
|
||||
# These ones say xxxx.h (include Windows.h) on the ms web site
|
||||
{ include: [ "<datetimeapi.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<fileapi.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<verrsrc.h>", "private", "<Windows.h>", "public" ] }, # VerRsrc.h
|
||||
{ include: [ "<winbase.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<windef.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<winerror.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<winnt.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<winuser.h>", "private", "<Windows.h>", "public" ] },
|
||||
|
||||
# These ones are in Windows.h but the documentation post windows 8 says they are individual headers,
|
||||
# which looks like M/S are trying to get their act together. Maybe.
|
||||
{ include: [ "<processenv.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<processthreadsapi.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<synchapi.h>", "private", "<Windows.h>", "public" ] },
|
||||
|
||||
# These ones are *not* defined to be in Windows.h, but it seems to work. These should probably be cleaned up
|
||||
{ include: [ "<DbgHelp.h>", "private", "<Windows.h>", "public" ] },
|
||||
# These 3 should go to Shellapi.h
|
||||
{ include: [ "<ShellAPI.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<Shellapi.h>", "private", "<Windows.h>", "public" ] }, # official name according to website
|
||||
{ include: [ "<shellapi.h>", "private", "<Windows.h>", "public" ] },
|
||||
#
|
||||
{ include: [ "<knownfolders.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<ShlObj.h>", "private", "<Windows.h>", "public" ] },
|
||||
{ include: [ "<objidl.h>", "private", "<Windows.h>", "public" ] },
|
||||
|
||||
# Files that are included by other files which seem to then come for free in Windows.h but
|
||||
# shouldn't. Again, should be cleaned up.
|
||||
|
||||
{ include: [ "<basetyps.h>", "private", "<objbase.h>", "private" ] },
|
||||
{ include: [ "<combaseapi.h>", "private", "<objbase.h>", "private" ] },
|
||||
{ include: [ "<objbase.h>", "private", "<Windows.h>", "public" ] },
|
||||
|
||||
{ include: [ "<wtypesbase.h>", "private", "<WTypes.h>", "private" ] },
|
||||
{ include: [ "<WTypes.h>", "private", "<Windows.h>", "public" ] },
|
||||
|
||||
{ include: [ "<guiddef.h>", "private", "<Rpc.h>", "private" ] },
|
||||
{ include: [ "<Rpc.h>", "private", "<Windows.h>", "public" ] },
|
||||
|
||||
# Huh? This one is sane?
|
||||
{ include: [ "<shlguid.h>", "private", "<shobjidl.h>", "public" ] },
|
||||
|
||||
|
||||
]
|
||||
|
||||
#include <crtdbg.h> // for operator delete[], etc
|
||||
|
||||
#include <xmemory0> // for _Simple_types<>::value_type
|
||||
#include <xtree> // for _Tree_const_iterator
|
||||
Reference in New Issue
Block a user