Commit Graph

35 Commits

Author SHA1 Message Date
Jean-Marc Lasgouttes
5249eaaa60 Use <cstdint> instead of <boost/cstdint.hpp>
This is mandated by C++11.
2019-06-17 16:19:31 +02:00
Jean-Marc Lasgouttes
22f599250e Remove support for gcc 4.6
This was kept so long because of Ubuntu 12.04 LTS, but having a
not-really-c++11 compiler is not nice.
2019-06-12 15:03:18 +02:00
Christian Ridderström
e30f3d76d2 Bulk cleanup/fix incorrect annotation at the end of namespaces.
This commit does a bulk fix of incorrect annotations (comments) at the
end of namespaces.

The commit was generated by initially running clang-format, and then
from the diff of the result extracting the hunks corresponding to
fixes of namespace comments. The changes being applied and all the
results have been manually reviewed. The source code successfully
builds on macOS.

Further details on the steps below, in case they're of interest to
someone else in the future.

1. Checkout a fresh and up to date version of src/

    git pull && git checkout -- src && git status src

2. Ensure there's a suitable .clang-format in place, i.e. with options
   to fix the comment at the end of namespaces, including:

    FixNamespaceComments:                           true
    SpacesBeforeTrailingComments:                   1

and that clang-format is >= 5.0.0, by doing e.g.:

    clang-format -dump-config | grep Comments:
    clang-format --version

3. Apply clang-format to the source:

    clang-format -i $(find src -name "*.cpp" -or -name "*.h")

4. Create and filter out hunks related to fixing the namespace

    git diff -U0 src > tmp.patch
    grepdiff '^} // namespace' --output-matching=hunk tmp.patch  > fix_namespace.patch

5. Filter out hunks corresponding to simple fixes into to a separate patch:

    pcregrep -M -e '^diff[^\n]+\nindex[^\n]+\n--- [^\n]+\n\+\+\+ [^\n]+\n'  \
        -e '^@@ -[0-9]+ \+[0-9]+ @@[^\n]*\n-\}[^\n]*\n\+\}[^\n]*\n'         \
        fix_namespace.patch > fix_namespace_simple.patch

6. Manually review the simple patch and then apply it, after first
   restoring the source.

    git checkout -- src
    patch -p1 < fix_namespace_simple.path

7. Manually review the (simple) changes and then stage the changes

    git diff src
    git add src

8. Again apply clang-format and filter out hunks related to any
   remaining fixes to the namespace, this time filter with more
   context. There will be fewer hunks as all the simple cases have
   already been handled:

    clang-format -i $(find src -name "*.cpp" -or -name "*.h")
    git diff src > tmp.patch
    grepdiff '^} // namespace' --output-matching=hunk tmp.patch  > fix_namespace2.patch

9. Manually review/edit the resulting patch file to remove hunks for files
   which need to be dealt with manually, noting the file names and
   line numbers. Then restore files to as before applying clang-format
   and apply the patch:

    git checkout src
    patch -p1 < fix_namespace2.patch

10. Manually fix the files noted in the previous step. Stage files,
    review changes and commit.
2017-07-23 13:11:54 +02:00
Guillaume Munch
7d456a93e4 Use move when passed by value
Also unduplicate code.
2016-06-26 19:38:16 +01:00
Guillaume Munch
b148629d56 Fix compilation with gcc 4.6 2016-06-14 16:44:40 +01:00
Guillaume Munch
e87febd0de Exercise: simplify the definition of IconvProcessor
It is no longer needed to create fake copy constructors and assignment and to
deal with deletion by hand, thanks to unique_ptr, the inference of move
constructor and assignment operator, and the compatibility of standard
containers with movable objects.
2016-06-09 19:16:44 +01:00
Guillaume Munch
8d640dc776 Remove non-copyable idioms
Two better ways of making a class non-copyable in C++11:

* Store the p. impl. in a unique_ptr (for the cases of classes with p. impl.),
  or:

* Define publicly the copy constructor and assignment as deleted

Lots of other classes could be cleaned up in this way.
2016-06-09 19:16:44 +01:00
Georg Baum
c9c20dc23b Make IconvProcessor::Impl noncopyable
The compiler-generated copy-constructor and assigment operators would be wrong
for IconvProcessor::Impl, since cd would be copied, and iconv_close() could
thus be called twice on the same descriptor. The old code did work, but now
IconvProcessor::Impl cannot be copied by accident in the future.
2014-07-01 22:23:06 +02:00
Georg Baum
0e8fea0705 Fix memory leak and assignment operator signature
The IconvProcessor assignment operator did not delete pimpl_ and used a
non-standard signature. If you want to know why the standard signature is
important, read "Effective C++" by Scott Meyers.
2014-07-01 22:17:07 +02:00
Georg Baum
6a30211fef Make encoding conversions thread safe
This is the result of the discussion on the list "2.1.0 Blocker". Thanks to
all contributors!
The main idea is to use thread-local storage for all static variables.
This solution does not need any mutex. For more details, see the comment in
unicode.h.
2013-10-10 21:20:44 +02:00
Julien Rioux
9dd1b7c578 Use the LyX name of encodings instead of the LaTeX names.
- Use the LyX name of encodings instead of the LaTeX names.
  The LyX name must be unique, while the name used by LaTeX
  not necessarily, e.g. different packages might implement
  support for the same encoding.

- Rename koi8 to koi8-r, so that the LyX and LaTeX names match.

- Rename euc-jp-plain to euc-jp-platex, jis-plain to jis-platex
  and shift-jis-plain to shift-jis-platex.

- Add utf8-platex encoding (fixes #8408).

LyX file format incremented to 463.
2013-02-18 23:52:42 +01:00
Pavel Sanda
4375b44dd6 Comment some headers before I ditch them again. 2012-11-18 17:42:32 +01:00
Uwe Stöhr
b53243295a unicode.cpp: make it compile again
the removal of this header in [ea1d9cb3/lyxgit] was too much
2012-11-13 00:27:46 +01:00
Pavel Sanda
ea1d9cb39f Less headers in unicode.
Now lets wait for the scream from people on other compilers.
2012-11-12 03:20:50 +01:00
Peter Kümmel
b5216b25f7 update other build systems, use lyx::Mutex
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37223 a592a061-630c-0410-9148-cb99ea01b6c8
2011-01-15 21:40:09 +00:00
Pavel Sanda
6aca54134f add comment
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37218 a592a061-630c-0410-9148-cb99ea01b6c8
2011-01-15 20:06:13 +00:00
Peter Kümmel
e1f8907816 fix #7240 Random crashes: iconv() is not thread save
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37217 a592a061-630c-0410-9148-cb99ea01b6c8
2011-01-15 19:52:55 +00:00
Enrico Forestieri
9b9a3cf0c0 Another compile fix for msvc.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29741 a592a061-630c-0410-9148-cb99ea01b6c8
2009-05-19 20:28:50 +00:00
Jürgen Spitzmüller
233ff911de * potential compile fix for msvc.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29739 a592a061-630c-0410-9148-cb99ea01b6c8
2009-05-19 19:59:48 +00:00
Jürgen Spitzmüller
d5a41946a6 * calculate the size of the iconv output buffer (bug 5951).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29735 a592a061-630c-0410-9148-cb99ea01b6c8
2009-05-19 15:27:54 +00:00
André Pönitz
f1cba8ff64 more latin1..utf8 schanges. all of src/* should be utf8 now
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@27425 a592a061-630c-0410-9148-cb99ea01b6c8
2008-11-14 15:58:50 +00:00
José Matox
1797f5218b endl is defined in ostream, iomanip is not enough (it matters for gcc 4.3)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24640 a592a061-630c-0410-9148-cb99ea01b6c8
2008-05-06 14:29:06 +00:00
Abdelrazak Younes
b90ec7288d remove unneeded includes.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24629 a592a061-630c-0410-9148-cb99ea01b6c8
2008-05-06 06:53:44 +00:00
Jürgen Spitzmüller
c26050ac83 * src/support/unicode.cpp (convert):
- flush out data at the end of the conversion process (bug 4439).

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22319 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-27 07:30:06 +00:00
Abdelrazak Younes
9abb7db468 getting rid of superfluous std:: statements.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22104 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-12 19:28:07 +00:00
Abdelrazak Younes
9383f4c3c6 'using namespace std' instead of 'using std::xxx'
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22097 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-12 10:16:00 +00:00
Abdelrazak Younes
06d65218c0 - Get rid of unneeded time_type typedef.
- MSVC compile fix.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21857 a592a061-630c-0410-9148-cb99ea01b6c8
2007-11-29 08:55:43 +00:00
André Pönitz
9160d824d8 cosmetics
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21853 a592a061-630c-0410-9148-cb99ea01b6c8
2007-11-29 07:24:55 +00:00
André Pönitz
9d0ea8aeff Move debug.{cpp,h}, Messages.{cpp,h} and gettext.{cpp,h} to support/.
Now support/* should have no dependencies on src/* anymore.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21851 a592a061-630c-0410-9148-cb99ea01b6c8
2007-11-29 07:04:28 +00:00
André Pönitz
0e40512c86 use LYXERR macro to avoid unneeded argument evaluations...
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21835 a592a061-630c-0410-9148-cb99ea01b6c8
2007-11-27 21:43:46 +00:00
André Pönitz
7c41973d51 cosmetics
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21411 a592a061-630c-0410-9148-cb99ea01b6c8
2007-11-03 20:52:09 +00:00
André Pönitz
a5263e0f92 introduce a header to forward declare std::string.
hope there are only conforming implementaions out there ;-}


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21312 a592a061-630c-0410-9148-cb99ea01b6c8
2007-10-31 22:40:34 +00:00
Abdelrazak Younes
c35007dbce Add two optimized versions of the ucs4 to local encoding.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18306 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-14 09:41:00 +00:00
Abdelrazak Younes
492562091e declare 'std::foo' and remove 'lyx::'
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18233 a592a061-630c-0410-9148-cb99ea01b6c8
2007-05-08 14:01:40 +00:00
Bo Peng
f212b48335 Rename .C ==> .cpp for files in src/support, part two
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18025 a592a061-630c-0410-9148-cb99ea01b6c8
2007-04-26 05:13:44 +00:00