@@ -55,8 +55,8 @@ struct LoadRankingsOptions {
5555 */
5656namespace internal {
5757
58- template <typename Value_, typename Index_, bool parallel_ >
59- RankMatrix<Value_, Index_> load_rankings (byteme::Reader& reader) {
58+ template <typename Value_, typename Index_>
59+ RankMatrix<Value_, Index_> load_rankings (byteme::Reader& reader, bool parallel ) {
6060 size_t nfeatures = 0 ;
6161 size_t line = 0 ;
6262 std::vector<int > values;
@@ -75,7 +75,14 @@ RankMatrix<Value_, Index_> load_rankings(byteme::Reader& reader) {
7575 }
7676 };
7777
78- typename std::conditional<parallel_, byteme::PerByte<char >, byteme::PerByteParallel<char > >::type pb (&reader);
78+ std::unique_ptr<byteme::PerByteInterface<char > > pbptr;
79+ if (parallel) {
80+ pbptr.reset (new byteme::PerByteParallel<char , byteme::Reader*>(&reader));
81+ } else {
82+ pbptr.reset (new byteme::PerByteSerial<char , byteme::Reader*>(&reader));
83+ }
84+ auto & pb = *pbptr;
85+
7986 bool okay = pb.valid ();
8087 while (okay) {
8188 char x = pb.get ();
@@ -123,15 +130,6 @@ RankMatrix<Value_, Index_> load_rankings(byteme::Reader& reader) {
123130 return RankMatrix<Value_, Index_>(nfeatures, line, std::move (values), false );
124131}
125132
126- template <typename Value_, typename Index_>
127- RankMatrix<Value_, Index_> load_rankings (byteme::Reader& reader, bool parallel) {
128- if (parallel) {
129- return load_rankings<Value_, Index_, true >(reader);
130- } else {
131- return load_rankings<Value_, Index_, false >(reader);
132- }
133- }
134-
135133}
136134/* *
137135 * @endcond
@@ -154,7 +152,9 @@ RankMatrix<Value_, Index_> load_rankings(byteme::Reader& reader, bool parallel)
154152 */
155153template <typename Value_ = singlepp::DefaultValue, typename Index_ = singlepp::DefaultIndex>
156154RankMatrix<Value_, Index_> load_rankings_from_text_file (const char * path, const LoadRankingsOptions& options) {
157- byteme::RawFileReader reader (path, options.buffer_size );
155+ byteme::RawFileReaderOptions read_opt;
156+ read_opt.buffer_size = options.buffer_size ;
157+ byteme::RawFileReader reader (path, read_opt);
158158 return internal::load_rankings<Value_, Index_>(reader, options.parallel );
159159}
160160
@@ -172,7 +172,9 @@ RankMatrix<Value_, Index_> load_rankings_from_text_file(const char* path, const
172172 */
173173template <typename Value_ = singlepp::DefaultValue, typename Index_ = singlepp::DefaultIndex>
174174RankMatrix<Value_, Index_> load_rankings_from_gzip_file (const char * path, const LoadRankingsOptions& options) {
175- byteme::GzipFileReader reader (path, options.buffer_size );
175+ byteme::GzipFileReaderOptions read_opt;
176+ read_opt.buffer_size = options.buffer_size ;
177+ byteme::GzipFileReader reader (path, read_opt);
176178 return internal::load_rankings<Value_, Index_>(reader, options.parallel );
177179}
178180
@@ -191,7 +193,10 @@ RankMatrix<Value_, Index_> load_rankings_from_gzip_file(const char* path, const
191193 */
192194template <typename Value_ = singlepp::DefaultValue, typename Index_ = singlepp::DefaultIndex>
193195RankMatrix<Value_, Index_> load_rankings_from_zlib_buffer (const unsigned char * buffer, size_t len, const LoadRankingsOptions& options) {
194- byteme::ZlibBufferReader reader (buffer, len, 3 , options.buffer_size );
196+ byteme::ZlibBufferReaderOptions read_opt;
197+ read_opt.mode = 3 ;
198+ read_opt.buffer_size = options.buffer_size ;
199+ byteme::ZlibBufferReader reader (buffer, len, read_opt);
195200 return internal::load_rankings<Value_, Index_>(reader, options.parallel );
196201}
197202
0 commit comments