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

#
# $Log: uchar-operations.desc,v $
# Revision 1.9.1.2  1995/01/31  16:02:40  thoth
# Need to replace the upward conversions with something...
#
# Revision 1.9.1.1  1994/12/28  17:23:06  thoth
# scalar-image operations accept u_char instead of int now.
#
# Revision 1.9  1994/12/19  19:58:48  ljr
# DOS-inspired name rework.
#
# Revision 1.8  1994/05/17  12:54:56  thoth
# Improved operations generation scheme.  Lines from the op.desc file can
# be quoted into the .c file to allow inclusion of infrastructure.  Also
# the op.desc output can be redirected to several files.  The prefix
# directive allows common information (include files) to be included in
# every generated source file.
#
# Revision 1.7  1994/02/03  16:22:48  thoth
# Arguments to binary operations were specified "lhs rhs return" but are
# now specified "return lhs rhs" to be consistent with function declaration
# syntax.
#
# Revision 1.6  1994/01/31  16:06:03  thoth
# some extra constructors and the new conversions.
# chi functions now return BitDIs.
#
# Revision 1.5  1993/12/29  17:28:38  thoth
# reductions require a zero now.
#
# Revision 1.4  1993/11/17  18:45:41  thoth
# we now have the product reduction and a sqr that returns an IntDI.
#
# Revision 1.3  1993/10/05  19:34:57  thoth
# binary max and min available. are now
#
# Revision 1.2  1993/09/21  11:46:07  thoth
# pointwise operations now named "chi" instead of "pwise".
#
# Revision 1.1  93/09/15  13:05:29  thoth
# Initial revision
# 
# Revision 1.3  93/05/27  11:41:17  thoth
# Copyright Notices
# 
# Revision 1.2  93/05/18  21:45:40  thoth
# New reductions to bring ucharDI up to speed.
# 
# Revision 1.1  93/03/18  11:25:21  thoth
# Initial revision
# 

"C#include "UcharDI.h"
"C#include "VectorI.h"
"C#include "ConstI.h"
"C#include "ImageIter.h"
"C#include "FBI.h"
"C#include "../valueset/OpTable.h"
end

filename UIO-cvcomplex.c
#conversion I(complex) I(u_char)
unary pointwise to_complex subop= I(complex) I(u_char)
filename UIO-cvfloat.c
#conversion I(float) I(u_char)
unary pointwise to_float subop= I(float) I(u_char)
filename UIO-cvint.c
#conversion I(int) I(u_char)
unary pointwise to_int subop= I(int) I(u_char)
filename UIO-to_bit.c
unary pointwise to_bit subop=IA_Bit I(IA_Bit) I(u_char)

filename UIO-__pl.c
binary pointwise commutative operator+ I(u_char) I(u_char) I(u_char)
binary pointwise commutative operator+ I(u_char) I(u_char) u_char
pointwise operator+= I(u_char) I(u_char)
pointwise operator+= I(u_char) u_char

filename UIO-__mi.c
binary pointwise non-commutative operator- I(u_char) I(u_char) I(u_char)
binary pointwise non-commutative operator- I(u_char) I(u_char) u_char
binary pointwise non-commutative operator- I(u_char) u_char I(u_char)
unary pointwise operator- I(u_char) I(u_char)
pointwise operator-= I(u_char) I(u_char)
pointwise operator-= I(u_char) u_char

filename UIO-__ml.c
binary pointwise commutative operator* I(u_char) I(u_char) I(u_char)
binary pointwise commutative operator* I(u_char) I(u_char) u_char
pointwise operator*= I(u_char) I(u_char)
pointwise operator*= I(u_char) u_char

#filename UIO-__mlBit.c
#binary pointwise commutative operator* I(u_char) I(u_char) I(IA_Bit)
#binary pointwise commutative operator* I(u_char) u_char I(IA_Bit)
#pointwise operator*= I(u_char) I(IA_Bit)

filename UIO-__dv.c
binary pointwise non-commutative operator/ I(u_char) I(u_char) I(u_char)
binary pointwise non-commutative operator/ I(u_char) I(u_char) u_char
binary pointwise non-commutative operator/ I(u_char) u_char I(u_char)
pointwise operator/= I(u_char) I(u_char)
pointwise operator/= I(u_char) u_char



filename UIO-__md.c
binary pointwise non-commutative operator% I(u_char) I(u_char) I(u_char)
binary pointwise non-commutative operator% I(u_char) I(u_char) u_char
binary pointwise non-commutative operator% I(u_char) u_char I(u_char)
pointwise operator%= I(u_char) I(u_char)
pointwise operator%= I(u_char) u_char


filename UIO-__ad.c
binary pointwise commutative operator& I(u_char) I(u_char) I(u_char)
binary pointwise commutative operator& I(u_char) I(u_char) u_char
pointwise operator&= I(u_char) I(u_char)
pointwise operator&= I(u_char) u_char

filename UIO-__or.c
binary pointwise commutative operator| I(u_char) I(u_char) I(u_char)
binary pointwise commutative operator| I(u_char) I(u_char) u_char
pointwise operator|= I(u_char) I(u_char)
pointwise operator|= I(u_char) u_char

filename UIO-__er.c
binary pointwise commutative operator^ I(u_char) I(u_char) I(u_char)
binary pointwise commutative operator^ I(u_char) I(u_char) u_char
pointwise operator^= I(u_char) I(u_char)
pointwise operator^= I(u_char) u_char

filename UIO-__ls.c
binary pointwise commutative operator<< I(u_char) I(u_char) I(u_char)
binary pointwise commutative operator<< I(u_char) I(u_char) u_char
pointwise operator<<= I(u_char) I(u_char)
pointwise operator<<= I(u_char) u_char

filename UIO-__rs.c
binary pointwise commutative operator>> I(u_char) I(u_char) I(u_char)
binary pointwise commutative operator>> I(u_char) I(u_char) u_char
pointwise operator>>= I(u_char) I(u_char)
pointwise operator>>= I(u_char) u_char

filename UIO-__co.c
unary pointwise operator~ I(u_char) I(u_char)


filename UIO-__aa.c
binary pointwise commutative operator&& I(u_char) I(u_char) I(u_char)
binary pointwise commutative operator&& I(u_char) I(u_char) u_char

filename UIO-__oo.c
binary pointwise commutative operator|| I(u_char) I(u_char) I(u_char)
binary pointwise commutative operator|| I(u_char) I(u_char) u_char

filename UIO-__nt.c
unary pointwise operator! I(u_char) I(u_char)

filename UIO-__lt.c
binary strictrel non-commutative operator< int I(u_char) I(u_char)
binary strictrel non-commutative operator< int I(u_char) u_char
binary strictrel non-commutative operator< int u_char I(u_char)

filename UIO-__le.c
binary strictrel non-commutative operator<= int I(u_char) I(u_char)
binary strictrel non-commutative operator<= int I(u_char) u_char
binary strictrel non-commutative operator<= int u_char I(u_char)

filename UIO-__eq.c
binary strictrel commutative operator== int I(u_char) I(u_char)
binary strictrel commutative operator== int I(u_char) u_char

filename UIO-strict_ne.c
binary strictrel commutative strict_ne subop=operator!= int I(u_char) I(u_char)
binary strictrel commutative strict_ne subop=operator!= int I(u_char) u_char

filename UIO-__ge.c
binary strictrel non-commutative operator>= int I(u_char) I(u_char)
binary strictrel non-commutative operator>= int I(u_char) u_char
binary strictrel non-commutative operator>= int u_char I(u_char)

filename UIO-__gt.c
binary strictrel non-commutative operator> int I(u_char) I(u_char)
binary strictrel non-commutative operator> int I(u_char) u_char
binary strictrel non-commutative operator> int u_char I(u_char)

filename UIO-X_lt.c
binary pointwise non-commutative chi_lt subop=operator< I(IA_Bit) I(u_char) I(u_char)
binary pointwise non-commutative chi_lt subop=operator< I(IA_Bit) I(u_char) u_char
binary pointwise non-commutative chi_lt subop=operator< I(IA_Bit) u_char I(u_char)

filename UIO-X_le.c
binary pointwise non-commutative chi_le subop=operator<= I(IA_Bit) I(u_char) I(u_char)
binary pointwise non-commutative chi_le subop=operator<= I(IA_Bit) I(u_char) u_char
binary pointwise non-commutative chi_le subop=operator<= I(IA_Bit) u_char I(u_char)

filename UIO-X_eq.c
binary pointwise commutative chi_eq subop=operator== I(IA_Bit) I(u_char) I(u_char)
binary pointwise commutative chi_eq subop=operator== I(IA_Bit) I(u_char) u_char

filename UIO-X_ne.c
binary pointwise commutative chi_ne subop=operator!= I(IA_Bit) I(u_char) I(u_char)
binary pointwise commutative chi_ne subop=operator!= I(IA_Bit) I(u_char) u_char

filename UIO-X_ge.c
binary pointwise non-commutative chi_ge subop=operator>= I(IA_Bit) I(u_char) I(u_char)
binary pointwise non-commutative chi_ge subop=operator>= I(IA_Bit) I(u_char) u_char
binary pointwise non-commutative chi_ge subop=operator>= I(IA_Bit) u_char I(u_char)

filename UIO-X_gt.c
binary pointwise non-commutative chi_gt subop=operator> I(IA_Bit) I(u_char) I(u_char)
binary pointwise non-commutative chi_gt subop=operator> I(IA_Bit) I(u_char) u_char
binary pointwise non-commutative chi_gt subop=operator> I(IA_Bit) u_char I(u_char)

filename UIO-minmax.c
"Ctemplate <class T>
"Cinline T max(T a, T b)
"C{
"C    return (a<b)?b:a;
"C}
binary pointwise commutative max I(u_char) I(u_char) I(u_char)
binary pointwise commutative max I(u_char) I(u_char) u_char

"Ctemplate <class T>
"Cinline T min(T a, T b)
"C{
"C    return (a<b)?a:b;
"C}
binary pointwise commutative min I(u_char) I(u_char) I(u_char)
binary pointwise commutative min I(u_char) I(u_char) u_char

filename UIO-reductions.c

"C#define const_reduce_int_u_char_sum
"Cinline int const_reduce_sum(unsigned sz, u_char arg)
"C{
"C    return sz * arg;
"C}
reduction sum subop=operator+ zero=0 int I(u_char)

reduction product subop=operator* zero=1 int I(u_char)

"Cinline int max(u_char a, int b)
"C{
"C    return (a<b)?b:a;
"C}
"C#define const_reduce_u_char_u_char_max
"Cinline u_char const_reduce_max(unsigned , u_char arg)
"C{
"C    return arg;
"C}
reduction max subop=max zero=0 u_char I(u_char)

"Cinline int min(u_char a, int b)
"C{
"C    return (a<b)?a:b;
"C}
"C#define const_reduce_u_char_u_char_min
"Cinline u_char const_reduce_min(unsigned , u_char arg)
"C{
"C    return arg;
"C}
reduction min subop=min zero=255 u_char I(u_char)

filename UIO-unaries.c
unary pointwise sqr I(int) I(u_char)
