diff --git a/cmake/warnings.cmake b/cmake/warnings.cmake index 035c0df..315d5fb 100644 --- a/cmake/warnings.cmake +++ b/cmake/warnings.cmake @@ -23,7 +23,9 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") message(STATUS "GCC libs: ${Green}stdc++fs${ColourReset}") target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic -fdiagnostics-color=always) target_link_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic -fdiagnostics-color=always) - target_link_options(${PROJECT_NAME} PUBLIC -rdynamic) + if (NOT WIN32) + target_link_options(${PROJECT_NAME} PUBLIC -rdynamic) + endif() target_link_libraries(${PROJECT_NAME} PUBLIC stdc++fs) include(GNUInstallDirs) elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel") diff --git a/include/blt/iterator/enumerate.h b/include/blt/iterator/enumerate.h index 71f3687..7dd6293 100644 --- a/include/blt/iterator/enumerate.h +++ b/include/blt/iterator/enumerate.h @@ -82,14 +82,14 @@ namespace blt } template <typename Iter> - class enumerate_iterator_container : public iterator::iterator_container<iterator::enumerate_wrapper<Iter>> + class enumerate_iterator_container : public blt::iterator::iterator_container<blt::iterator::enumerate_wrapper<Iter>> { public: - using iterator::iterator_container<iterator::enumerate_wrapper<Iter>>::iterator_container; + using blt::iterator::iterator_container<blt::iterator::enumerate_wrapper<Iter>>::iterator_container; enumerate_iterator_container(Iter begin, Iter end, blt::size_t size): - iterator::iterator_container<iterator::enumerate_wrapper<Iter>>( - iterator::enumerate_wrapper<Iter>{0, std::move(begin)}, iterator::enumerate_wrapper<Iter>{size, std::move(end)}) + blt::iterator::iterator_container<blt::iterator::enumerate_wrapper<Iter>>( + blt::iterator::enumerate_wrapper<Iter>{0, std::move(begin)}, blt::iterator::enumerate_wrapper<Iter>{size, std::move(end)}) { } }; diff --git a/include/blt/iterator/zip.h b/include/blt/iterator/zip.h index df26e43..27a3760 100644 --- a/include/blt/iterator/zip.h +++ b/include/blt/iterator/zip.h @@ -112,11 +112,11 @@ namespace blt class zip_iterator_container : public iterator::iterator_container<iterator::zip_wrapper<Iter...>> { public: - using iterator::iterator_container<iterator::zip_wrapper<Iter...>>::iterator_container; + using blt::iterator::iterator_container<blt::iterator::zip_wrapper<Iter...>>::iterator_container; - explicit zip_iterator_container(iterator::iterator_pair<Iter>... iterator_pairs): - iterator::iterator_container<iterator::zip_wrapper<Iter...>>(iterator::zip_wrapper<Iter...>{std::move(iterator_pairs.begin)...}, - iterator::zip_wrapper<Iter...>{std::move(iterator_pairs.end)...}) + explicit zip_iterator_container(blt::iterator::iterator_pair<Iter>... iterator_pairs): + blt::iterator::iterator_container<blt::iterator::zip_wrapper<Iter...>>(blt::iterator::zip_wrapper<Iter...>{std::move(iterator_pairs.begin)...}, + blt::iterator::zip_wrapper<Iter...>{std::move(iterator_pairs.end)...}) {} }; diff --git a/include/blt/parse/templating.h b/include/blt/parse/templating.h index 5f10352..7cd9d30 100644 --- a/include/blt/parse/templating.h +++ b/include/blt/parse/templating.h @@ -223,8 +223,12 @@ namespace blt std::string_view from_last() { - if (!hasNext()) - return std::string_view(&raw_string[last_read_index], raw_string.size() - last_read_index); + if (!hasNext()) { + auto size = raw_string.size() - last_read_index; + if (size > 0) + return std::string_view(&raw_string[last_read_index], size); + return ""; + } auto token = storage[getCurrentIndex()]; auto len = ((&token.token.back()) - &raw_string[last_read_index]); auto str = std::string_view(&raw_string[last_read_index], len); diff --git a/src/blt/logging/logging.cpp b/src/blt/logging/logging.cpp index 67e5a66..d9339e0 100644 --- a/src/blt/logging/logging.cpp +++ b/src/blt/logging/logging.cpp @@ -204,7 +204,7 @@ namespace blt::logging if (end == std::string::npos) { std::stringstream ss; - ss << "Invalid format string, missing closing '}' near " << m_fmt.substr(std::min(static_cast<i64>(begin) - 5, 0l)); + ss << "Invalid format string, missing closing '}' near " << m_fmt.substr(std::min(static_cast<i64>(begin) - 5, 0ll)); throw std::runtime_error(ss.str()); } m_last_fmt_pos = end + 1; diff --git a/src/blt/logging/status.cpp b/src/blt/logging/status.cpp index 90696b4..1f3edfa 100644 --- a/src/blt/logging/status.cpp +++ b/src/blt/logging/status.cpp @@ -17,8 +17,10 @@ */ #include <cstdio> #include <iostream> +#ifdef unix #include <termios.h> #include <unistd.h> +#endif #include <blt/logging/ansi.h> #include <blt/logging/fmt_tokenizer.h> #include <blt/logging/logging.h> @@ -30,6 +32,7 @@ namespace blt::logging { vec2i get_cursor_position() { +#ifdef unix termios save{}, raw{}; tcgetattr(0, &save); @@ -68,12 +71,16 @@ namespace blt::logging tcsetattr(0,TCSANOW, &save); return vec2i{row, col}; +#else + return {0,0}; +#endif } #define SIZE 100 vec2i get_screen_size() { +#ifdef unix char in[SIZE] = ""; int each = 0; int ch = 0; @@ -113,6 +120,9 @@ namespace blt::logging return {rows, cols}; } throw std::runtime_error("Could not get screen size"); +#else + return {0,0}; +#endif } i32 get_size_no_ansi(const std::string& str)