#pragma once


#include <vector>
#include <TopoDS_Shape.hxx>
#include <TopoDS_Edge.hxx>
#include <TopTools_ListOfShape.hxx>

class ShapeRepair
{
public:
	static TopoDS_Shape ShapeRepair::pre_process_cad(const TopoDS_Shape shape);

private:
	static bool ShapeRepair::is_valid(const TopoDS_Shape shape);
	static TopoDS_Shape ShapeRepair::fix_basic(const TopoDS_Shape shape);
	static TopoDS_Shape ShapeRepair::fix_basic_wireframe(const TopoDS_Shape shape);
	static std::vector<TopoDS_Shape> ShapeRepair::get_degenerated_edges(const TopoDS_Shape shape);
	static TopoDS_Shape ShapeRepair::remove_subshapes(const TopoDS_Shape shape, const std::vector<TopoDS_Shape> subshapes);
}; 
