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++
65 lines
1.8 KiB
C++
/*------------------------------------------------------------------------------
|
|
* 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;
|
|
};
|
|
} |