clang: fix -Wextra-semi warnings (#1134)

Achieved by adding do/while to mandate a semicolon.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
This commit is contained in:
Rosen Penev 2023-09-15 23:23:45 -07:00 committed by GitHub
parent 7646184d6b
commit 97a74ca3d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 108 additions and 70 deletions

View File

@ -23,45 +23,45 @@
#define TAGLIB_MODFILEPRIVATE_H
// some helper-macros only used internally by (s3m|it|xm)file.cpp
#define READ_ASSERT(cond) \
if(!(cond)) \
{ \
setValid(false); \
return; \
}
#define READ_ASSERT(cond) \
do { \
if(!(cond)) { \
setValid(false); \
return; \
} \
} while(0)
#define READ(setter,type,read) \
{ \
type number; \
READ_ASSERT(read(number)); \
setter(number); \
}
#define READ(setter, type, read) \
do { \
type number; \
READ_ASSERT(read(number)); \
setter(number); \
} while(0)
#define READ_BYTE(setter) READ(setter,unsigned char,readByte)
#define READ_U16L(setter) READ(setter,unsigned short,readU16L)
#define READ_U32L(setter) READ(setter,unsigned long,readU32L)
#define READ_U16B(setter) READ(setter,unsigned short,readU16B)
#define READ_U32B(setter) READ(setter,unsigned long,readU32B)
#define READ_BYTE(setter) READ(setter, unsigned char, readByte)
#define READ_U16L(setter) READ(setter, unsigned short, readU16L)
#define READ_U32L(setter) READ(setter, unsigned long, readU32L)
#define READ_U16B(setter) READ(setter, unsigned short, readU16B)
#define READ_U32B(setter) READ(setter, unsigned long, readU32B)
#define READ_STRING(setter,size) \
{ \
String s; \
READ_ASSERT(readString(s, size)); \
setter(s); \
}
#define READ_STRING(setter, size) \
do { \
String s; \
READ_ASSERT(readString(s, size)); \
setter(s); \
} while(0)
#define READ_AS(type,name,read) \
type name = 0; \
READ_ASSERT(read(name));
#define READ_AS(type, name, read) \
type name = 0; \
READ_ASSERT(read(name))
#define READ_BYTE_AS(name) READ_AS(unsigned char,name,readByte)
#define READ_U16L_AS(name) READ_AS(unsigned short,name,readU16L)
#define READ_U32L_AS(name) READ_AS(unsigned long,name,readU32L)
#define READ_U16B_AS(name) READ_AS(unsigned short,name,readU16B)
#define READ_U32B_AS(name) READ_AS(unsigned long,name,readU32B)
#define READ_STRING_AS(name,size) \
String name; \
READ_ASSERT(readString(name, size));
#define READ_BYTE_AS(name) READ_AS(unsigned char, name, readByte)
#define READ_U16L_AS(name) READ_AS(unsigned short, name, readU16L)
#define READ_U32L_AS(name) READ_AS(unsigned long, name, readU32L)
#define READ_U16B_AS(name) READ_AS(unsigned short, name, readU16B)
#define READ_U32B_AS(name) READ_AS(unsigned long, name, readU32B)
#define READ_STRING_AS(name, size) \
String name; \
READ_ASSERT(readString(name, size))
#endif

View File

@ -32,31 +32,37 @@
using namespace TagLib;
#define stringUnion(method) \
if(tag(0) && !tag(0)->method().isEmpty()) \
return tag(0)->method(); \
if(tag(1) && !tag(1)->method().isEmpty()) \
return tag(1)->method(); \
if(tag(2) && !tag(2)->method().isEmpty()) \
return tag(2)->method(); \
return String(); \
#define stringUnion(method) \
do { \
if(tag(0) && !tag(0)->method().isEmpty()) \
return tag(0)->method(); \
if(tag(1) && !tag(1)->method().isEmpty()) \
return tag(1)->method(); \
if(tag(2) && !tag(2)->method().isEmpty()) \
return tag(2)->method(); \
return String(); \
} while(0)
#define numberUnion(method) \
if(tag(0) && tag(0)->method() > 0) \
return tag(0)->method(); \
if(tag(1) && tag(1)->method() > 0) \
return tag(1)->method(); \
if(tag(2) && tag(2)->method() > 0) \
return tag(2)->method(); \
return 0
#define numberUnion(method) \
do { \
if(tag(0) && tag(0)->method() > 0) \
return tag(0)->method(); \
if(tag(1) && tag(1)->method() > 0) \
return tag(1)->method(); \
if(tag(2) && tag(2)->method() > 0) \
return tag(2)->method(); \
return 0; \
} while(0)
#define setUnion(method, value) \
if(tag(0)) \
tag(0)->set##method(value); \
if(tag(1)) \
tag(1)->set##method(value); \
if(tag(2)) \
tag(2)->set##method(value); \
#define setUnion(method, value) \
do { \
if(tag(0)) \
tag(0)->set##method(value); \
if(tag(1)) \
tag(1)->set##method(value); \
if(tag(2)) \
tag(2)->set##method(value); \
} while(0)
class TagUnion::TagUnionPrivate
{

View File

@ -38,23 +38,55 @@ using namespace TagLib;
class PublicRIFF : public RIFF::File
{
public:
PublicRIFF(FileName file) : RIFF::File(file, BigEndian) {};
unsigned int riffSize() { return RIFF::File::riffSize(); };
unsigned int chunkCount() { return RIFF::File::chunkCount(); };
offset_t chunkOffset(unsigned int i) { return RIFF::File::chunkOffset(i); };
unsigned int chunkPadding(unsigned int i) { return RIFF::File::chunkPadding(i); };
unsigned int chunkDataSize(unsigned int i) { return RIFF::File::chunkDataSize(i); };
ByteVector chunkName(unsigned int i) { return RIFF::File::chunkName(i); };
ByteVector chunkData(unsigned int i) { return RIFF::File::chunkData(i); };
PublicRIFF(FileName file) : RIFF::File(file, BigEndian)
{
}
unsigned int riffSize()
{
return RIFF::File::riffSize();
}
unsigned int chunkCount()
{
return RIFF::File::chunkCount();
}
offset_t chunkOffset(unsigned int i)
{
return RIFF::File::chunkOffset(i);
}
unsigned int chunkPadding(unsigned int i)
{
return RIFF::File::chunkPadding(i);
}
unsigned int chunkDataSize(unsigned int i)
{
return RIFF::File::chunkDataSize(i);
}
ByteVector chunkName(unsigned int i)
{
return RIFF::File::chunkName(i);
}
ByteVector chunkData(unsigned int i)
{
return RIFF::File::chunkData(i);
}
void setChunkData(unsigned int i, const ByteVector &data) {
RIFF::File::setChunkData(i, data);
}
void setChunkData(const ByteVector &name, const ByteVector &data) {
RIFF::File::setChunkData(name, data);
};
TagLib::Tag* tag() const override { return nullptr; };
TagLib::AudioProperties* audioProperties() const override { return nullptr;};
bool save() override { return false; };
}
TagLib::Tag *tag() const override
{
return nullptr;
}
TagLib::AudioProperties *audioProperties() const override
{
return nullptr;
}
bool save() override
{
return false;
}
void removeChunk(unsigned int i) { RIFF::File::removeChunk(i); }
void removeChunk(const ByteVector &name) { RIFF::File::removeChunk(name); }
};