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.29.21.06.48;	author jnw;	state Exp;
branches;
next	;


desc
@Meta code for template-template convolution operations.
@


1.2
log
@Name sanitization
@
text
@// Emacs: -*- C++ -*-

//
//	Copyright 1993, Center for Computer Vision and Visualization,
//	University of Florida.  All rights reserved.
//

//
// $Log: templ-templ-product,v $
// Revision 1.1  1994/03/29  21:06:48  jnw
// Initial revision
//


#if 0

#include "LazyInvConv.h"

#else
#ifdef UNKNOWN_IA_lazy_CONV_ABTYPE

#error Uhoh, template-template convolutions must be declared before their image-template brothers

#endif

#ifndef KNOWN_IA_lazy_CONV_ABTYPE
#define KNOWN_IA_lazy_CONV_ABTYPE

struct IA_lazy_inv_CONV_ABTYPE : public IA_InvariantDT< AITYPE > {
  private:
    static char dummy;

public:
    /*PROMOTE*/IA_DDTemplate< AITYPE >	lhs, rhs;

public:
    IA_lazy_inv_CONV_ABTYPE(const IA_Set<IA_Point<int> > &ps,
		     const /*PROMOTE*/IA_DDTemplate< AITYPE > &lhs_,
		     const /*PROMOTE*/IA_DDTemplate< AITYPE > &rhs_)
	: IA_InvariantDT< AITYPE >(ps, CONV(lhs_(extend_to_point(0,ps.dim())),
					    rhs_,
					    lhs_(extend_to_point(0,ps.dim())).domain() + rhs_(extend_to_point(0,ps.dim())).domain())),
    lhs(lhs_), rhs(rhs_) {
    }

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

char IA_lazy_inv_CONV_ABTYPE :: dummy;

#endif // KNOWN_IA_lazy_CONV_ABTYPE

#endif

/*PROMOTE*/IA_DDTemplate< AITYPE >
CONV(const IA_DDTemplate< LITYPE > &lhs_,
     const IA_DDTemplate< RITYPE > &rhs_)
{
    /*PROMOTE*/IA_DDTemplate< LITYPE > lhs(lhs_);
    /*PROMOTE*/IA_DDTemplate< RITYPE > rhs(rhs_);
    if (lhs.type() == IA_InvariantDT< LITYPE >::s_type() &&
	rhs.type() == IA_InvariantDT< RITYPE >::s_type()) {
#if 0
	return /*PROMOTE*/IA_DDTemplate< AITYPE >
	    (new IA_lazy_inv_CONV_ABTYPE (lhs.domain(), lhs, rhs ));
#else
	return IA_FBI<IA_Point<int>, IA_Point<int>, ABTYPE, ABTYPE, ABTYPE>::make_DT
	    (new IA_lazy_inv_CONV_ABTYPE (lhs.domain(), lhs, rhs ));
#endif
    } else {
	IA::not_yet_implemented(__FILE__, __LINE__);
    }
 
}
@


1.1
log
@Initial revision
@
text
@d9 4
a12 1
// $Log: img-templ-product,v $
d37 1
a37 1
    IA_lazy_inv_CONV_ABTYPE(const IA_IntPointSet &ps,
d73 1
a73 1
	return IA_FBI<IA_IntPoint, IA_IntPoint, ABTYPE, ABTYPE, ABTYPE>::make_DT
@
