#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; |
int angle; |
int angle; |
int hint; |
int hint; |
public: |
public: |
SimpleAssumption(PtypeMask pm, JointType jt,double xx,double yy, int a,int h) |
SimpleAssumption(PtypeMask pm, JointType jt,double xx,double yy, int a,int 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); |
|
return *this; |
|
} |
|
}; |
}; |
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); |
Assumption& add(const SimpleAssumption &sa); |
return *this; |
|
} |
|
Assumption& add(const SimpleAssumption &sa){ |
|
aaList.push_back(AndAssumption().add(sa)); |
|
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) |
std::ostream& operator<<(std::ostream &os,const AndAssumption &aa); |
<< ",x=" << sa.x << ",y=" << sa.y << ",angle=" << sa.angle |
std::ostream& operator<<(std::ostream &os,const Assumption &a); |
<< ",hint=" << sa.hint << ")"; |
|
return os; |
|
} |
|
ostream& operator<<(ostream &os,const AndAssumption &aa){ |
|
vector<SimpleAssumption>::const_iterator it; |
|
if(aa.saList.size()==1){ |
|
return os << *(aa.saList.begin()); |
|
} |
|
os << "AndAssumption("; |
|
for(it=aa.saList.begin(); it!=aa.saList.end(); it++){ |
|
os << *it << ' '; |
|
} |
|
os << ")"; |
|
return os; |
|
} |
|
ostream& operator<<(ostream &os,const Assumption &a){ |
|
vector<AndAssumption>::const_iterator it; |
|
if(a.aaList.size()==1){ |
|
return os << *(a.aaList.begin()); |
|
} |
|
os << "Assumption("; |
|
for(it=a.aaList.begin(); it!=a.aaList.end(); it++){ |
|
os << *it << ' '; |
|
} |
|
os << ")"; |
|
return os; |
|
} |
|
|
|
#endif /* _ASSUMPTION_H */ |
#endif /* _ASSUMPTION_H */ |