Commit Graph

2523 Commits

Author SHA1 Message Date
Rosen Penev
303b55fb97
clang-tidy: ending namespace comment (#1132)
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-09-03 21:39:49 -05:00
Rosen Penev
ecf1d4fa53
clang: fix documentation (#1111)
* Use [[deprecated]] always

Simplifies the code. Codebase is C++17 anyways.

Signed-off-by: Rosen Penev <rosenp@gmail.com>

* clang: fix documentation

Found with Wdocumentation

Signed-off-by: Rosen Penev <rosenp@gmail.com>

* add deprecated to length() and fix usages

Signed-off-by: Rosen Penev <rosenp@gmail.com>

---------

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-09-03 15:14:05 +02:00
Urs Fleisch
d2bd56c519 Fix possible loss of data warning by MSVC 2023-09-02 16:30:45 +02:00
Rosen Penev
040b069957
clang-tidy: fix mismatched variable names (#1109)
Found with readability-inconsistent-declaration-parameter-name

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-31 06:46:58 +02:00
Urs Fleisch
f44ea9b80b Fixed signedness warning 2023-08-30 17:58:15 +02:00
Rosen Penev
0ba61343a4
std::list and unique_ptr conversions (#1122)
The former is standard C++ and the latter allows getting rid of
autodelete.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-30 16:49:31 +02:00
Rosen Penev
cdc87aec10
clang-tidy: init members by default (#1110)
Found with modernize-use-default-member-init

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-30 16:26:14 +02:00
Rosen Penev
4a86489186
clang-tidy: no else after return (#1119)
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-21 09:19:53 -05:00
Rosen Penev
85c678f587
Use nullptr (#1117)
Found with modernize-use-nullptr

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-17 10:36:22 -05:00
Rosen Penev
29e88cfe66
Default FileName copy constructor (#1118)
Found with: modernize-use-equals-default

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-17 10:33:56 -05:00
Rosen Penev
128c55bc53
Remove dead forward declaration (#1121)
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-17 10:30:01 -05:00
Rosen Penev
cf352ac7f4
Move temporary into vector instead of copying (#1115)
more efficient.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-15 19:13:22 -05:00
Rosen Penev
bbb8221301
Handle self-assignment (#1114)
Found with cert-oop54-cpp

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-15 16:58:56 -05:00
Rosen Penev
f69c21c8e6
Additional none_of conversion (#1113) 2023-08-15 09:21:43 -05:00
Rosen Penev
574604765f
Use std algorithms (#1107)
Found with: readability-use-anyofallof

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-09 12:09:28 -05:00
Rosen Penev
f2d0e664e7
Add ending namespace comments (#1108)
Found with google-readability-namespace-comments

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-07 20:44:11 -05:00
Rosen Penev
185bb7042e
Use unique_ptr for d-pointers (#1095)
* clang-tidy: make deleted members public

One oversight of modernize-use-equals-delete is that the C++11 way of
doing this is to make it public, which makes the warning still trigger.

Signed-off-by: Rosen Penev <rosenp@gmail.com>

* clang-tidy: add missing deleted functions

Found with cppcoreguidelines-special-member-functions

Signed-off-by: Rosen Penev <rosenp@gmail.com>

* unique_ptr conversions

unique_ptr is a safer and cleaner way to handle d pointers.

Also added missing = default.

Signed-off-by: Rosen Penev <rosenp@gmail.com>

---------

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-07 15:08:40 -05:00
Rosen Penev
843a8aac80
Replace RefCounter with shared_ptr (#1100)
* clang-tidy: replace RefCounter with shared_ptr

The latter is C++11.

Found with clang-analyzer-webkit.NoUncountedMemberChecker

Signed-off-by: Rosen Penev <rosenp@gmail.com>

* remove trefcounter

It is now unused.

Signed-off-by: Rosen Penev <rosenp@gmail.com>

---------

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-07 08:40:24 -05:00
Rosen Penev
dcef356e3f
Replace raw buffers with std containers (#1101)
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-06 17:46:59 -05:00
Rosen Penev
868f4eef3d
Various cleanups (#1099)
* cmake: remove atomic checks

All this stuff was replaced with std::atomic

Fixes: 9bcba812af

Signed-off-by: Rosen Penev <rosenp@gmail.com>

* cmake: remove vsnprintf checks

Available since C++11

Signed-off-by: Rosen Penev <rosenp@gmail.com>

* clang-tidy: const ref conversions

Signed-off-by: Rosen Penev <rosenp@gmail.com>

* clang-tidy: handle self assignment

Found with bugprone-unhandled-self-assignment,cert-oop54-cpp

Signed-off-by: Rosen Penev <rosenp@gmail.com>

* clang-tidy: remove wrong forward declarations

Found with bugprone-forward-declaration-namespace

Signed-off-by: Rosen Penev <rosenp@gmail.com>

---------

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-05 10:31:46 -05:00
Rosen Penev
c0e9428218
Fix warnings under clang-cl (#1106)
-Wmicrosoft-unqualified-friend
-Wdllexport-explicit-instantiation-decl
-Wunused-parameter

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-05 10:07:52 -05:00
Rosen Penev
bec59b4b7b
Convert to range-based for (#1104)
Found with MSVC: warning C4456

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-05 10:00:07 -05:00
Rosen Penev
bd6c3ba174
Use constexpr if (#1103)
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-05 09:56:23 -05:00
Rosen Penev
ee8124ed7a
Replace unnecessary loop (#1105)
Signed-off-by: Rosen Penev <rosenp@gmail.com>
2023-08-05 09:45:32 -05:00
Scott Wheeler
965260e3cb Add a note about how I generated list of classes 2023-07-30 06:55:23 +02:00
Scott Wheeler
f903e1ad71 Add checks for the expected sizes of all public classes
This ensures that d-pointers exist where they're expected, and that
classes are virtual that we expect to be virtual, as well as ensuring
that we get a failure if the class size changes when it shouldn't.

This also fixes the issues that were discovered by adding these tests.
2023-07-30 06:31:48 +02:00
Scott Wheeler
a1bdb0171d Remove virtual destructors from POD toolkit types
This one's been haunting me for a couple decades.  "Make all the things
virtual!" was kind of a strategy I had for forward compatibility when I
wrote this code when I was 20 or so and didn't know better.
2023-07-30 02:47:00 +02:00
Stephen Booth
9bcba812af
Use C++11 atomics for RefCounter (#1097) 2023-07-29 06:58:50 +02:00
Max-F-Helm
271bd05afa Improve FrameFactory subclassing
Change the ID3v2 frame factory so it is possible to subclass it for
implementing own frames.  Additionally it splits up the createFrame()
method to make its usage in subclasses a bit more easy.
2023-07-26 07:39:31 +02:00
Urs Fleisch
c54c924333 Use static_cast instead of C-style casts 2023-07-22 07:09:58 +02:00
Urs Fleisch
d314bfa06a Make sure that own header file is included first
Each header corresponding to a .cpp file must be self-contained,
and can be #included without prerequisites.
2023-07-22 07:09:58 +02:00
Urs Fleisch
cc7d23cdf5 Consistently use quote form when including our own headers 2023-07-22 07:09:58 +02:00
Urs Fleisch
2a1fb27735 clang-tidy: Replace C headers with C++ alternatives
run-clang-tidy -header-filter='.*' -checks='-*,modernize-deprecated-headers'

Fixed manually as automatic fix would shuffle headers around.
2023-07-22 07:09:58 +02:00
Urs Fleisch
b5516c9718 clang-tidy: Use default function declarations
run-clang-tidy -header-filter='.*' -checks='-*,modernize-use-equals-default' -fix
2023-07-22 07:09:58 +02:00
Urs Fleisch
231772b2ad clang-tidy: Delete unimplemented private constructors
run-clang-tidy -header-filter='.*' -checks='-*,modernize-use-equals-delete' -fix
2023-07-22 07:09:58 +02:00
Urs Fleisch
77ab5e9689 Narrow the scope of iterators
Also make sure that it is visible at first glance that iterators are
not taken from temporaries.
2023-07-22 07:09:58 +02:00
Urs Fleisch
c2c9e8989c clang-tidy: Use auto where it improves the readability
run-clang-tidy -header-filter='.*' -checks='-*,modernize-use-auto' \
-config="{CheckOptions: [{key: modernize-use-auto.RemoveStars, value: '1'}]}" \
-fix

Manually fixed some wrong `const auto` replacements and verified
that all types are deduced correctly.
2023-07-22 07:09:58 +02:00
Urs Fleisch
63922f2676 Avoid unnecessary detaching of containers
If only a constant iterator is needed, make the container const if
possible, otherwise use cbegin() and cend() to get a constant iterator
without detaching the container.

These fixes are needed so that `auto` can deduce the correct
iterator type.
2023-07-22 07:09:58 +02:00
Urs Fleisch
b273505c28 clang-tidy: static accessed through instance.
run-clang-tidy -header-filter='.*' -checks='-*,readability-static-accessed-through-instance' -fix
2023-07-22 07:09:58 +02:00
Urs Fleisch
abc6c31890 clang-tidy: Use nullptr instead of 0
run-clang-tidy -header-filter='.*' -checks='-*,modernize-use-nullptr' -fix
2023-07-22 07:09:58 +02:00
Urs Fleisch
9867bc947e clang-tidy: Use override keyword
run-clang-tidy -header-filter='.*' -checks='-*,modernize-use-override' -fix
2023-07-22 07:09:58 +02:00
whatdoineed2do
e20a53afbb
C bindings - properties i/f (#1091)
Support properties in C bindings

---------

Co-authored-by: whatdoineed2do/Ray <whatdoineed2do@nospam.gmail.com>
Co-authored-by: Urs Fleisch <ufleisch@users.sourceforge.net>
2023-07-09 19:48:27 +02:00
Urs Fleisch
ceb142c9bd Remove functions documented (but not marked) as deprecated
Clean up other stuff with comments about binary incompatibility,
but only as far as to mostly keep source compatibility.
2023-07-09 07:01:37 +02:00
Urs Fleisch
322085f90e Windows: Remove unused FileName member, disable two warnings 2023-07-09 07:01:37 +02:00
Urs Fleisch
250dece2ab Fix warnings about missing virtual destructors 2023-07-09 07:01:37 +02:00
Urs Fleisch
a33cc0635a Remove deprecated stuff 2023-07-09 07:01:37 +02:00
Urs Fleisch
ca8c2e07ec Support large files over 2GB on Windows (#1089)
Backport of 4dcf0b41c6
b01f45e141
https://github.com/taglib/taglib/pull/77

Tested with files larger than 2GB which have been created using

sox -n -r 44100 -C 320 large.mp3 synth 58916 sine 440 channels 2
sox -n -r 44100 -C 0 large.flac synth 25459 sine 440 channels 2
sox -n -r 44100 -C 10 large.ogg synth 229806 sine 440 channels 2
sox -n -r 44100 large.wav synth 6692 sine 440 channels 2
ffmpeg -f lavfi -i "sine=frequency=440:duration=244676" -y large.m4a

The only file which was readable with the tagreader example
before this commit was large.ogg. The problem is that long on
Windows is only 32-bit (also in LLP64 data model of 64-bit
compilation target) and all the file offsets using long are
too small for large files. Now long is replaced by offset_t
(defined to be long long on Windows and off_t on UNIX) for such
cases and some unsigned long are now size_t, which has the
correct size even on Windows.
2023-07-09 07:01:37 +02:00
Urs Fleisch
bc915f5dc8 Use C++17 2023-07-09 07:01:37 +02:00
Urs Fleisch
e5cf30e1e9 Set version and date for TagLib 2.0, simplify SO versioning 2023-07-09 07:01:37 +02:00
Urs Fleisch
c840222a39 Version 1.13.1 2023-07-01 07:43:27 +02:00