summaryrefslogtreecommitdiff
path: root/slicer/tool/icemetadata.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'slicer/tool/icemetadata.cpp')
-rw-r--r--slicer/tool/icemetadata.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/slicer/tool/icemetadata.cpp b/slicer/tool/icemetadata.cpp
new file mode 100644
index 0000000..422b17e
--- /dev/null
+++ b/slicer/tool/icemetadata.cpp
@@ -0,0 +1,45 @@
+#include "icemetadata.h"
+#include <boost/algorithm/string/predicate.hpp>
+
+namespace Slicer {
+ IceMetaData::IceMetaData() { }
+ IceMetaData::IceMetaData(Slice::StringList && a) : arr {std::forward<Slice::StringList>(a)}
+ {
+ _begin = arr.begin();
+ _end = arr.end();
+ }
+
+ std::vector<std::string_view>
+ IceMetaData::split(std::string_view metaData)
+ {
+ std::vector<std::string_view> output;
+
+ for (size_t first = 0; first < metaData.size();) {
+ const auto second = metaData.find(':', first);
+
+ if (first != second) {
+ output.emplace_back(metaData.substr(first, second - first));
+ }
+
+ if (second == std::string_view::npos) {
+ break;
+ }
+
+ first = second + 1;
+ }
+
+ return output;
+ }
+
+ size_t
+ IceMetaData::countSlicerMetaData() const
+ {
+ return std::count_if(_begin, _end, isSlicerMetaData);
+ }
+
+ bool
+ IceMetaData::hasSlicerMetaData() const
+ {
+ return std::any_of(_begin, _end, isSlicerMetaData);
+ }
+}