#ifndef _ASSUMPTION_H |
#ifndef _ASSUMPTION_H |
#define _ASSUMPTION_H |
#define _ASSUMPTION_H |
|
#include <vector> |
|
#include <iostream> |
|
|
enum PtypeMask{ |
enum PtypeMask{ |
TenMask=1<<0, |
TenMask=1<<0, |
}; |
}; |
|
|
class SimpleAssumption{ |
class SimpleAssumption{ |
friend ostream& operator<<(ostream &os,const SimpleAssumption &sa); |
friend std::ostream& operator<<(std::ostream &os,const SimpleAssumption &sa); |
protected: |
protected: |
PtypeMask pmask; |
PtypeMask pmask; |
JointType jtype; |
JointType jtype; |
:pmask(pm), jtype(jt), x(xx), y(yy), angle(a), hint(h){} |
:pmask(pm), jtype(jt), x(xx), y(yy), angle(a), hint(h){} |
}; |
}; |
class AndAssumption{ |
class AndAssumption{ |
friend ostream& operator<<(ostream &os,const AndAssumption &aa); |
friend std::ostream& operator<<(std::ostream &os,const AndAssumption &aa); |
protected: |
protected: |
vector<SimpleAssumption> saList; |
std::vector<SimpleAssumption> saList; |
public: |
public: |
AndAssumption& add(const SimpleAssumption &sa){ |
AndAssumption& add(const SimpleAssumption &sa){ |
saList.push_back(sa); |
saList.push_back(sa); |
} |
} |
}; |
}; |
class Assumption{ |
class Assumption{ |
friend ostream& operator<<(ostream &os,const Assumption &as); |
friend std::ostream& operator<<(std::ostream &os,const Assumption &as); |
private: |
private: |
vector<AndAssumption> aaList; |
std::vector<AndAssumption> aaList; |
public: |
public: |
Assumption& add(const AndAssumption &sa){ |
Assumption& add(const AndAssumption &sa){ |
aaList.push_back(sa); |
aaList.push_back(sa); |
return *this; |
return *this; |
} |
} |
}; |
}; |
ostream& operator<<(ostream &os,const SimpleAssumption &sa){ |
std::ostream& operator<<(std::ostream &os,const SimpleAssumption &sa){ |
os << "SimpleAssumption(pmask=" << (int)(sa.pmask) << ",jtype=" << (int)(sa.jtype) |
os << "SimpleAssumption(pmask=" << (int)(sa.pmask) << ",jtype=" << (int)(sa.jtype) |
<< ",x=" << sa.x << ",y=" << sa.y << ",angle=" << sa.angle |
<< ",x=" << sa.x << ",y=" << sa.y << ",angle=" << sa.angle |
<< ",hint=" << sa.hint << ")"; |
<< ",hint=" << sa.hint << ")"; |
return os; |
return os; |
} |
} |
ostream& operator<<(ostream &os,const AndAssumption &aa){ |
std::ostream& operator<<(std::ostream &os,const AndAssumption &aa){ |
vector<SimpleAssumption>::const_iterator it; |
std::vector<SimpleAssumption>::const_iterator it; |
if(aa.saList.size()==1){ |
if(aa.saList.size()==1){ |
return os << *(aa.saList.begin()); |
return os << *(aa.saList.begin()); |
} |
} |
os << ")"; |
os << ")"; |
return os; |
return os; |
} |
} |
ostream& operator<<(ostream &os,const Assumption &a){ |
std::ostream& operator<<(std::ostream &os,const Assumption &a){ |
vector<AndAssumption>::const_iterator it; |
std::vector<AndAssumption>::const_iterator it; |
if(a.aaList.size()==1){ |
if(a.aaList.size()==1){ |
return os << *(a.aaList.begin()); |
return os << *(a.aaList.begin()); |
} |
} |