summaryrefslogtreecommitdiffstats
path: root/src/corelib/codecs
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into ↵Qt Continuous Integration System2010-05-021-4/+4
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.7-integration * '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2: Fix project file generation for MSVC 2010 Fix wrong translation and clip for the raster paint-engine on Mac Return the correct library name in qt_gl_library_name for GLES* qmake: remove useless evaluation of variables from VS project generators Fix QT_NO_LIBRARY Documentation for the Elastic Nodes example. qmake: fix duplicate linker options in VS project files Ensured that WA_InputMethodEnabled was set before FocusInEvent was sent. qmake: fix duplicate compiler options in VS project files Documentation for the Drag and Drop Robot example. Fix crash in styles example when running with opengl graphicssystem Fixed the sizehint for cols/rows in qtableview QUrl: parsing of host name with an undercore. Null pointer check Revert "Try to use multisampled opengl graphicssystem on all platforms" A small mistake when comparing the flag. Add unit tests covering most of QVector's API. Fix crash when CoreText fails to shape text for us Fix crash when using opengl graphicssystem on desktop Revert "Revert "Implement heightForWidth support for QTabWidget and QStackedLayout.""
| * Fix QT_NO_LIBRARYTasuku Suzuki2010-04-291-4/+4
| | | | | | | | | | | | | | | | | | Some class uses QFactoryLoader without checking if QT_NO_LIBRARY is not defined. Remove QT_NO_SETTINGS used with QT_NO_LIBRARY for QFactoryLoader because LIBRARY depends on SETTINGS. Merge-request: 578 Reviewed-by: Thierry Bastian <thierry.bastian@nokia.com>
* | Merge remote branch 'origin/4.6' into qt-4.7-from-4.6Thiago Macieira2010-04-291-11/+11
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | All EGL-related changes from 4.6 were discarded. Conflicts: src/gui/egl/egl.pri src/gui/egl/qegl.cpp src/gui/egl/qegl_p.h src/gui/egl/qegl_stub.cpp src/gui/egl/qeglproperties_p.h src/gui/egl/qeglproperties_stub.cpp src/gui/gui.pro src/multimedia/multimedia/audio/qaudioinput_win32_p.h src/s60installs/bwins/QtGuiu.def src/s60installs/eabi/QtGuiu.def
| * Fix infinite recursion in QIconvCodec when iconv fails.Thiago Macieira2010-04-261-11/+11
| | | | | | | | | | | | | | | | We mustn't use to/fromAscii because that goes back into the iconv codec... Task-number: QTBUG-10189 Reviewed-by: Olivier Goffart
* | Merge remote branch 'origin/4.6' into qt-4.7-from-4.6Thiago Macieira2010-04-122-2/+42
|\ \ | |/ | | | | | | | | | | Conflicts: qmake/generators/symbian/symmake.cpp src/gui/image/qimage.cpp src/openvg/qwindowsurface_vgegl.cpp
| * econd half of the crash fix for codecs on SymbianLars Knoll2010-04-122-2/+37
| | | | | | | | | | | | | | | | Ensure that we do not try to use any codecs if we don't have a cleanup stack available on Symbian. Task-number: QT-3255 Reviewed-by: Iain
| * Fix a crash with global static objectsLars Knoll2010-04-101-0/+5
| | | | | | | | | | | | | | | | | | When global static objects use text codecs in their constructor or destructor we would crash on symbian, as the symbian codec was trying to use a non existing cleanup stack. Task-number: QT-3255 Reviewed-by: Espen Riskedal
* | remove qt_winQString2MB() and qt_winMB2QString()Oswald Buddenhagen2010-03-111-2/+28
| | | | | | | | | | | | absorb qt_winQString2MB() code directly into the QTextCodec code Acked-by: thiago
* | Merge branch '4.7-cutoff' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into ↵Qt Continuous Integration System2010-03-101-12/+27
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.7-integration * '4.7-cutoff' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (83 commits) Don't wait forever when scanning for wifi networks on win32 fails. Revert 12b6987031be9faee3886d7623888feb4e1762af Changed TEST_COMPILER from CC to CXX in configure script. doc: Fixed several qdoc errors. Carbon: Native filedialog does not apply filters on app-bundles Cocoa: Native filedialog does not apply filters on app-bundles Improve performance of QTimer::singleShot Add a benchmark comparing single shot timer with invokeMethod use Qt's private mac functions, reduce code redundancy Assistant: Fix compile warning for empty header. Doc: mark QEasingCurve support functions as new in 4.7. Modify the XML test suite not to use non-characters. Autotest: Fix failing QTextCodec tests Doc: mark methods as internal (as they were in previous releases) Doc: add image for Qt Quick to "What's New" page. qdoc: Clear a static multimap after each qdocconf file. qdoc: Added some debug output to track down a crash Fixed mouse wheel handling in scrollareas. Added two missing keys for X11 Carbon: usage of menu bars can cause exceptions to be thrown ...
| * | Autotest: Fix failing QTextCodec testsThiago Macieira2010-03-081-1/+1
| | |
| * | Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into ↵Qt Continuous Integration System2010-03-071-12/+27
| |\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.7-integration * '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-1: (57 commits) fix corewlan detection error when building for 10.5 when 10.6 is also fixed treatment of zlib on Mac when crossbuilding Partial overloading support for qdbus cli tool. Allow empty authority in QUrl::setAuthority as per docs. Added test for QTBUG-6962: Empty authority ignored by QUrl::setAuthority. fixed case of GL include directory check in MAC_APPLICATION_MENU translations Re-generate the Unicode tables after updates to the program that generates them Fix the code after merge: DerivedNormalizationProps has two or more columns add some usefull definitions to qunicodetables_p.h qchar.cpp: fix identation finish last commit prefer DerivedNormalizationProps.txt over CompositionExclusions.txt improve error reporting a bit more improve error reporting fix incorect condition check if string to int conversions were done w/o errors improve error reporting for unassigned grapheme/word/sentence break classes avoid using of qunicodetables_p.h in generator use QHash for line break map ...
| | * | Make the UTF-8 encoder/decoder not accept Unicode non-charactersThiago Macieira2010-03-051-3/+25
| | | | | | | | | | | | | | | | Reviewed-By: Denis Dzyubenko
| | * | Finish reverting the UTF-8 hack added in 80ea01c6 (P4 106704, Qt 3.2).Thiago Macieira2010-03-051-9/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This code was removed from QString in 539cd1e5 (P4 259474, Qt 4.3), but apparently lingered on the UTF-8 codec code. Reviewed-by: Denis Dzyubenko
* | | | TextCodec on Symbian: use the native symbian backend for text codecs.Olivier Goffart2010-03-095-13/+725
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On symbian, we would use the native textcodec for anything but UTF and Latin1. Some codec that are not present by default in symbian are still present inside Qt, but if there is symbian codecs that exists for those, Symbian codecs have priority. Most of code has been contributed by the Obrit i18n team. Task-number: QT-2471 (Symbian part) Task-number: QT-2627 Reviewed-by: axis
* | | Merge remote branch 'origin/4.6' into qt-4.7-from-4.6Rohan McGovern2010-03-061-12/+29
|\ \ \ | |/ / |/| / | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure.exe examples/multimedia/audioinput/audioinput.cpp src/corelib/io/qfsfileengine.cpp src/gui/egl/qegl_wince.cpp src/gui/egl/qeglproperties.cpp src/gui/egl/qeglproperties_p.h src/gui/embedded/directfb.pri src/gui/kernel/qapplication_win.cpp src/gui/painting/qdrawutil.cpp src/opengl/qgl_p.h src/sql/drivers/odbc/qsql_odbc.cpp src/sql/drivers/odbc/qsql_odbc.h tests/auto/auto.pro tests/auto/qgl/tst_qgl.cpp translations/assistant_adp_ru.ts
| * Reset the byte order in the iconv codec after using it.Thiago Macieira2010-03-051-12/+29
| | | | | | | | | | | | | | | | Otherwise, if you try run QString(QChar(0xfffe)).toLocal8Bit() iconv will be left in byte-swapping mode. Reviewed-by: Denis Dzyubenko
* | Merge remote branch 'origin/4.6' into integration-master-from-4.6Rohan McGovern2010-02-181-2/+0
|\ \ | |/ | | | | | | Conflicts: src/corelib/codecs/qtextcodec.h
| * Fix compilation on Mac 32-bit.Thiago Macieira2010-02-171-1/+1
| | | | | | | | Reviewed-By: Trust Me
* | Merge remote branch 'origin/master' into qt-master-from-4.6Thiago Macieira2010-02-181-5/+0
|\ \ | | | | | | | | | | | | | | | Conflicts: src/corelib/codecs/qtextcodec.h tests/auto/gestures/tst_gestures.cpp
| * | Remove these friend declarations that aren't necessary in 4.7Thiago Macieira2010-02-171-5/+0
| | |
* | | Merge branch '4.6' into qt-master-from-4.6Thiago Macieira2010-02-172-9/+45
|\ \ \ | |/ / |/| / | |/ | | | | | | Conflicts: mkspecs/common/symbian/symbian.conf src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp tools/assistant/tools/assistant/helpviewer.cpp
| * Merge branch '4.6' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into ↵Qt Continuous Integration System2010-02-161-9/+43
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.6-integration * '4.6' of scm.dev.nokia.troll.no:qt/oslo-staging-2: (26 commits) QLocalSocket::isValid on Windows must check for broken connection fix pipe handle leak in qlocalsocket_win.cpp GraphicsViewBenchmark: Run app in full screen mode on small desktops. Fix Thai text on Windows 7 Fix License headers. QTextCodec::codecForName. Insert in the cache in all cases. Prevented calling the pixmap filter implementations with null pixmaps. Make it possible to run benchmarks with the "-graphicssystem" switch. Add support for running the GraphicsViewBenchmark application manually. Bump version to 4.6.3. Fixed a GLX warning that occured with some Intel chipsets under X11. Fixed compile for maemo6. Cleanup QEglContext & EGLDisplays Moved 'hasAlpha' property from GL2 engine to GL paint device. Remove useless qDebug in QTextCodec autotest QTextCodec: Symbian has codec for UCS2, only fallback to UTF16 if UCS2 codec cannot be loaded Add caching to QTextCodec::codecForName and QTextCodec::codecForMib Add benchmark for QTextCodec Fix several bugs with GL texture cache Compile fix for OpenGL ES. ...
| | * QTextCodec::codecForName. Insert in the cache in all cases.Olivier Goffart2010-02-151-1/+3
| | | | | | | | | | | | Reviewed-by: Gabriel
| | * QTextCodec: Symbian has codec for UCS2, only fallback to UTF16 if UCS2 codec ↵Olivier Goffart2010-02-121-5/+6
| | | | | | | | | | | | | | | | | | cannot be loaded Reviewed-by: Denis
| | * Add caching to QTextCodec::codecForName and QTextCodec::codecForMibOlivier Goffart2010-02-121-4/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | Theses function are relatively slow, and often called with the same arguments Task-number: QTBUG-7888 Reviewed-by: Thierry Reviewed-by: Andreas
| * | Fixed compiler warning about making the same class a friend twiceZeno Albisser2010-02-161-0/+2
| |/ | | | | | | Reviewed-by: Thiago Macieira
* | Merge remote branch 'origin/4.6' into qt-master-from-4.6Thiago Macieira2010-02-122-9/+39
|\ \ | |/
| * Merge branch '4.6' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into ↵Qt Continuous Integration System2010-02-082-9/+39
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.6-integration * '4.6' of scm.dev.nokia.troll.no:qt/oslo-staging-2: Make generate uid3 (symbian) work on 64 bit host platform. Updated the docs for QPainter::begin/endNativePainting() Compile fix for network benchmarks. Add a pixmap modification hook to blur pixmap filter cache Delete benchmark examples (qtestlib-simple and qtwidgets). Restructure tests/benchmarks directory. Fixed QImagReader::setAutoDetectImageFormat() to work with plugins. QLineEdit: regression: read-only line edits would eat shortcuts. QGraphicsItem: Do not crash at exit if there is static QGraphicsItem. Make QTextCodec reentrant.
| | * Make QTextCodec reentrant.Olivier Goffart2010-02-082-9/+39
| | | | | | | | | | | | | | | | | | | | | QTextCodec::codecForName and codedForMib were not reentrant Reviewed-by: Brad Reviewed-by: Denis
* | | Merge remote branch 'qt/4.6' into qt-master-from-4.6Qt Continuous Integration System2010-02-091-2/+2
|\ \ \ | |/ / | | | | | | | | | | | | Conflicts: src/gui/kernel/qcocoapanel_mac.mm src/gui/kernel/qcocoasharedwindowmethods_mac_p.h
| * | A fix for accidently reused variable names in nested iterations.Zeno Albisser2010-02-051-2/+2
| |/ | | | | | | Reviewed-by: Peter Hartmann
* | Merge remote branch 'origin/4.6' into qt-master-from-4.6Olivier Goffart2010-02-041-4/+3
|\ \ | |/ | | | | | | | | | | | | | | Conflicts: examples/assistant/simpletextviewer/findfiledialog.cpp qmake/generators/symbian/symmake.cpp tools/assistant/lib/qhelpgenerator.cpp tools/assistant/lib/qhelpsearchquerywidget.cpp translations/translations.pri
| * remove pointless conditionalsOswald Buddenhagen2010-02-011-3/+2
| | | | | | | | | | | | | | we already know that (endian == DetectEndianness) - we tested it 1 resp 3 lines above ... Reviewed-By: denis
| * micro-optimizationOswald Buddenhagen2010-02-011-1/+1
| | | | | | | | | | move up the headerdone setting, so the compiler can do tail-merging of the branches
* | Merge branch '4.6'Thiago Macieira2010-01-1320-20/+25
|\ \ | |/ | | | | | | | | | | | | | | | | | | Conflicts: bin/syncqt doc/src/deployment/deployment.qdoc src/corelib/io/qfsfileengine_win.cpp src/corelib/xml/qxmlstream.cpp src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h tools/assistant/tools/assistant/centralwidget.cpp tools/linguist/lupdate/main.cpp
| * Prospective Qt/Mac build fixSimon Hausmann2010-01-071-0/+2
| | | | | | | | | | | | | | | | On Mac/32 QXmlStreamWriter is actually QCoreXmlStreamWriter, so the friend declaration in QTextEncoder to access the private state needs to cover that class, too. Reviewed-by: Prasanth
| * Temporary hackiesh solution to prevent BOM in the xml data.Denis Dzyubenko2010-01-061-0/+3
| | | | | | | | | | | | | | We don't want to have byte-order-mark in the middle of the written string. Task-number: QTBUG-6893 Reviewed-by: Thiago
| * Update copyright year to 2010Jason McDonald2010-01-0620-20/+20
| | | | | | | | Reviewed-by: Trust Me
* | Added new functions to QTextCodec that accept ConversionFlags.Denis Dzyubenko2010-01-082-3/+57
|/ | | | | | | | | | In some cases the user might want to pass initial conversion flags that should be used by the QTextEncoder and QTextDecoder, so added convenience QTextCodec::makeDecoder and makeEncoder functions that accept those flags as an argument. Task-number: QTBUG-7180 Reviewed-by: Thiago
* Document QTextEncoder::fromUnicode as QT3 support memberAnders Ahlen2009-12-111-1/+1
| | | | | | | | | | | Make deprecated QTextEncoder::fromUnicode ( const QString & uc, int & lenInOut ) documented as QT3 support member Task-number: QTBUG-6614 Merge-request: 399 Reviewed-by: Thiago Macieira <thiago.macieira@nokia.com>
* Checks for len = 0 in QIconvCodec::convertFromUnicodeNils Christian Roscher-Nielsen2009-11-251-2/+2
| | | | | | | | | iconv hangs when len is initially 0 on some Solaris platforms. This can be seen in the standarddialogs example when calling QFileDialog::getOpenFileName() for instance. Reviewed-by: ddenis Task-number: QTBUG-4976
* remove bogus doc paragraphs relating to codecForUtfText()Oswald Buddenhagen2009-11-191-6/+0
| | | | | | | | these aren't *strictly* bogus, but rather confusing. the real issue is that the functions would get confused by something which looks like a BOM, but isn't, and there is nothing one could do about it. Reviewed-by: Volker Hilsheimer
* move doc next to implementationOswald Buddenhagen2009-10-051-23/+20
|
* Added qtextcodec_p.h to the project file.Denis Dzyubenko2009-10-051-0/+1
| | | | Reviewed-by: trustme
* Fixed parsing of html header in the qtextcodec.Denis Dzyubenko2009-09-231-6/+8
| | | | | | | The QTextCodec::codecForHtml used to expect http-equiv attribute before the charset attribute in the meta header, which is not always the case. Reviewed-by: Simon Hausmann
* Merge branch '4.5' of scm.dev.nokia.troll.no:qt/qt into 4.6Simon Hausmann2009-09-141-1/+1
|\
| * Fix libiconv support on FreeBSD.Raphael Kubo da Costa2009-09-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For some reason iconv support was broken in Qt 4.5 on FreeBSD, and this patch was made to fix that. Original patch by Max Brazhnikov <makc@freebsd.org>. Original message: Enable libiconv support. Didn't get where the real problem is, but using UTF-16LE/BE as default encoding (see patch) fixes the issue. Merge-request: 1480 Reviewed-by: Thiago Macieira <thiago.macieira@nokia.com>
| * Update license headers again.Jason McDonald2009-09-0819-76/+76
| | | | | | | | Reviewed-by: Trust Me
* | Update license headers again.Jason McDonald2009-09-0920-80/+80
| | | | | | | | Reviewed-by: Trust Me
* | Merge branch '4.5' into 4.6Thiago Macieira2009-08-3120-260/+260
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: demos/boxes/glshaders.cpp demos/boxes/vector.h demos/embedded/fluidlauncher/pictureflow.cpp demos/embedded/fluidlauncher/pictureflow.h doc/src/desktop-integration.qdoc doc/src/distributingqt.qdoc doc/src/examples-overview.qdoc doc/src/examples.qdoc doc/src/frameworks-technologies/dbus-adaptors.qdoc doc/src/geometry.qdoc doc/src/groups.qdoc doc/src/objecttrees.qdoc doc/src/platform-notes.qdoc doc/src/plugins-howto.qdoc doc/src/qt3support.qdoc doc/src/qtdbus.qdoc doc/src/qtdesigner.qdoc doc/src/qtgui.qdoc doc/src/qtmain.qdoc doc/src/qtopengl.qdoc doc/src/qtsvg.qdoc doc/src/qtuiloader.qdoc doc/src/qundo.qdoc doc/src/richtext.qdoc doc/src/topics.qdoc src/corelib/tools/qdumper.cpp src/gui/embedded/qkbdpc101_qws.cpp src/gui/embedded/qkbdsl5000_qws.cpp src/gui/embedded/qkbdusb_qws.cpp src/gui/embedded/qkbdvr41xx_qws.cpp src/gui/embedded/qkbdyopy_qws.cpp src/gui/embedded/qmousebus_qws.cpp src/gui/embedded/qmousevr41xx_qws.cpp src/gui/embedded/qmouseyopy_qws.cpp src/gui/painting/qpaintengine_d3d.cpp src/gui/painting/qwindowsurface_d3d.cpp src/opengl/gl2paintengineex/glgc_shader_source.h src/opengl/gl2paintengineex/qglpexshadermanager.cpp src/opengl/gl2paintengineex/qglpexshadermanager_p.h src/opengl/gl2paintengineex/qglshader.cpp src/opengl/gl2paintengineex/qglshader_p.h src/opengl/util/fragmentprograms_p.h src/plugins/kbddrivers/linuxis/linuxiskbdhandler.cpp src/plugins/mousedrivers/linuxis/linuxismousehandler.cpp src/script/parser/qscript.g src/script/qscriptarray_p.h src/script/qscriptasm_p.h src/script/qscriptbuffer_p.h src/script/qscriptclass.cpp src/script/qscriptclassdata_p.h src/script/qscriptcompiler.cpp src/script/qscriptcompiler_p.h src/script/qscriptcontext.cpp src/script/qscriptcontext_p.cpp src/script/qscriptcontext_p.h src/script/qscriptcontextfwd_p.h src/script/qscriptecmaarray.cpp src/script/qscriptecmaarray_p.h src/script/qscriptecmaboolean.cpp src/script/qscriptecmacore.cpp src/script/qscriptecmadate.cpp src/script/qscriptecmadate_p.h src/script/qscriptecmaerror.cpp src/script/qscriptecmaerror_p.h src/script/qscriptecmafunction.cpp src/script/qscriptecmafunction_p.h src/script/qscriptecmaglobal.cpp src/script/qscriptecmaglobal_p.h src/script/qscriptecmamath.cpp src/script/qscriptecmamath_p.h src/script/qscriptecmanumber.cpp src/script/qscriptecmanumber_p.h src/script/qscriptecmaobject.cpp src/script/qscriptecmaobject_p.h src/script/qscriptecmaregexp.cpp src/script/qscriptecmaregexp_p.h src/script/qscriptecmastring.cpp src/script/qscriptecmastring_p.h src/script/qscriptengine.cpp src/script/qscriptengine_p.cpp src/script/qscriptengine_p.h src/script/qscriptenginefwd_p.h src/script/qscriptextenumeration.cpp src/script/qscriptextenumeration_p.h src/script/qscriptextqobject.cpp src/script/qscriptextqobject_p.h src/script/qscriptextvariant.cpp src/script/qscriptfunction.cpp src/script/qscriptfunction_p.h src/script/qscriptgc_p.h src/script/qscriptmember_p.h src/script/qscriptobject_p.h src/script/qscriptprettypretty.cpp src/script/qscriptprettypretty_p.h src/script/qscriptvalue.cpp src/script/qscriptvalueimpl.cpp src/script/qscriptvalueimpl_p.h src/script/qscriptvalueimplfwd_p.h src/script/qscriptvalueiteratorimpl.cpp src/script/qscriptxmlgenerator.cpp src/script/qscriptxmlgenerator_p.h tests/auto/linguist/lupdate/testdata/recursivescan/project.ui tests/auto/linguist/lupdate/testdata/recursivescan/sub/finddialog.cpp tests/auto/qkeyevent/tst_qkeyevent.cpp tools/linguist/shared/cpp.cpp