
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// This file is generated by the Perl script custom.pl. Please do 
// not modify this file directly. Change the script instead.
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

// ---------------------------------------------------
//                Begin Mandatory Compare 
// ---------------------------------------------------

#define sql_compare_define(NAME) \
    bool operator == (const NAME &other) const \
      {return sql_compare_##NAME<sql_dummy>(*this,other) == 0;} \
    bool operator != (const NAME &other) const \
      {return sql_compare_##NAME<sql_dummy>(*this,other) != 0;} \
    bool operator > (const NAME &other) const \
      {return sql_compare_##NAME<sql_dummy>(*this,other) >  0;} \
    bool operator < (const NAME &other) const \
      {return sql_compare_##NAME<sql_dummy>(*this,other) <  0;} \
    bool operator >= (const NAME &other) const \
      {return sql_compare_##NAME<sql_dummy>(*this,other) >= 0;} \
    bool operator <= (const NAME &other) const \
      {return sql_compare_##NAME<sql_dummy>(*this,other) <= 0;} \
    int cmp (const NAME &other) const \
      {return sql_compare_##NAME<sql_dummy>(*this,other);} \
    int compare (const NAME &other) const \
      {return sql_compare_##NAME<sql_dummy>(*this,other);}

#define sql_compare_define_0(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25)

#define sql_construct_define_0(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25)

#define sql_COMPARE__0(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25)

#define sql_compare_type_def_0(NAME, WHAT, NUM) \
  sql_compare_type_def_##NUM (NAME, WHAT, NUM)

#define sql_compare_type_defe_0(NAME, WHAT, NUM) \
  sql_compare_type_defe_##NUM (NAME, WHAT, NUM)

// ---------------------------------------------------
//                 End Mandatory Compare 
// ---------------------------------------------------

// ---------------------------------------------------
//                   Begin Compare 1
// ---------------------------------------------------

#define sql_compare_define_1(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1) : C1 (p1) {} \
  void set  (const T1 &p1) { \
    C1 = p1;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_1(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1) { \
    C1 = p1;\
 \
  } \
  NAME (const T1 &p1) : C1 (p1) {}

#define sql_compare_type_def_1(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true)

#define sql_compare_type_defe_1(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true)

#define sql_COMPARE__1(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    return sql_cmp(x.C1 , y.C1 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    return sql_cmp(x.C1 , y.C1 ); \
  }

// ---------------------------------------------------
//                   End Compare 1
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 2
// ---------------------------------------------------

#define sql_compare_define_2(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2) : C1 (p1), C2 (p2) {} \
  void set  (const T1 &p1, const T2 &p2) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_2(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2) : C1 (p1), C2 (p2) {}

#define sql_compare_type_def_2(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true)

#define sql_compare_type_defe_2(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true)

#define sql_COMPARE__2(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    return sql_cmp(x.C2 , y.C2 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    return sql_cmp(x.C2 , y.C2 ); \
  }

// ---------------------------------------------------
//                   End Compare 2
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 3
// ---------------------------------------------------

#define sql_compare_define_3(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3) : C1 (p1), C2 (p2), C3 (p3) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_3(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3) : C1 (p1), C2 (p2), C3 (p3) {}

#define sql_compare_type_def_3(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true)

#define sql_compare_type_defe_3(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true)

#define sql_COMPARE__3(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    return sql_cmp(x.C3 , y.C3 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    return sql_cmp(x.C3 , y.C3 ); \
  }

// ---------------------------------------------------
//                   End Compare 3
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 4
// ---------------------------------------------------

#define sql_compare_define_4(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4) : C1 (p1), C2 (p2), C3 (p3), C4 (p4) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_4(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4) : C1 (p1), C2 (p2), C3 (p3), C4 (p4) {}

#define sql_compare_type_def_4(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true)

#define sql_compare_type_defe_4(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true)

#define sql_COMPARE__4(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    return sql_cmp(x.C4 , y.C4 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    return sql_cmp(x.C4 , y.C4 ); \
  }

// ---------------------------------------------------
//                   End Compare 4
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 5
// ---------------------------------------------------

#define sql_compare_define_5(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_5(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5) {}

#define sql_compare_type_def_5(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true)

#define sql_compare_type_defe_5(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true)

#define sql_COMPARE__5(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    return sql_cmp(x.C5 , y.C5 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    return sql_cmp(x.C5 , y.C5 ); \
  }

// ---------------------------------------------------
//                   End Compare 5
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 6
// ---------------------------------------------------

#define sql_compare_define_6(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_6(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6) {}

#define sql_compare_type_def_6(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true)

#define sql_compare_type_defe_6(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true)

#define sql_COMPARE__6(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    return sql_cmp(x.C6 , y.C6 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    return sql_cmp(x.C6 , y.C6 ); \
  }

// ---------------------------------------------------
//                   End Compare 6
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 7
// ---------------------------------------------------

#define sql_compare_define_7(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_7(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7) {}

#define sql_compare_type_def_7(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true)

#define sql_compare_type_defe_7(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true)

#define sql_COMPARE__7(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    return sql_cmp(x.C7 , y.C7 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    return sql_cmp(x.C7 , y.C7 ); \
  }

// ---------------------------------------------------
//                   End Compare 7
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 8
// ---------------------------------------------------

#define sql_compare_define_8(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_8(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8) {}

#define sql_compare_type_def_8(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_8(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true)

#define sql_COMPARE__8(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    return sql_cmp(x.C8 , y.C8 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    return sql_cmp(x.C8 , y.C8 ); \
  }

// ---------------------------------------------------
//                   End Compare 8
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 9
// ---------------------------------------------------

#define sql_compare_define_9(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_9(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9) {}

#define sql_compare_type_def_9(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_9(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__9(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    return sql_cmp(x.C9 , y.C9 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    return sql_cmp(x.C9 , y.C9 ); \
  }

// ---------------------------------------------------
//                   End Compare 9
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 10
// ---------------------------------------------------

#define sql_compare_define_10(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_10(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10) {}

#define sql_compare_type_def_10(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_10(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__10(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    return sql_cmp(x.C10 , y.C10 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    return sql_cmp(x.C10 , y.C10 ); \
  }

// ---------------------------------------------------
//                   End Compare 10
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 11
// ---------------------------------------------------

#define sql_compare_define_11(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_11(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11) {}

#define sql_compare_type_def_11(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_11(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__11(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    return sql_cmp(x.C11 , y.C11 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    return sql_cmp(x.C11 , y.C11 ); \
  }

// ---------------------------------------------------
//                   End Compare 11
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 12
// ---------------------------------------------------

#define sql_compare_define_12(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_12(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12) {}

#define sql_compare_type_def_12(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_12(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__12(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    return sql_cmp(x.C12 , y.C12 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    return sql_cmp(x.C12 , y.C12 ); \
  }

// ---------------------------------------------------
//                   End Compare 12
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 13
// ---------------------------------------------------

#define sql_compare_define_13(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_13(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13) {}

#define sql_compare_type_def_13(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_13(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__13(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    return sql_cmp(x.C13 , y.C13 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    return sql_cmp(x.C13 , y.C13 ); \
  }

// ---------------------------------------------------
//                   End Compare 13
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 14
// ---------------------------------------------------

#define sql_compare_define_14(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_14(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14) {}

#define sql_compare_type_def_14(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_14(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__14(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    return sql_cmp(x.C14 , y.C14 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    return sql_cmp(x.C14 , y.C14 ); \
  }

// ---------------------------------------------------
//                   End Compare 14
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 15
// ---------------------------------------------------

#define sql_compare_define_15(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_15(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15) {}

#define sql_compare_type_def_15(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_15(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__15(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    return sql_cmp(x.C15 , y.C15 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    return sql_cmp(x.C15 , y.C15 ); \
  }

// ---------------------------------------------------
//                   End Compare 15
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 16
// ---------------------------------------------------

#define sql_compare_define_16(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_16(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16) {}

#define sql_compare_type_def_16(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_16(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__16(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    return sql_cmp(x.C16 , y.C16 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    return sql_cmp(x.C16 , y.C16 ); \
  }

// ---------------------------------------------------
//                   End Compare 16
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 17
// ---------------------------------------------------

#define sql_compare_define_17(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_17(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17) {}

#define sql_compare_type_def_17(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_17(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__17(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    return sql_cmp(x.C17 , y.C17 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    return sql_cmp(x.C17 , y.C17 ); \
  }

// ---------------------------------------------------
//                   End Compare 17
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 18
// ---------------------------------------------------

#define sql_compare_define_18(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_18(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18) {}

#define sql_compare_type_def_18(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_18(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__18(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    if (cmp = sql_cmp(x.C17 , y.C17 )) return cmp; \
    return sql_cmp(x.C18 , y.C18 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    if (cmp = sql_cmp(x.C17 , y.C17 )) return cmp; \
    return sql_cmp(x.C18 , y.C18 ); \
  }

// ---------------------------------------------------
//                   End Compare 18
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 19
// ---------------------------------------------------

#define sql_compare_define_19(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_19(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19) {}

#define sql_compare_type_def_19(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_19(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__19(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    if (cmp = sql_cmp(x.C17 , y.C17 )) return cmp; \
    if (cmp = sql_cmp(x.C18 , y.C18 )) return cmp; \
    return sql_cmp(x.C19 , y.C19 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    if (cmp = sql_cmp(x.C17 , y.C17 )) return cmp; \
    if (cmp = sql_cmp(x.C18 , y.C18 )) return cmp; \
    return sql_cmp(x.C19 , y.C19 ); \
  }

// ---------------------------------------------------
//                   End Compare 19
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 20
// ---------------------------------------------------

#define sql_compare_define_20(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_20(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20) {}

#define sql_compare_type_def_20(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_20(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__20(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    if (cmp = sql_cmp(x.C17 , y.C17 )) return cmp; \
    if (cmp = sql_cmp(x.C18 , y.C18 )) return cmp; \
    if (cmp = sql_cmp(x.C19 , y.C19 )) return cmp; \
    return sql_cmp(x.C20 , y.C20 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    if (cmp = sql_cmp(x.C17 , y.C17 )) return cmp; \
    if (cmp = sql_cmp(x.C18 , y.C18 )) return cmp; \
    if (cmp = sql_cmp(x.C19 , y.C19 )) return cmp; \
    return sql_cmp(x.C20 , y.C20 ); \
  }

// ---------------------------------------------------
//                   End Compare 20
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 21
// ---------------------------------------------------

#define sql_compare_define_21(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_21(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21) {}

#define sql_compare_type_def_21(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_21(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__21(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    if (cmp = sql_cmp(x.C17 , y.C17 )) return cmp; \
    if (cmp = sql_cmp(x.C18 , y.C18 )) return cmp; \
    if (cmp = sql_cmp(x.C19 , y.C19 )) return cmp; \
    if (cmp = sql_cmp(x.C20 , y.C20 )) return cmp; \
    return sql_cmp(x.C21 , y.C21 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    if (cmp = sql_cmp(x.C17 , y.C17 )) return cmp; \
    if (cmp = sql_cmp(x.C18 , y.C18 )) return cmp; \
    if (cmp = sql_cmp(x.C19 , y.C19 )) return cmp; \
    if (cmp = sql_cmp(x.C20 , y.C20 )) return cmp; \
    return sql_cmp(x.C21 , y.C21 ); \
  }

// ---------------------------------------------------
//                   End Compare 21
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 22
// ---------------------------------------------------

#define sql_compare_define_22(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21), C22 (p22) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_22(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21), C22 (p22) {}

#define sql_compare_type_def_22(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_22(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__22(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    if (cmp = sql_cmp(x.C17 , y.C17 )) return cmp; \
    if (cmp = sql_cmp(x.C18 , y.C18 )) return cmp; \
    if (cmp = sql_cmp(x.C19 , y.C19 )) return cmp; \
    if (cmp = sql_cmp(x.C20 , y.C20 )) return cmp; \
    if (cmp = sql_cmp(x.C21 , y.C21 )) return cmp; \
    return sql_cmp(x.C22 , y.C22 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    if (cmp = sql_cmp(x.C17 , y.C17 )) return cmp; \
    if (cmp = sql_cmp(x.C18 , y.C18 )) return cmp; \
    if (cmp = sql_cmp(x.C19 , y.C19 )) return cmp; \
    if (cmp = sql_cmp(x.C20 , y.C20 )) return cmp; \
    if (cmp = sql_cmp(x.C21 , y.C21 )) return cmp; \
    return sql_cmp(x.C22 , y.C22 ); \
  }

// ---------------------------------------------------
//                   End Compare 22
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 23
// ---------------------------------------------------

#define sql_compare_define_23(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21), C22 (p22), C23 (p23) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C23 = p23;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_23(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C23 = p23;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21), C22 (p22), C23 (p23) {}

#define sql_compare_type_def_23(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_23(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__23(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    if (cmp = sql_cmp(x.C17 , y.C17 )) return cmp; \
    if (cmp = sql_cmp(x.C18 , y.C18 )) return cmp; \
    if (cmp = sql_cmp(x.C19 , y.C19 )) return cmp; \
    if (cmp = sql_cmp(x.C20 , y.C20 )) return cmp; \
    if (cmp = sql_cmp(x.C21 , y.C21 )) return cmp; \
    if (cmp = sql_cmp(x.C22 , y.C22 )) return cmp; \
    return sql_cmp(x.C23 , y.C23 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    if (cmp = sql_cmp(x.C17 , y.C17 )) return cmp; \
    if (cmp = sql_cmp(x.C18 , y.C18 )) return cmp; \
    if (cmp = sql_cmp(x.C19 , y.C19 )) return cmp; \
    if (cmp = sql_cmp(x.C20 , y.C20 )) return cmp; \
    if (cmp = sql_cmp(x.C21 , y.C21 )) return cmp; \
    if (cmp = sql_cmp(x.C22 , y.C22 )) return cmp; \
    return sql_cmp(x.C23 , y.C23 ); \
  }

// ---------------------------------------------------
//                   End Compare 23
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 24
// ---------------------------------------------------

#define sql_compare_define_24(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23, const T24 &p24) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21), C22 (p22), C23 (p23), C24 (p24) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23, const T24 &p24) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C23 = p23;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C23 = p23;\
    C24 = p24;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_24(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23, const T24 &p24) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C23 = p23;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C23 = p23;\
    C24 = p24;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23, const T24 &p24) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21), C22 (p22), C23 (p23), C24 (p24) {}

#define sql_compare_type_def_24(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_24(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__24(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    if (cmp = sql_cmp(x.C17 , y.C17 )) return cmp; \
    if (cmp = sql_cmp(x.C18 , y.C18 )) return cmp; \
    if (cmp = sql_cmp(x.C19 , y.C19 )) return cmp; \
    if (cmp = sql_cmp(x.C20 , y.C20 )) return cmp; \
    if (cmp = sql_cmp(x.C21 , y.C21 )) return cmp; \
    if (cmp = sql_cmp(x.C22 , y.C22 )) return cmp; \
    if (cmp = sql_cmp(x.C23 , y.C23 )) return cmp; \
    return sql_cmp(x.C24 , y.C24 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    if (cmp = sql_cmp(x.C17 , y.C17 )) return cmp; \
    if (cmp = sql_cmp(x.C18 , y.C18 )) return cmp; \
    if (cmp = sql_cmp(x.C19 , y.C19 )) return cmp; \
    if (cmp = sql_cmp(x.C20 , y.C20 )) return cmp; \
    if (cmp = sql_cmp(x.C21 , y.C21 )) return cmp; \
    if (cmp = sql_cmp(x.C22 , y.C22 )) return cmp; \
    if (cmp = sql_cmp(x.C23 , y.C23 )) return cmp; \
    return sql_cmp(x.C24 , y.C24 ); \
  }

// ---------------------------------------------------
//                   End Compare 24
// ---------------------------------------------------


// ---------------------------------------------------
//                   Begin Compare 25
// ---------------------------------------------------

#define sql_compare_define_25(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23, const T24 &p24, const T25 &p25) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21), C22 (p22), C23 (p23), C24 (p24), C25 (p25) {} \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23, const T24 &p24, const T25 &p25) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C23 = p23;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C23 = p23;\
    C24 = p24;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C23 = p23;\
    C24 = p24;\
    C25 = p25;\
 \
  } \
  sql_compare_define(NAME)

#define sql_construct_define_25(NAME, T1, C1, T2, C2, T3, C3, T4, C4, T5, C5, T6, C6, T7, C7, T8, C8, T9, C9, T10, C10, T11, C11, T12, C12, T13, C13, T14, C14, T15, C15, T16, C16, T17, C17, T18, C18, T19, C19, T20, C20, T21, C21, T22, C22, T23, C23, T24, C24, T25, C25) \
  void set  (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23, const T24 &p24, const T25 &p25) { \
    C1 = p1;\
    C1 = p1;\
    C2 = p2;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C23 = p23;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C23 = p23;\
    C24 = p24;\
    C1 = p1;\
    C2 = p2;\
    C3 = p3;\
    C4 = p4;\
    C5 = p5;\
    C6 = p6;\
    C7 = p7;\
    C8 = p8;\
    C9 = p9;\
    C10 = p10;\
    C11 = p11;\
    C12 = p12;\
    C13 = p13;\
    C14 = p14;\
    C15 = p15;\
    C16 = p16;\
    C17 = p17;\
    C18 = p18;\
    C19 = p19;\
    C20 = p20;\
    C21 = p21;\
    C22 = p22;\
    C23 = p23;\
    C24 = p24;\
    C25 = p25;\
 \
  } \
  NAME (const T1 &p1, const T2 &p2, const T3 &p3, const T4 &p4, const T5 &p5, const T6 &p6, const T7 &p7, const T8 &p8, const T9 &p9, const T10 &p10, const T11 &p11, const T12 &p12, const T13 &p13, const T14 &p14, const T15 &p15, const T16 &p16, const T17 &p17, const T18 &p18, const T19 &p19, const T20 &p20, const T21 &p21, const T22 &p22, const T23 &p23, const T24 &p24, const T25 &p25) : C1 (p1), C2 (p2), C3 (p3), C4 (p4), C5 (p5), C6 (p6), C7 (p7), C8 (p8), C9 (p9), C10 (p10), C11 (p11), C12 (p12), C13 (p13), C14 (p14), C15 (p15), C16 (p16), C17 (p17), C18 (p18), C19 (p19), C20 (p20), C21 (p21), C22 (p22), C23 (p23), C24 (p24), C25 (p25) {}

#define sql_compare_type_def_25(NAME, WHAT, NUM) \
  return WHAT##_list(d, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_compare_type_defe_25(NAME, WHAT, NUM) \
  return WHAT##_list(d, c, m, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true)

#define sql_COMPARE__25(NAME, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24, C25) \
  template <sql_dummy_type dummy> \
  int sql_compare_##NAME (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    if (cmp = sql_cmp(x.C17 , y.C17 )) return cmp; \
    if (cmp = sql_cmp(x.C18 , y.C18 )) return cmp; \
    if (cmp = sql_cmp(x.C19 , y.C19 )) return cmp; \
    if (cmp = sql_cmp(x.C20 , y.C20 )) return cmp; \
    if (cmp = sql_cmp(x.C21 , y.C21 )) return cmp; \
    if (cmp = sql_cmp(x.C22 , y.C22 )) return cmp; \
    if (cmp = sql_cmp(x.C23 , y.C23 )) return cmp; \
    if (cmp = sql_cmp(x.C24 , y.C24 )) return cmp; \
    return sql_cmp(x.C25 , y.C25 ); \
  } \
  template <sql_dummy_type dummy> \
  int compare (const NAME &x, const NAME &y) { \
    int cmp; \
    if (cmp = sql_cmp(x.C1 , y.C1 )) return cmp; \
    if (cmp = sql_cmp(x.C2 , y.C2 )) return cmp; \
    if (cmp = sql_cmp(x.C3 , y.C3 )) return cmp; \
    if (cmp = sql_cmp(x.C4 , y.C4 )) return cmp; \
    if (cmp = sql_cmp(x.C5 , y.C5 )) return cmp; \
    if (cmp = sql_cmp(x.C6 , y.C6 )) return cmp; \
    if (cmp = sql_cmp(x.C7 , y.C7 )) return cmp; \
    if (cmp = sql_cmp(x.C8 , y.C8 )) return cmp; \
    if (cmp = sql_cmp(x.C9 , y.C9 )) return cmp; \
    if (cmp = sql_cmp(x.C10 , y.C10 )) return cmp; \
    if (cmp = sql_cmp(x.C11 , y.C11 )) return cmp; \
    if (cmp = sql_cmp(x.C12 , y.C12 )) return cmp; \
    if (cmp = sql_cmp(x.C13 , y.C13 )) return cmp; \
    if (cmp = sql_cmp(x.C14 , y.C14 )) return cmp; \
    if (cmp = sql_cmp(x.C15 , y.C15 )) return cmp; \
    if (cmp = sql_cmp(x.C16 , y.C16 )) return cmp; \
    if (cmp = sql_cmp(x.C17 , y.C17 )) return cmp; \
    if (cmp = sql_cmp(x.C18 , y.C18 )) return cmp; \
    if (cmp = sql_cmp(x.C19 , y.C19 )) return cmp; \
    if (cmp = sql_cmp(x.C20 , y.C20 )) return cmp; \
    if (cmp = sql_cmp(x.C21 , y.C21 )) return cmp; \
    if (cmp = sql_cmp(x.C22 , y.C22 )) return cmp; \
    if (cmp = sql_cmp(x.C23 , y.C23 )) return cmp; \
    if (cmp = sql_cmp(x.C24 , y.C24 )) return cmp; \
    return sql_cmp(x.C25 , y.C25 ); \
  }

// ---------------------------------------------------
//                   End Compare 25
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 1
// ---------------------------------------------------
#define sql_create_basic_c_order_1(NAME, CMP, CONTR, T1, I1, O1)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_1(NAME, CMP, CONTR, T1, I1, N1, O1) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1) const {\
      return value_list(",", quote, i1);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1) const {\
      return value_list(",", quote, i1);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1) const {\
      return value_list(d, quote, i1);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1) const {\
      return value_list(d, quote, i1);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1) const {\
      return field_list(",", do_nothing, i1);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1) const {\
      return field_list(",", do_nothing, i1);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1) const {\
      return field_list(d, do_nothing, i1);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1) const {\
      return field_list(d, do_nothing, i1);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1) const {\
      return equal_list(",", " = ", quote, i1);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1) const {\
      return equal_list(",", " = ", quote, i1);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1) const {\
      return equal_list(d, " = ", quote, i1);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1) const {\
      return equal_list(d, " = ", quote, i1);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1) const {\
      return equal_list(d, c, quote, i1);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1) const {\
      return equal_list(d, c, quote, i1);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(1, false);\
    if (i1) (*include)[0]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(1, false); \
    (*include)[i1]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(1, false); \
    if (i1) (*include)[0]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(1, false); \
    (*include)[i1]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(1, false); \
    if (i1) (*include)[0]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(1, false); \
    (*include)[i1]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_1(NAME, CMP, CONTR, T1, I1) \
  sql_create_basic_c_order_1(NAME, CMP, CONTR, T1, I1, 0)

#define sql_create_1(NAME, CMP, CONTR, T1, I1) \
  sql_create_complete_1(NAME, CMP, CONTR, T1, I1, #I1, 0) \

#define sql_create_c_order_1(NAME, CMP, CONTR, T1, I1, O1) \
  sql_create_complete_1(NAME, CMP, CONTR, T1, I1, #I1, O1)

#define sql_create_c_names_1(NAME, CMP, CONTR, T1, I1, N1) \
  sql_create_complete_1(NAME, CMP, CONTR, T1, I1, N1, 0)

// ---------------------------------------------------
//                  End Create 1
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 2
// ---------------------------------------------------
#define sql_create_basic_c_order_2(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_2(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false) const {\
      return value_list(",", quote, i1, i2);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false) const {\
      return value_list(d, quote, i1, i2);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false) const {\
      return field_list(",", do_nothing, i1, i2);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false) const {\
      return field_list(d, do_nothing, i1, i2);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false) const {\
      return equal_list(",", " = ", quote, i1, i2);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false) const {\
      return equal_list(d, " = ", quote, i1, i2);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false) const {\
      return equal_list(d, c, quote, i1, i2);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(2, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(2, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(2, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(2, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(2, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(2, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_2(NAME, CMP, CONTR, T1, I1, T2, I2) \
  sql_create_basic_c_order_2(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1)

#define sql_create_2(NAME, CMP, CONTR, T1, I1, T2, I2) \
  sql_create_complete_2(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1) \

#define sql_create_c_order_2(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2) \
  sql_create_complete_2(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2)

#define sql_create_c_names_2(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2) \
  sql_create_complete_2(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1)

// ---------------------------------------------------
//                  End Create 2
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 3
// ---------------------------------------------------
#define sql_create_basic_c_order_3(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_3(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false) const {\
      return value_list(",", quote, i1, i2, i3);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false) const {\
      return value_list(d, quote, i1, i2, i3);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(3, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(3, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(3, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(3, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(3, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(3, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_3(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3) \
  sql_create_basic_c_order_3(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2)

#define sql_create_3(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3) \
  sql_create_complete_3(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2) \

#define sql_create_c_order_3(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3) \
  sql_create_complete_3(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3)

#define sql_create_c_names_3(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3) \
  sql_create_complete_3(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2)

// ---------------------------------------------------
//                  End Create 3
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 4
// ---------------------------------------------------
#define sql_create_basic_c_order_4(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_4(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(4, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(4, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(4, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(4, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(4, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(4, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_4(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4) \
  sql_create_basic_c_order_4(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3)

#define sql_create_4(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4) \
  sql_create_complete_4(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3) \

#define sql_create_c_order_4(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4) \
  sql_create_complete_4(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4)

#define sql_create_c_names_4(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4) \
  sql_create_complete_4(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3)

// ---------------------------------------------------
//                  End Create 4
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 5
// ---------------------------------------------------
#define sql_create_basic_c_order_5(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_5(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(5, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(5, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(5, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(5, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(5, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(5, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_5(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5) \
  sql_create_basic_c_order_5(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4)

#define sql_create_5(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5) \
  sql_create_complete_5(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4) \

#define sql_create_c_order_5(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5) \
  sql_create_complete_5(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5)

#define sql_create_c_names_5(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5) \
  sql_create_complete_5(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4)

// ---------------------------------------------------
//                  End Create 5
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 6
// ---------------------------------------------------
#define sql_create_basic_c_order_6(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_6(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(6, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(6, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(6, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(6, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(6, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(6, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_6(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6) \
  sql_create_basic_c_order_6(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5)

#define sql_create_6(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6) \
  sql_create_complete_6(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5) \

#define sql_create_c_order_6(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6) \
  sql_create_complete_6(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6)

#define sql_create_c_names_6(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6) \
  sql_create_complete_6(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5)

// ---------------------------------------------------
//                  End Create 6
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 7
// ---------------------------------------------------
#define sql_create_basic_c_order_7(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_7(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(7, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(7, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(7, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(7, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(7, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(7, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_7(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7) \
  sql_create_basic_c_order_7(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6)

#define sql_create_7(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7) \
  sql_create_complete_7(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6) \

#define sql_create_c_order_7(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7) \
  sql_create_complete_7(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7)

#define sql_create_c_names_7(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7) \
  sql_create_complete_7(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6)

// ---------------------------------------------------
//                  End Create 7
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 8
// ---------------------------------------------------
#define sql_create_basic_c_order_8(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_8(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(8, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(8, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(8, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(8, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(8, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(8, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_8(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8) \
  sql_create_basic_c_order_8(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7)

#define sql_create_8(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8) \
  sql_create_complete_8(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7) \

#define sql_create_c_order_8(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8) \
  sql_create_complete_8(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8)

#define sql_create_c_names_8(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8) \
  sql_create_complete_8(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7)

// ---------------------------------------------------
//                  End Create 8
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 9
// ---------------------------------------------------
#define sql_create_basic_c_order_9(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_9(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(9, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(9, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(9, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(9, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(9, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(9, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_9(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9) \
  sql_create_basic_c_order_9(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8)

#define sql_create_9(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9) \
  sql_create_complete_9(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8) \

#define sql_create_c_order_9(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9) \
  sql_create_complete_9(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9)

#define sql_create_c_names_9(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9) \
  sql_create_complete_9(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8)

// ---------------------------------------------------
//                  End Create 9
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 10
// ---------------------------------------------------
#define sql_create_basic_c_order_10(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_10(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9,\
    NAME##_##I10 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9 ,\
    N10  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(10, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(10, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(10, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(10, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(10, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(10, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.manip << obj.obj->I10; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8] << obj.delem;\
    s << obj.manip << obj.obj->names[9]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I10;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[9];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_10(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10) \
  sql_create_basic_c_order_10(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9)

#define sql_create_10(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10) \
  sql_create_complete_10(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9) \

#define sql_create_c_order_10(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10) \
  sql_create_complete_10(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10)

#define sql_create_c_names_10(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10) \
  sql_create_complete_10(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9)

// ---------------------------------------------------
//                  End Create 10
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 11
// ---------------------------------------------------
#define sql_create_basic_c_order_11(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_11(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9,\
    NAME##_##I10,\
    NAME##_##I11 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9 ,\
    N10 ,\
    N11  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(11, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(11, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(11, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(11, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(11, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(11, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.manip << obj.obj->I11; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8] << obj.delem;\
    s << obj.manip << obj.obj->names[9] << obj.delem;\
    s << obj.manip << obj.obj->names[10]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I11;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[9];\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[10];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_11(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11) \
  sql_create_basic_c_order_11(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10)

#define sql_create_11(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11) \
  sql_create_complete_11(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10) \

#define sql_create_c_order_11(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11) \
  sql_create_complete_11(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11)

#define sql_create_c_names_11(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11) \
  sql_create_complete_11(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10)

// ---------------------------------------------------
//                  End Create 11
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 12
// ---------------------------------------------------
#define sql_create_basic_c_order_12(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_12(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9,\
    NAME##_##I10,\
    NAME##_##I11,\
    NAME##_##I12 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9 ,\
    N10 ,\
    N11 ,\
    N12  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(12, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(12, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(12, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(12, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(12, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(12, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.manip << obj.obj->I12; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8] << obj.delem;\
    s << obj.manip << obj.obj->names[9] << obj.delem;\
    s << obj.manip << obj.obj->names[10] << obj.delem;\
    s << obj.manip << obj.obj->names[11]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I12;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[9];\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[10];\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[11];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_12(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12) \
  sql_create_basic_c_order_12(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11)

#define sql_create_12(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12) \
  sql_create_complete_12(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11) \

#define sql_create_c_order_12(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12) \
  sql_create_complete_12(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12)

#define sql_create_c_names_12(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12) \
  sql_create_complete_12(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11)

// ---------------------------------------------------
//                  End Create 12
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 13
// ---------------------------------------------------
#define sql_create_basic_c_order_13(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_13(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9,\
    NAME##_##I10,\
    NAME##_##I11,\
    NAME##_##I12,\
    NAME##_##I13 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9 ,\
    N10 ,\
    N11 ,\
    N12 ,\
    N13  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(13, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(13, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(13, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(13, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(13, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(13, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.manip << obj.obj->I13; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8] << obj.delem;\
    s << obj.manip << obj.obj->names[9] << obj.delem;\
    s << obj.manip << obj.obj->names[10] << obj.delem;\
    s << obj.manip << obj.obj->names[11] << obj.delem;\
    s << obj.manip << obj.obj->names[12]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I13;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[9];\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[10];\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[11];\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[12];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_13(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13) \
  sql_create_basic_c_order_13(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12)

#define sql_create_13(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13) \
  sql_create_complete_13(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12) \

#define sql_create_c_order_13(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13) \
  sql_create_complete_13(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13)

#define sql_create_c_names_13(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13) \
  sql_create_complete_13(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12)

// ---------------------------------------------------
//                  End Create 13
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 14
// ---------------------------------------------------
#define sql_create_basic_c_order_14(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_14(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9,\
    NAME##_##I10,\
    NAME##_##I11,\
    NAME##_##I12,\
    NAME##_##I13,\
    NAME##_##I14 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9 ,\
    N10 ,\
    N11 ,\
    N12 ,\
    N13 ,\
    N14  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(14, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(14, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(14, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(14, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(14, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(14, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.manip << obj.obj->I14; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8] << obj.delem;\
    s << obj.manip << obj.obj->names[9] << obj.delem;\
    s << obj.manip << obj.obj->names[10] << obj.delem;\
    s << obj.manip << obj.obj->names[11] << obj.delem;\
    s << obj.manip << obj.obj->names[12] << obj.delem;\
    s << obj.manip << obj.obj->names[13]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I14;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[9];\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[10];\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[11];\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[12];\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[13];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_14(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14) \
  sql_create_basic_c_order_14(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13)

#define sql_create_14(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14) \
  sql_create_complete_14(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13) \

#define sql_create_c_order_14(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14) \
  sql_create_complete_14(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14)

#define sql_create_c_names_14(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14) \
  sql_create_complete_14(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13)

// ---------------------------------------------------
//                  End Create 14
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 15
// ---------------------------------------------------
#define sql_create_basic_c_order_15(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_15(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9,\
    NAME##_##I10,\
    NAME##_##I11,\
    NAME##_##I12,\
    NAME##_##I13,\
    NAME##_##I14,\
    NAME##_##I15 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9 ,\
    N10 ,\
    N11 ,\
    N12 ,\
    N13 ,\
    N14 ,\
    N15  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(15, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(15, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(15, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(15, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(15, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(15, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.manip << obj.obj->I15; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8] << obj.delem;\
    s << obj.manip << obj.obj->names[9] << obj.delem;\
    s << obj.manip << obj.obj->names[10] << obj.delem;\
    s << obj.manip << obj.obj->names[11] << obj.delem;\
    s << obj.manip << obj.obj->names[12] << obj.delem;\
    s << obj.manip << obj.obj->names[13] << obj.delem;\
    s << obj.manip << obj.obj->names[14]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I15;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[9];\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[10];\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[11];\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[12];\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[13];\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[14];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_15(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15) \
  sql_create_basic_c_order_15(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14)

#define sql_create_15(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15) \
  sql_create_complete_15(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14) \

#define sql_create_c_order_15(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15) \
  sql_create_complete_15(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15)

#define sql_create_c_names_15(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15) \
  sql_create_complete_15(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14)

// ---------------------------------------------------
//                  End Create 15
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 16
// ---------------------------------------------------
#define sql_create_basic_c_order_16(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_16(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9,\
    NAME##_##I10,\
    NAME##_##I11,\
    NAME##_##I12,\
    NAME##_##I13,\
    NAME##_##I14,\
    NAME##_##I15,\
    NAME##_##I16 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9 ,\
    N10 ,\
    N11 ,\
    N12 ,\
    N13 ,\
    N14 ,\
    N15 ,\
    N16  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(16, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(16, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(16, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(16, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(16, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(16, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.manip << obj.obj->I16; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8] << obj.delem;\
    s << obj.manip << obj.obj->names[9] << obj.delem;\
    s << obj.manip << obj.obj->names[10] << obj.delem;\
    s << obj.manip << obj.obj->names[11] << obj.delem;\
    s << obj.manip << obj.obj->names[12] << obj.delem;\
    s << obj.manip << obj.obj->names[13] << obj.delem;\
    s << obj.manip << obj.obj->names[14] << obj.delem;\
    s << obj.manip << obj.obj->names[15]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I16;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[9];\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[10];\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[11];\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[12];\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[13];\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[14];\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[15];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, 0, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_16(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16) \
  sql_create_basic_c_order_16(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15)

#define sql_create_16(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16) \
  sql_create_complete_16(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15) \

#define sql_create_c_order_16(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16) \
  sql_create_complete_16(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16)

#define sql_create_c_names_16(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16) \
  sql_create_complete_16(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15)

// ---------------------------------------------------
//                  End Create 16
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 17
// ---------------------------------------------------
#define sql_create_basic_c_order_17(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_17(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9,\
    NAME##_##I10,\
    NAME##_##I11,\
    NAME##_##I12,\
    NAME##_##I13,\
    NAME##_##I14,\
    NAME##_##I15,\
    NAME##_##I16,\
    NAME##_##I17 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9 ,\
    N10 ,\
    N11 ,\
    N12 ,\
    N13 ,\
    N14 ,\
    N15 ,\
    N16 ,\
    N17  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(17, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(17, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(17, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(17, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(17, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(17, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.manip << obj.obj->I17; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8] << obj.delem;\
    s << obj.manip << obj.obj->names[9] << obj.delem;\
    s << obj.manip << obj.obj->names[10] << obj.delem;\
    s << obj.manip << obj.obj->names[11] << obj.delem;\
    s << obj.manip << obj.obj->names[12] << obj.delem;\
    s << obj.manip << obj.obj->names[13] << obj.delem;\
    s << obj.manip << obj.obj->names[14] << obj.delem;\
    s << obj.manip << obj.obj->names[15] << obj.delem;\
    s << obj.manip << obj.obj->names[16]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I17;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[9];\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[10];\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[11];\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[12];\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[13];\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[14];\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[15];\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[16];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, 0, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_17(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17) \
  sql_create_basic_c_order_17(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16)

#define sql_create_17(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17) \
  sql_create_complete_17(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16) \

#define sql_create_c_order_17(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17) \
  sql_create_complete_17(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17)

#define sql_create_c_names_17(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17) \
  sql_create_complete_17(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16)

// ---------------------------------------------------
//                  End Create 17
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 18
// ---------------------------------------------------
#define sql_create_basic_c_order_18(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17;\
    T18 I18; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
    s->I18 = static_cast<T18>(row[ O18 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_18(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17, T18, I18, N18, O18) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9,\
    NAME##_##I10,\
    NAME##_##I11,\
    NAME##_##I12,\
    NAME##_##I13,\
    NAME##_##I14,\
    NAME##_##I15,\
    NAME##_##I16,\
    NAME##_##I17,\
    NAME##_##I18 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17;\
    T18 I18; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9 ,\
    N10 ,\
    N11 ,\
    N12 ,\
    N13 ,\
    N14 ,\
    N15 ,\
    N16 ,\
    N17 ,\
    N18  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(18, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(18, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(18, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(18, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(18, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(18, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.manip << obj.obj->I17 << obj.delem;\
    s << obj.manip << obj.obj->I18; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8] << obj.delem;\
    s << obj.manip << obj.obj->names[9] << obj.delem;\
    s << obj.manip << obj.obj->names[10] << obj.delem;\
    s << obj.manip << obj.obj->names[11] << obj.delem;\
    s << obj.manip << obj.obj->names[12] << obj.delem;\
    s << obj.manip << obj.obj->names[13] << obj.delem;\
    s << obj.manip << obj.obj->names[14] << obj.delem;\
    s << obj.manip << obj.obj->names[15] << obj.delem;\
    s << obj.manip << obj.obj->names[16] << obj.delem;\
    s << obj.manip << obj.obj->names[17]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17 << obj.delem;\
    s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I17;\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I18;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[9];\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[10];\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[11];\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[12];\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[13];\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[14];\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[15];\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[16];\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[17];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
    s->I18 = static_cast<T18>(row[ O18 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, 0, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_18(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18) \
  sql_create_basic_c_order_18(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16, T18, I18, 17)

#define sql_create_18(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18) \
  sql_create_complete_18(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16, T18, I18, #I18, 17) \

#define sql_create_c_order_18(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18) \
  sql_create_complete_18(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17, T18, I18, #I18, O18)

#define sql_create_c_names_18(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17, T18, I18, N18) \
  sql_create_complete_18(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16, T18, I18, N18, 17)

// ---------------------------------------------------
//                  End Create 18
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 19
// ---------------------------------------------------
#define sql_create_basic_c_order_19(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17;\
    T18 I18;\
    T19 I19; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
    s->I18 = static_cast<T18>(row[ O18 ]);\
    s->I19 = static_cast<T19>(row[ O19 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, 0, 0, 0, 0, 0, 0 )

#define sql_create_complete_19(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17, T18, I18, N18, O18, T19, I19, N19, O19) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9,\
    NAME##_##I10,\
    NAME##_##I11,\
    NAME##_##I12,\
    NAME##_##I13,\
    NAME##_##I14,\
    NAME##_##I15,\
    NAME##_##I16,\
    NAME##_##I17,\
    NAME##_##I18,\
    NAME##_##I19 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17;\
    T18 I18;\
    T19 I19; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9 ,\
    N10 ,\
    N11 ,\
    N12 ,\
    N13 ,\
    N14 ,\
    N15 ,\
    N16 ,\
    N17 ,\
    N18 ,\
    N19  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(19, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(19, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(19, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(19, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(19, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(19, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.manip << obj.obj->I17 << obj.delem;\
    s << obj.manip << obj.obj->I18 << obj.delem;\
    s << obj.manip << obj.obj->I19; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8] << obj.delem;\
    s << obj.manip << obj.obj->names[9] << obj.delem;\
    s << obj.manip << obj.obj->names[10] << obj.delem;\
    s << obj.manip << obj.obj->names[11] << obj.delem;\
    s << obj.manip << obj.obj->names[12] << obj.delem;\
    s << obj.manip << obj.obj->names[13] << obj.delem;\
    s << obj.manip << obj.obj->names[14] << obj.delem;\
    s << obj.manip << obj.obj->names[15] << obj.delem;\
    s << obj.manip << obj.obj->names[16] << obj.delem;\
    s << obj.manip << obj.obj->names[17] << obj.delem;\
    s << obj.manip << obj.obj->names[18]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17 << obj.delem;\
    s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18 << obj.delem;\
    s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I17;\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I18;\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I19;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[9];\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[10];\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[11];\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[12];\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[13];\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[14];\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[15];\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[16];\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[17];\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[18];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18;\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
    s->I18 = static_cast<T18>(row[ O18 ]);\
    s->I19 = static_cast<T19>(row[ O19 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, 0, 0, 0, 0, 0, 0 )

#define sql_create_basic_19(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19) \
  sql_create_basic_c_order_19(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16, T18, I18, 17, T19, I19, 18)

#define sql_create_19(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19) \
  sql_create_complete_19(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16, T18, I18, #I18, 17, T19, I19, #I19, 18) \

#define sql_create_c_order_19(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19) \
  sql_create_complete_19(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17, T18, I18, #I18, O18, T19, I19, #I19, O19)

#define sql_create_c_names_19(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17, T18, I18, N18, T19, I19, N19) \
  sql_create_complete_19(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16, T18, I18, N18, 17, T19, I19, N19, 18)

// ---------------------------------------------------
//                  End Create 19
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 20
// ---------------------------------------------------
#define sql_create_basic_c_order_20(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17;\
    T18 I18;\
    T19 I19;\
    T20 I20; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
    s->I18 = static_cast<T18>(row[ O18 ]);\
    s->I19 = static_cast<T19>(row[ O19 ]);\
    s->I20 = static_cast<T20>(row[ O20 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, 0, 0, 0, 0, 0 )

#define sql_create_complete_20(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17, T18, I18, N18, O18, T19, I19, N19, O19, T20, I20, N20, O20) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9,\
    NAME##_##I10,\
    NAME##_##I11,\
    NAME##_##I12,\
    NAME##_##I13,\
    NAME##_##I14,\
    NAME##_##I15,\
    NAME##_##I16,\
    NAME##_##I17,\
    NAME##_##I18,\
    NAME##_##I19,\
    NAME##_##I20 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17;\
    T18 I18;\
    T19 I19;\
    T20 I20; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9 ,\
    N10 ,\
    N11 ,\
    N12 ,\
    N13 ,\
    N14 ,\
    N15 ,\
    N16 ,\
    N17 ,\
    N18 ,\
    N19 ,\
    N20  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(20, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(20, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(20, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(20, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(20, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(20, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.manip << obj.obj->I17 << obj.delem;\
    s << obj.manip << obj.obj->I18 << obj.delem;\
    s << obj.manip << obj.obj->I19 << obj.delem;\
    s << obj.manip << obj.obj->I20; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8] << obj.delem;\
    s << obj.manip << obj.obj->names[9] << obj.delem;\
    s << obj.manip << obj.obj->names[10] << obj.delem;\
    s << obj.manip << obj.obj->names[11] << obj.delem;\
    s << obj.manip << obj.obj->names[12] << obj.delem;\
    s << obj.manip << obj.obj->names[13] << obj.delem;\
    s << obj.manip << obj.obj->names[14] << obj.delem;\
    s << obj.manip << obj.obj->names[15] << obj.delem;\
    s << obj.manip << obj.obj->names[16] << obj.delem;\
    s << obj.manip << obj.obj->names[17] << obj.delem;\
    s << obj.manip << obj.obj->names[18] << obj.delem;\
    s << obj.manip << obj.obj->names[19]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17 << obj.delem;\
    s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18 << obj.delem;\
    s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19 << obj.delem;\
    s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I17;\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I18;\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I19;\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I20;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[9];\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[10];\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[11];\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[12];\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[13];\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[14];\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[15];\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[16];\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[17];\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[18];\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[19];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18;\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19;\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
    s->I18 = static_cast<T18>(row[ O18 ]);\
    s->I19 = static_cast<T19>(row[ O19 ]);\
    s->I20 = static_cast<T20>(row[ O20 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, 0, 0, 0, 0, 0 )

#define sql_create_basic_20(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20) \
  sql_create_basic_c_order_20(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16, T18, I18, 17, T19, I19, 18, T20, I20, 19)

#define sql_create_20(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20) \
  sql_create_complete_20(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16, T18, I18, #I18, 17, T19, I19, #I19, 18, T20, I20, #I20, 19) \

#define sql_create_c_order_20(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20) \
  sql_create_complete_20(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17, T18, I18, #I18, O18, T19, I19, #I19, O19, T20, I20, #I20, O20)

#define sql_create_c_names_20(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17, T18, I18, N18, T19, I19, N19, T20, I20, N20) \
  sql_create_complete_20(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16, T18, I18, N18, 17, T19, I19, N19, 18, T20, I20, N20, 19)

// ---------------------------------------------------
//                  End Create 20
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 21
// ---------------------------------------------------
#define sql_create_basic_c_order_21(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17;\
    T18 I18;\
    T19 I19;\
    T20 I20;\
    T21 I21; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, 0, 0, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
    s->I18 = static_cast<T18>(row[ O18 ]);\
    s->I19 = static_cast<T19>(row[ O19 ]);\
    s->I20 = static_cast<T20>(row[ O20 ]);\
    s->I21 = static_cast<T21>(row[ O21 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, 0, 0, 0, 0 )

#define sql_create_complete_21(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17, T18, I18, N18, O18, T19, I19, N19, O19, T20, I20, N20, O20, T21, I21, N21, O21) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9,\
    NAME##_##I10,\
    NAME##_##I11,\
    NAME##_##I12,\
    NAME##_##I13,\
    NAME##_##I14,\
    NAME##_##I15,\
    NAME##_##I16,\
    NAME##_##I17,\
    NAME##_##I18,\
    NAME##_##I19,\
    NAME##_##I20,\
    NAME##_##I21 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17;\
    T18 I18;\
    T19 I19;\
    T20 I20;\
    T21 I21; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, 0, 0, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, 0, 0, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9 ,\
    N10 ,\
    N11 ,\
    N12 ,\
    N13 ,\
    N14 ,\
    N15 ,\
    N16 ,\
    N17 ,\
    N18 ,\
    N19 ,\
    N20 ,\
    N21  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(21, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
    if (i21) (*include)[20]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(21, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
    if (i21 == NAME##_NULL) return;\
    (*include)[i21]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(21, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
    if (i21) (*include)[20]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(21, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
    if (i21 == NAME##_NULL) return;\
    (*include)[i21]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(21, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
    if (i21) (*include)[20]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(21, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
    if (i21 == NAME##_NULL) return;\
    (*include)[i21]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.manip << obj.obj->I17 << obj.delem;\
    s << obj.manip << obj.obj->I18 << obj.delem;\
    s << obj.manip << obj.obj->I19 << obj.delem;\
    s << obj.manip << obj.obj->I20 << obj.delem;\
    s << obj.manip << obj.obj->I21; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8] << obj.delem;\
    s << obj.manip << obj.obj->names[9] << obj.delem;\
    s << obj.manip << obj.obj->names[10] << obj.delem;\
    s << obj.manip << obj.obj->names[11] << obj.delem;\
    s << obj.manip << obj.obj->names[12] << obj.delem;\
    s << obj.manip << obj.obj->names[13] << obj.delem;\
    s << obj.manip << obj.obj->names[14] << obj.delem;\
    s << obj.manip << obj.obj->names[15] << obj.delem;\
    s << obj.manip << obj.obj->names[16] << obj.delem;\
    s << obj.manip << obj.obj->names[17] << obj.delem;\
    s << obj.manip << obj.obj->names[18] << obj.delem;\
    s << obj.manip << obj.obj->names[19] << obj.delem;\
    s << obj.manip << obj.obj->names[20]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17 << obj.delem;\
    s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18 << obj.delem;\
    s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19 << obj.delem;\
    s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20 << obj.delem;\
    s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I17;\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I18;\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I19;\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I20;\
      before = true; \
     } \
    if ((*obj.include)[20]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I21;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[9];\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[10];\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[11];\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[12];\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[13];\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[14];\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[15];\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[16];\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[17];\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[18];\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[19];\
      before = true; \
     } \
    if ((*obj.include)[20]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[20];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18;\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19;\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20;\
      before = true; \
     } \
    if ((*obj.include)[20]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
    s->I18 = static_cast<T18>(row[ O18 ]);\
    s->I19 = static_cast<T19>(row[ O19 ]);\
    s->I20 = static_cast<T20>(row[ O20 ]);\
    s->I21 = static_cast<T21>(row[ O21 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, 0, 0, 0, 0 )

#define sql_create_basic_21(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21) \
  sql_create_basic_c_order_21(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16, T18, I18, 17, T19, I19, 18, T20, I20, 19, T21, I21, 20)

#define sql_create_21(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21) \
  sql_create_complete_21(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16, T18, I18, #I18, 17, T19, I19, #I19, 18, T20, I20, #I20, 19, T21, I21, #I21, 20) \

#define sql_create_c_order_21(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21) \
  sql_create_complete_21(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17, T18, I18, #I18, O18, T19, I19, #I19, O19, T20, I20, #I20, O20, T21, I21, #I21, O21)

#define sql_create_c_names_21(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17, T18, I18, N18, T19, I19, N19, T20, I20, N20, T21, I21, N21) \
  sql_create_complete_21(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16, T18, I18, N18, 17, T19, I19, N19, 18, T20, I20, N20, 19, T21, I21, N21, 20)

// ---------------------------------------------------
//                  End Create 21
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 22
// ---------------------------------------------------
#define sql_create_basic_c_order_22(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21, T22, I22, O22)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17;\
    T18 I18;\
    T19 I19;\
    T20 I20;\
    T21 I21;\
    T22 I22; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, 0, 0, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
    s->I18 = static_cast<T18>(row[ O18 ]);\
    s->I19 = static_cast<T19>(row[ O19 ]);\
    s->I20 = static_cast<T20>(row[ O20 ]);\
    s->I21 = static_cast<T21>(row[ O21 ]);\
    s->I22 = static_cast<T22>(row[ O22 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22, 0, 0, 0 )

#define sql_create_complete_22(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17, T18, I18, N18, O18, T19, I19, N19, O19, T20, I20, N20, O20, T21, I21, N21, O21, T22, I22, N22, O22) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9,\
    NAME##_##I10,\
    NAME##_##I11,\
    NAME##_##I12,\
    NAME##_##I13,\
    NAME##_##I14,\
    NAME##_##I15,\
    NAME##_##I16,\
    NAME##_##I17,\
    NAME##_##I18,\
    NAME##_##I19,\
    NAME##_##I20,\
    NAME##_##I21,\
    NAME##_##I22 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17;\
    T18 I18;\
    T19 I19;\
    T20 I20;\
    T21 I21;\
    T22 I22; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, 0, 0, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, 0, 0, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9 ,\
    N10 ,\
    N11 ,\
    N12 ,\
    N13 ,\
    N14 ,\
    N15 ,\
    N16 ,\
    N17 ,\
    N18 ,\
    N19 ,\
    N20 ,\
    N21 ,\
    N22  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(22, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
    if (i21) (*include)[20]=true;\
    if (i22) (*include)[21]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(22, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
    if (i21 == NAME##_NULL) return;\
    (*include)[i21]=true;\
    if (i22 == NAME##_NULL) return;\
    (*include)[i22]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(22, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
    if (i21) (*include)[20]=true;\
    if (i22) (*include)[21]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(22, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
    if (i21 == NAME##_NULL) return;\
    (*include)[i21]=true;\
    if (i22 == NAME##_NULL) return;\
    (*include)[i22]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(22, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
    if (i21) (*include)[20]=true;\
    if (i22) (*include)[21]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(22, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
    if (i21 == NAME##_NULL) return;\
    (*include)[i21]=true;\
    if (i22 == NAME##_NULL) return;\
    (*include)[i22]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.manip << obj.obj->I17 << obj.delem;\
    s << obj.manip << obj.obj->I18 << obj.delem;\
    s << obj.manip << obj.obj->I19 << obj.delem;\
    s << obj.manip << obj.obj->I20 << obj.delem;\
    s << obj.manip << obj.obj->I21 << obj.delem;\
    s << obj.manip << obj.obj->I22; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8] << obj.delem;\
    s << obj.manip << obj.obj->names[9] << obj.delem;\
    s << obj.manip << obj.obj->names[10] << obj.delem;\
    s << obj.manip << obj.obj->names[11] << obj.delem;\
    s << obj.manip << obj.obj->names[12] << obj.delem;\
    s << obj.manip << obj.obj->names[13] << obj.delem;\
    s << obj.manip << obj.obj->names[14] << obj.delem;\
    s << obj.manip << obj.obj->names[15] << obj.delem;\
    s << obj.manip << obj.obj->names[16] << obj.delem;\
    s << obj.manip << obj.obj->names[17] << obj.delem;\
    s << obj.manip << obj.obj->names[18] << obj.delem;\
    s << obj.manip << obj.obj->names[19] << obj.delem;\
    s << obj.manip << obj.obj->names[20] << obj.delem;\
    s << obj.manip << obj.obj->names[21]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17 << obj.delem;\
    s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18 << obj.delem;\
    s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19 << obj.delem;\
    s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20 << obj.delem;\
    s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21 << obj.delem;\
    s << obj.obj->names[21] << obj.comp << obj.manip << obj.obj->I22; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I17;\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I18;\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I19;\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I20;\
      before = true; \
     } \
    if ((*obj.include)[20]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I21;\
      before = true; \
     } \
    if ((*obj.include)[21]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I22;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[9];\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[10];\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[11];\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[12];\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[13];\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[14];\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[15];\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[16];\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[17];\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[18];\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[19];\
      before = true; \
     } \
    if ((*obj.include)[20]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[20];\
      before = true; \
     } \
    if ((*obj.include)[21]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[21];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18;\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19;\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20;\
      before = true; \
     } \
    if ((*obj.include)[20]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21;\
      before = true; \
     } \
    if ((*obj.include)[21]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[21] << obj.comp << obj.manip << obj.obj->I22;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
    s->I18 = static_cast<T18>(row[ O18 ]);\
    s->I19 = static_cast<T19>(row[ O19 ]);\
    s->I20 = static_cast<T20>(row[ O20 ]);\
    s->I21 = static_cast<T21>(row[ O21 ]);\
    s->I22 = static_cast<T22>(row[ O22 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22, 0, 0, 0 )

#define sql_create_basic_22(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22) \
  sql_create_basic_c_order_22(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16, T18, I18, 17, T19, I19, 18, T20, I20, 19, T21, I21, 20, T22, I22, 21)

#define sql_create_22(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22) \
  sql_create_complete_22(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16, T18, I18, #I18, 17, T19, I19, #I19, 18, T20, I20, #I20, 19, T21, I21, #I21, 20, T22, I22, #I22, 21) \

#define sql_create_c_order_22(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21, T22, I22, O22) \
  sql_create_complete_22(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17, T18, I18, #I18, O18, T19, I19, #I19, O19, T20, I20, #I20, O20, T21, I21, #I21, O21, T22, I22, #I22, O22)

#define sql_create_c_names_22(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17, T18, I18, N18, T19, I19, N19, T20, I20, N20, T21, I21, N21, T22, I22, N22) \
  sql_create_complete_22(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16, T18, I18, N18, 17, T19, I19, N19, 18, T20, I20, N20, 19, T21, I21, N21, 20, T22, I22, N22, 21)

// ---------------------------------------------------
//                  End Create 22
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 23
// ---------------------------------------------------
#define sql_create_basic_c_order_23(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21, T22, I22, O22, T23, I23, O23)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17;\
    T18 I18;\
    T19 I19;\
    T20 I20;\
    T21 I21;\
    T22 I22;\
    T23 I23; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, 0, 0, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
    s->I18 = static_cast<T18>(row[ O18 ]);\
    s->I19 = static_cast<T19>(row[ O19 ]);\
    s->I20 = static_cast<T20>(row[ O20 ]);\
    s->I21 = static_cast<T21>(row[ O21 ]);\
    s->I22 = static_cast<T22>(row[ O22 ]);\
    s->I23 = static_cast<T23>(row[ O23 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22, I23, 0, 0 )

#define sql_create_complete_23(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17, T18, I18, N18, O18, T19, I19, N19, O19, T20, I20, N20, O20, T21, I21, N21, O21, T22, I22, N22, O22, T23, I23, N23, O23) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9,\
    NAME##_##I10,\
    NAME##_##I11,\
    NAME##_##I12,\
    NAME##_##I13,\
    NAME##_##I14,\
    NAME##_##I15,\
    NAME##_##I16,\
    NAME##_##I17,\
    NAME##_##I18,\
    NAME##_##I19,\
    NAME##_##I20,\
    NAME##_##I21,\
    NAME##_##I22,\
    NAME##_##I23 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17;\
    T18 I18;\
    T19 I19;\
    T20 I20;\
    T21 I21;\
    T22 I22;\
    T23 I23; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, 0, 0, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, 0, 0, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9 ,\
    N10 ,\
    N11 ,\
    N12 ,\
    N13 ,\
    N14 ,\
    N15 ,\
    N16 ,\
    N17 ,\
    N18 ,\
    N19 ,\
    N20 ,\
    N21 ,\
    N22 ,\
    N23  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(23, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
    if (i21) (*include)[20]=true;\
    if (i22) (*include)[21]=true;\
    if (i23) (*include)[22]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(23, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
    if (i21 == NAME##_NULL) return;\
    (*include)[i21]=true;\
    if (i22 == NAME##_NULL) return;\
    (*include)[i22]=true;\
    if (i23 == NAME##_NULL) return;\
    (*include)[i23]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(23, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
    if (i21) (*include)[20]=true;\
    if (i22) (*include)[21]=true;\
    if (i23) (*include)[22]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(23, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
    if (i21 == NAME##_NULL) return;\
    (*include)[i21]=true;\
    if (i22 == NAME##_NULL) return;\
    (*include)[i22]=true;\
    if (i23 == NAME##_NULL) return;\
    (*include)[i23]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(23, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
    if (i21) (*include)[20]=true;\
    if (i22) (*include)[21]=true;\
    if (i23) (*include)[22]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(23, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
    if (i21 == NAME##_NULL) return;\
    (*include)[i21]=true;\
    if (i22 == NAME##_NULL) return;\
    (*include)[i22]=true;\
    if (i23 == NAME##_NULL) return;\
    (*include)[i23]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.manip << obj.obj->I17 << obj.delem;\
    s << obj.manip << obj.obj->I18 << obj.delem;\
    s << obj.manip << obj.obj->I19 << obj.delem;\
    s << obj.manip << obj.obj->I20 << obj.delem;\
    s << obj.manip << obj.obj->I21 << obj.delem;\
    s << obj.manip << obj.obj->I22 << obj.delem;\
    s << obj.manip << obj.obj->I23; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8] << obj.delem;\
    s << obj.manip << obj.obj->names[9] << obj.delem;\
    s << obj.manip << obj.obj->names[10] << obj.delem;\
    s << obj.manip << obj.obj->names[11] << obj.delem;\
    s << obj.manip << obj.obj->names[12] << obj.delem;\
    s << obj.manip << obj.obj->names[13] << obj.delem;\
    s << obj.manip << obj.obj->names[14] << obj.delem;\
    s << obj.manip << obj.obj->names[15] << obj.delem;\
    s << obj.manip << obj.obj->names[16] << obj.delem;\
    s << obj.manip << obj.obj->names[17] << obj.delem;\
    s << obj.manip << obj.obj->names[18] << obj.delem;\
    s << obj.manip << obj.obj->names[19] << obj.delem;\
    s << obj.manip << obj.obj->names[20] << obj.delem;\
    s << obj.manip << obj.obj->names[21] << obj.delem;\
    s << obj.manip << obj.obj->names[22]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17 << obj.delem;\
    s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18 << obj.delem;\
    s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19 << obj.delem;\
    s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20 << obj.delem;\
    s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21 << obj.delem;\
    s << obj.obj->names[21] << obj.comp << obj.manip << obj.obj->I22 << obj.delem;\
    s << obj.obj->names[22] << obj.comp << obj.manip << obj.obj->I23; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I17;\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I18;\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I19;\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I20;\
      before = true; \
     } \
    if ((*obj.include)[20]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I21;\
      before = true; \
     } \
    if ((*obj.include)[21]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I22;\
      before = true; \
     } \
    if ((*obj.include)[22]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I23;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[9];\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[10];\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[11];\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[12];\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[13];\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[14];\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[15];\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[16];\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[17];\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[18];\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[19];\
      before = true; \
     } \
    if ((*obj.include)[20]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[20];\
      before = true; \
     } \
    if ((*obj.include)[21]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[21];\
      before = true; \
     } \
    if ((*obj.include)[22]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[22];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18;\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19;\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20;\
      before = true; \
     } \
    if ((*obj.include)[20]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21;\
      before = true; \
     } \
    if ((*obj.include)[21]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[21] << obj.comp << obj.manip << obj.obj->I22;\
      before = true; \
     } \
    if ((*obj.include)[22]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[22] << obj.comp << obj.manip << obj.obj->I23;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
    s->I18 = static_cast<T18>(row[ O18 ]);\
    s->I19 = static_cast<T19>(row[ O19 ]);\
    s->I20 = static_cast<T20>(row[ O20 ]);\
    s->I21 = static_cast<T21>(row[ O21 ]);\
    s->I22 = static_cast<T22>(row[ O22 ]);\
    s->I23 = static_cast<T23>(row[ O23 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22, I23, 0, 0 )

#define sql_create_basic_23(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23) \
  sql_create_basic_c_order_23(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16, T18, I18, 17, T19, I19, 18, T20, I20, 19, T21, I21, 20, T22, I22, 21, T23, I23, 22)

#define sql_create_23(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23) \
  sql_create_complete_23(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16, T18, I18, #I18, 17, T19, I19, #I19, 18, T20, I20, #I20, 19, T21, I21, #I21, 20, T22, I22, #I22, 21, T23, I23, #I23, 22) \

#define sql_create_c_order_23(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21, T22, I22, O22, T23, I23, O23) \
  sql_create_complete_23(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17, T18, I18, #I18, O18, T19, I19, #I19, O19, T20, I20, #I20, O20, T21, I21, #I21, O21, T22, I22, #I22, O22, T23, I23, #I23, O23)

#define sql_create_c_names_23(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17, T18, I18, N18, T19, I19, N19, T20, I20, N20, T21, I21, N21, T22, I22, N22, T23, I23, N23) \
  sql_create_complete_23(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16, T18, I18, N18, 17, T19, I19, N19, 18, T20, I20, N20, 19, T21, I21, N21, 20, T22, I22, N22, 21, T23, I23, N23, 22)

// ---------------------------------------------------
//                  End Create 23
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 24
// ---------------------------------------------------
#define sql_create_basic_c_order_24(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21, T22, I22, O22, T23, I23, O23, T24, I24, O24)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17;\
    T18 I18;\
    T19 I19;\
    T20 I20;\
    T21 I21;\
    T22 I22;\
    T23 I23;\
    T24 I24; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24, 0, 0)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
    s->I18 = static_cast<T18>(row[ O18 ]);\
    s->I19 = static_cast<T19>(row[ O19 ]);\
    s->I20 = static_cast<T20>(row[ O20 ]);\
    s->I21 = static_cast<T21>(row[ O21 ]);\
    s->I22 = static_cast<T22>(row[ O22 ]);\
    s->I23 = static_cast<T23>(row[ O23 ]);\
    s->I24 = static_cast<T24>(row[ O24 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22, I23, I24, 0 )

#define sql_create_complete_24(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17, T18, I18, N18, O18, T19, I19, N19, O19, T20, I20, N20, O20, T21, I21, N21, O21, T22, I22, N22, O22, T23, I23, N23, O23, T24, I24, N24, O24) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9,\
    NAME##_##I10,\
    NAME##_##I11,\
    NAME##_##I12,\
    NAME##_##I13,\
    NAME##_##I14,\
    NAME##_##I15,\
    NAME##_##I16,\
    NAME##_##I17,\
    NAME##_##I18,\
    NAME##_##I19,\
    NAME##_##I20,\
    NAME##_##I21,\
    NAME##_##I22,\
    NAME##_##I23,\
    NAME##_##I24 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17;\
    T18 I18;\
    T19 I19;\
    T20 I20;\
    T21 I21;\
    T22 I22;\
    T23 I23;\
    T24 I24; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24, 0, 0)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24, 0, 0)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9 ,\
    N10 ,\
    N11 ,\
    N12 ,\
    N13 ,\
    N14 ,\
    N15 ,\
    N16 ,\
    N17 ,\
    N18 ,\
    N19 ,\
    N20 ,\
    N21 ,\
    N22 ,\
    N23 ,\
    N24  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(24, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
    if (i21) (*include)[20]=true;\
    if (i22) (*include)[21]=true;\
    if (i23) (*include)[22]=true;\
    if (i24) (*include)[23]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(24, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
    if (i21 == NAME##_NULL) return;\
    (*include)[i21]=true;\
    if (i22 == NAME##_NULL) return;\
    (*include)[i22]=true;\
    if (i23 == NAME##_NULL) return;\
    (*include)[i23]=true;\
    if (i24 == NAME##_NULL) return;\
    (*include)[i24]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(24, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
    if (i21) (*include)[20]=true;\
    if (i22) (*include)[21]=true;\
    if (i23) (*include)[22]=true;\
    if (i24) (*include)[23]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(24, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
    if (i21 == NAME##_NULL) return;\
    (*include)[i21]=true;\
    if (i22 == NAME##_NULL) return;\
    (*include)[i22]=true;\
    if (i23 == NAME##_NULL) return;\
    (*include)[i23]=true;\
    if (i24 == NAME##_NULL) return;\
    (*include)[i24]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(24, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
    if (i21) (*include)[20]=true;\
    if (i22) (*include)[21]=true;\
    if (i23) (*include)[22]=true;\
    if (i24) (*include)[23]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(24, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
    if (i21 == NAME##_NULL) return;\
    (*include)[i21]=true;\
    if (i22 == NAME##_NULL) return;\
    (*include)[i22]=true;\
    if (i23 == NAME##_NULL) return;\
    (*include)[i23]=true;\
    if (i24 == NAME##_NULL) return;\
    (*include)[i24]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.manip << obj.obj->I17 << obj.delem;\
    s << obj.manip << obj.obj->I18 << obj.delem;\
    s << obj.manip << obj.obj->I19 << obj.delem;\
    s << obj.manip << obj.obj->I20 << obj.delem;\
    s << obj.manip << obj.obj->I21 << obj.delem;\
    s << obj.manip << obj.obj->I22 << obj.delem;\
    s << obj.manip << obj.obj->I23 << obj.delem;\
    s << obj.manip << obj.obj->I24; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8] << obj.delem;\
    s << obj.manip << obj.obj->names[9] << obj.delem;\
    s << obj.manip << obj.obj->names[10] << obj.delem;\
    s << obj.manip << obj.obj->names[11] << obj.delem;\
    s << obj.manip << obj.obj->names[12] << obj.delem;\
    s << obj.manip << obj.obj->names[13] << obj.delem;\
    s << obj.manip << obj.obj->names[14] << obj.delem;\
    s << obj.manip << obj.obj->names[15] << obj.delem;\
    s << obj.manip << obj.obj->names[16] << obj.delem;\
    s << obj.manip << obj.obj->names[17] << obj.delem;\
    s << obj.manip << obj.obj->names[18] << obj.delem;\
    s << obj.manip << obj.obj->names[19] << obj.delem;\
    s << obj.manip << obj.obj->names[20] << obj.delem;\
    s << obj.manip << obj.obj->names[21] << obj.delem;\
    s << obj.manip << obj.obj->names[22] << obj.delem;\
    s << obj.manip << obj.obj->names[23]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17 << obj.delem;\
    s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18 << obj.delem;\
    s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19 << obj.delem;\
    s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20 << obj.delem;\
    s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21 << obj.delem;\
    s << obj.obj->names[21] << obj.comp << obj.manip << obj.obj->I22 << obj.delem;\
    s << obj.obj->names[22] << obj.comp << obj.manip << obj.obj->I23 << obj.delem;\
    s << obj.obj->names[23] << obj.comp << obj.manip << obj.obj->I24; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I17;\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I18;\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I19;\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I20;\
      before = true; \
     } \
    if ((*obj.include)[20]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I21;\
      before = true; \
     } \
    if ((*obj.include)[21]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I22;\
      before = true; \
     } \
    if ((*obj.include)[22]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I23;\
      before = true; \
     } \
    if ((*obj.include)[23]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I24;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[9];\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[10];\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[11];\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[12];\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[13];\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[14];\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[15];\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[16];\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[17];\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[18];\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[19];\
      before = true; \
     } \
    if ((*obj.include)[20]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[20];\
      before = true; \
     } \
    if ((*obj.include)[21]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[21];\
      before = true; \
     } \
    if ((*obj.include)[22]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[22];\
      before = true; \
     } \
    if ((*obj.include)[23]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[23];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18;\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19;\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20;\
      before = true; \
     } \
    if ((*obj.include)[20]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21;\
      before = true; \
     } \
    if ((*obj.include)[21]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[21] << obj.comp << obj.manip << obj.obj->I22;\
      before = true; \
     } \
    if ((*obj.include)[22]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[22] << obj.comp << obj.manip << obj.obj->I23;\
      before = true; \
     } \
    if ((*obj.include)[23]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[23] << obj.comp << obj.manip << obj.obj->I24;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
    s->I18 = static_cast<T18>(row[ O18 ]);\
    s->I19 = static_cast<T19>(row[ O19 ]);\
    s->I20 = static_cast<T20>(row[ O20 ]);\
    s->I21 = static_cast<T21>(row[ O21 ]);\
    s->I22 = static_cast<T22>(row[ O22 ]);\
    s->I23 = static_cast<T23>(row[ O23 ]);\
    s->I24 = static_cast<T24>(row[ O24 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22, I23, I24, 0 )

#define sql_create_basic_24(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24) \
  sql_create_basic_c_order_24(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16, T18, I18, 17, T19, I19, 18, T20, I20, 19, T21, I21, 20, T22, I22, 21, T23, I23, 22, T24, I24, 23)

#define sql_create_24(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24) \
  sql_create_complete_24(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16, T18, I18, #I18, 17, T19, I19, #I19, 18, T20, I20, #I20, 19, T21, I21, #I21, 20, T22, I22, #I22, 21, T23, I23, #I23, 22, T24, I24, #I24, 23) \

#define sql_create_c_order_24(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21, T22, I22, O22, T23, I23, O23, T24, I24, O24) \
  sql_create_complete_24(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17, T18, I18, #I18, O18, T19, I19, #I19, O19, T20, I20, #I20, O20, T21, I21, #I21, O21, T22, I22, #I22, O22, T23, I23, #I23, O23, T24, I24, #I24, O24)

#define sql_create_c_names_24(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17, T18, I18, N18, T19, I19, N19, T20, I20, N20, T21, I21, N21, T22, I22, N22, T23, I23, N23, T24, I24, N24) \
  sql_create_complete_24(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16, T18, I18, N18, 17, T19, I19, N19, 18, T20, I20, N20, 19, T21, I21, N21, 20, T22, I22, N22, 21, T23, I23, N23, 22, T24, I24, N24, 23)

// ---------------------------------------------------
//                  End Create 24
// ---------------------------------------------------

// ---------------------------------------------------
//                  Begin Create 25
// ---------------------------------------------------
#define sql_create_basic_c_order_25(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21, T22, I22, O22, T23, I23, O23, T24, I24, O24, T25, I25, O25)\
  struct NAME; \
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17;\
    T18 I18;\
    T19 I19;\
    T20 I20;\
    T21 I21;\
    T22 I22;\
    T23 I23;\
    T24 I24;\
    T25 I25; \
    NAME () {} \
    NAME (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24, T25, I25)\
  }; \
  template <sql_dummy_type dummy> \
    void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
    s->I18 = static_cast<T18>(row[ O18 ]);\
    s->I19 = static_cast<T19>(row[ O19 ]);\
    s->I20 = static_cast<T20>(row[ O20 ]);\
    s->I21 = static_cast<T21>(row[ O21 ]);\
    s->I22 = static_cast<T22>(row[ O22 ]);\
    s->I23 = static_cast<T23>(row[ O23 ]);\
    s->I24 = static_cast<T24>(row[ O24 ]);\
    s->I25 = static_cast<T25>(row[ O25 ]); \
  } \
  inline NAME::NAME (const Row &row) \
    {populate_##NAME<sql_dummy>(this, row);} \
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22, I23, I24, I25 )

#define sql_create_complete_25(NAME, CMP, CONTR, T1, I1, N1, O1, T2, I2, N2, O2, T3, I3, N3, O3, T4, I4, N4, O4, T5, I5, N5, O5, T6, I6, N6, O6, T7, I7, N7, O7, T8, I8, N8, O8, T9, I9, N9, O9, T10, I10, N10, O10, T11, I11, N11, O11, T12, I12, N12, O12, T13, I13, N13, O13, T14, I14, N14, O14, T15, I15, N15, O15, T16, I16, N16, O16, T17, I17, N17, O17, T18, I18, N18, O18, T19, I19, N19, O19, T20, I20, N20, O20, T21, I21, N21, O21, T22, I22, N22, O22, T23, I23, N23, O23, T24, I24, N24, O24, T25, I25, N25, O25) \
  struct NAME; \
  enum NAME##_enum { \
    NAME##_##I1,\
    NAME##_##I2,\
    NAME##_##I3,\
    NAME##_##I4,\
    NAME##_##I5,\
    NAME##_##I6,\
    NAME##_##I7,\
    NAME##_##I8,\
    NAME##_##I9,\
    NAME##_##I10,\
    NAME##_##I11,\
    NAME##_##I12,\
    NAME##_##I13,\
    NAME##_##I14,\
    NAME##_##I15,\
    NAME##_##I16,\
    NAME##_##I17,\
    NAME##_##I18,\
    NAME##_##I19,\
    NAME##_##I20,\
    NAME##_##I21,\
    NAME##_##I22,\
    NAME##_##I23,\
    NAME##_##I24,\
    NAME##_##I25 \
    ,NAME##_NULL \
  }; \
  template <class Manip>\
  class NAME##_value_list { \
  /*friend std::ostream& operator << <> (std::ostream&, const NAME##_value_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_value_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_##field_list {\
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_field_list&); */\
  public: \
    const NAME *obj; \
    cchar *delem;\
    Manip manip;\
  public: \
    NAME##_field_list (const NAME *o, cchar *d, Manip m) \
      : obj(o), delem(d), manip(m) {} \
  };\
  template <class Manip>\
  class NAME##_equal_list { \
  /* friend std::ostream& operator << <> (std::ostream&, const NAME##_equal_list&); */\
  public: \
    const NAME *obj;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public: \
    NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) \
      : obj(o), delem(d), comp(c), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_value_list {\
  /* friend std::ostream& operator << <> (std::ostream&, \
  				  const NAME##_cus_value_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_value_list () {if (del_vector) delete include;} \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25);\
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25); \
    NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,std::vector<bool>* i)\
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
  template <class Manip>\
  class NAME##_cus_field_list { \
  /* friend std::ostream& operator << <> (std::ostream&, \
     				  const NAME##_cus_field_list<Manip>&); */\
  public:\
    const NAME *obj; \
    std::vector<bool> *include; \
    bool del_vector; \
    cchar *delem;\
    Manip manip;\
  public: \
    ~NAME##_cus_field_list () {if (del_vector) delete include;} \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25); \
    NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), manip(m) {}\
  };\
 template <class Manip>\
 class NAME##_cus_equal_list {\
 /* friend std::ostream& operator << <> (std::ostream&, \
				  const NAME##_cus_equal_list<Manip>&); */\
  public:\
    const NAME *obj;\
    std::vector<bool> *include;\
    bool del_vector;\
    cchar *delem;\
    cchar *comp;\
    Manip manip;\
  public:\
    ~NAME##_##cus_equal_list () {if (del_vector) delete include;}\
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25); \
    NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, std::vector<bool> *i) \
      : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}\
  };\
  template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);\
  struct NAME { \
    T1 I1;\
    T2 I2;\
    T3 I3;\
    T4 I4;\
    T5 I5;\
    T6 I6;\
    T7 I7;\
    T8 I8;\
    T9 I9;\
    T10 I10;\
    T11 I11;\
    T12 I12;\
    T13 I13;\
    T14 I14;\
    T15 I15;\
    T16 I16;\
    T17 I17;\
    T18 I18;\
    T19 I19;\
    T20 I20;\
    T21 I21;\
    T22 I22;\
    T23 I23;\
    T24 I24;\
    T25 I25; \
    NAME () {} \
    NAME (const Row &row);\
    void set (const Row &row);\
    sql_compare_define_##CMP(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24, T25, I25)\
    sql_construct_define_##CONTR(NAME, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24, T25, I25)\
    static const char *names[];\
    static const char *_table;\
    static const char *& table() {return _table;}\
    NAME##_value_list<quote_type0> value_list() const {\
      return value_list(",", quote);}\
    NAME##_value_list<quote_type0> value_list(cchar *d) const {\
      return value_list(d, quote);}\
    template <class Manip> \
    NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; \
    NAME##_field_list<do_nothing_type0> field_list() const {\
      return field_list(",", do_nothing);}\
    NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {\
      return field_list(d, do_nothing);}\
    template <class Manip>\
    NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; \
    NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", \
                                              cchar *c = " = ") const{\
      return equal_list(d, c, quote);}\
    template <class Manip>\
    NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; \
    /* cus_data */\
    NAME##_cus_value_list<quote_type0> value_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const {\
      return value_list(",", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(std::vector<bool> *i) const {\
      return value_list(",", quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {\
      return value_list(",", quote, sc);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const {\
      return value_list(d, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						std::vector<bool> *i) const {\
      return value_list(d, quote, i);\
    }\
    NAME##_cus_value_list<quote_type0> value_list(cchar *d, \
						sql_cmp_type sc) const {\
      return value_list(d, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,\
					  NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, \
					  sql_cmp_type sc) const;\
    /* cus field */\
    NAME##_cus_field_list<do_nothing_type0> field_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const {\
      return field_list(",", do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(std::vector<bool> *i) const {\
      return field_list(",", do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const\
    {\
      return field_list(",", do_nothing, sc);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						       bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,\
						       NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const {\
      return field_list(d, do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						std::vector<bool> *i) const {\
      return field_list(d, do_nothing, i);\
    }\
    NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, \
						sql_cmp_type sc) const {\
      return field_list(d, do_nothing, sc);\
    }\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,\
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, \
					    sql_cmp_type sc) const;\
    /* cus equal */\
    NAME##_cus_equal_list<quote_type0> equal_list(bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const {\
      return equal_list(",", " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(std::vector<bool> *i) const {\
      return equal_list(",", " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {\
      return equal_list(",", " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const {\
      return equal_list(d, " = ", quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						std::vector<bool> *i) const {\
      return equal_list(d, " = ", quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, \
						sql_cmp_type sc) const {\
      return equal_list(d, " = ", quote, sc);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
                                                NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const {\
      return equal_list(d, c, quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						std::vector<bool> *i) const {\
      return equal_list(d, c, quote, i);\
    }\
    NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,\
						sql_cmp_type sc) const {\
      return equal_list(d, c, quote, sc);\
    }\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false, bool i9 = false, bool i10 = false, bool i11 = false, bool i12 = false, bool i13 = false, bool i14 = false, bool i15 = false, bool i16 = false, bool i17 = false, bool i18 = false, bool i19 = false, bool i20 = false, bool i21 = false, bool i22 = false, bool i23 = false, bool i24 = false, bool i25 = false) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    NAME##_enum i1, NAME##_enum i2 = NAME##_NULL, NAME##_enum i3 = NAME##_NULL, NAME##_enum i4 = NAME##_NULL, NAME##_enum i5 = NAME##_NULL, NAME##_enum i6 = NAME##_NULL, NAME##_enum i7 = NAME##_NULL, NAME##_enum i8 = NAME##_NULL, NAME##_enum i9 = NAME##_NULL, NAME##_enum i10 = NAME##_NULL, NAME##_enum i11 = NAME##_NULL, NAME##_enum i12 = NAME##_NULL, NAME##_enum i13 = NAME##_NULL, NAME##_enum i14 = NAME##_NULL, NAME##_enum i15 = NAME##_NULL, NAME##_enum i16 = NAME##_NULL, NAME##_enum i17 = NAME##_NULL, NAME##_enum i18 = NAME##_NULL, NAME##_enum i19 = NAME##_NULL, NAME##_enum i20 = NAME##_NULL, NAME##_enum i21 = NAME##_NULL, NAME##_enum i22 = NAME##_NULL, NAME##_enum i23 = NAME##_NULL, NAME##_enum i24 = NAME##_NULL, NAME##_enum i25 = NAME##_NULL) const; \
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    std::vector<bool> *i) const;\
    template <class Manip>\
    NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, \
					    sql_cmp_type sc) const;\
  }; \
  const char *NAME::names[] = { \
    N1 ,\
    N2 ,\
    N3 ,\
    N4 ,\
    N5 ,\
    N6 ,\
    N7 ,\
    N8 ,\
    N9 ,\
    N10 ,\
    N11 ,\
    N12 ,\
    N13 ,\
    N14 ,\
    N15 ,\
    N16 ,\
    N17 ,\
    N18 ,\
    N19 ,\
    N20 ,\
    N21 ,\
    N22 ,\
    N23 ,\
    N24 ,\
    N25  \
  }; \
  const char *NAME::_table = #NAME ;  \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25) \
  { \
    delem = d;\
    manip = m;\
    del_vector = true;\
    obj = o; \
    include = new std::vector<bool>(25, false);\
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
    if (i21) (*include)[20]=true;\
    if (i22) (*include)[21]=true;\
    if (i23) (*include)[22]=true;\
    if (i24) (*include)[23]=true;\
    if (i25) (*include)[24]=true;\
  } \
  template <class Manip>\
  NAME##_cus_value_list<Manip>::NAME##_cus_value_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(25, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
    if (i21 == NAME##_NULL) return;\
    (*include)[i21]=true;\
    if (i22 == NAME##_NULL) return;\
    (*include)[i22]=true;\
    if (i23 == NAME##_NULL) return;\
    (*include)[i23]=true;\
    if (i24 == NAME##_NULL) return;\
    (*include)[i24]=true;\
    if (i25 == NAME##_NULL) return;\
    (*include)[i25]=true;\
  }\
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25) {\
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(25, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
    if (i21) (*include)[20]=true;\
    if (i22) (*include)[21]=true;\
    if (i23) (*include)[22]=true;\
    if (i24) (*include)[23]=true;\
    if (i25) (*include)[24]=true;\
  } \
  template <class Manip>\
  NAME##_cus_field_list<Manip>::NAME##_cus_field_list\
  (const NAME *o, cchar *d, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25) { \
    delem = d;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(25, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
    if (i21 == NAME##_NULL) return;\
    (*include)[i21]=true;\
    if (i22 == NAME##_NULL) return;\
    (*include)[i22]=true;\
    if (i23 == NAME##_NULL) return;\
    (*include)[i23]=true;\
    if (i24 == NAME##_NULL) return;\
    (*include)[i24]=true;\
    if (i25 == NAME##_NULL) return;\
    (*include)[i25]=true;\
  }\
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(25, false); \
    if (i1) (*include)[0]=true;\
    if (i2) (*include)[1]=true;\
    if (i3) (*include)[2]=true;\
    if (i4) (*include)[3]=true;\
    if (i5) (*include)[4]=true;\
    if (i6) (*include)[5]=true;\
    if (i7) (*include)[6]=true;\
    if (i8) (*include)[7]=true;\
    if (i9) (*include)[8]=true;\
    if (i10) (*include)[9]=true;\
    if (i11) (*include)[10]=true;\
    if (i12) (*include)[11]=true;\
    if (i13) (*include)[12]=true;\
    if (i14) (*include)[13]=true;\
    if (i15) (*include)[14]=true;\
    if (i16) (*include)[15]=true;\
    if (i17) (*include)[16]=true;\
    if (i18) (*include)[17]=true;\
    if (i19) (*include)[18]=true;\
    if (i20) (*include)[19]=true;\
    if (i21) (*include)[20]=true;\
    if (i22) (*include)[21]=true;\
    if (i23) (*include)[22]=true;\
    if (i24) (*include)[23]=true;\
    if (i25) (*include)[24]=true;\
  } \
  template <class Manip>\
  NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list\
  (const NAME *o, cchar *d, cchar *c, Manip m, NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25) { \
    delem = d;\
    comp = c;\
    manip = m;\
    del_vector = true; \
    obj = o; \
    include = new std::vector<bool>(25, false); \
    if (i1 == NAME##_NULL) return;\
    (*include)[i1]=true;\
    if (i2 == NAME##_NULL) return;\
    (*include)[i2]=true;\
    if (i3 == NAME##_NULL) return;\
    (*include)[i3]=true;\
    if (i4 == NAME##_NULL) return;\
    (*include)[i4]=true;\
    if (i5 == NAME##_NULL) return;\
    (*include)[i5]=true;\
    if (i6 == NAME##_NULL) return;\
    (*include)[i6]=true;\
    if (i7 == NAME##_NULL) return;\
    (*include)[i7]=true;\
    if (i8 == NAME##_NULL) return;\
    (*include)[i8]=true;\
    if (i9 == NAME##_NULL) return;\
    (*include)[i9]=true;\
    if (i10 == NAME##_NULL) return;\
    (*include)[i10]=true;\
    if (i11 == NAME##_NULL) return;\
    (*include)[i11]=true;\
    if (i12 == NAME##_NULL) return;\
    (*include)[i12]=true;\
    if (i13 == NAME##_NULL) return;\
    (*include)[i13]=true;\
    if (i14 == NAME##_NULL) return;\
    (*include)[i14]=true;\
    if (i15 == NAME##_NULL) return;\
    (*include)[i15]=true;\
    if (i16 == NAME##_NULL) return;\
    (*include)[i16]=true;\
    if (i17 == NAME##_NULL) return;\
    (*include)[i17]=true;\
    if (i18 == NAME##_NULL) return;\
    (*include)[i18]=true;\
    if (i19 == NAME##_NULL) return;\
    (*include)[i19]=true;\
    if (i20 == NAME##_NULL) return;\
    (*include)[i20]=true;\
    if (i21 == NAME##_NULL) return;\
    (*include)[i21]=true;\
    if (i22 == NAME##_NULL) return;\
    (*include)[i22]=true;\
    if (i23 == NAME##_NULL) return;\
    (*include)[i23]=true;\
    if (i24 == NAME##_NULL) return;\
    (*include)[i24]=true;\
    if (i25 == NAME##_NULL) return;\
    (*include)[i25]=true;\
  }\
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_value_list<Manip>& obj) { \
    s << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.manip << obj.obj->I17 << obj.delem;\
    s << obj.manip << obj.obj->I18 << obj.delem;\
    s << obj.manip << obj.obj->I19 << obj.delem;\
    s << obj.manip << obj.obj->I20 << obj.delem;\
    s << obj.manip << obj.obj->I21 << obj.delem;\
    s << obj.manip << obj.obj->I22 << obj.delem;\
    s << obj.manip << obj.obj->I23 << obj.delem;\
    s << obj.manip << obj.obj->I24 << obj.delem;\
    s << obj.manip << obj.obj->I25; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_field_list<Manip>& obj) { \
    s << obj.manip << obj.obj->names[0] << obj.delem;\
    s << obj.manip << obj.obj->names[1] << obj.delem;\
    s << obj.manip << obj.obj->names[2] << obj.delem;\
    s << obj.manip << obj.obj->names[3] << obj.delem;\
    s << obj.manip << obj.obj->names[4] << obj.delem;\
    s << obj.manip << obj.obj->names[5] << obj.delem;\
    s << obj.manip << obj.obj->names[6] << obj.delem;\
    s << obj.manip << obj.obj->names[7] << obj.delem;\
    s << obj.manip << obj.obj->names[8] << obj.delem;\
    s << obj.manip << obj.obj->names[9] << obj.delem;\
    s << obj.manip << obj.obj->names[10] << obj.delem;\
    s << obj.manip << obj.obj->names[11] << obj.delem;\
    s << obj.manip << obj.obj->names[12] << obj.delem;\
    s << obj.manip << obj.obj->names[13] << obj.delem;\
    s << obj.manip << obj.obj->names[14] << obj.delem;\
    s << obj.manip << obj.obj->names[15] << obj.delem;\
    s << obj.manip << obj.obj->names[16] << obj.delem;\
    s << obj.manip << obj.obj->names[17] << obj.delem;\
    s << obj.manip << obj.obj->names[18] << obj.delem;\
    s << obj.manip << obj.obj->names[19] << obj.delem;\
    s << obj.manip << obj.obj->names[20] << obj.delem;\
    s << obj.manip << obj.obj->names[21] << obj.delem;\
    s << obj.manip << obj.obj->names[22] << obj.delem;\
    s << obj.manip << obj.obj->names[23] << obj.delem;\
    s << obj.manip << obj.obj->names[24]; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_equal_list<Manip>& obj) { \
    s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1 << obj.delem;\
    s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2 << obj.delem;\
    s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3 << obj.delem;\
    s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4 << obj.delem;\
    s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5 << obj.delem;\
    s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6 << obj.delem;\
    s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7 << obj.delem;\
    s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8 << obj.delem;\
    s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9 << obj.delem;\
    s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10 << obj.delem;\
    s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11 << obj.delem;\
    s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12 << obj.delem;\
    s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13 << obj.delem;\
    s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14 << obj.delem;\
    s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15 << obj.delem;\
    s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16 << obj.delem;\
    s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17 << obj.delem;\
    s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18 << obj.delem;\
    s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19 << obj.delem;\
    s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20 << obj.delem;\
    s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21 << obj.delem;\
    s << obj.obj->names[21] << obj.comp << obj.manip << obj.obj->I22 << obj.delem;\
    s << obj.obj->names[22] << obj.comp << obj.manip << obj.obj->I23 << obj.delem;\
    s << obj.obj->names[23] << obj.comp << obj.manip << obj.obj->I24 << obj.delem;\
    s << obj.obj->names[24] << obj.comp << obj.manip << obj.obj->I25; \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_value_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I17;\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I18;\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I19;\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I20;\
      before = true; \
     } \
    if ((*obj.include)[20]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I21;\
      before = true; \
     } \
    if ((*obj.include)[21]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I22;\
      before = true; \
     } \
    if ((*obj.include)[22]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I23;\
      before = true; \
     } \
    if ((*obj.include)[23]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I24;\
      before = true; \
     } \
    if ((*obj.include)[24]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->I25;\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_field_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.manip << obj.obj->names[0];\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[1];\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[2];\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[3];\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[4];\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[5];\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[6];\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[7];\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[8];\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[9];\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[10];\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[11];\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[12];\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[13];\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[14];\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[15];\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[16];\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[17];\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[18];\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[19];\
      before = true; \
     } \
    if ((*obj.include)[20]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[20];\
      before = true; \
     } \
    if ((*obj.include)[21]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[21];\
      before = true; \
     } \
    if ((*obj.include)[22]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[22];\
      before = true; \
     } \
    if ((*obj.include)[23]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[23];\
      before = true; \
     } \
    if ((*obj.include)[24]) { \
      if (before) s << obj.delem;\
      s << obj.manip << obj.obj->names[24];\
     } \
    return s; \
  } \
  template <class Manip>\
  std::ostream& operator << (std::ostream& s, const NAME##_cus_equal_list<Manip>& obj) { \
    bool before = false; \
    if ((*obj.include)[0]) { \
      s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->I1;\
      before = true; \
     } \
    if ((*obj.include)[1]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->I2;\
      before = true; \
     } \
    if ((*obj.include)[2]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->I3;\
      before = true; \
     } \
    if ((*obj.include)[3]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->I4;\
      before = true; \
     } \
    if ((*obj.include)[4]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->I5;\
      before = true; \
     } \
    if ((*obj.include)[5]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->I6;\
      before = true; \
     } \
    if ((*obj.include)[6]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->I7;\
      before = true; \
     } \
    if ((*obj.include)[7]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->I8;\
      before = true; \
     } \
    if ((*obj.include)[8]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->I9;\
      before = true; \
     } \
    if ((*obj.include)[9]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[9] << obj.comp << obj.manip << obj.obj->I10;\
      before = true; \
     } \
    if ((*obj.include)[10]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[10] << obj.comp << obj.manip << obj.obj->I11;\
      before = true; \
     } \
    if ((*obj.include)[11]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[11] << obj.comp << obj.manip << obj.obj->I12;\
      before = true; \
     } \
    if ((*obj.include)[12]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[12] << obj.comp << obj.manip << obj.obj->I13;\
      before = true; \
     } \
    if ((*obj.include)[13]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[13] << obj.comp << obj.manip << obj.obj->I14;\
      before = true; \
     } \
    if ((*obj.include)[14]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[14] << obj.comp << obj.manip << obj.obj->I15;\
      before = true; \
     } \
    if ((*obj.include)[15]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[15] << obj.comp << obj.manip << obj.obj->I16;\
      before = true; \
     } \
    if ((*obj.include)[16]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[16] << obj.comp << obj.manip << obj.obj->I17;\
      before = true; \
     } \
    if ((*obj.include)[17]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[17] << obj.comp << obj.manip << obj.obj->I18;\
      before = true; \
     } \
    if ((*obj.include)[18]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[18] << obj.comp << obj.manip << obj.obj->I19;\
      before = true; \
     } \
    if ((*obj.include)[19]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[19] << obj.comp << obj.manip << obj.obj->I20;\
      before = true; \
     } \
    if ((*obj.include)[20]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[20] << obj.comp << obj.manip << obj.obj->I21;\
      before = true; \
     } \
    if ((*obj.include)[21]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[21] << obj.comp << obj.manip << obj.obj->I22;\
      before = true; \
     } \
    if ((*obj.include)[22]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[22] << obj.comp << obj.manip << obj.obj->I23;\
      before = true; \
     } \
    if ((*obj.include)[23]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[23] << obj.comp << obj.manip << obj.obj->I24;\
      before = true; \
     } \
    if ((*obj.include)[24]) { \
      if (before) s << obj.delem;\
      s << obj.obj->names[24] << obj.comp << obj.manip << obj.obj->I25;\
     } \
    return s; \
  } \
  template <class Manip>\
  inline NAME##_value_list<Manip> NAME::value_list(cchar *d, Manip m) const { \
    return NAME##_value_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_field_list<Manip> NAME::field_list(cchar *d, Manip m) const { \
    return NAME##_field_list<Manip> (this, d, m); \
  } \
  template <class Manip>\
  inline NAME##_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m) const { \
    return NAME##_equal_list<Manip> (this, d, c, m); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25) const { \
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
							 bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9, bool i10, bool i11, bool i12, bool i13, bool i14, bool i15, bool i16, bool i17, bool i18, bool i19, bool i20, bool i21, bool i22, bool i23, bool i24, bool i25) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
						       NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25) const { \
    return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25); \
  } \
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25); \
  } \
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m, \
							 NAME##_enum i1, NAME##_enum i2, NAME##_enum i3, NAME##_enum i4, NAME##_enum i5, NAME##_enum i6, NAME##_enum i7, NAME##_enum i8, NAME##_enum i9, NAME##_enum i10, NAME##_enum i11, NAME##_enum i12, NAME##_enum i13, NAME##_enum i14, NAME##_enum i15, NAME##_enum i16, NAME##_enum i17, NAME##_enum i18, NAME##_enum i19, NAME##_enum i20, NAME##_enum i21, NAME##_enum i22, NAME##_enum i23, NAME##_enum i24, NAME##_enum i25) const { \
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25); \
  } \
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> NAME::value_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_value_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> NAME::field_list(cchar *d, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_field_list<Manip> (this, d, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> NAME::equal_list(cchar *d, cchar *c, Manip m,\
                                                       std::vector<bool> *i) const {\
    return NAME##_cus_equal_list<Manip> (this, d, c, m, i);\
  }\
  template <class Manip>\
  inline NAME##_cus_value_list<Manip> \
  NAME::value_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, value, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_field_list<Manip> \
  NAME::field_list(cchar *d, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_def_##CMP (NAME, field, NUM);\
  }\
  template <class Manip>\
  inline NAME##_cus_equal_list<Manip> \
  NAME::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type /*sc*/) const {\
    sql_compare_type_defe_##CMP (NAME, equal, NUM);\
  }\
  template <sql_dummy_type dummy> \
  void populate_##NAME (NAME *s, const Row &row) { \
    s->I1 = static_cast<T1>(row[ O1 ]);\
    s->I2 = static_cast<T2>(row[ O2 ]);\
    s->I3 = static_cast<T3>(row[ O3 ]);\
    s->I4 = static_cast<T4>(row[ O4 ]);\
    s->I5 = static_cast<T5>(row[ O5 ]);\
    s->I6 = static_cast<T6>(row[ O6 ]);\
    s->I7 = static_cast<T7>(row[ O7 ]);\
    s->I8 = static_cast<T8>(row[ O8 ]);\
    s->I9 = static_cast<T9>(row[ O9 ]);\
    s->I10 = static_cast<T10>(row[ O10 ]);\
    s->I11 = static_cast<T11>(row[ O11 ]);\
    s->I12 = static_cast<T12>(row[ O12 ]);\
    s->I13 = static_cast<T13>(row[ O13 ]);\
    s->I14 = static_cast<T14>(row[ O14 ]);\
    s->I15 = static_cast<T15>(row[ O15 ]);\
    s->I16 = static_cast<T16>(row[ O16 ]);\
    s->I17 = static_cast<T17>(row[ O17 ]);\
    s->I18 = static_cast<T18>(row[ O18 ]);\
    s->I19 = static_cast<T19>(row[ O19 ]);\
    s->I20 = static_cast<T20>(row[ O20 ]);\
    s->I21 = static_cast<T21>(row[ O21 ]);\
    s->I22 = static_cast<T22>(row[ O22 ]);\
    s->I23 = static_cast<T23>(row[ O23 ]);\
    s->I24 = static_cast<T24>(row[ O24 ]);\
    s->I25 = static_cast<T25>(row[ O25 ]);\
  } \
  inline NAME::NAME (const Row &row) \
                                        {populate_##NAME<sql_dummy>(this, row);}\
  inline void NAME::set (const Row &row)\
                                        {populate_##NAME<sql_dummy>(this, row);}\
  sql_COMPARE__##CMP(NAME, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22, I23, I24, I25 )

#define sql_create_basic_25(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24, T25, I25) \
  sql_create_basic_c_order_25(NAME, CMP, CONTR, T1, I1, 0, T2, I2, 1, T3, I3, 2, T4, I4, 3, T5, I5, 4, T6, I6, 5, T7, I7, 6, T8, I8, 7, T9, I9, 8, T10, I10, 9, T11, I11, 10, T12, I12, 11, T13, I13, 12, T14, I14, 13, T15, I15, 14, T16, I16, 15, T17, I17, 16, T18, I18, 17, T19, I19, 18, T20, I20, 19, T21, I21, 20, T22, I22, 21, T23, I23, 22, T24, I24, 23, T25, I25, 24)

#define sql_create_25(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8, T9, I9, T10, I10, T11, I11, T12, I12, T13, I13, T14, I14, T15, I15, T16, I16, T17, I17, T18, I18, T19, I19, T20, I20, T21, I21, T22, I22, T23, I23, T24, I24, T25, I25) \
  sql_create_complete_25(NAME, CMP, CONTR, T1, I1, #I1, 0, T2, I2, #I2, 1, T3, I3, #I3, 2, T4, I4, #I4, 3, T5, I5, #I5, 4, T6, I6, #I6, 5, T7, I7, #I7, 6, T8, I8, #I8, 7, T9, I9, #I9, 8, T10, I10, #I10, 9, T11, I11, #I11, 10, T12, I12, #I12, 11, T13, I13, #I13, 12, T14, I14, #I14, 13, T15, I15, #I15, 14, T16, I16, #I16, 15, T17, I17, #I17, 16, T18, I18, #I18, 17, T19, I19, #I19, 18, T20, I20, #I20, 19, T21, I21, #I21, 20, T22, I22, #I22, 21, T23, I23, #I23, 22, T24, I24, #I24, 23, T25, I25, #I25, 24) \

#define sql_create_c_order_25(NAME, CMP, CONTR, T1, I1, O1, T2, I2, O2, T3, I3, O3, T4, I4, O4, T5, I5, O5, T6, I6, O6, T7, I7, O7, T8, I8, O8, T9, I9, O9, T10, I10, O10, T11, I11, O11, T12, I12, O12, T13, I13, O13, T14, I14, O14, T15, I15, O15, T16, I16, O16, T17, I17, O17, T18, I18, O18, T19, I19, O19, T20, I20, O20, T21, I21, O21, T22, I22, O22, T23, I23, O23, T24, I24, O24, T25, I25, O25) \
  sql_create_complete_25(NAME, CMP, CONTR, T1, I1, #I1, O1, T2, I2, #I2, O2, T3, I3, #I3, O3, T4, I4, #I4, O4, T5, I5, #I5, O5, T6, I6, #I6, O6, T7, I7, #I7, O7, T8, I8, #I8, O8, T9, I9, #I9, O9, T10, I10, #I10, O10, T11, I11, #I11, O11, T12, I12, #I12, O12, T13, I13, #I13, O13, T14, I14, #I14, O14, T15, I15, #I15, O15, T16, I16, #I16, O16, T17, I17, #I17, O17, T18, I18, #I18, O18, T19, I19, #I19, O19, T20, I20, #I20, O20, T21, I21, #I21, O21, T22, I22, #I22, O22, T23, I23, #I23, O23, T24, I24, #I24, O24, T25, I25, #I25, O25)

#define sql_create_c_names_25(NAME, CMP, CONTR, T1, I1, N1, T2, I2, N2, T3, I3, N3, T4, I4, N4, T5, I5, N5, T6, I6, N6, T7, I7, N7, T8, I8, N8, T9, I9, N9, T10, I10, N10, T11, I11, N11, T12, I12, N12, T13, I13, N13, T14, I14, N14, T15, I15, N15, T16, I16, N16, T17, I17, N17, T18, I18, N18, T19, I19, N19, T20, I20, N20, T21, I21, N21, T22, I22, N22, T23, I23, N23, T24, I24, N24, T25, I25, N25) \
  sql_create_complete_25(NAME, CMP, CONTR, T1, I1, N1, 0, T2, I2, N2, 1, T3, I3, N3, 2, T4, I4, N4, 3, T5, I5, N5, 4, T6, I6, N6, 5, T7, I7, N7, 6, T8, I8, N8, 7, T9, I9, N9, 8, T10, I10, N10, 9, T11, I11, N11, 10, T12, I12, N12, 11, T13, I13, N13, 12, T14, I14, N14, 13, T15, I15, N15, 14, T16, I16, N16, 15, T17, I17, N17, 16, T18, I18, N18, 17, T19, I19, N19, 18, T20, I20, N20, 19, T21, I21, N21, 20, T22, I22, N22, 21, T23, I23, N23, 22, T24, I24, N24, 23, T25, I25, N25, 24)

// ---------------------------------------------------
//                  End Create 25
// ---------------------------------------------------

