head     1.2;
branch   ;
access   ;
symbols  ;
locks    ; strict;
comment  @// @;


1.2
date     93.01.19.14.56.50;  author jnw;  state Exp;
branches ;
next     1.1;

1.1
date     92.10.05.11.46.49;  author jnw;  state Exp;
branches ;
next     ;


desc
@Initial revision
@


1.2
log
@Modified to support IA_ naming convention
@
text
@// Emacs: -*- C++ -*-
divert(-1)
#
# This is a set of m4 macros and defines for turning ArithDI.C.m4
# into the files ArithDI.C
#
# usage: "/local/gnu/m4 arithdefines.m4 ArithDI.C.m4 \
#			>ArithDI.C
#
# There are some gotchas using m4, however!  If the program text (or this file)
# uses m4 predefined macro keywords,  they must be quoted -- here's the list:
#
# `builtin'	`changecom'	`changequote'	`debugfile'	`debugmode'	`decr'
# `define'	`defn'		`divert'	`divnum'	`dnl'		`dumpdef'
# `errprint'	`esyscmd'	`eval'		`file'		`format'	`ifdef'
# `ifelse'	`include'	`incr'		`index'		`indir'		`len'
# `line'	`m4exit'	`m4wrap'	`maketemp'	`patsubst'	`popdef'
# `pushdef'	`regexp'	`shift'		`sinclude'	`substr'	`syscmd'
# `sysval'	`traceoff'	`traceon'	`translit'	`undefine'	`undivert'
#
# Fischer wrote eloquent information about m4 here.  I'd direct you to
# the defines.m4 in the point subdirectory of this distribution, or better
# yet to Fischer himself:
#
#	G.R. Fischer, 615NW 31st Pl, Gainesville, FL 32607 904/375-7015
#
divert
define(`LAZY_BINARY',`
template <class T>
class IA_Lazy$1DIIter;

template <class T>
class IA_Lazy$1DI: public IA_LazyBinaryDI<T>{
private:
   static char dummy;
public:
    IA_Lazy$1DI(const IA_DiscreteImage<T>& l, const IA_DiscreteImage<T>& r)
    : IA_LazyBinaryDI<T>(l,r) {}
    
    T operator() (const IA_IntPoint&) const;

    ~IA_Lazy$1DI() {};

    static IA_DiscreteImageType s_type() { return &dummy; }
    IA_DiscreteImageType type() const { return &dummy; }
    
    int equal(const IA_BaseDI<T>*) const;

    virtual IA_BaseDI<T>* clone_self_extensively() const;

    ostream& print_this(ostream&) const;

   friend class IA_Lazy$1DIIter<T>;
};

template <class T>
char IA_Lazy$1DI<T>::dummy = 0;')

define(`LAZY_UNARY',`
template <class T>
class IA_Lazy$1DIIter;

template <class T>
class IA_Lazy$1DI: public IA_LazyUnaryDI<T>{
private:
    static char dummy;
public:
    IA_Lazy$1DI(const IA_DiscreteImage<T>& arg): IA_LazyUnaryDI<T>(arg) {}
    
    T operator() (const IntPoint&) const;

    ~IA_Lazy$1DI() {};

    static IA_DiscreteImageType s_type() { return &dummy; }
    IA_DiscreteImageType type() const { return &dummy; }
    
    int equal(const IA_BaseDI<T>*) const;

    virtual IA_BaseDI<T>* clone_self_extensively() const;

    ostream& print_this(ostream&) const;

    friend class IA_Lazy$1DIIter<T>;
};

template <class T>
char IA_Lazy$1DI<T>::dummy = 0;')
@


1.1
log
@Initial revision
@
text
@d30 1
a30 1
class Lazy$1DIIter;
d33 1
a33 1
class Lazy$1DI: public LazyBinaryDI<T>{
d37 2
a38 2
    Lazy$1DI(const DiscreteImage<T>& l, const DiscreteImage<T>& r)
    : LazyBinaryDI<T>(l,r) {}
d40 1
a40 1
    T operator() (const IntPoint&) const;
d42 1
a42 1
    ~Lazy$1DI() {};
d44 2
a45 2
    static DiscreteImageType s_type() { return &dummy; }
    DiscreteImageType type() const { return &dummy; }
d47 1
a47 1
    int equal(const BaseDI<T>*) const;
d49 1
a49 1
    virtual BaseDI<T>* clone_self_extensively() const;
d53 1
a53 1
   friend class Lazy$1DIIter<T>;
d57 1
a57 1
char Lazy$1DI<T>::dummy = 0;')
d61 1
a61 1
class Lazy$1DIIter;
d64 1
a64 1
class Lazy$1DI: public LazyUnaryDI<T>{
d68 1
a68 1
    Lazy$1DI(const DiscreteImage<T>& arg): LazyUnaryDI<T>(arg) {}
d72 1
a72 1
    ~Lazy$1DI() {};
d74 2
a75 2
    static DiscreteImageType s_type() { return &dummy; }
    DiscreteImageType type() const { return &dummy; }
d77 1
a77 1
    int equal(const BaseDI<T>*) const;
d79 1
a79 1
    virtual BaseDI<T>* clone_self_extensively() const;
d83 1
a83 1
    friend class Lazy$1DIIter<T>;
d87 1
a87 1
char Lazy$1DI<T>::dummy = 0;')
@
