#!/usr/bin/env ruby
Dir.glob('**/*.cpp') { |file|
# skip ast (excluding paste, astpath, and canv'ast'imer)
next if file =~ /ast[^eip]|keywords\.|qualifiers|preprocessor|names.cpp/i
s = File.read(file)
next if s.include?('qlalr')
orig = s.dup
s.gsub!(/\n *if [^\n]*{\n[^\n]*\n\s+}(\s+else if [^\n]* {\n[^\n]*\n\s+})*(\s+else {\n[^\n]*\n\s+})?\n/m) { |m|
res = $&
if res =~ /^\s*(\/\/|[A-Z_]{3,})/ # C++ comment or macro (Q_UNUSED, SDEBUG), do not touch braces
res
else
res.gsub!('} else', 'else')
res.gsub!(/\n +} *\n/m, "\n")
res.gsub(/ *{$/, '')
end
}
s.gsub!(/ *$/, '')
File.open(file, 'wb').write(s) if s != orig
}
Change-Id: I3b30ee60df0986f66c02132c65fc38a3fbb6bbdc
Reviewed-by: hjk <qthjk@ovi.com>
- Add routine for formatting edit values.
- Optionally store memory in SymbolGroupNode (along
with special info) to be able to re-use it for
edit values using a simple convenience class
MemoryHandle.
- Prototypically implement QString and QByteArray / Qt 5.
Task-number: QTCREATORBUG-8344
Change-Id: I6d2cac7a1e9ac48e94335142c41dc1bfb984c515
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Retrieve data of Qt types with unexported private classes
from memory.
- Dump new string members of Qt 5's QUrl
- Fix QDir (faulty offset).
- Implement QDateTime.
Change-Id: Ie0524a531cd0afb3b8e058c2a0a0bf9616078357
Reviewed-by: hjk <qthjk@ovi.com>
In MSVC2012, more bases classes for std::string
and containers were introduced whereas std::pair_base
was removed compared to MSVC2010.
Add a findMember() function to be able to skip base
classes when looking for a certain member to finally
fix this issue.
Introduce SymbolGroupValue::parent()/childCount()
and simplify the helpers using it.
Change-Id: I7a6aad5c07739ca9cbf350489acd6d03bd1865e8
Reviewed-by: hjk <qthjk@ovi.com>
- Fix watch expressions for array to at least point to the
initial element.
- Return the name (which is the initial expression for the watch
symbol group) as last resort if the evaluation fails to avoid
obtaining "(*) 0" as expression.
Task-number: QTCREATORBUG-7408
Change-Id: Ifdf5ba59f6e18527d98b869f6a273aed283bd7da
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Use watch encoding without quotes for non-ASCII output.
Use formats with quotes for recoded strings.
Extend char-pointer recoding to work for char-arrays as well
and restrict to char types. Split up and re-use when
outputting QByteArrays or std::[w]string.
Task-number: QTCREATORBUG-5667
Change-Id: If9748c2e375ee5ecb05d257410eba4012de1c3cf
Reviewed-on: http://codereview.qt.nokia.com/2747
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Introduce struct & routine to return address data for QStrings/
QByteArray of versions 4,5 and use that.
Change-Id: I0603d160561bd28ef13bf79739b44b8af439bd93
Reviewed-on: http://codereview.qt.nokia.com/1770
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Run in a loop over qtVersion =4,5 when detecting the Qt modules
(quick detection). Add version field for later evaluation in
dumpers.
Reformat comments.
Change-Id: Ia3005fccbb92b847a0f1feef99a53eb4c318246f
Reviewed-on: http://codereview.qt.nokia.com/313
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Assign to QString/QByteArray following gdbmacros.py
implementation (call resize if required, copy data into buffer).
Assign to std::[w]string only it has sufficient memory
(since std::string<>.resize cannot be called).
Dump by reading raw memory for further types for whose private
classes no symbolic information is available.
Also fix dumping for pointer values, taking CDB's pointer/value
duality into account.
QRegExp, QDir, whose private classes do not have symbolic
information, either. Create convenience routines for dumpers
accessing the raw memory of those private classes.
QFile/QFileInfo/QUrl:
For those types, there is no symbolic information for their *Private
classes. Poke around in raw memory do obtain some information.
Move readMemory-utilities around.