#pragma once #include "memory.h" class CSGTermNormalizer { public: CSGTermNormalizer(size_t limit) : limit(limit) {} ~CSGTermNormalizer() {} shared_ptr normalize(const shared_ptr &term); private: shared_ptr normalizePass(shared_ptr term) ; bool match_and_replace(shared_ptr &term); shared_ptr collapse_null_terms(const shared_ptr &term); shared_ptr cleanup_term(shared_ptr &t); unsigned int count(const shared_ptr &term) const; bool aborted; size_t limit; size_t nodecount; shared_ptr rootnode; };