Simplified reflection typedefs:

added type traits to support the mod below:

[ Changes in definition of  TriMesh: PART II ]

Note: No changes to existing code need be the done, this mod
should be fully backward compatible

Old way to define a TriMesh ==============
struct MyMesh: public vcg::tri::TriMesh< vector<MyVertex> , vector <MyFace> >{};

new  ways to define a TriMesh ==============

struct MyMesh: public vcg::tri::TriMesh< CONT1 >{};
struct MyMesh: public vcg::tri::TriMesh< CONT1 , CONT2>{};
struct MyMesh: public vcg::tri::TriMesh< CONT1 , CONT2, CONT3>{};

where CONT[i] can be vector< [MyVertex | MyEdge | MyFace ] > 
(the order is unimportant)
This commit is contained in:
ganovelli 2010-03-19 17:19:51 +00:00
parent 9fc476b130
commit 21dd8aa179
1 changed files with 4 additions and 5 deletions

View File

@ -152,9 +152,7 @@ template < class UserTypes,
class FaceArityMax: public J<Arity9<FaceBase<UserTypes>, A, B, C, D, E, F, G, H, I> > {
public:
typedef typename J<Arity9<FaceBase<UserTypes>, A, B, C, D, E, F, G, H, I> >::ScalarType ParentScalarType;
typedef J<Arity9<FaceBase<UserTypes>, A, B, C, D, E, F, G, H, I> > ParentType;
typedef typename FaceArityMax::ScalarType ScalarType;
// ----- Flags stuff -----
inline int & UberFlags ()
@ -288,7 +286,7 @@ static int &LastBitFlag()
void ClearUserBit(int userBit){this->Flags() &= (~userBit);}
void GetBBox(Box3<typename ParentType::ScalarType>& bb ) const
void GetBBox(Box3<ScalarType>& bb ) const
{
if(this->IsD()) {
bb.SetNull();
@ -343,7 +341,8 @@ template <class UserTypes,
template <typename> class E = DefaultDeriver, template <typename> class F = DefaultDeriver,
template <typename> class G = DefaultDeriver, template <typename> class H = DefaultDeriver,
template <typename> class I = DefaultDeriver, template <typename> class J = DefaultDeriver >
class Face: public FaceArityMax<UserTypes, A, B, C, D, E, F, G, H, I, J> {};
class Face: public FaceArityMax<UserTypes, A, B, C, D, E, F, G, H, I, J> {
public: typedef AllTypes::AFaceType IAm; typedef UserTypes TypesPool;};
}// end namespace