/*------------------------------------------------------------------------------ * Copyright (c) 2023 by Bai Bing (seread@163.com) * See COPYING file for copying and redistribution conditions. * * Alians IT Studio. *----------------------------------------------------------------------------*/ #pragma once #include #include #include #include #include "_Define.h" #include "ASPoint.h" #include "ASDiscontinuity.h" namespace ais { class AIS_EXPORT BreakLine : public Discontinuity { public: BreakLine() = default; BreakLine(const char *name_, std::vector points_) : Discontinuity(name_, points_) {} BreakLine(std::vector points_) : Discontinuity(ais::uuid().c_str(), points_) {} BreakLine(const char *contents) : Discontinuity(contents){}; ~BreakLine() = default; inline std::string type() const { return "BreakLine"; } friend std::ostream &operator<<(std::ostream &stream, const BreakLine &breakline) { stream << breakline.str(); return stream; } }; class AIS_EXPORT BreakLineFile : public DiscontinuityFile { public: BreakLineFile(const char *filename) { load(filename); }; size_t load(const char *filename) { auto loaded = DiscontinuityFile::load(filename); for (auto &kv : discontinuities) { auto points = kv.second.points; lines[kv.first] = BreakLine(kv.first.c_str(), points); } return loaded; } inline void clear() { lines.clear(); DiscontinuityFile::clear(); }; std::map lines; }; }