diff --git a/taglib/mod/modfileprivate.h b/taglib/mod/modfileprivate.h index 781db74c..6cdc3f0b 100644 --- a/taglib/mod/modfileprivate.h +++ b/taglib/mod/modfileprivate.h @@ -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 diff --git a/taglib/tagunion.cpp b/taglib/tagunion.cpp index b3e46b16..ee79b2be 100644 --- a/taglib/tagunion.cpp +++ b/taglib/tagunion.cpp @@ -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 { diff --git a/tests/test_riff.cpp b/tests/test_riff.cpp index c2a2b420..ef8d5261 100644 --- a/tests/test_riff.cpp +++ b/tests/test_riff.cpp @@ -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); } };