diff --git a/.clang-tidy b/.clang-tidy index 9918cacd8..b0398498e 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -27,7 +27,7 @@ CheckOptions: - key: readability-identifier-length.MinimumLoopCounterNameLength value: 1 - key: readability-identifier-length.IgnoredVariableNames - value: "^[_defijkptuvw]$" + value: "^[_defijkptuvwxyz]$" # More options here: https://clang.llvm.org/extra/clang-tidy/checks/readability/identifier-naming.html - key: readability-identifier-naming.NamespaceCase value: lower_case diff --git a/include/geode/basic/detail/geode_output_impl.hpp b/include/geode/basic/detail/geode_output_impl.hpp index 4ce00accb..a9e375de9 100644 --- a/include/geode/basic/detail/geode_output_impl.hpp +++ b/include/geode/basic/detail/geode_output_impl.hpp @@ -35,40 +35,42 @@ #include #include -namespace geode +namespace geode::detail { - namespace detail + template < typename Factory > + [[nodiscard]] std::unique_ptr< typename Factory::BaseClass > + geode_object_output_writer( std::string_view& filename ) { - template < typename Factory > - [[nodiscard]] std::unique_ptr< typename Factory::BaseClass > - geode_object_output_writer( std::string_view& filename ) + filename = absl::StripAsciiWhitespace( filename ); + const auto extension = + absl::AsciiStrToLower( extension_from_filename( filename ) ); + OPENGEODE_EXCEPTION( Factory::has_creator( extension ), + "Unknown extension: ", extension ); + return Factory::create( + extension, expand_predefined_folders( filename ) ); + } + + template < typename Factory, typename Object > + std::vector< std::string > geode_object_output_impl( + std::string_view type, const Object& object, std::string_view filename ) + { + const Timer timer; + auto output = geode_object_output_writer< Factory >( filename ); + const auto directories = filepath_without_filename( filename ); + if( !directories.empty() ) { - filename = absl::StripAsciiWhitespace( filename ); - const auto extension = - absl::AsciiStrToLower( extension_from_filename( filename ) ); - OPENGEODE_EXCEPTION( Factory::has_creator( extension ), - "Unknown extension: ", extension ); - return Factory::create( - extension, expand_predefined_folders( filename ) ); + std::filesystem::create_directories( directories ); } - - template < typename Factory, typename Object > - std::vector< std::string > geode_object_output_impl( - std::string_view type, - const Object& object, - std::string_view filename ) + auto output_filenames = output->write( object ); + std::string joined_filenames; + for( const auto& output_filename : output_filenames ) { - const Timer timer; - auto output = geode_object_output_writer< Factory >( filename ); - const auto directories = filepath_without_filename( filename ); - if( !directories.empty() ) - { - std::filesystem::create_directories( directories ); - } - auto result = output->write( object ); - Logger::info( - type, " saved in ", filename, " in ", timer.duration() ); - return result; + absl::StrAppend( &joined_filenames, output_filename, ", " ); } - } // namespace detail -} // namespace geode + joined_filenames.pop_back(); + joined_filenames.pop_back(); + Logger::info( + type, " saved in ", joined_filenames, " in ", timer.duration() ); + return output_filenames; + } +} // namespace geode::detail