summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authormrsmidge <smidge@xsco.net>2019-08-15 22:37:50 +0100
committermrsmidge <smidge@xsco.net>2019-08-15 22:37:50 +0100
commit6c30925688bbe8b448304c3a819b1c62da6edf9d (patch)
treef8ab371bee5048413e1cda0785260e9e7ee7e305 /src
parentee7d0f0d144d8204020cbe51323b0c7741b76060 (diff)
Remove Boost from public API, C++11 compatible
Diffstat (limited to 'src')
-rw-r--r--src/djinterop/crate.cpp11
-rw-r--r--src/djinterop/database.cpp16
-rw-r--r--src/djinterop/enginelibrary/el_crate_impl.cpp4
-rw-r--r--src/djinterop/enginelibrary/el_crate_impl.hpp2
-rw-r--r--src/djinterop/enginelibrary/el_database_impl.cpp10
-rw-r--r--src/djinterop/enginelibrary/el_database_impl.hpp8
-rw-r--r--src/djinterop/enginelibrary/el_storage.hpp2
-rw-r--r--src/djinterop/enginelibrary/el_track_impl.cpp29
-rw-r--r--src/djinterop/enginelibrary/el_track_impl.hpp19
-rw-r--r--src/djinterop/enginelibrary/performance_data_format.cpp6
-rw-r--r--src/djinterop/impl/crate_impl.hpp4
-rw-r--r--src/djinterop/impl/database_impl.hpp9
-rw-r--r--src/djinterop/impl/track_impl.hpp17
-rw-r--r--src/djinterop/impl/util.cpp9
-rw-r--r--src/djinterop/impl/util.hpp23
-rw-r--r--src/djinterop/track.cpp281
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<