>Your "-c -p" suggests your box.H is too complicate for CINT built-in CPP >macro processing features. > >Can you show the source of that Box.H ? Box.H invokes a bunch of others: #ifndef _BoxH_ #define _BoxH_ #include <BoxLow.H> #include <Ascalar.H> #include <common.H> #include <MixedOps.H> #include <Each.H> #include <Matrix.H> #include <Scalar.H> #endif ---------------- The class Box is actually defined in BoxLow.H Let me quote a few definition in that file. It is very long. So, I just picked out those things that I think may be hard for Cint to handle. (I got the impression before that Cint does not handle template well.) class Lvalue { // Note: Bx is defined in Bx.H public: Bx **x,*ix; Lvalue(Bx **x,Bx *ix):x(x),ix(ix) { Lvalue::ix->ref(); } Lvalue(const Lvalue& cpLvalue): x(cpLvalue.x), ix(cpLvalue.ix) { ix->ref(); } ~Lvalue() { if(0 == ix->deref() ) delete ix; } Bx *operator=(Box rhsBox); Bx *operator=(Lvalue rhsLvalue); }; class Box { public: // Weird stuff to handle indexing in a syntactically clean way Box(Lvalue v):bx((*v.x)->Use(v.ix)) {} // If operator int**() is defined then SunPro C++ will call it rather // than operator bool() if a Box-valued expression appears as a condition. // This rarely, if ever, gives a sensible result. #if 0 operator int **() {return (int **)bx;} #endif Lvalue operator()(Box ix); // skip...... /// Construct a rank-1 (vector) box of the given type and length: Box(BxElementType type, int length) : bx(new Bx(type, length, 0)) {} // ... /* Copy constructor */ Box(const Box& x):bx(x.bx) {x.bx->ref();} Box(NaN_Type n) : bx(new Bx(double(n))) {} Box Cvt(int type, bool support_more_types=false) const {return Box(bx->Cvt(BxElementType(type), support_more_types));} KeyMap **GetKeyMaps() {return bx->GetKeyMaps();} // template versions to avoid taking cases all the time, like with Bx template <class BoxFunctor> typename BoxFunctor::result_type readDispatch(BoxFunctor bf) const { typedef typename BoxFunctor::result_type ReturnType; switch (Type()) { case ET_PNTR: return bf(this, ReadBoxes()); case ET_DOUBLE: return bf(this, ReadDoubles()); case ET_INT: return bf(this, ReadInts()); case ET_CHAR: return bf(this, ReadChars()); default: fault; } return ReturnType(); } const TempBoxForBracket operator[](Box indexBox); inline const TempBoxForBracket operator[](const char* pcch); // 281FIX inline Bx * Lvalue::operator=(Lvalue rhsLvalue){ return operator=(Box(rhsLvalue)); long Serialize(GFile *gf) const {return bx->Serialize(gf);} -------------------------------------------------------- What do you think ? Is there any hope in accessing Box from within Cint ??? btw, how does Cint recognize all the classes in ROOT ? for example, is there a LinkDef.h file for TTree class ?? --HP
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:09 MET