2014-04-28 21:09:25 +04:00
|
|
|
#pragma once
|
2011-12-26 22:15:51 +04:00
|
|
|
|
|
|
|
#include "memory.h"
|
|
|
|
|
|
|
|
class CSGTermNormalizer
|
|
|
|
{
|
|
|
|
public:
|
2012-07-01 04:08:45 +04:00
|
|
|
CSGTermNormalizer(size_t limit) : limit(limit) {}
|
2011-12-26 22:15:51 +04:00
|
|
|
~CSGTermNormalizer() {}
|
|
|
|
|
2012-07-01 04:08:45 +04:00
|
|
|
shared_ptr<class CSGTerm> normalize(const shared_ptr<CSGTerm> &term);
|
2011-12-26 22:15:51 +04:00
|
|
|
|
|
|
|
private:
|
|
|
|
shared_ptr<CSGTerm> normalizePass(shared_ptr<CSGTerm> term) ;
|
2012-07-01 04:08:45 +04:00
|
|
|
bool match_and_replace(shared_ptr<CSGTerm> &term);
|
|
|
|
shared_ptr<CSGTerm> collapse_null_terms(const shared_ptr<CSGTerm> &term);
|
2014-01-06 10:27:01 +04:00
|
|
|
shared_ptr<CSGTerm> cleanup_term(shared_ptr<CSGTerm> &t);
|
2012-02-04 17:38:42 +04:00
|
|
|
unsigned int count(const shared_ptr<CSGTerm> &term) const;
|
2012-07-01 04:08:45 +04:00
|
|
|
|
2013-02-04 21:29:00 +04:00
|
|
|
bool aborted;
|
2012-07-01 04:08:45 +04:00
|
|
|
size_t limit;
|
|
|
|
size_t nodecount;
|
|
|
|
shared_ptr<class CSGTerm> rootnode;
|
2011-12-26 22:15:51 +04:00
|
|
|
};
|