diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index e6c6d28..b5ed78e 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -56,4 +56,4 @@ } ], "version": 3 -} \ No newline at end of file +} diff --git a/builder/CMakeLists.txt b/builder/CMakeLists.txt index 036c701..5f367f2 100644 --- a/builder/CMakeLists.txt +++ b/builder/CMakeLists.txt @@ -8,7 +8,18 @@ macro(setup_builder) include_directories(${ROOT_SOURCE_DIR}) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -W -Wshadow -Wunused-variable -Wunused-parameter -Wunused-function -Wunused -Wno-system-headers -Wno-deprecated -Woverloaded-virtual") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \ + -Wall \ + -W \ + -Wshadow \ + -Wunused-variable \ + -Wunused-parameter \ + -Wunused-function \ + -Wunused \ + -Wno-system-headers \ + -Wno-deprecated \ + -Woverloaded-virtual \ + ") if (BUILDER_ENABLE_PROFILING) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} --coverage") @@ -16,3 +27,7 @@ macro(setup_builder) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") endmacro() + +macro(increase_warning_level) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wconversion -Wsign-conversion") +endmacro() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ef00cf1..66f3355 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,3 +1,5 @@ +increase_warning_level() + project(midi) add_library(midi STATIC diff --git a/src/MIDI.cpp b/src/MIDI.cpp index c5b8824..6d9b6a7 100644 --- a/src/MIDI.cpp +++ b/src/MIDI.cpp @@ -104,7 +104,7 @@ unsigned decodeSysEx(const byte* inSysEx, { const byte body = inSysEx[i]; const byte shift = inFlipHeaderBits ? 6 - byteIndex : byteIndex; - const byte msb = ((msbStorage >> shift) & 1) << 7; + const byte msb = byte(((msbStorage >> shift) & 1) << 7); byteIndex--; outData[count++] = msb | body; } diff --git a/src/MIDI.hpp b/src/MIDI.hpp index 9951261..fa34533 100644 --- a/src/MIDI.hpp +++ b/src/MIDI.hpp @@ -292,7 +292,7 @@ template void MidiInterface::sendPitchBend(int inPitchValue, Channel inChannel) { - const unsigned bend = inPitchValue - MIDI_PITCHBEND_MIN; + const unsigned bend = unsigned(inPitchValue - int(MIDI_PITCHBEND_MIN)); send(PitchBend, (bend & 0x7f), (bend >> 7) & 0x7f, inChannel); } @@ -375,7 +375,7 @@ template void MidiInterface::sendTimeCodeQuarterFrame(DataByte inTypeNibble, DataByte inValuesNibble) { - const byte data = (((inTypeNibble & 0x07) << 4) | (inValuesNibble & 0x0f)); + const byte data = byte((((inTypeNibble & 0x07) << 4) | (inValuesNibble & 0x0f))); sendTimeCodeQuarterFrame(data); } @@ -620,7 +620,7 @@ template StatusByte MidiInterface::getStatus(MidiType inType, Channel inChannel) const { - return ((byte)inType | ((inChannel - 1) & 0x0f)); + return StatusByte(((byte)inType | ((inChannel - 1) & 0x0f))); } // ----------------------------------------------------------------------------- @@ -856,7 +856,7 @@ bool MidiInterface::parse() // Get length mMessage.data1 = mPendingMessageIndex & 0xff; // LSB - mMessage.data2 = mPendingMessageIndex >> 8; // MSB + mMessage.data2 = byte(mPendingMessageIndex >> 8); // MSB mMessage.channel = 0; mMessage.valid = true; @@ -1116,7 +1116,7 @@ MidiType MidiInterface::getTypeFromStatusByte(byte inStatu template inline Channel MidiInterface::getChannelFromStatusByte(byte inStatus) { - return (inStatus & 0x0f) + 1; + return Channel((inStatus & 0x0f) + 1); } template @@ -1221,7 +1221,7 @@ void MidiInterface::launchCallback() // Occasional messages case TimeCodeQuarterFrame: if (mTimeCodeQuarterFrameCallback != 0) mTimeCodeQuarterFrameCallback(mMessage.data1); break; - case SongPosition: if (mSongPositionCallback != 0) mSongPositionCallback((mMessage.data1 & 0x7f) | ((mMessage.data2 & 0x7f) << 7)); break; + case SongPosition: if (mSongPositionCallback != 0) mSongPositionCallback(unsigned((mMessage.data1 & 0x7f) | ((mMessage.data2 & 0x7f) << 7))); break; case SongSelect: if (mSongSelectCallback != 0) mSongSelectCallback(mMessage.data1); break; case TuneRequest: if (mTuneRequestCallback != 0) mTuneRequestCallback(); break;