1 #ifndef GENESIS_UTILS_IO_OUTPUT_TARGET_H_
2 #define GENESIS_UTILS_IO_OUTPUT_TARGET_H_
80 inline std::shared_ptr<BaseOutputTarget>
to_file(
81 std::string
const& file_name,
84 bool auto_adjust_filename =
true
91 if( auto_adjust_filename && ext !=
"gz" ) {
94 return std::make_shared<GzipOutputTarget>(
95 std::make_shared< FileOutputTarget >( fn, std::ios_base::out | std::ios_base::binary ),
101 if( auto_adjust_filename && ext ==
"gz" ) {
102 fn.erase( fn.size() - 3 );
104 return std::make_shared< FileOutputTarget >( fn );
116 inline std::shared_ptr<BaseOutputTarget>
to_file(
117 std::string
const& file_name,
118 std::ios_base::openmode mode = std::ios_base::out
120 return std::make_shared< FileOutputTarget >( file_name, mode );
137 std::string
const& file_name,
140 std::size_t num_threads = 0,
141 bool auto_adjust_filename =
true
144 throw std::invalid_argument(
145 "Cannot use compression level kNoCompression with a gzip block output."
152 if( auto_adjust_filename && ext !=
"gz" ) {
157 return std::make_shared<GzipBlockOutputTarget>(
158 std::make_shared< FileOutputTarget >( fn, std::ios_base::out | std::ios_base::binary ),
177 std::ostream& target_stream,
181 return std::make_shared<GzipOutputTarget>(
182 std::make_shared< StreamOutputTarget >( target_stream ),
186 return std::make_shared< StreamOutputTarget >( target_stream );
196 std::string& target_string
198 return std::make_shared< StringOutputTarget >( target_string );
204 #endif // include guard