On Thu, Mar 17, 2005 at 09:03:10PM -0300, mdias at ift dot unesp dot br wrote:
I make a struct that look at a ex e=color_f($0,$1,$2) and return zero. But I tried:
is_a<su3f>(e) is_exactly_a<su3f>(e) is_a<su3f>(e.op(0)) is_a<color>(e)
but all returns zero?
color_f(const ex&, const ex&, const ex&) returns an indexed object, so all those results are correct. You might try something like this: // This hack works for me (TM) class su3f_visitor_t : public visitor, public indexed::visitor { lst res; public: su3f_visitor_t() { } inline lst get_result() const { return res; } inline void visit(const indexed &i) { if (is_a<su3f>(i.op(0))) res.append(i); } }; // look for color_f in expression e su3f_visitor_t su3f_v; e.traverse(su3f_v); lst color_lst = su3f_v.get_result(); // do whatever you need Best regards, Alexei