Commit f04fb521 authored by Deepak Rangarajan's avatar Deepak Rangarajan Committed by Mark Meredith
Browse files

Switch from assert to throw, add check for polyhedron

parent 67b91123
Loading
Loading
Loading
Loading
+6 −12
Original line number Diff line number Diff line
@@ -58,12 +58,9 @@ private:

public:
  std::optional<std::string> name;
  Polyhedron(const std::vector<std::vector<double>> &points,
             const std::vector<std::vector<double>> &faces) {
    for (const auto &pt : points) {
      assert(pt.size() == 3);
      m_points.push_back({pt[0], pt[1], pt[2]});
    }
  Polyhedron(const std::vector<std::tuple<double, double, double>> &points,
             const std::vector<std::vector<double>> &faces)
      : m_points(points) {
    for (const auto &f : faces) {
      m_faces.push_back(std::vector<unsigned int>(f.begin(), f.end()));
    }
@@ -83,12 +80,9 @@ private:

public:
  std::optional<std::string> name;
  Polygon(const std::vector<std::vector<double>> &points,
          const std::vector<double> &path) {
    for (const auto &pt : points) {
      assert(pt.size() == 2);
      m_points.push_back({pt[0], pt[1]});
    }
  Polygon(const std::vector<std::tuple<double, double>> &points,
          const std::vector<double> &path)
      : m_points(points) {
    for (const auto &p : path) {
      m_path.push_back((unsigned int)(p));
    }
+1 −0
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@ add_library(csg
  levelset_3d.cpp
  matrix_functions.cpp
  parser.cpp
  exception.cpp
  )

target_link_libraries(csg PRIVATE
+6 −0
Original line number Diff line number Diff line
#include "csg_cgal_helper.hpp"
#include "csg_exception.hpp"

#include <CGAL/AABB_face_graph_triangle_primitive.h>
#include <CGAL/AABB_traits.h>
@@ -46,6 +47,11 @@ public:
    // Add facets next
    for (const auto &face : m_faces) {
      B.begin_facet();
      if (!B.test_facet(face.begin(), face.end()))
        throw csg::Exception(
            "Polyhedron builder",
            "Unable to create the polyhedron. test_facet failed. Check input!");

      for (const auto &p_index : face) {
        B.add_vertex_to_facet(p_index);
      }

src/csg/exception.cpp

0 → 100644
+27 −0
Original line number Diff line number Diff line
#include "csg_exception.hpp"

#include <sstream>
#include <string>

namespace csg {

Exception::Exception() : m_msg(make_message("No Source", "No message")) {}

Exception::Exception(const std::string &message)
    : m_msg(make_message("No Source", message)) {}

Exception::Exception(const std::string &source, const std::string &message)
    : m_msg(make_message(source, message)) {}

const char *Exception::what() const noexcept { return m_msg.c_str(); }

std::string Exception::make_message(const std::string &source,
                                    const std::string &message) {
  std::stringstream s;
  s << "Exception Data:" << std::endl;
  s << "Source  : " << source << std::endl;
  s << "Message : " << message << std::endl;
  return s.str();
}

} // namespace csg
+1 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ lib_csg_parser = static_library('csg-parser',
  'levelset_3d.cpp',
  'matrix_functions.cpp',
  'parser.cpp',
  'exception.cpp',
  include_directories: parser_inc,
  dependencies: [pegtl, cgal],
  install : true)
Loading