diff --git a/CMakeLists.txt b/CMakeLists.txt index 24e400c..5f62c14 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -34,7 +34,7 @@ endif() set(CMAKE_CXX_STANDARD 11) if (MSVC) - set(CMAKE_CXX_FLAGS "/O2 /W4 /wd4244 /wd4305 /wd4996 /EHsc") + set(CMAKE_CXX_FLAGS "/O2 /W4 /wd4100 /EHsc") else() set(CMAKE_CXX_FLAGS "-O2 -Wall -Wno-deprecated-register") endif() diff --git a/include/SPTK/utils/int24_t.h b/include/SPTK/utils/int24_t.h index 81cbbe7..af0f99c 100644 --- a/include/SPTK/utils/int24_t.h +++ b/include/SPTK/utils/int24_t.h @@ -29,8 +29,9 @@ class int24_t { int24_t() { } - explicit int24_t(int initial_value) { - *this = initial_value; + template + explicit int24_t(T initial_value) { + *this = static_cast(initial_value); } ~int24_t() { diff --git a/include/SPTK/utils/uint24_t.h b/include/SPTK/utils/uint24_t.h index 2415131..c69d4ff 100644 --- a/include/SPTK/utils/uint24_t.h +++ b/include/SPTK/utils/uint24_t.h @@ -28,8 +28,9 @@ class uint24_t { uint24_t() { } - explicit uint24_t(int initial_value) { - *this = initial_value; + template + explicit uint24_t(T initial_value) { + *this = static_cast(initial_value); } ~uint24_t() { diff --git a/src/analysis/pitch_extraction_by_reaper.cc b/src/analysis/pitch_extraction_by_reaper.cc index 32c9076..baff048 100644 --- a/src/analysis/pitch_extraction_by_reaper.cc +++ b/src/analysis/pitch_extraction_by_reaper.cc @@ -16,7 +16,7 @@ #include "SPTK/analysis/pitch_extraction_by_reaper.h" -#include // std::copy, std::fill +#include // std::copy, std::fill, std::transform #include // std::ceil #include // int16_t @@ -54,7 +54,9 @@ bool PitchExtractionByReaper::Get( reaper::EpochTracker epoch_tracker; epoch_tracker.set_unvoiced_cost(static_cast(voicing_threshold_)); - std::vector integer_waveform(waveform.begin(), waveform.end()); + std::vector integer_waveform(waveform.size()); + std::transform(waveform.begin(), waveform.end(), integer_waveform.begin(), + [](double x) { return static_cast(x); }); if (!epoch_tracker.Init(integer_waveform.data(), static_cast(integer_waveform.size()), static_cast(sampling_rate_), diff --git a/src/analysis/spectrum_extraction_by_world.cc b/src/analysis/spectrum_extraction_by_world.cc index 537296e..b5016d1 100644 --- a/src/analysis/spectrum_extraction_by_world.cc +++ b/src/analysis/spectrum_extraction_by_world.cc @@ -62,7 +62,7 @@ bool SpectrumExtractionByWorld::Run( f0_floor = f0[i]; } } - if (f0_floor < world::GetF0FloorForCheapTrick(sampling_rate_, fft_length_)) { + if (f0_floor < world::GetF0FloorForCheapTrick(static_cast(sampling_rate_), fft_length_)) { return false; } @@ -73,7 +73,7 @@ bool SpectrumExtractionByWorld::Run( } world::CheapTrickOption option; - world::InitializeCheapTrickOption(sampling_rate_, &option); + world::InitializeCheapTrickOption(static_cast(sampling_rate_), &option); option.fft_size = fft_length_; option.f0_floor = f0_floor; diff --git a/src/conversion/autocorrelation_to_composite_sinusoidal_modeling.cc b/src/conversion/autocorrelation_to_composite_sinusoidal_modeling.cc index d2db611..a1408fb 100644 --- a/src/conversion/autocorrelation_to_composite_sinusoidal_modeling.cc +++ b/src/conversion/autocorrelation_to_composite_sinusoidal_modeling.cc @@ -117,7 +117,7 @@ bool AutocorrelationToCompositeSinusoidalModeling::Run( const int index((l < 2 * k) ? (2 * k - l) : (l - 2 * k)); sum += (binomial_coefficient)*input[index]; } - u[l] = sum / std::pow(2.0, l); + u[l] = static_cast(sum / std::pow(2.0, l)); } for (int i(0); i < num_sine_wave_; ++i) { diff --git a/src/main/acr2csm.cc b/src/main/acr2csm.cc index 6eba95e..13a3667 100644 --- a/src/main/acr2csm.cc +++ b/src/main/acr2csm.cc @@ -81,7 +81,7 @@ int main(int argc, char* argv[]) { double convergence_threshold(kDefaultConvergenceThreshold); for (;;) { - const char option_char(getopt_long(argc, argv, "m:i:d:h", NULL, NULL)); + const int option_char(getopt_long(argc, argv, "m:i:d:h", NULL, NULL)); if (-1 == option_char) break; switch (option_char) { diff --git a/src/main/bcp.cc b/src/main/bcp.cc index 6417283..dfdf6fe 100644 --- a/src/main/bcp.cc +++ b/src/main/bcp.cc @@ -87,13 +87,13 @@ class BlockCopy : public BlockCopyInterface { public: BlockCopy(int input_start_number, int input_end_number, int input_block_length, int output_start_number, - int output_block_length, T pad_value, bool is_ascii = false) + int output_block_length, double pad_value, bool is_ascii = false) : input_start_number_(input_start_number), input_end_number_(input_end_number), input_block_length_(input_block_length), output_start_number_(output_start_number), output_block_length_(output_block_length), - pad_value_(pad_value), + pad_value_(static_cast(pad_value)), is_ascii_(is_ascii) { } @@ -125,7 +125,7 @@ class BlockCopy : public BlockCopyInterface { } if (input_start_number_ <= i && i <= input_end_number_) { try { - inputs[i] = std::stold(word); + inputs[i] = static_cast(std::stold(word)); } catch (std::invalid_argument&) { return false; } diff --git a/src/main/c2acr.cc b/src/main/c2acr.cc index c633c70..385b3d5 100644 --- a/src/main/c2acr.cc +++ b/src/main/c2acr.cc @@ -85,7 +85,7 @@ int main(int argc, char* argv[]) { int fft_length(kDefaultFftLength); for (;;) { - const char option_char(getopt_long(argc, argv, "m:M:l:h", NULL, NULL)); + const int option_char(getopt_long(argc, argv, "m:M:l:h", NULL, NULL)); if (-1 == option_char) break; switch (option_char) { diff --git a/src/main/csm2acr.cc b/src/main/csm2acr.cc index b966a81..77b0d53 100644 --- a/src/main/csm2acr.cc +++ b/src/main/csm2acr.cc @@ -80,7 +80,7 @@ int main(int argc, char* argv[]) { int num_order(kDefaultNumOrder); for (;;) { - const char option_char(getopt_long(argc, argv, "m:h", NULL, NULL)); + const int option_char(getopt_long(argc, argv, "m:h", NULL, NULL)); if (-1 == option_char) break; switch (option_char) { diff --git a/src/main/pitch_mark.cc b/src/main/pitch_mark.cc index c0e8358..c1e7014 100644 --- a/src/main/pitch_mark.cc +++ b/src/main/pitch_mark.cc @@ -294,7 +294,7 @@ int main(int argc, char* argv[]) { switch (output_format) { case kBinarySequence: { - int next_pitch_mark(pitch_mark.empty() ? -1 : std::round(pitch_mark[0])); + int next_pitch_mark(pitch_mark.empty() ? -1 : static_cast(std::round(pitch_mark[0]))); for (int i(0), j(1); i < waveform_length; ++i) { if (i == next_pitch_mark) { if (!sptk::WriteStream(binary_polarity, &std::cout)) { @@ -304,7 +304,7 @@ int main(int argc, char* argv[]) { return 1; } if (j < num_pitch_marks) { - next_pitch_mark = std::round(pitch_mark[j++]); + next_pitch_mark = static_cast(std::round(pitch_mark[j++])); } } else { if (!sptk::WriteStream(0.0, &std::cout)) { @@ -334,7 +334,7 @@ int main(int argc, char* argv[]) { const double bias(kSine == output_format ? 0.0 : 0.5 * sptk::kPi); for (int n(0), i(0); n <= num_pitch_marks; ++n) { const int next_pitch_mark( - n < num_pitch_marks ? std::round(pitch_mark[n]) : waveform_length); + n < num_pitch_marks ? static_cast(std::round(pitch_mark[n])) : waveform_length); // Find the point across voiced region to unvoiced one. int j(i); for (; j < next_pitch_mark; ++j) { diff --git a/src/main/x2x.cc b/src/main/x2x.cc index b268b81..d26eef4 100644 --- a/src/main/x2x.cc +++ b/src/main/x2x.cc @@ -122,7 +122,7 @@ class DataTransform : public DataTransformInterface { *input_stream >> word; if (word.empty()) break; try { - input_data = std::stold(word); + input_data = static_cast(std::stold(word)); } catch (std::invalid_argument&) { return false; } @@ -133,7 +133,7 @@ class DataTransform : public DataTransformInterface { } // Convert. - T2 output_data(input_data); + T2 output_data(static_cast(input_data)); bool is_clipped(false); { diff --git a/src/utils/sptk_utils.cc b/src/utils/sptk_utils.cc index f0bb06b..d45bbbc 100644 --- a/src/utils/sptk_utils.cc +++ b/src/utils/sptk_utils.cc @@ -136,7 +136,7 @@ bool ReadStream(bool zero_padding, int stream_skip, int read_point, return false; // Something wrong! } - std::fill_n(sequence_to_read->begin() + end - num_zeros, num_zeros, 0.0); + std::fill_n(sequence_to_read->begin() + end - num_zeros, num_zeros, static_cast(0)); return !input_stream->bad(); } @@ -336,7 +336,9 @@ bool ConvertSpecialStringToDouble(const std::string& input, double* output) { std::string lowercase_input(input); std::transform(input.begin(), input.end(), lowercase_input.begin(), - [](unsigned char c) { return std::tolower(c); }); + [](unsigned char c) { + return static_cast(std::tolower(c)); + }); if ("pi" == lowercase_input) { *output = sptk::kPi; return true;