diff options
author | mrsmidge <smidge@xsco.net> | 2019-08-15 22:37:50 +0100 |
---|---|---|
committer | mrsmidge <smidge@xsco.net> | 2019-08-15 22:37:50 +0100 |
commit | 6c30925688bbe8b448304c3a819b1c62da6edf9d (patch) | |
tree | f8ab371bee5048413e1cda0785260e9e7ee7e305 /src | |
parent | ee7d0f0d144d8204020cbe51323b0c7741b76060 (diff) |
Remove Boost from public API, C++11 compatible
Diffstat (limited to 'src')
-rw-r--r-- | src/djinterop/crate.cpp | 11 | ||||
-rw-r--r-- | src/djinterop/database.cpp | 16 | ||||
-rw-r--r-- | src/djinterop/enginelibrary/el_crate_impl.cpp | 4 | ||||
-rw-r--r-- | src/djinterop/enginelibrary/el_crate_impl.hpp | 2 | ||||
-rw-r--r-- | src/djinterop/enginelibrary/el_database_impl.cpp | 10 | ||||
-rw-r--r-- | src/djinterop/enginelibrary/el_database_impl.hpp | 8 | ||||
-rw-r--r-- | src/djinterop/enginelibrary/el_storage.hpp | 2 | ||||
-rw-r--r-- | src/djinterop/enginelibrary/el_track_impl.cpp | 29 | ||||
-rw-r--r-- | src/djinterop/enginelibrary/el_track_impl.hpp | 19 | ||||
-rw-r--r-- | src/djinterop/enginelibrary/performance_data_format.cpp | 6 | ||||
-rw-r--r-- | src/djinterop/impl/crate_impl.hpp | 4 | ||||
-rw-r--r-- | src/djinterop/impl/database_impl.hpp | 9 | ||||
-rw-r--r-- | src/djinterop/impl/track_impl.hpp | 17 | ||||
-rw-r--r-- | src/djinterop/impl/util.cpp | 9 | ||||
-rw-r--r-- | src/djinterop/impl/util.hpp | 23 | ||||
-rw-r--r-- | src/djinterop/track.cpp | 281 |
16 files changed, 246 insertions, 204 deletions
diff --git a/src/djinterop/crate.cpp b/src/djinterop/crate.cpp index 4795141..3a0cc3a 100644 --- a/src/djinterop/crate.cpp +++ b/src/djinterop/crate.cpp @@ -20,6 +20,7 @@ #include <djinterop/djinterop.hpp> #include <djinterop/impl/crate_impl.hpp> +#include <djinterop/impl/util.hpp> namespace djinterop { @@ -69,9 +70,9 @@ std::string crate::name() const return pimpl_->name(); } -boost::optional<crate> crate::parent() const +std::experimental::optional<crate> crate::parent() const { - return pimpl_->parent(); + return from_boost_optional(pimpl_->parent()); } void crate::remove_track(track tr) const @@ -79,14 +80,14 @@ void crate::remove_track(track tr) const pimpl_->remove_track(tr); } -void crate::set_name(boost::string_view name) const +void crate::set_name(std::string name) const { pimpl_->set_name(name); } -void crate::set_parent(boost::optional<crate> parent) const +void crate::set_parent(std::experimental::optional<crate> parent) const { - pimpl_->set_parent(parent); + pimpl_->set_parent(to_boost_optional(parent)); } std::vector<track> crate::tracks() const diff --git a/src/djinterop/database.cpp b/src/djinterop/database.cpp index cd259e1..bd26a01 100644 --- a/src/djinterop/database.cpp +++ b/src/djinterop/database.cpp @@ -37,9 +37,9 @@ transaction_guard database::begin_transaction() const return pimpl_->begin_transaction(); } -boost::optional<crate> database::crate_by_id(int64_t id) const +std::experimental::optional<crate> database::crate_by_id(int64_t id) const { - return pimpl_->crate_by_id(id); + return from_boost_optional(pimpl_->crate_by_id(id)); } std::vector<crate> database::crates() const @@ -47,17 +47,17 @@ std::vector<crate> database::crates() const return pimpl_->crates(); } -std::vector<crate> database::crates_by_name(boost::string_view name) const +std::vector<crate> database::crates_by_name(const std::string& name) const { return pimpl_->crates_by_name(name); } -crate database::create_crate(boost::string_view name) const +crate database::create_crate(std::string name) const { return pimpl_->create_crate(name); } -track database::create_track(boost::string_view relative_path) const +track database::create_track(std::string relative_path) const { return pimpl_->create_track(relative_path); } @@ -92,9 +92,9 @@ std::vector<crate> database::root_crates() const return pimpl_->root_crates(); } -boost::optional<track> database::track_by_id(int64_t id) const +std::experimental::optional<track> database::track_by_id(int64_t id) const { - return pimpl_->track_by_id(id); + return from_boost_optional(pimpl_->track_by_id(id)); } std::vector<track> database::tracks() const @@ -103,7 +103,7 @@ std::vector<track> database::tracks() const } std::vector<track> database::tracks_by_relative_path( - boost::string_view relative_path) const + const std::string& relative_path) const { return pimpl_->tracks_by_relative_path(relative_path); } diff --git a/src/djinterop/enginelibrary/el_crate_impl.cpp b/src/djinterop/enginelibrary/el_crate_impl.cpp index ab622c7..be80a05 100644 --- a/src/djinterop/enginelibrary/el_crate_impl.cpp +++ b/src/djinterop/enginelibrary/el_crate_impl.cpp @@ -174,7 +174,7 @@ void el_crate_impl::remove_track(track tr) << id() << tr.id(); } -void el_crate_impl::set_name(boost::string_view name) +void el_crate_impl::set_name(std::string name) { el_transaction_guard_impl trans{storage_}; @@ -249,4 +249,4 @@ std::vector<track> el_crate_impl::tracks() } } // namespace enginelibrary -} // namespace djinterop
\ No newline at end of file +} // namespace djinterop diff --git a/src/djinterop/enginelibrary/el_crate_impl.hpp b/src/djinterop/enginelibrary/el_crate_impl.hpp index d9083bf..cdca83a 100644 --- a/src/djinterop/enginelibrary/el_crate_impl.hpp +++ b/src/djinterop/enginelibrary/el_crate_impl.hpp @@ -41,7 +41,7 @@ public: std::string name() override; boost::optional<crate> parent() override; void remove_track(track tr) override; - void set_name(boost::string_view name) override; + void set_name(std::string name) override; void set_parent(boost::optional<crate> parent) override; std::vector<track> tracks() override; diff --git a/src/djinterop/enginelibrary/el_database_impl.cpp b/src/djinterop/enginelibrary/el_database_impl.cpp index f2bde71..76d77a0 100644 --- a/src/djinterop/enginelibrary/el_database_impl.cpp +++ b/src/djinterop/enginelibrary/el_database_impl.cpp @@ -78,7 +78,7 @@ std::vector<crate> el_database_impl::crates() return results; } -std::vector<crate> el_database_impl::crates_by_name(boost::string_view name) +std::vector<crate> el_database_impl::crates_by_name(const std::string& name) { std::vector<crate> results; storage_->db << "SELECT id FROM Crate WHERE title = ? ORDER BY id" @@ -90,7 +90,7 @@ std::vector<crate> el_database_impl::crates_by_name(boost::string_view name) return results; } -crate el_database_impl::create_crate(boost::string_view name) +crate el_database_impl::create_crate(std::string name) { el_transaction_guard_impl trans{storage_}; @@ -110,7 +110,7 @@ crate el_database_impl::create_crate(boost::string_view name) return cr; } -track el_database_impl::create_track(boost::string_view relative_path) +track el_database_impl::create_track(std::string relative_path) { // TODO (haslersn): Should it be allowed to create two tracks with the same // `relative_path`? @@ -153,7 +153,7 @@ track el_database_impl::create_track(boost::string_view relative_path) // extension if (extension) { - text = extension->to_string(); + text = extension; } break; case 15: @@ -266,7 +266,7 @@ std::vector<track> el_database_impl::tracks() } std::vector<track> el_database_impl::tracks_by_relative_path( - boost::string_view relative_path) + const std::string& relative_path) { std::vector<track> results; storage_->db << "SELECT id FROM Track WHERE path = ? ORDER BY id" diff --git a/src/djinterop/enginelibrary/el_database_impl.hpp b/src/djinterop/enginelibrary/el_database_impl.hpp index dd9facc..2502fd3 100644 --- a/src/djinterop/enginelibrary/el_database_impl.hpp +++ b/src/djinterop/enginelibrary/el_database_impl.hpp @@ -36,9 +36,9 @@ public: boost::optional<djinterop::crate> crate_by_id(int64_t id) override; std::vector<djinterop::crate> crates() override; std::vector<djinterop::crate> crates_by_name( - boost::string_view name) override; - djinterop::crate create_crate(boost::string_view name) override; - track create_track(boost::string_view relative_path) override; + const std::string& name) override; + djinterop::crate create_crate(std::string name) override; + track create_track(std::string relative_path) override; std::string directory() override; bool is_supported() override; void verify() override; @@ -48,7 +48,7 @@ public: boost::optional<djinterop::track> track_by_id(int64_t id) override; std::vector<djinterop::track> tracks() override; std::vector<djinterop::track> tracks_by_relative_path( - boost::string_view relative_path) override; + const std::string& relative_path) override; std::string uuid() override; semantic_version version() override; diff --git a/src/djinterop/enginelibrary/el_storage.hpp b/src/djinterop/enginelibrary/el_storage.hpp index d5f0b2d..0b11777 100644 --- a/src/djinterop/enginelibrary/el_storage.hpp +++ b/src/djinterop/enginelibrary/el_storage.hpp @@ -30,9 +30,9 @@ class el_storage public: el_storage(std::string directory); + std::string directory; sqlite::database db; int64_t last_savepoint = 0; - std::string directory; }; } // namespace enginelibrary diff --git a/src/djinterop/enginelibrary/el_track_impl.cpp b/src/djinterop/enginelibrary/el_track_impl.cpp index 167dece..fc71995 100644 --- a/src/djinterop/enginelibrary/el_track_impl.cpp +++ b/src/djinterop/enginelibrary/el_track_impl.cpp @@ -87,7 +87,7 @@ boost::optional<std::string> el_track_impl::get_metadata_str( } void el_track_impl::set_metadata_str( - metadata_str_type type, boost::optional<boost::string_view> content) + metadata_str_type type, boost::optional<std::string> content) { if (content) { @@ -232,7 +232,7 @@ boost::optional<std::string> el_track_impl::album() return get_metadata_str(metadata_str_type::album); } -void el_track_impl::set_album(boost::optional<boost::string_view> album) +void el_track_impl::set_album(boost::optional<std::string> album) { set_metadata_str(metadata_str_type::album, album); } @@ -267,7 +267,7 @@ boost::optional<std::string> el_track_impl::artist() return get_metadata_str(metadata_str_type::artist); } -void el_track_impl::set_artist(boost::optional<boost::string_view> artist) +void el_track_impl::set_artist(boost::optional<std::string> artist) { set_metadata_str(metadata_str_type::artist, artist); } @@ -318,7 +318,7 @@ boost::optional<std::string> el_track_impl::comment() return get_metadata_str(metadata_str_type::comment); } -void el_track_impl::set_comment(boost::optional<boost::string_view> comment) +void el_track_impl::set_comment(boost::optional<std::string> comment) { set_metadata_str(metadata_str_type::comment, comment); } @@ -328,7 +328,7 @@ boost::optional<std::string> el_track_impl::composer() return get_metadata_str(metadata_str_type::composer); } -void el_track_impl::set_composer(boost::optional<boost::string_view> composer) +void el_track_impl::set_composer(boost::optional<std::string> composer) { set_metadata_str(metadata_str_type::composer, composer); } @@ -400,14 +400,13 @@ std::string el_track_impl::file_extension() { auto rel_path = relative_path(); return get_file_extension(rel_path) - .value_or(boost::string_view{}) - .to_string(); + .value_or(std::string{}); } std::string el_track_impl::filename() { auto rel_path = relative_path(); - return get_filename(rel_path).to_string(); + return get_filename(rel_path); } boost::optional<std::string> el_track_impl::genre() @@ -415,7 +414,7 @@ boost::optional<std::string> el_track_impl::genre() return get_metadata_str(metadata_str_type::genre); } -void el_track_impl::set_genre(boost::optional<boost::string_view> genre) +void el_track_impl::set_genre(boost::optional<std::string> genre) { set_metadata_str(metadata_str_type::genre, genre); } @@ -582,8 +581,8 @@ boost::optional<system_clock::time_point> el_track_impl::last_played_at() void el_track_impl::set_last_played_at( boost::optional<system_clock::time_point> played_at) { - static boost::optional<boost::string_view> zero{"0"}; - static boost::optional<boost::string_view> one{"1"}; + static boost::optional<std::string> zero{"0"}; + static boost::optional<std::string> one{"1"}; set_metadata_str(metadata_str_type::ever_played, played_at ? one : zero); set_metadata_int( metadata_int_type::last_played_ts, to_timestamp(played_at)); @@ -639,7 +638,7 @@ boost::optional<std::string> el_track_impl::publisher() return get_metadata_str(metadata_str_type::publisher); } -void el_track_impl::set_publisher(boost::optional<boost::string_view> publisher) +void el_track_impl::set_publisher(boost::optional<std::string> publisher) { set_metadata_str(metadata_str_type::publisher, publisher); } @@ -669,7 +668,7 @@ std::string el_track_impl::relative_path() return get_cell<std::string>("path"); } -void el_track_impl::set_relative_path(boost::string_view relative_path) +void el_track_impl::set_relative_path(std::string relative_path) { // TODO (haslersn): Should we check the path? set_cell("path", std::string{relative_path}); @@ -702,7 +701,7 @@ void el_track_impl::set_sampling(boost::optional<sampling_info> sampling) oss << (*secs % 60); auto str = oss.str(); set_metadata_str( - metadata_str_type::duration_mm_ss, boost::string_view{str}); + metadata_str_type::duration_mm_ss, std::string{str}); } else { @@ -747,7 +746,7 @@ boost::optional<std::string> el_track_impl::title() return get_metadata_str(metadata_str_type::title); } -void el_track_impl::set_title(boost::optional<boost::string_view> title) +void el_track_impl::set_title(boost::optional<std::string> title) { set_metadata_str(metadata_str_type::title, title); } diff --git a/src/djinterop/enginelibrary/el_track_impl.hpp b/src/djinterop/enginelibrary/el_track_impl.hpp index 657498b..f5437fc 100644 --- a/src/djinterop/enginelibrary/el_track_impl.hpp +++ b/src/djinterop/enginelibrary/el_track_impl.hpp @@ -24,7 +24,6 @@ #include <vector> #include <boost/optional.hpp> -#include <boost/utility/string_view.hpp> #include <djinterop/enginelibrary.hpp> #include <djinterop/enginelibrary/el_storage.hpp> @@ -71,7 +70,7 @@ public: boost::optional<std::string> get_metadata_str(metadata_str_type type); void set_metadata_str( - metadata_str_type type, boost::optional<boost::string_view> content); + metadata_str_type type, boost::optional<std::string> content); void set_metadata_str(metadata_str_type type, const std::string& content); boost::optional<int64_t> get_metadata_int(metadata_int_type type); void set_metadata_int( @@ -204,11 +203,11 @@ public: double adjusted_main_cue() override; void set_adjusted_main_cue(double sample_offset) override; boost::optional<std::string> album() override; - void set_album(boost::optional<boost::string_view> album) override; + void set_album(boost::optional<std::string> album) override; boost::optional<int64_t> album_art_id() override; void set_album_art_id(boost::optional<int64_t> album_art_id) override; boost::optional<std::string> artist() override; - void set_artist(boost::optional<boost::string_view> artist) override; + void set_artist(boost::optional<std::string> artist) override; boost::optional<double> average_loudness() override; void set_average_loudness( boost::optional<double> average_loudness) override; @@ -217,9 +216,9 @@ public: boost::optional<double> bpm() override; void set_bpm(boost::optional<double> bpm) override; boost::optional<std::string> comment() override; - void set_comment(boost::optional<boost::string_view> comment) override; + void set_comment(boost::optional<std::string> comment) override; boost::optional<std::string> composer() override; - void set_composer(boost::optional<boost::string_view> composer) override; + void set_composer(boost::optional<std::string> composer) override; std::vector<djinterop::crate> containing_crates() override; database db() override; std::vector<beatgrid_marker> default_beatgrid() override; @@ -230,7 +229,7 @@ public: std::string file_extension() override; std::string filename() override; boost::optional<std::string> genre() override; - void set_genre(boost::optional<boost::string_view> genre) override; + void set_genre(boost::optional<std::string> genre) override; boost::optional<hot_cue> hot_cue_at(int32_t index) override; void set_hot_cue_at(int32_t index, boost::optional<hot_cue> cue) override; std::array<boost::optional<hot_cue>, 8> hot_cues() override; @@ -262,14 +261,14 @@ public: void set_loops(std::array<boost::optional<loop>, 8> cues) override; std::vector<waveform_entry> overview_waveform() override; boost::optional<std::string> publisher() override; - void set_publisher(boost::optional<boost::string_view> publisher) override; + void set_publisher(boost::optional<std::string> publisher) override; int64_t recommended_waveform_size() override; std::string relative_path() override; - void set_relative_path(boost::string_view relative_path) override; + void set_relative_path(std::string relative_path) override; boost::optional<sampling_info> sampling() override; void set_sampling(boost::optional<sampling_info> sampling) override; boost::optional<std::string> title() override; - void set_title(boost::optional<boost::string_view> title) override; + void set_title(boost::optional<std::string> title) override; boost::optional<int32_t> track_number() override; void set_track_number(boost::optional<int32_t> track_number) override; std::vector<waveform_entry> waveform() override; diff --git a/src/djinterop/enginelibrary/performance_data_format.cpp b/src/djinterop/enginelibrary/performance_data_format.cpp index 950e807..eb9204a 100644 --- a/src/djinterop/enginelibrary/performance_data_format.cpp +++ b/src/djinterop/enginelibrary/performance_data_format.cpp @@ -55,8 +55,9 @@ boost::optional<T> opt_static_cast(const boost::optional<U>& u) char* encode_beatgrid(const std::vector<beatgrid_marker>& beatgrid, char* ptr) { + typedef std::vector<beatgrid_marker>::size_type vec_size_t; ptr = encode_int64_be(beatgrid.size(), ptr); - for (int32_t i = 0; i < beatgrid.size(); ++i) + for (vec_size_t i = 0; i < beatgrid.size(); ++i) { ptr = encode_double_le(beatgrid[i].sample_offset, ptr); ptr = encode_int64_le(beatgrid[i].index, ptr); @@ -96,7 +97,8 @@ std::pair<std::vector<beatgrid_marker>, const char*> decode_beatgrid( } std::vector<beatgrid_marker> result(count); int32_t beats_until_next_marker; - for (int32_t i = 0; i < result.size(); ++i) + typedef std::vector<beatgrid_marker>::size_type vec_size_t; + for (vec_size_t i = 0; i < result.size(); ++i) { std::tie(result[i].sample_offset, ptr) = decode_double_le(ptr); std::tie(result[i].index, ptr) = decode_int64_le(ptr); diff --git a/src/djinterop/impl/crate_impl.hpp b/src/djinterop/impl/crate_impl.hpp index a3f6cb3..01c875a 100644 --- a/src/djinterop/impl/crate_impl.hpp +++ b/src/djinterop/impl/crate_impl.hpp @@ -20,8 +20,6 @@ #include <string> #include <vector> -#include <boost/utility/string_view.hpp> - #include <djinterop/crate.hpp> #include <djinterop/impl/database_impl.hpp> #include <djinterop/track.hpp> @@ -48,7 +46,7 @@ public: virtual std::string name() = 0; virtual boost::optional<crate> parent() = 0; virtual void remove_track(track tr) = 0; - virtual void set_name(boost::string_view name) = 0; + virtual void set_name(std::string name) = 0; virtual void set_parent(boost::optional<crate> parent) = 0; virtual std::vector<track> tracks() = 0; diff --git a/src/djinterop/impl/database_impl.hpp b/src/djinterop/impl/database_impl.hpp index 891704b..b6a883f 100644 --- a/src/djinterop/impl/database_impl.hpp +++ b/src/djinterop/impl/database_impl.hpp @@ -21,7 +21,6 @@ #include <vector> #include <boost/optional.hpp> -#include <boost/utility/string_view.hpp> namespace djinterop { @@ -38,9 +37,9 @@ public: virtual transaction_guard begin_transaction() = 0; virtual boost::optional<crate> crate_by_id(int64_t id) = 0; virtual std::vector<crate> crates() = 0; - virtual std::vector<crate> crates_by_name(boost::string_view name) = 0; - virtual crate create_crate(boost::string_view name) = 0; - virtual track create_track(boost::string_view relative_path) = 0; + virtual std::vector<crate> crates_by_name(const std::string& name) = 0; + virtual crate create_crate(std::string name) = 0; + virtual track create_track(std::string relative_path) = 0; virtual std::string directory() = 0; virtual bool is_supported() = 0; virtual void verify() = 0; @@ -50,7 +49,7 @@ public: virtual boost::optional<track> track_by_id(int64_t id) = 0; virtual std::vector<track> tracks() = 0; virtual std::vector<track> tracks_by_relative_path( - boost::string_view relative_path) = 0; + const std::string& relative_path) = 0; virtual std::string uuid() = 0; virtual semantic_version version() = 0; }; diff --git a/src/djinterop/impl/track_impl.hpp b/src/djinterop/impl/track_impl.hpp index cb010cc..7b024b1 100644 --- a/src/djinterop/impl/track_impl.hpp +++ b/src/djinterop/impl/track_impl.hpp @@ -22,7 +22,6 @@ #include <vector> #include <boost/optional.hpp> -#include <boost/utility/string_view.hpp> #include <djinterop/performance_data.hpp> @@ -47,11 +46,11 @@ public: virtual double adjusted_main_cue() = 0; virtual void set_adjusted_main_cue(double sample_offset) = 0; virtual boost::optional<std::string> album() = 0; - virtual void set_album(boost::optional<boost::string_view> album) = 0; + virtual void set_album(boost::optional<std::string> album) = 0; virtual boost::optional<int64_t> album_art_id() = 0; virtual void set_album_art_id(boost::optional<int64_t> album_art_id) = 0; virtual boost::optional<std::string> artist() = 0; - virtual void set_artist(boost::optional<boost::string_view> artist) = 0; + virtual void set_artist(boost::optional<std::string> artist) = 0; virtual boost::optional<double> average_loudness() = 0; virtual void set_average_loudness( boost::optional<double> average_loudness) = 0; @@ -60,9 +59,9 @@ public: virtual boost::optional<double> bpm() = 0; virtual void set_bpm(boost::optional<double> bpm) = 0; virtual boost::optional<std::string> comment() = 0; - virtual void set_comment(boost::optional<boost::string_view> comment) = 0; + virtual void set_comment(boost::optional<std::string> comment) = 0; virtual boost::optional<std::string> composer() = 0; - virtual void set_composer(boost::optional<boost::string_view> composer) = 0; + virtual void set_composer(boost::optional<std::string> composer) = 0; virtual std::vector<crate> containing_crates() = 0; virtual database db() = 0; virtual std::vector<beatgrid_marker> default_beatgrid() = 0; @@ -74,7 +73,7 @@ public: virtual std::string file_extension() = 0; virtual std::string filename() = 0; virtual boost::optional<std::string> genre() = 0; - virtual void set_genre(boost::optional<boost::string_view> genre) = 0; + virtual void set_genre(boost::optional<std::string> genre) = 0; virtual boost::optional<hot_cue> hot_cue_at(int32_t index) = 0; virtual void set_hot_cue_at( int32_t index, boost::optional<hot_cue> cue) = 0; @@ -107,14 +106,14 @@ public: virtual std::vector<waveform_entry> overview_waveform() = 0; virtual boost::optional<std::string> publisher() = 0; virtual void set_publisher( - boost::optional<boost::string_view> publisher) = 0; + boost::optional<std::string> publisher) = 0; virtual int64_t recommended_waveform_size() = 0; virtual std::string relative_path() = 0; - virtual void set_relative_path(boost::string_view relative_path) = 0; + virtual void set_relative_path(std::string relative_path) = 0; virtual boost::optional<sampling_info> sampling() = 0; virtual void set_sampling(boost::optional<sampling_info> sample_rate) = 0; virtual boost::optional<std::string> title() = 0; - virtual void set_title(boost::optional<boost::string_view> title) = 0; + virtual void set_title(boost::optional<std::string> title) = 0; virtual boost::optional<int32_t> track_number() = 0; virtual void set_track_number(boost::optional<int32_t> track_number) = 0; virtual std::vector<waveform_entry> waveform() = 0; diff --git a/src/djinterop/impl/util.cpp b/src/djinterop/impl/util.cpp index 5be0ee3..e9d37c6 100644 --- a/src/djinterop/impl/util.cpp +++ b/src/djinterop/impl/util.cpp @@ -19,20 +19,19 @@ namespace djinterop { -boost::string_view get_filename(boost::string_view file_path) +std::string get_filename(const std::string& file_path) { // TODO (haslersn): How to handle Windows path separator? auto slash_pos = file_path.rfind('/'); // returns -1 in case of no match return file_path.substr(slash_pos + 1); } -boost::optional<boost::string_view> get_file_extension( - boost::string_view file_path) +boost::optional<std::string> get_file_extension(const std::string& file_path) { auto filename = get_filename(file_path); - boost::optional<boost::string_view> file_extension; + boost::optional<std::string> file_extension; auto dot_pos = filename.rfind('.'); - if (dot_pos != boost::string_view::npos) + if (dot_pos != std::string::npos) { file_extension = filename.substr(dot_pos + 1); } diff --git a/src/djinterop/impl/util.hpp b/src/djinterop/impl/util.hpp index ca4bd53..cfea741 100644 --- a/src/djinterop/impl/util.hpp +++ b/src/djinterop/impl/util.hpp @@ -18,12 +18,27 @@ #pragma once #include <boost/optional.hpp> -#include <boost/utility/string_view.hpp> +#include <djinterop/optional/optional.hpp> namespace djinterop { -boost::string_view get_filename(boost::string_view file_path); -boost::optional<boost::string_view> get_file_extension( - boost::string_view file_path); +std::string get_filename(const std::string& file_path); +boost::optional<std::string> get_file_extension(const std::string& file_path); + +template <typename T> +std::experimental::optional<T> from_boost_optional(boost::optional<T> opt) +{ + return opt + ? std::experimental::optional<T>{*opt} + : std::experimental::nullopt; +} + +template <typename T> +boost::optional<T> to_boost_optional(std::experimental::optional<T> opt) +{ + return opt + ? boost::optional<T>{*opt} + : boost::none; +} } // namespace djinterop diff --git a/src/djinterop/track.cpp b/src/djinterop/track.cpp index b974736..76b8f52 100644 --- a/src/djinterop/track.cpp +++ b/src/djinterop/track.cpp @@ -15,6 +15,7 @@ along with libdjinterop. If not, see <http://www.gnu.org/licenses/>. */ +#include <algorithm> #include <chrono> #include <iomanip> #include <random> @@ -23,8 +24,6 @@ #include <vector> #include <sqlite_modern_cpp.h> -#include <boost/optional.hpp> -#include <boost/optional/optional_io.hpp> #include <djinterop/crate.hpp> #include <djinterop/database.hpp> @@ -95,124 +94,124 @@ void track::set_adjusted_main_cue(double sample_offset) const pimpl_->set_adjusted_main_cue(sample_offset); } -boost::optional<std::string> track::album() const +std::experimental::optional<std::string> track::album() const { - return pimpl_->album(); + return from_boost_optional(pimpl_->album()); } -void track::set_album(boost::optional<boost::string_view> album) const +void track::set_album(std::experimental::optional<std::string> album) const { - pimpl_->set_album(album); + pimpl_->set_album(to_boost_optional(album)); } -void track::set_album(boost::string_view album) const +void track::set_album(std::string album) const { - set_album(boost::make_optional(album)); + set_album(std::experimental::make_optional(album)); } -boost::optional<int64_t> track::album_art_id() const +std::experimental::optional<int64_t> track::album_art_id() const { - return pimpl_->album_art_id(); + return from_boost_optional(pimpl_->album_art_id()); } -void track::set_album_art_id(boost::optional<int64_t> album_art_id) const +void track::set_album_art_id(std::experimental::optional<int64_t> album_art_id) const { - pimpl_->set_album_art_id(album_art_id); + pimpl_->set_album_art_id(to_boost_optional(album_art_id)); } void track::set_album_art_id(int64_t album_art_id) const { - set_album_art_id(boost::make_optional(album_art_id)); + set_album_art_id(std::experimental::make_optional(album_art_id)); } -boost::optional<std::string> track::artist() const +std::experimental::optional<std::string> track::artist() const { - return pimpl_->artist(); + return from_boost_optional(pimpl_->artist()); } -void track::set_artist(boost::optional<boost::string_view> artist) const +void track::set_artist(std::experimental::optional<std::string> artist) const { - pimpl_->set_artist(artist); + pimpl_->set_artist(to_boost_optional(artist)); } -void track::set_artist(boost::string_view artist) const +void track::set_artist(std::string artist) const { - set_artist(boost::make_optional(artist)); + set_artist(std::experimental::make_optional(artist)); } -boost::optional<double> track::average_loudness() const +std::experimental::optional<double> track::average_loudness() const { - return pimpl_->average_loudness(); + return from_boost_optional(pimpl_->average_loudness()); } -void track::set_average_loudness(boost::optional<double> average_loudness) const +void track::set_average_loudness(std::experimental::optional<double> average_loudness) const { - pimpl_->set_average_loudness(average_loudness); + pimpl_->set_average_loudness(to_boost_optional(average_loudness)); } void track::set_average_loudness(double average_loudness) const { - set_average_loudness(boost::make_optional(average_loudness)); + set_average_loudness(std::experimental::make_optional(average_loudness)); } -boost::optional<int64_t> track::bitrate() const +std::experimental::optional<int64_t> track::bitrate() const { - return pimpl_->bitrate(); + return from_boost_optional(pimpl_->bitrate()); } -void track::set_bitrate(boost::optional<int64_t> bitrate) const +void track::set_bitrate(std::experimental::optional<int64_t> bitrate) const { - pimpl_->set_bitrate(bitrate); + pimpl_->set_bitrate(to_boost_optional(bitrate)); } void track::set_bitrate(int64_t bitrate) const { - set_bitrate(boost::make_optional(bitrate)); + set_bitrate(std::experimental::make_optional(bitrate)); } -boost::optional<double> track::bpm() const +std::experimental::optional<double> track::bpm() const { - return pimpl_->bpm(); + return from_boost_optional(pimpl_->bpm()); } -void track::set_bpm(boost::optional<double> bpm) const +void track::set_bpm(std::experimental::optional<double> bpm) const { - pimpl_->set_bpm(bpm); + pimpl_->set_bpm(to_boost_optional(bpm)); } void track::set_bpm(double bpm) const { - set_bpm(boost::make_optional(bpm)); + set_bpm(std::experimental::make_optional(bpm)); } -boost::optional<std::string> track::comment() const +std::experimental::optional<std::string> track::comment() const { - return pimpl_->comment(); + return from_boost_optional(pimpl_->comment()); } -void track::set_comment(boost::optional<boost::string_view> comment) const +void track::set_comment(std::experimental::optional< |