%{
#define ATSCODEFORMAT "txt"
#if (ATSCODEFORMAT == "txt")
#include "utils/atsdoc/HATS/postiatsatxt.hats"
#endif // end of [ATSCCODEFORMAT]
val _thisfilename = atext_strcst"bool.cats"
val () = theAtextMap_insert_str ("thisfilename", _thisfilename)
%}\
\
#atscode_banner_for_C()
#atscode_copyright_GPL_for_C()

#atscode_separator_for_C()

/*
** Source:
** $PATSHOME/prelude/CATS/CODEGEN/bool.atxt
** Time of generation: #timestamp()
*/

#atscode_separator_for_C()

/*
#atscode_author("Hongwei Xi")
#atscode_authoremail("hwxi AT cs DOT bu DOT edu")
#atscode_start_time("February, 2012")
*/

#atscode_separator_for_C()

\#ifndef ATSLIB_PRELUDE_CATS_BOOL
\#define ATSLIB_PRELUDE_CATS_BOOL

#atscode_separator_for_C()

ATSinline()
atstype_bool
atspre_int2bool (atstype_int x)
{
  return (x != 0 ? atsbool_true : atsbool_false) ;
}
\#define atspre_int2bool0 atspre_int2bool
\#define atspre_int2bool1 atspre_int2bool

#atscode_separator_for_C()

\#define atspre_bool2int0(x) x
\#define atspre_bool2int1(x) x

#atscode_separator_for_C()

ATSinline()
atstype_bool
atspre_neg_bool
  (atstype_bool b) {
  return (b) ? atsbool_false : atsbool_true ;
} // end of [atspre_neg_bool]
\#define atspre_neg_bool0 atspre_neg_bool
\#define atspre_neg_bool1 atspre_neg_bool

ATSinline()
atstype_bool
atspre_add_bool_bool (
  atstype_bool b1, atstype_bool b2
) {
  return (b1) ? atsbool_true : (b2) ;
} // end of [atspre_add_bool_bool]
\#define atspre_add_bool0_bool0 atspre_add_bool_bool
\#define atspre_add_bool0_bool1 atspre_add_bool_bool
\#define atspre_add_bool1_bool0 atspre_add_bool_bool
\#define atspre_add_bool1_bool1 atspre_add_bool_bool

ATSinline()
atstype_bool
atspre_mul_bool_bool (
  atstype_bool b1, atstype_bool b2
) {
  return (b1) ? (b2) : atsbool_false ;
} // end of [atspre_mul_bool_bool]
\#define atspre_mul_bool0_bool0 atspre_mul_bool_bool
\#define atspre_mul_bool0_bool1 atspre_mul_bool_bool
\#define atspre_mul_bool1_bool0 atspre_mul_bool_bool
\#define atspre_mul_bool1_bool1 atspre_mul_bool_bool

#atscode_separator_for_C()

ATSinline()
atstype_bool
atspre_xor_bool_bool (
  atstype_bool b1, atstype_bool b2
) {
  return (b1) ? (!b2) : (b2) ;
} // end of [atspre_xor_bool_bool]
\#define atspre_xor_bool0_bool0 atspre_xor_bool_bool
\#define atspre_xor_bool1_bool1 atspre_xor_bool_bool

#atscode_separator_for_C()

ATSinline()
atstype_bool
atspre_lt_bool_bool (
  atstype_bool b1, atstype_bool b2
) {
  return (b1) ? atsbool_false : (b2) ;
} // end of [atspre_lt_bool_bool]
\#define atspre_lt_bool0_bool0 atspre_lt_bool_bool
\#define atspre_lt_bool1_bool1 atspre_lt_bool_bool
ATSinline()
atstype_bool
atspre_lte_bool_bool (
  atstype_bool b1, atstype_bool b2
) {
  return (b1) ? (b2) : atsbool_true ;
} // end of [atspre_lte_bool_bool]
\#define atspre_lte_bool0_bool0 atspre_lte_bool_bool
\#define atspre_lte_bool1_bool1 atspre_lte_bool_bool

ATSinline()
atstype_bool
atspre_gt_bool_bool (
  atstype_bool b1, atstype_bool b2
) {
  return (b2) ? atsbool_false : (b1) ;
} // end of [atspre_gt_bool_bool]
\#define atspre_gt_bool0_bool0 atspre_gt_bool_bool
\#define atspre_gt_bool1_bool1 atspre_gt_bool_bool
ATSinline()
atstype_bool
atspre_gte_bool_bool (
  atstype_bool b1, atstype_bool b2
) {
  return (b2) ? (b1) : atsbool_true ;
} // end of [atspre_gte_bool_bool]
\#define atspre_gte_bool0_bool0 atspre_gte_bool_bool
\#define atspre_gte_bool1_bool1 atspre_gte_bool_bool

ATSinline()
atstype_bool
atspre_eq_bool_bool (
  atstype_bool b1, atstype_bool b2
) {
  return (b1 == b2) ;
} // end of [atspre_eq_bool_bool]
\#define atspre_eq_bool0_bool0 atspre_eq_bool_bool
\#define atspre_eq_bool1_bool1 atspre_eq_bool_bool
ATSinline()
atstype_bool
atspre_neq_bool_bool (
  atstype_bool b1, atstype_bool b2
) {
  return (b1 != b2) ;
} // end of [atspre_neq_bool_bool]
\#define atspre_neq_bool0_bool0 atspre_neq_bool_bool
\#define atspre_neq_bool1_bool1 atspre_neq_bool_bool

#atscode_separator_for_C()

ATSinline()
atstype_int
atspre_compare_bool_bool (
  atstype_bool b1, atstype_bool b2
) {
  return (b1 - b2) ;
} // end of [atspre_compare_bool_bool]
\#define atspre_compare_bool0_bool0 atspre_compare_bool_bool
\#define atspre_compare_bool1_bool1 atspre_compare_bool_bool

#atscode_separator_for_C()

ATSinline()
atstype_string
atspre_bool2string (
  atstype_bool x
) {
  return (x) ? "true" : "false" ;
} // end of [atspre_bool2string]

ATSinline()
atstype_string
atspre_bool_tostring (
  atstype_bool x
) {
  return (x) ? "true" : "false" ;
} // end of [atspre_bool_tostring]

#atscode_separator_for_C()

\#endif // ifndef ATSLIB_PRELUDE_CATS_BOOL

#atscode_separator_for_C()

#atscode_eof_strsub_for_C("\#thisfilename$")\

%{
implement
main (argc, argv) = fprint_filsub (stdout_ref, "bool_atxt.txt")
%}\