head	1.2;
access;
symbols
	bobbase:1.2
	bob:1.2
	r2_1:1.2
	r2_0:1.2
	r1_1_beta:1.2
	r1_1_alpha:1.1
	r1_0:1.1
	r0_11:1.1;
locks; strict;
comment	@// @;


1.2
date	94.07.25.17.26.39;	author thoth;	state Exp;
branches;
next	1.1;

1.1
date	94.03.22.16.08.28;	author thoth;	state Exp;
branches;
next	;


desc
@Lazy implementation of the convolution of two invariant templates.
@


1.2
log
@Name sanitization
@
text
@#ifndef IA_LazyInvConv_h_
#define IA_LazyInvConv_h_

template <class I, I(*f)(const I&,const IA_DDTemplate<I>&)>
struct IA_lazy_inv : public IA_InvariantDT<I> {
  private:
    static char dummy;

public:
    IA_DDTemplate<I>	lhs, rhs;

public:
    IA_lazy_inv(const IA_Set<IA_Point<int> > &ps,
		     const IA_DDTemplate<I> &lhs_,
		     const IA_DDTemplate<I> &rhs_)
	: IA_InvariantDT<I>(ps, f(lhs_(0), rhs_,
				  lhs_(0).domain() + rhs_(0).domain())),
    lhs(lhs_), rhs(rhs_) {
    }

    static IA::Type s_type() { return &dummy; }
    IA::Type type() const { return &dummy; }
    int is_a(IA::Type t) { return (t == type()
				   || ((IA_InvariantDT<I>&)this).is_a(t)) ; }
};

#endif // IA_LazyInvConv_h_
@


1.1
log
@Initial revision
@
text
@d13 1
a13 1
    IA_lazy_inv(const IA_IntPointSet &ps,
@
