// Emacs -*- C++ -*-

// Machine generated include file, do not modify.


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

//  Integer operations for the Int Discrete Image
//conversion I(int) I(u_char)
IA_IntDiscreteImage(const IA_Image<IA_IntPoint,u_char> &);

//unary pointwise to_uchar subop=u_char I(u_char) I(int)
friend IA_Image<IA_IntPoint,u_char> to_uchar(const IA_IntDiscreteImage & arg);

//binary pointwise commutative operator+ I(int) I(int) I(int)
friend IA_IntDiscreteImage operator+(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise commutative operator+ I(int) int I(int)
friend IA_IntDiscreteImage operator+(const IA_IntDiscreteImage &,int);
friend IA_IntDiscreteImage operator+(int lhs,const IA_IntDiscreteImage & rhs) {
    return rhs+lhs;
}

//pointwise operator+= I(int) I(int)
IA_IntDiscreteImage & operator+=(const IA_IntDiscreteImage & arg) {
    return (*this) = (*this) + (arg);
}

//pointwise operator+= I(int) int
IA_IntDiscreteImage & operator+=(int arg) {
    return (*this) = (*this) + (arg);
}

//binary pointwise non-commutative operator- I(int) I(int) I(int)
friend IA_IntDiscreteImage operator-(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise non-commutative operator- I(int) char I(int)
friend IA_IntDiscreteImage operator-(const IA_IntDiscreteImage &,char);

//binary pointwise non-commutative operator- int I(int) I(int)
friend IA_IntDiscreteImage operator-(int,const IA_IntDiscreteImage &);

//unary pointwise operator- I(int) I(int)
friend IA_IntDiscreteImage operator-(const IA_IntDiscreteImage & arg);

//pointwise operator-= I(int) I(int)
IA_IntDiscreteImage & operator-=(const IA_IntDiscreteImage & arg) {
    return (*this) = (*this) - (arg);
}

//pointwise operator-= I(int) int
IA_IntDiscreteImage & operator-=(int arg) {
    return (*this) = (*this) - (arg);
}

//binary pointwise commutative operator* I(int) I(int) I(int)
friend IA_IntDiscreteImage operator*(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise commutative operator* I(int) int I(int)
friend IA_IntDiscreteImage operator*(const IA_IntDiscreteImage &,int);
friend IA_IntDiscreteImage operator*(int lhs,const IA_IntDiscreteImage & rhs) {
    return rhs*lhs;
}

//pointwise operator*= I(int) I(int)
IA_IntDiscreteImage & operator*=(const IA_IntDiscreteImage & arg) {
    return (*this) = (*this) * (arg);
}

//pointwise operator*= I(int) int
IA_IntDiscreteImage & operator*=(int arg) {
    return (*this) = (*this) * (arg);
}

//binary pointwise non-commutative operator/ I(int) I(int) I(int)
friend IA_IntDiscreteImage operator/(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise non-commutative operator/ I(int) int I(int)
friend IA_IntDiscreteImage operator/(const IA_IntDiscreteImage &,int);

//binary pointwise non-commutative operator/ int I(int) I(int)
friend IA_IntDiscreteImage operator/(int,const IA_IntDiscreteImage &);

//pointwise operator/= I(int) I(int)
IA_IntDiscreteImage & operator/=(const IA_IntDiscreteImage & arg) {
    return (*this) = (*this) / (arg);
}

//pointwise operator/= I(int) int
IA_IntDiscreteImage & operator/=(int arg) {
    return (*this) = (*this) / (arg);
}

//binary pointwise non-commutative operator% I(int) I(int) I(int)
friend IA_IntDiscreteImage operator%(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise non-commutative operator% I(int) int I(int)
friend IA_IntDiscreteImage operator%(const IA_IntDiscreteImage &,int);

//binary pointwise non-commutative operator% int I(int) I(int)
friend IA_IntDiscreteImage operator%(int,const IA_IntDiscreteImage &);

//pointwise operator%= I(int) I(int)
IA_IntDiscreteImage & operator%=(const IA_IntDiscreteImage & arg) {
    return (*this) = (*this) % (arg);
}

//pointwise operator%= I(int) int
IA_IntDiscreteImage & operator%=(int arg) {
    return (*this) = (*this) % (arg);
}

//binary pointwise commutative operator& I(int) I(int) I(int)
friend IA_IntDiscreteImage operator&(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise commutative operator& I(int) int I(int)
friend IA_IntDiscreteImage operator&(const IA_IntDiscreteImage &,int);
friend IA_IntDiscreteImage operator&(int lhs,const IA_IntDiscreteImage & rhs) {
    return rhs&lhs;
}

//pointwise operator&= I(int) I(int)
IA_IntDiscreteImage & operator&=(const IA_IntDiscreteImage & arg) {
    return (*this) = (*this) & (arg);
}

//pointwise operator&= I(int) int
IA_IntDiscreteImage & operator&=(int arg) {
    return (*this) = (*this) & (arg);
}

//binary pointwise commutative operator| I(int) I(int) I(int)
friend IA_IntDiscreteImage operator|(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise commutative operator| I(int) int I(int)
friend IA_IntDiscreteImage operator|(const IA_IntDiscreteImage &,int);
friend IA_IntDiscreteImage operator|(int lhs,const IA_IntDiscreteImage & rhs) {
    return rhs|lhs;
}

//pointwise operator|= I(int) I(int)
IA_IntDiscreteImage & operator|=(const IA_IntDiscreteImage & arg) {
    return (*this) = (*this) | (arg);
}

//pointwise operator|= I(int) int
IA_IntDiscreteImage & operator|=(int arg) {
    return (*this) = (*this) | (arg);
}

//binary pointwise commutative operator^ I(int) I(int) I(int)
friend IA_IntDiscreteImage operator^(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise commutative operator^ I(int) int I(int)
friend IA_IntDiscreteImage operator^(const IA_IntDiscreteImage &,int);
friend IA_IntDiscreteImage operator^(int lhs,const IA_IntDiscreteImage & rhs) {
    return rhs^lhs;
}

//pointwise operator^= I(int) I(int)
IA_IntDiscreteImage & operator^=(const IA_IntDiscreteImage & arg) {
    return (*this) = (*this) ^ (arg);
}

//pointwise operator^= I(int) int
IA_IntDiscreteImage & operator^=(int arg) {
    return (*this) = (*this) ^ (arg);
}

//binary pointwise commutative operator<< I(int) I(int) I(int)
friend IA_IntDiscreteImage operator<<(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise commutative operator<< I(int) int I(int)
friend IA_IntDiscreteImage operator<<(const IA_IntDiscreteImage &,int);
friend IA_IntDiscreteImage operator<<(int lhs,const IA_IntDiscreteImage & rhs) {
    return rhs<<lhs;
}

//pointwise operator<<= I(int) I(int)
IA_IntDiscreteImage & operator<<=(const IA_IntDiscreteImage & arg) {
    return (*this) = (*this) << (arg);
}

//pointwise operator<<= I(int) int
IA_IntDiscreteImage & operator<<=(int arg) {
    return (*this) = (*this) << (arg);
}

//binary pointwise commutative operator>> I(int) I(int) I(int)
friend IA_IntDiscreteImage operator>>(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise commutative operator>> I(int) int I(int)
friend IA_IntDiscreteImage operator>>(const IA_IntDiscreteImage &,int);
friend IA_IntDiscreteImage operator>>(int lhs,const IA_IntDiscreteImage & rhs) {
    return rhs>>lhs;
}

//pointwise operator>>= I(int) I(int)
IA_IntDiscreteImage & operator>>=(const IA_IntDiscreteImage & arg) {
    return (*this) = (*this) >> (arg);
}

//pointwise operator>>= I(int) int
IA_IntDiscreteImage & operator>>=(int arg) {
    return (*this) = (*this) >> (arg);
}

//unary pointwise operator~ I(int) I(int)
friend IA_IntDiscreteImage operator~(const IA_IntDiscreteImage & arg);

//binary pointwise commutative operator&& I(int) I(int) I(int)
friend IA_IntDiscreteImage operator&&(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise commutative operator&& I(int) int I(int)
friend IA_IntDiscreteImage operator&&(const IA_IntDiscreteImage &,int);
friend IA_IntDiscreteImage operator&&(int lhs,const IA_IntDiscreteImage & rhs) {
    return rhs&&lhs;
}

//binary pointwise commutative operator|| I(int) I(int) I(int)
friend IA_IntDiscreteImage operator||(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise commutative operator|| I(int) int I(int)
friend IA_IntDiscreteImage operator||(const IA_IntDiscreteImage &,int);
friend IA_IntDiscreteImage operator||(int lhs,const IA_IntDiscreteImage & rhs) {
    return rhs||lhs;
}

//unary pointwise operator! I(int) I(int)
friend IA_IntDiscreteImage operator!(const IA_IntDiscreteImage & arg);

//binary strictrel non-commutative operator< I(int) I(int) int
friend int operator<(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary strictrel non-commutative operator< I(int) int int
friend int operator<(const IA_IntDiscreteImage &,int);

//binary strictrel non-commutative operator< int I(int) int
friend int operator<(int,const IA_IntDiscreteImage &);

//binary strictrel non-commutative operator<= I(int) I(int) int
friend int operator<=(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary strictrel non-commutative operator<= I(int) int int
friend int operator<=(const IA_IntDiscreteImage &,int);

//binary strictrel non-commutative operator<= int I(int) int
friend int operator<=(int,const IA_IntDiscreteImage &);

//binary strictrel commutative operator== I(int) I(int) int
friend int operator==(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary strictrel commutative operator== I(int) int int
friend int operator==(const IA_IntDiscreteImage &,int);
friend int operator==(int lhs,const IA_IntDiscreteImage & rhs) {
    return rhs==lhs;
}

//binary strictrel commutative strict_ne subop=operator!= I(int) I(int) int
friend int strict_ne(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary strictrel commutative strict_ne subop=operator!= I(int) int int
friend int strict_ne(const IA_IntDiscreteImage &,int);
friend int strict_ne(int lhs,const IA_IntDiscreteImage & rhs) {
    return strict_ne(rhs,lhs);
}

//binary strictrel non-commutative operator>= I(int) I(int) int
friend int operator>=(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary strictrel non-commutative operator>= I(int) int int
friend int operator>=(const IA_IntDiscreteImage &,int);

//binary strictrel non-commutative operator>= int I(int) int
friend int operator>=(int,const IA_IntDiscreteImage &);

//binary strictrel non-commutative operator> I(int) I(int) int
friend int operator>(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary strictrel non-commutative operator> I(int) int int
friend int operator>(const IA_IntDiscreteImage &,int);

//binary strictrel non-commutative operator> int I(int) int
friend int operator>(int,const IA_IntDiscreteImage &);

//binary pointwise non-commutative chi_lt subop=operator< I(int) I(int) I(int)
friend IA_IntDiscreteImage chi_lt(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise non-commutative chi_lt subop=operator< I(int) int I(int)
friend IA_IntDiscreteImage chi_lt(const IA_IntDiscreteImage &,int);

//binary pointwise non-commutative chi_lt subop=operator< int I(int) I(int)
friend IA_IntDiscreteImage chi_lt(int,const IA_IntDiscreteImage &);

//binary pointwise non-commutative chi_le subop=operator<= I(int) I(int) I(int)
friend IA_IntDiscreteImage chi_le(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise non-commutative chi_le subop=operator<= I(int) int I(int)
friend IA_IntDiscreteImage chi_le(const IA_IntDiscreteImage &,int);

//binary pointwise non-commutative chi_le subop=operator<= int I(int) I(int)
friend IA_IntDiscreteImage chi_le(int,const IA_IntDiscreteImage &);

//binary pointwise commutative chi_eq subop=operator== I(int) I(int) I(int)
friend IA_IntDiscreteImage chi_eq(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise commutative chi_eq subop=operator== I(int) int I(int)
friend IA_IntDiscreteImage chi_eq(const IA_IntDiscreteImage &,int);
friend IA_IntDiscreteImage chi_eq(int lhs,const IA_IntDiscreteImage & rhs) {
    return chi_eq(rhs,lhs);
}

//binary pointwise commutative chi_ne subop=operator!= I(int) I(int) I(int)
friend IA_IntDiscreteImage chi_ne(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise commutative chi_ne subop=operator!= I(int) int I(int)
friend IA_IntDiscreteImage chi_ne(const IA_IntDiscreteImage &,int);
friend IA_IntDiscreteImage chi_ne(int lhs,const IA_IntDiscreteImage & rhs) {
    return chi_ne(rhs,lhs);
}

//binary pointwise non-commutative chi_ge subop=operator>= I(int) I(int) I(int)
friend IA_IntDiscreteImage chi_ge(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise non-commutative chi_ge subop=operator>= I(int) int I(int)
friend IA_IntDiscreteImage chi_ge(const IA_IntDiscreteImage &,int);

//binary pointwise non-commutative chi_ge subop=operator>= int I(int) I(int)
friend IA_IntDiscreteImage chi_ge(int,const IA_IntDiscreteImage &);

//binary pointwise non-commutative chi_gt subop=operator> I(int) I(int) I(int)
friend IA_IntDiscreteImage chi_gt(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise non-commutative chi_gt subop=operator> I(int) int I(int)
friend IA_IntDiscreteImage chi_gt(const IA_IntDiscreteImage &,int);

//binary pointwise non-commutative chi_gt subop=operator> int I(int) I(int)
friend IA_IntDiscreteImage chi_gt(int,const IA_IntDiscreteImage &);

//unary pointwise isqrt I(int) I(int)
friend IA_IntDiscreteImage isqrt(const IA_IntDiscreteImage & arg);

//unary pointwise sqr I(int) I(int)
friend IA_IntDiscreteImage sqr(const IA_IntDiscreteImage & arg);

//binary pointwise commutative max I(int) I(int) I(int)
friend IA_IntDiscreteImage max(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise commutative max I(int) int I(int)
friend IA_IntDiscreteImage max(const IA_IntDiscreteImage &,int);
friend IA_IntDiscreteImage max(int lhs,const IA_IntDiscreteImage & rhs) {
    return max(rhs,lhs);
}

//binary pointwise commutative min I(int) I(int) I(int)
friend IA_IntDiscreteImage min(const IA_IntDiscreteImage &,const IA_IntDiscreteImage &);

//binary pointwise commutative min I(int) int I(int)
friend IA_IntDiscreteImage min(const IA_IntDiscreteImage &,int);
friend IA_IntDiscreteImage min(int lhs,const IA_IntDiscreteImage & rhs) {
    return min(rhs,lhs);
}

//reduction sum subop=operator+ int I(int)
friend int sum(const IA_IntDiscreteImage &);

//reduction max subop=max int I(int)
friend int max(const IA_IntDiscreteImage &);

//reduction min subop=min int I(int)
friend int min(const IA_IntDiscreteImage &);

