#if (MANIFOLD_PAR == 1) && __has_include(<tbb/concurrent_priority_queue.h>)
#include <tbb/tbb.h>
#define TBB_PREVIEW_CONCURRENT_ORDERED_CONTAINERS …
#include <tbb/concurrent_priority_queue.h>
#endif
#include <algorithm>
#include <variant>
#include "./boolean3.h"
#include "./csg_tree.h"
#include "./impl.h"
#include "./mesh_fixes.h"
#include "./parallel.h"
constexpr int kParallelThreshold = …;
namespace {
usingnamespacemanifold;
struct Transform4x3 { … };
struct UpdateHalfedge { … };
struct UpdateTriProp { … };
struct UpdateMeshIDs { … };
struct CheckOverlap { … };
SharedImpl;
struct GetImplPtr { … };
struct MeshCompare { … };
}
namespace manifold {
std::shared_ptr<CsgNode> CsgNode::Boolean(
const std::shared_ptr<CsgNode> &second, OpType op) { … }
std::shared_ptr<CsgNode> CsgNode::Translate(const vec3 &t) const { … }
std::shared_ptr<CsgNode> CsgNode::Scale(const vec3 &v) const { … }
std::shared_ptr<CsgNode> CsgNode::Rotate(double xDegrees, double yDegrees,
double zDegrees) const { … }
CsgLeafNode::CsgLeafNode() : … { … }
CsgLeafNode::CsgLeafNode(std::shared_ptr<const Manifold::Impl> pImpl_)
: … { … }
CsgLeafNode::CsgLeafNode(std::shared_ptr<const Manifold::Impl> pImpl_,
mat3x4 transform_)
: … { … }
std::shared_ptr<const Manifold::Impl> CsgLeafNode::GetImpl() const { … }
mat3x4 CsgLeafNode::GetTransform() const { … }
std::shared_ptr<CsgLeafNode> CsgLeafNode::ToLeafNode() const { … }
std::shared_ptr<CsgNode> CsgLeafNode::Transform(const mat3x4 &m) const { … }
CsgNodeType CsgLeafNode::GetNodeType() const { … }
Manifold::Impl CsgLeafNode::Compose(
const std::vector<std::shared_ptr<CsgLeafNode>> &nodes) { … }
CsgOpNode::CsgOpNode() { … }
CsgOpNode::CsgOpNode(const std::vector<std::shared_ptr<CsgNode>> &children,
OpType op)
: … { … }
CsgOpNode::CsgOpNode(std::vector<std::shared_ptr<CsgNode>> &&children,
OpType op)
: … { … }
std::shared_ptr<CsgNode> CsgOpNode::Boolean(
const std::shared_ptr<CsgNode> &second, OpType op) { … }
std::shared_ptr<CsgNode> CsgOpNode::Transform(const mat3x4 &m) const { … }
std::shared_ptr<CsgLeafNode> CsgOpNode::ToLeafNode() const { … }
std::shared_ptr<Manifold::Impl> CsgOpNode::BatchBoolean(
OpType operation,
std::vector<std::shared_ptr<const Manifold::Impl>> &results) { … }
void CsgOpNode::BatchUnion() const { … }
std::vector<std::shared_ptr<CsgNode>> &CsgOpNode::GetChildren(
bool forceToLeafNodes) const { … }
void CsgOpNode::SetOp(OpType op) { … }
bool CsgOpNode::IsOp(OpType op) { … }
mat3x4 CsgOpNode::GetTransform() const { … }
}