You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
1.8 KiB
C

1 month ago
/*------------------------------------------------------------------------------
* Copyright (c) 2023 by Bai Bing (seread@163.com)
* See COPYING file for copying and redistribution conditions.
*
* Alians IT Studio.
*----------------------------------------------------------------------------*/
#pragma once
#include <map>
#include <set>
#include <string>
#include <vector>
#include "_Define.h"
#include "ASPoint.h"
#include "ASDiscontinuity.h"
namespace ais
{
class AIS_EXPORT Fault : public Discontinuity<ais::Point>
{
public:
Fault() = default;
Fault(const char *name_, std::vector<ais::Point> points_) : Discontinuity<ais::Point>(name_, points_){};
Fault(std::vector<ais::Point> points_) : Discontinuity<ais::Point>(ais::uuid().c_str(), points_){};
Fault(const char *contents) : Discontinuity<ais::Point>(contents){};
~Fault() = default;
inline virtual std::string type() const { return "Fault"; }
friend std::ostream &operator<<(std::ostream &stream, const Fault &fault)
{
stream << fault.str();
return stream;
}
};
class AIS_EXPORT FaultFile : public DiscontinuityFile<ais::Point>
{
public:
FaultFile(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;
faults[kv.first] = Fault(kv.first.c_str(), points);
}
return loaded;
}
inline void clear()
{
faults.clear();
DiscontinuityFile::clear();
};
std::map<std::string, Fault> faults;
};
}