custom-macros.hh
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:1348k
源码类别:

模拟服务器

开发平台:

C/C++

  1.   } 
  2.   template <class Manip>
  3.   NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list
  4.   (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) { 
  5.     delem = d;
  6.     comp = c;
  7.     manip = m;
  8.     del_vector = true; 
  9.     obj = o; 
  10.     include = new vector<bool>(6, false); 
  11.     if (i1 == NAME##_NULL) return;
  12.     (*include)[i1]=true;
  13.     if (i2 == NAME##_NULL) return;
  14.     (*include)[i2]=true;
  15.     if (i3 == NAME##_NULL) return;
  16.     (*include)[i3]=true;
  17.     if (i4 == NAME##_NULL) return;
  18.     (*include)[i4]=true;
  19.     if (i5 == NAME##_NULL) return;
  20.     (*include)[i5]=true;
  21.     if (i6 == NAME##_NULL) return;
  22.     (*include)[i6]=true;
  23.   }
  24.   template <class Manip>
  25.   ostream& operator << (ostream& s, const NAME##_value_list<Manip>& obj) { 
  26.     s << obj.manip << obj.obj->##I1 << obj.delem;
  27.     s << obj.manip << obj.obj->##I2 << obj.delem;
  28.     s << obj.manip << obj.obj->##I3 << obj.delem;
  29.     s << obj.manip << obj.obj->##I4 << obj.delem;
  30.     s << obj.manip << obj.obj->##I5 << obj.delem;
  31.     s << obj.manip << obj.obj->##I6; 
  32.     return s; 
  33.   } 
  34.   template <class Manip>
  35.   ostream& operator << (ostream& s, const NAME##_field_list<Manip>& obj) { 
  36.     s << obj.manip << obj.obj->names[0] << obj.delem;
  37.     s << obj.manip << obj.obj->names[1] << obj.delem;
  38.     s << obj.manip << obj.obj->names[2] << obj.delem;
  39.     s << obj.manip << obj.obj->names[3] << obj.delem;
  40.     s << obj.manip << obj.obj->names[4] << obj.delem;
  41.     s << obj.manip << obj.obj->names[5]; 
  42.     return s; 
  43.   } 
  44.   template <class Manip>
  45.   ostream& operator << (ostream& s, const NAME##_equal_list<Manip>& obj) { 
  46.     s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->##I1 << obj.delem;
  47.     s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->##I2 << obj.delem;
  48.     s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->##I3 << obj.delem;
  49.     s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->##I4 << obj.delem;
  50.     s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->##I5 << obj.delem;
  51.     s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->##I6; 
  52.     return s; 
  53.   } 
  54.   template <class Manip>
  55.   ostream& operator << (ostream& s, const NAME##_cus_value_list<Manip>& obj) { 
  56.     bool before = false; 
  57.     if ((*obj.include)[0]) { 
  58.       s << obj.manip << obj.obj->##I1;
  59.       before = true; 
  60.      } 
  61.     if ((*obj.include)[1]) { 
  62.       if (before) s << obj.delem;
  63.       s << obj.manip << obj.obj->##I2;
  64.       before = true; 
  65.      } 
  66.     if ((*obj.include)[2]) { 
  67.       if (before) s << obj.delem;
  68.       s << obj.manip << obj.obj->##I3;
  69.       before = true; 
  70.      } 
  71.     if ((*obj.include)[3]) { 
  72.       if (before) s << obj.delem;
  73.       s << obj.manip << obj.obj->##I4;
  74.       before = true; 
  75.      } 
  76.     if ((*obj.include)[4]) { 
  77.       if (before) s << obj.delem;
  78.       s << obj.manip << obj.obj->##I5;
  79.       before = true; 
  80.      } 
  81.     if ((*obj.include)[5]) { 
  82.       if (before) s << obj.delem;
  83.       s << obj.manip << obj.obj->##I6;
  84.      } 
  85.     return s; 
  86.   } 
  87.   template <class Manip>
  88.   ostream& operator << (ostream& s, const NAME##_cus_field_list<Manip>& obj) { 
  89.     bool before = false; 
  90.     if ((*obj.include)[0]) { 
  91.       s << obj.manip << obj.obj->names[0];
  92.       before = true; 
  93.      } 
  94.     if ((*obj.include)[1]) { 
  95.       if (before) s << obj.delem;
  96.       s << obj.manip << obj.obj->names[1];
  97.       before = true; 
  98.      } 
  99.     if ((*obj.include)[2]) { 
  100.       if (before) s << obj.delem;
  101.       s << obj.manip << obj.obj->names[2];
  102.       before = true; 
  103.      } 
  104.     if ((*obj.include)[3]) { 
  105.       if (before) s << obj.delem;
  106.       s << obj.manip << obj.obj->names[3];
  107.       before = true; 
  108.      } 
  109.     if ((*obj.include)[4]) { 
  110.       if (before) s << obj.delem;
  111.       s << obj.manip << obj.obj->names[4];
  112.       before = true; 
  113.      } 
  114.     if ((*obj.include)[5]) { 
  115.       if (before) s << obj.delem;
  116.       s << obj.manip << obj.obj->names[5];
  117.      } 
  118.     return s; 
  119.   } 
  120.   template <class Manip>
  121.   ostream& operator << (ostream& s, const NAME##_cus_equal_list<Manip>& obj) { 
  122.     bool before = false; 
  123.     if ((*obj.include)[0]) { 
  124.       s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->##I1;
  125.       before = true; 
  126.      } 
  127.     if ((*obj.include)[1]) { 
  128.       if (before) s << obj.delem;
  129.       s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->##I2;
  130.       before = true; 
  131.      } 
  132.     if ((*obj.include)[2]) { 
  133.       if (before) s << obj.delem;
  134.       s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->##I3;
  135.       before = true; 
  136.      } 
  137.     if ((*obj.include)[3]) { 
  138.       if (before) s << obj.delem;
  139.       s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->##I4;
  140.       before = true; 
  141.      } 
  142.     if ((*obj.include)[4]) { 
  143.       if (before) s << obj.delem;
  144.       s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->##I5;
  145.       before = true; 
  146.      } 
  147.     if ((*obj.include)[5]) { 
  148.       if (before) s << obj.delem;
  149.       s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->##I6;
  150.      } 
  151.     return s; 
  152.   } 
  153.   template <class Manip>
  154.   inline NAME##_value_list<Manip> NAME##::value_list(cchar *d, Manip m) const { 
  155.     return NAME##_value_list<Manip> (this, d, m); 
  156.   } 
  157.   template <class Manip>
  158.   inline NAME##_field_list<Manip> NAME##::field_list(cchar *d, Manip m) const { 
  159.     return NAME##_field_list<Manip> (this, d, m); 
  160.   } 
  161.   template <class Manip>
  162.   inline NAME##_equal_list<Manip> NAME##::equal_list(cchar *d, cchar *c, Manip m) const { 
  163.     return NAME##_equal_list<Manip> (this, d, c, m); 
  164.   } 
  165.   template <class Manip>
  166.   inline NAME##_cus_value_list<Manip> NAME##::value_list(cchar *d, Manip m,
  167.        bool i1, bool i2, bool i3, bool i4, bool i5, bool i6) const {
  168.     return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6); 
  169.   } 
  170.   template <class Manip>
  171.   inline NAME##_cus_field_list<Manip> NAME##::field_list(cchar *d, Manip m,
  172.  bool i1, bool i2, bool i3, bool i4, bool i5, bool i6) const { 
  173.     return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6); 
  174.   } 
  175.   template <class Manip>
  176.   inline NAME##_cus_equal_list<Manip> NAME##::equal_list(cchar *d, cchar *c, Manip m,
  177.  bool i1, bool i2, bool i3, bool i4, bool i5, bool i6) const { 
  178.     return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6); 
  179.   } 
  180.   template <class Manip>
  181.   inline NAME##_cus_value_list<Manip> NAME##::value_list(cchar *d, Manip m,
  182.        ##NAME##_enum i1, ##NAME##_enum i2, ##NAME##_enum i3, ##NAME##_enum i4, ##NAME##_enum i5, ##NAME##_enum i6) const { 
  183.     return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6); 
  184.   } 
  185.   template <class Manip>
  186.   inline NAME##_cus_field_list<Manip> NAME##::field_list(cchar *d, Manip m,
  187.  ##NAME##_enum i1, ##NAME##_enum i2, ##NAME##_enum i3, ##NAME##_enum i4, ##NAME##_enum i5, ##NAME##_enum i6) const {
  188.     return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6); 
  189.   } 
  190.   template <class Manip>
  191.   inline NAME##_cus_equal_list<Manip> NAME##::equal_list(cchar *d, cchar *c, Manip m, 
  192.  ##NAME##_enum i1, ##NAME##_enum i2, ##NAME##_enum i3, ##NAME##_enum i4, ##NAME##_enum i5, ##NAME##_enum i6) const { 
  193.     return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6); 
  194.   } 
  195.   template <class Manip>
  196.   inline NAME##_cus_value_list<Manip> 
  197.   NAME##::value_list(cchar *d, Manip m, sql_cmp_type sc) const {
  198.     sql_compare_type_def_##CMP (NAME, value, NUM);
  199.   }
  200.   template <class Manip>
  201.   inline NAME##_cus_field_list<Manip> 
  202.   NAME##::field_list(cchar *d, Manip m, sql_cmp_type sc) const {
  203.     sql_compare_type_def_##CMP (NAME, field, NUM);
  204.   }
  205.   template <class Manip>
  206.   inline NAME##_cus_equal_list<Manip> 
  207.   NAME##::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type sc) const {
  208.     sql_compare_type_defe_##CMP (NAME, equal, NUM);
  209.   }
  210.   template <sql_dummy_type dummy> 
  211.   void populate_##NAME (NAME *s, const MysqlRow &row) { 
  212.     s->##I1 = row[ O1 ];
  213.     s->##I2 = row[ O2 ];
  214.     s->##I3 = row[ O3 ];
  215.     s->##I4 = row[ O4 ];
  216.     s->##I5 = row[ O5 ];
  217.     s->##I6 = row[ O6 ];
  218.   } 
  219.   inline NAME##::##NAME (const MysqlRow &row) 
  220.                                         {populate_##NAME##<sql_dummy>(this, row);}
  221.   inline void NAME##::set (const MysqlRow &row)
  222.                                         {populate_##NAME##<sql_dummy>(this, row);}
  223.   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, 0 )
  224. #define sql_create_basic_6(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6) 
  225.   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)
  226. #define sql_create_6(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6) 
  227.   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) 
  228. #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) 
  229.   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)
  230. #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) 
  231.   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)
  232. // ---------------------------------------------------
  233. //                  End Create 6
  234. // ---------------------------------------------------
  235. // ---------------------------------------------------
  236. //                  Begin Create 7
  237. // ---------------------------------------------------
  238. #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)
  239.   struct NAME; 
  240.   template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);
  241.   struct NAME { 
  242.     T1 I1;
  243.     T2 I2;
  244.     T3 I3;
  245.     T4 I4;
  246.     T5 I5;
  247.     T6 I6;
  248.     T7 I7; 
  249.     NAME () {} 
  250.     NAME (const MysqlRow &row);
  251.     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, 0, 0)
  252.   }; 
  253.   template <sql_dummy_type dummy> 
  254.     void populate_##NAME (NAME *s, const MysqlRow &row) { 
  255.     s->##I1 = row[ O1 ];
  256.     s->##I2 = row[ O2 ];
  257.     s->##I3 = row[ O3 ];
  258.     s->##I4 = row[ O4 ];
  259.     s->##I5 = row[ O5 ];
  260.     s->##I6 = row[ O6 ];
  261.     s->##I7 = row[ O7 ]; 
  262.   } 
  263.   inline NAME##::##NAME (const MysqlRow &row) 
  264.     {populate_##NAME##<sql_dummy>(this, row);} 
  265.   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, 0 )
  266. #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) 
  267.   struct NAME; 
  268.   enum NAME##_enum { 
  269.     NAME##_##I1,
  270.     NAME##_##I2,
  271.     NAME##_##I3,
  272.     NAME##_##I4,
  273.     NAME##_##I5,
  274.     NAME##_##I6,
  275.     NAME##_##I7 
  276.     ,NAME##_NULL 
  277.   }; 
  278.   template <class Manip>
  279.   class NAME##_value_list { 
  280.   /*friend ostream& operator << <> (ostream&, const NAME##_value_list&); */
  281.   public: 
  282.     const NAME *obj;
  283.     cchar *delem;
  284.     Manip manip;
  285.   public: 
  286.     NAME##_value_list (const NAME *o, cchar *d, Manip m) 
  287.       : obj(o), delem(d), manip(m) {} 
  288.   };
  289.   template <class Manip>
  290.   class NAME##_##field_list {
  291.   /* friend ostream& operator << <> (ostream&, const NAME##_field_list&); */
  292.   public: 
  293.     const NAME *obj; 
  294.     cchar *delem;
  295.     Manip manip;
  296.   public: 
  297.     NAME##_field_list (const NAME *o, cchar *d, Manip m) 
  298.       : obj(o), delem(d), manip(m) {} 
  299.   };
  300.   template <class Manip>
  301.   class NAME##_equal_list { 
  302.   /* friend ostream& operator << <> (ostream&, const NAME##_equal_list&); */
  303.   public: 
  304.     const NAME *obj;
  305.     cchar *delem;
  306.     cchar *comp;
  307.     Manip manip;
  308.   public: 
  309.     NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) 
  310.       : obj(o), delem(d), comp(c), manip(m) {}
  311.   };
  312.   template <class Manip>
  313.   class NAME##_cus_value_list {
  314.   /* friend ostream& operator << <> (ostream&, 
  315.      const NAME##_cus_value_list<Manip>&); */
  316.   public:
  317.     const NAME *obj;
  318.     cchar *delem;
  319.     Manip manip;
  320.     vector<bool> *include;
  321.     bool del_vector;
  322.   public: 
  323.     ~##NAME##_cus_value_list () {if (del_vector) delete include;} 
  324.     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);
  325.     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); 
  326.     NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,vector<bool>)
  327.       : obj(o), include(i), del_vector(false), delem(d), manip(m) {}
  328.   };
  329.   template <class Manip>
  330.   class NAME##_cus_field_list { 
  331.   /* friend ostream& operator << <> (ostream&, 
  332.         const NAME##_cus_field_list<Manip>&); */
  333.   public:
  334.     const NAME *obj; 
  335.     cchar *delem;
  336.     Manip manip;
  337.     vector<bool> *include; 
  338.     bool del_vector; 
  339.   public: 
  340.     ~##NAME##_cus_field_list () {if (del_vector) delete include;} 
  341.     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); 
  342.     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); 
  343.     NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, vector<bool> *i) 
  344.       : obj(o), include(i), del_vector(false), delem(d), manip(m) {}
  345.   };
  346.  template <class Manip>
  347.  class NAME##_cus_equal_list {
  348.  /* friend ostream& operator << <> (ostream&, 
  349.   const NAME##_cus_equal_list<Manip>&); */
  350.   public:
  351.     const NAME *obj;
  352.     vector<bool> *include;
  353.     bool del_vector;
  354.     cchar *delem;
  355.     cchar *comp;
  356.     Manip manip;
  357.   public:
  358.     ~##NAME##_##cus_equal_list () {if (del_vector) delete include;}
  359.     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); 
  360.     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); 
  361.     NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, vector<bool> *i) 
  362.       : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}
  363.   };
  364.   template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);
  365.   struct NAME { 
  366.     T1 I1;
  367.     T2 I2;
  368.     T3 I3;
  369.     T4 I4;
  370.     T5 I5;
  371.     T6 I6;
  372.     T7 I7; 
  373.     NAME () {} 
  374.     NAME (const MysqlRow &row);
  375.     void set (const MysqlRow &row);
  376.     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, 0, 0)
  377.     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, 0, 0)
  378.     static char *names[];
  379.     static char *_table;
  380.     static char *& table() {return _table;}
  381.     /* cus_data */
  382.     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 {
  383.       return value_list(",", mysql_quote, i1, i2, i3, i4, i5, i6, i7);
  384.     }
  385.     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 {
  386.       return value_list(",", mysql_quote, i1, i2, i3, i4, i5, i6, i7);
  387.     }
  388.     NAME##_cus_value_list<quote_type0> value_list(vector<bool> *i) const {
  389.       return value_list(",", mysql_quote, i);
  390.     }
  391.     NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {
  392.       return value_list(",", mysql_quote, sc);
  393.     }
  394.     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 {
  395.       return value_list(d, mysql_quote, i1, i2, i3, i4, i5, i6, i7);
  396.     }
  397.     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 {
  398.       return value_list(d, mysql_quote, i1, i2, i3, i4, i5, i6, i7);
  399.     }
  400.     NAME##_cus_value_list<quote_type0> value_list(cchar *d, 
  401. vector<bool> *i) const {
  402.       return value_list(d, mysql_quote, i);
  403.     }
  404.     NAME##_cus_value_list<quote_type0> value_list(cchar *d, 
  405. sql_cmp_type sc) const {
  406.       return value_list(d, mysql_quote, sc);
  407.     }
  408.     template <class Manip>
  409.     NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,
  410.   bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const; 
  411.     template <class Manip>
  412.     NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,
  413.   ##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; 
  414.     template <class Manip>
  415.     NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, 
  416.   vector<bool> *i) const;
  417.     template <class Manip>
  418.     NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, 
  419.   sql_cmp_type sc) const;
  420.     /* cus field */
  421.     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 {
  422.       return field_list(",", mysql_do_nothing, i1, i2, i3, i4, i5, i6, i7);
  423.     }
  424.     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 {
  425.       return field_list(",", mysql_do_nothing, i1, i2, i3, i4, i5, i6, i7);
  426.     }
  427.     NAME##_cus_field_list<do_nothing_type0> field_list(vector<bool> *i) const {
  428.       return field_list(",", mysql_do_nothing, i);
  429.     }
  430.     NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const
  431.     {
  432.       return field_list(",", mysql_do_nothing, sc);
  433.     }
  434.     NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, 
  435.        bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const {
  436.       return field_list(d, mysql_do_nothing, i1, i2, i3, i4, i5, i6, i7);
  437.     }
  438.     NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,
  439.        ##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 {
  440.       return field_list(d, mysql_do_nothing, i1, i2, i3, i4, i5, i6, i7);
  441.     }
  442.     NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, 
  443. vector<bool> *i) const {
  444.       return field_list(d, mysql_do_nothing, i);
  445.     }
  446.     NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, 
  447. sql_cmp_type sc) const {
  448.       return field_list(d, mysql_do_nothing, sc);
  449.     }
  450.     template <class Manip>
  451.     NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,
  452.     bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const; 
  453.     template <class Manip>
  454.     NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,
  455.     ##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; 
  456.     template <class Manip>
  457.     NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,
  458.     vector<bool> *i) const;
  459.     template <class Manip>
  460.     NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, 
  461.     sql_cmp_type sc) const;
  462.     /* cus equal */
  463.     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 {
  464.       return equal_list(",", " = ", mysql_quote, i1, i2, i3, i4, i5, i6, i7);
  465.     }
  466.     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 {
  467.       return equal_list(",", " = ", mysql_quote, i1, i2, i3, i4, i5, i6, i7);
  468.     }
  469.     NAME##_cus_equal_list<quote_type0> equal_list(vector<bool> *i) const {
  470.       return equal_list(",", " = ", mysql_quote, i);
  471.     }
  472.     NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {
  473.       return equal_list(",", " = ", mysql_quote, sc);
  474.     }
  475.     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 {
  476.       return equal_list(d, " = ", mysql_quote, i1, i2, i3, i4, i5, i6, i7);
  477.     }
  478.     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 {
  479.       return equal_list(d, " = ", mysql_quote, i1, i2, i3, i4, i5, i6, i7);
  480.     }
  481.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, 
  482. vector<bool> *i) const {
  483.       return equal_list(d, " = ", mysql_quote, i);
  484.     }
  485.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, 
  486. sql_cmp_type sc) const {
  487.       return equal_list(d, " = ", mysql_quote, sc);
  488.     }
  489.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,
  490.                                                 bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const {
  491.       return equal_list(d, c, mysql_quote, i1, i2, i3, i4, i5, i6, i7);
  492.     }
  493.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,
  494.                                                 ##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 {
  495.       return equal_list(d, c, mysql_quote, i1, i2, i3, i4, i5, i6, i7);
  496.     }
  497.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,
  498. vector<bool> *i) const {
  499.       return equal_list(d, c, mysql_quote, i);
  500.     }
  501.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,
  502. sql_cmp_type sc) const {
  503.       return equal_list(d, c, mysql_quote, sc);
  504.     }
  505.     template <class Manip>
  506.     NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, 
  507.     bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false) const; 
  508.     template <class Manip>
  509.     NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, 
  510.     ##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; 
  511.     template <class Manip>
  512.     NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, 
  513.     vector<bool> *i) const;
  514.     template <class Manip>
  515.     NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, 
  516.     sql_cmp_type sc) const;
  517.     NAME##_value_list<quote_type0> value_list() const {
  518.       return value_list(",", mysql_quote);}
  519.     NAME##_value_list<quote_type0> value_list(cchar *d) const {
  520.       return value_list(d, mysql_quote);}
  521.     template <class Manip> 
  522.     NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; 
  523.     NAME##_field_list<do_nothing_type0> field_list() const {
  524.       return field_list(",", mysql_do_nothing);}
  525.     NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {
  526.       return field_list(d, mysql_do_nothing);}
  527.     template <class Manip>
  528.     NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; 
  529.     NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", 
  530.                                               cchar *c = " = ") const{
  531.       return equal_list(d, c, mysql_quote);}
  532.     template <class Manip>
  533.     NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; 
  534.   }; 
  535.   char *##NAME##::names[] = { 
  536.     N1 ,
  537.     N2 ,
  538.     N3 ,
  539.     N4 ,
  540.     N5 ,
  541.     N6 ,
  542.     N7  
  543.   }; 
  544.   char *##NAME##::_table = #NAME ;  
  545.   template <class Manip>
  546.   NAME##_cus_value_list<Manip>::NAME##_cus_value_list
  547.   (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) 
  548.   { 
  549.     delem = d;
  550.     manip = m;
  551.     del_vector = true;
  552.     obj = o; 
  553.     include = new vector<bool>(7, false);
  554.     if (i1) (*include)[0]=true;
  555.     if (i2) (*include)[1]=true;
  556.     if (i3) (*include)[2]=true;
  557.     if (i4) (*include)[3]=true;
  558.     if (i5) (*include)[4]=true;
  559.     if (i6) (*include)[5]=true;
  560.     if (i7) (*include)[6]=true;
  561.   } 
  562.   template <class Manip>
  563.   NAME##_cus_value_list<Manip>::NAME##_cus_value_list
  564.   (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) { 
  565.     delem = d;
  566.     manip = m;
  567.     del_vector = true; 
  568.     obj = o; 
  569.     include = new vector<bool>(7, false); 
  570.     if (i1 == NAME##_NULL) return;
  571.     (*include)[i1]=true;
  572.     if (i2 == NAME##_NULL) return;
  573.     (*include)[i2]=true;
  574.     if (i3 == NAME##_NULL) return;
  575.     (*include)[i3]=true;
  576.     if (i4 == NAME##_NULL) return;
  577.     (*include)[i4]=true;
  578.     if (i5 == NAME##_NULL) return;
  579.     (*include)[i5]=true;
  580.     if (i6 == NAME##_NULL) return;
  581.     (*include)[i6]=true;
  582.     if (i7 == NAME##_NULL) return;
  583.     (*include)[i7]=true;
  584.   }
  585.   template <class Manip>
  586.   NAME##_cus_field_list<Manip>::NAME##_cus_field_list
  587.   (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) {
  588.     delem = d;
  589.     manip = m;
  590.     del_vector = true; 
  591.     obj = o; 
  592.     include = new vector<bool>(7, false); 
  593.     if (i1) (*include)[0]=true;
  594.     if (i2) (*include)[1]=true;
  595.     if (i3) (*include)[2]=true;
  596.     if (i4) (*include)[3]=true;
  597.     if (i5) (*include)[4]=true;
  598.     if (i6) (*include)[5]=true;
  599.     if (i7) (*include)[6]=true;
  600.   } 
  601.   template <class Manip>
  602.   NAME##_cus_field_list<Manip>::NAME##_cus_field_list
  603.   (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) { 
  604.     delem = d;
  605.     manip = m;
  606.     del_vector = true; 
  607.     obj = o; 
  608.     include = new vector<bool>(7, false); 
  609.     if (i1 == NAME##_NULL) return;
  610.     (*include)[i1]=true;
  611.     if (i2 == NAME##_NULL) return;
  612.     (*include)[i2]=true;
  613.     if (i3 == NAME##_NULL) return;
  614.     (*include)[i3]=true;
  615.     if (i4 == NAME##_NULL) return;
  616.     (*include)[i4]=true;
  617.     if (i5 == NAME##_NULL) return;
  618.     (*include)[i5]=true;
  619.     if (i6 == NAME##_NULL) return;
  620.     (*include)[i6]=true;
  621.     if (i7 == NAME##_NULL) return;
  622.     (*include)[i7]=true;
  623.   }
  624.   template <class Manip>
  625.   NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list
  626.   (const NAME *o, cchar *d, cchar *c, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) { 
  627.     delem = d;
  628.     comp = c;
  629.     manip = m;
  630.     del_vector = true; 
  631.     obj = o; 
  632.     include = new vector<bool>(7, false); 
  633.     if (i1) (*include)[0]=true;
  634.     if (i2) (*include)[1]=true;
  635.     if (i3) (*include)[2]=true;
  636.     if (i4) (*include)[3]=true;
  637.     if (i5) (*include)[4]=true;
  638.     if (i6) (*include)[5]=true;
  639.     if (i7) (*include)[6]=true;
  640.   } 
  641.   template <class Manip>
  642.   NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list
  643.   (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) { 
  644.     delem = d;
  645.     comp = c;
  646.     manip = m;
  647.     del_vector = true; 
  648.     obj = o; 
  649.     include = new vector<bool>(7, false); 
  650.     if (i1 == NAME##_NULL) return;
  651.     (*include)[i1]=true;
  652.     if (i2 == NAME##_NULL) return;
  653.     (*include)[i2]=true;
  654.     if (i3 == NAME##_NULL) return;
  655.     (*include)[i3]=true;
  656.     if (i4 == NAME##_NULL) return;
  657.     (*include)[i4]=true;
  658.     if (i5 == NAME##_NULL) return;
  659.     (*include)[i5]=true;
  660.     if (i6 == NAME##_NULL) return;
  661.     (*include)[i6]=true;
  662.     if (i7 == NAME##_NULL) return;
  663.     (*include)[i7]=true;
  664.   }
  665.   template <class Manip>
  666.   ostream& operator << (ostream& s, const NAME##_value_list<Manip>& obj) { 
  667.     s << obj.manip << obj.obj->##I1 << obj.delem;
  668.     s << obj.manip << obj.obj->##I2 << obj.delem;
  669.     s << obj.manip << obj.obj->##I3 << obj.delem;
  670.     s << obj.manip << obj.obj->##I4 << obj.delem;
  671.     s << obj.manip << obj.obj->##I5 << obj.delem;
  672.     s << obj.manip << obj.obj->##I6 << obj.delem;
  673.     s << obj.manip << obj.obj->##I7; 
  674.     return s; 
  675.   } 
  676.   template <class Manip>
  677.   ostream& operator << (ostream& s, const NAME##_field_list<Manip>& obj) { 
  678.     s << obj.manip << obj.obj->names[0] << obj.delem;
  679.     s << obj.manip << obj.obj->names[1] << obj.delem;
  680.     s << obj.manip << obj.obj->names[2] << obj.delem;
  681.     s << obj.manip << obj.obj->names[3] << obj.delem;
  682.     s << obj.manip << obj.obj->names[4] << obj.delem;
  683.     s << obj.manip << obj.obj->names[5] << obj.delem;
  684.     s << obj.manip << obj.obj->names[6]; 
  685.     return s; 
  686.   } 
  687.   template <class Manip>
  688.   ostream& operator << (ostream& s, const NAME##_equal_list<Manip>& obj) { 
  689.     s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->##I1 << obj.delem;
  690.     s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->##I2 << obj.delem;
  691.     s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->##I3 << obj.delem;
  692.     s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->##I4 << obj.delem;
  693.     s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->##I5 << obj.delem;
  694.     s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->##I6 << obj.delem;
  695.     s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->##I7; 
  696.     return s; 
  697.   } 
  698.   template <class Manip>
  699.   ostream& operator << (ostream& s, const NAME##_cus_value_list<Manip>& obj) { 
  700.     bool before = false; 
  701.     if ((*obj.include)[0]) { 
  702.       s << obj.manip << obj.obj->##I1;
  703.       before = true; 
  704.      } 
  705.     if ((*obj.include)[1]) { 
  706.       if (before) s << obj.delem;
  707.       s << obj.manip << obj.obj->##I2;
  708.       before = true; 
  709.      } 
  710.     if ((*obj.include)[2]) { 
  711.       if (before) s << obj.delem;
  712.       s << obj.manip << obj.obj->##I3;
  713.       before = true; 
  714.      } 
  715.     if ((*obj.include)[3]) { 
  716.       if (before) s << obj.delem;
  717.       s << obj.manip << obj.obj->##I4;
  718.       before = true; 
  719.      } 
  720.     if ((*obj.include)[4]) { 
  721.       if (before) s << obj.delem;
  722.       s << obj.manip << obj.obj->##I5;
  723.       before = true; 
  724.      } 
  725.     if ((*obj.include)[5]) { 
  726.       if (before) s << obj.delem;
  727.       s << obj.manip << obj.obj->##I6;
  728.       before = true; 
  729.      } 
  730.     if ((*obj.include)[6]) { 
  731.       if (before) s << obj.delem;
  732.       s << obj.manip << obj.obj->##I7;
  733.      } 
  734.     return s; 
  735.   } 
  736.   template <class Manip>
  737.   ostream& operator << (ostream& s, const NAME##_cus_field_list<Manip>& obj) { 
  738.     bool before = false; 
  739.     if ((*obj.include)[0]) { 
  740.       s << obj.manip << obj.obj->names[0];
  741.       before = true; 
  742.      } 
  743.     if ((*obj.include)[1]) { 
  744.       if (before) s << obj.delem;
  745.       s << obj.manip << obj.obj->names[1];
  746.       before = true; 
  747.      } 
  748.     if ((*obj.include)[2]) { 
  749.       if (before) s << obj.delem;
  750.       s << obj.manip << obj.obj->names[2];
  751.       before = true; 
  752.      } 
  753.     if ((*obj.include)[3]) { 
  754.       if (before) s << obj.delem;
  755.       s << obj.manip << obj.obj->names[3];
  756.       before = true; 
  757.      } 
  758.     if ((*obj.include)[4]) { 
  759.       if (before) s << obj.delem;
  760.       s << obj.manip << obj.obj->names[4];
  761.       before = true; 
  762.      } 
  763.     if ((*obj.include)[5]) { 
  764.       if (before) s << obj.delem;
  765.       s << obj.manip << obj.obj->names[5];
  766.       before = true; 
  767.      } 
  768.     if ((*obj.include)[6]) { 
  769.       if (before) s << obj.delem;
  770.       s << obj.manip << obj.obj->names[6];
  771.      } 
  772.     return s; 
  773.   } 
  774.   template <class Manip>
  775.   ostream& operator << (ostream& s, const NAME##_cus_equal_list<Manip>& obj) { 
  776.     bool before = false; 
  777.     if ((*obj.include)[0]) { 
  778.       s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->##I1;
  779.       before = true; 
  780.      } 
  781.     if ((*obj.include)[1]) { 
  782.       if (before) s << obj.delem;
  783.       s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->##I2;
  784.       before = true; 
  785.      } 
  786.     if ((*obj.include)[2]) { 
  787.       if (before) s << obj.delem;
  788.       s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->##I3;
  789.       before = true; 
  790.      } 
  791.     if ((*obj.include)[3]) { 
  792.       if (before) s << obj.delem;
  793.       s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->##I4;
  794.       before = true; 
  795.      } 
  796.     if ((*obj.include)[4]) { 
  797.       if (before) s << obj.delem;
  798.       s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->##I5;
  799.       before = true; 
  800.      } 
  801.     if ((*obj.include)[5]) { 
  802.       if (before) s << obj.delem;
  803.       s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->##I6;
  804.       before = true; 
  805.      } 
  806.     if ((*obj.include)[6]) { 
  807.       if (before) s << obj.delem;
  808.       s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->##I7;
  809.      } 
  810.     return s; 
  811.   } 
  812.   template <class Manip>
  813.   inline NAME##_value_list<Manip> NAME##::value_list(cchar *d, Manip m) const { 
  814.     return NAME##_value_list<Manip> (this, d, m); 
  815.   } 
  816.   template <class Manip>
  817.   inline NAME##_field_list<Manip> NAME##::field_list(cchar *d, Manip m) const { 
  818.     return NAME##_field_list<Manip> (this, d, m); 
  819.   } 
  820.   template <class Manip>
  821.   inline NAME##_equal_list<Manip> NAME##::equal_list(cchar *d, cchar *c, Manip m) const { 
  822.     return NAME##_equal_list<Manip> (this, d, c, m); 
  823.   } 
  824.   template <class Manip>
  825.   inline NAME##_cus_value_list<Manip> NAME##::value_list(cchar *d, Manip m,
  826.        bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) const {
  827.     return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7); 
  828.   } 
  829.   template <class Manip>
  830.   inline NAME##_cus_field_list<Manip> NAME##::field_list(cchar *d, Manip m,
  831.  bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) const { 
  832.     return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7); 
  833.   } 
  834.   template <class Manip>
  835.   inline NAME##_cus_equal_list<Manip> NAME##::equal_list(cchar *d, cchar *c, Manip m,
  836.  bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7) const { 
  837.     return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7); 
  838.   } 
  839.   template <class Manip>
  840.   inline NAME##_cus_value_list<Manip> NAME##::value_list(cchar *d, Manip m,
  841.        ##NAME##_enum i1, ##NAME##_enum i2, ##NAME##_enum i3, ##NAME##_enum i4, ##NAME##_enum i5, ##NAME##_enum i6, ##NAME##_enum i7) const { 
  842.     return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7); 
  843.   } 
  844.   template <class Manip>
  845.   inline NAME##_cus_field_list<Manip> NAME##::field_list(cchar *d, Manip m,
  846.  ##NAME##_enum i1, ##NAME##_enum i2, ##NAME##_enum i3, ##NAME##_enum i4, ##NAME##_enum i5, ##NAME##_enum i6, ##NAME##_enum i7) const {
  847.     return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7); 
  848.   } 
  849.   template <class Manip>
  850.   inline NAME##_cus_equal_list<Manip> NAME##::equal_list(cchar *d, cchar *c, Manip m, 
  851.  ##NAME##_enum i1, ##NAME##_enum i2, ##NAME##_enum i3, ##NAME##_enum i4, ##NAME##_enum i5, ##NAME##_enum i6, ##NAME##_enum i7) const { 
  852.     return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7); 
  853.   } 
  854.   template <class Manip>
  855.   inline NAME##_cus_value_list<Manip> 
  856.   NAME##::value_list(cchar *d, Manip m, sql_cmp_type sc) const {
  857.     sql_compare_type_def_##CMP (NAME, value, NUM);
  858.   }
  859.   template <class Manip>
  860.   inline NAME##_cus_field_list<Manip> 
  861.   NAME##::field_list(cchar *d, Manip m, sql_cmp_type sc) const {
  862.     sql_compare_type_def_##CMP (NAME, field, NUM);
  863.   }
  864.   template <class Manip>
  865.   inline NAME##_cus_equal_list<Manip> 
  866.   NAME##::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type sc) const {
  867.     sql_compare_type_defe_##CMP (NAME, equal, NUM);
  868.   }
  869.   template <sql_dummy_type dummy> 
  870.   void populate_##NAME (NAME *s, const MysqlRow &row) { 
  871.     s->##I1 = row[ O1 ];
  872.     s->##I2 = row[ O2 ];
  873.     s->##I3 = row[ O3 ];
  874.     s->##I4 = row[ O4 ];
  875.     s->##I5 = row[ O5 ];
  876.     s->##I6 = row[ O6 ];
  877.     s->##I7 = row[ O7 ];
  878.   } 
  879.   inline NAME##::##NAME (const MysqlRow &row) 
  880.                                         {populate_##NAME##<sql_dummy>(this, row);}
  881.   inline void NAME##::set (const MysqlRow &row)
  882.                                         {populate_##NAME##<sql_dummy>(this, row);}
  883.   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, 0 )
  884. #define sql_create_basic_7(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7) 
  885.   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)
  886. #define sql_create_7(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7) 
  887.   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) 
  888. #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) 
  889.   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)
  890. #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) 
  891.   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)
  892. // ---------------------------------------------------
  893. //                  End Create 7
  894. // ---------------------------------------------------
  895. // ---------------------------------------------------
  896. //                  Begin Create 8
  897. // ---------------------------------------------------
  898. #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)
  899.   struct NAME; 
  900.   template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);
  901.   struct NAME { 
  902.     T1 I1;
  903.     T2 I2;
  904.     T3 I3;
  905.     T4 I4;
  906.     T5 I5;
  907.     T6 I6;
  908.     T7 I7;
  909.     T8 I8; 
  910.     NAME () {} 
  911.     NAME (const MysqlRow &row);
  912.     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, 0, 0)
  913.   }; 
  914.   template <sql_dummy_type dummy> 
  915.     void populate_##NAME (NAME *s, const MysqlRow &row) { 
  916.     s->##I1 = row[ O1 ];
  917.     s->##I2 = row[ O2 ];
  918.     s->##I3 = row[ O3 ];
  919.     s->##I4 = row[ O4 ];
  920.     s->##I5 = row[ O5 ];
  921.     s->##I6 = row[ O6 ];
  922.     s->##I7 = row[ O7 ];
  923.     s->##I8 = row[ O8 ]; 
  924.   } 
  925.   inline NAME##::##NAME (const MysqlRow &row) 
  926.     {populate_##NAME##<sql_dummy>(this, row);} 
  927.   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, 0 )
  928. #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) 
  929.   struct NAME; 
  930.   enum NAME##_enum { 
  931.     NAME##_##I1,
  932.     NAME##_##I2,
  933.     NAME##_##I3,
  934.     NAME##_##I4,
  935.     NAME##_##I5,
  936.     NAME##_##I6,
  937.     NAME##_##I7,
  938.     NAME##_##I8 
  939.     ,NAME##_NULL 
  940.   }; 
  941.   template <class Manip>
  942.   class NAME##_value_list { 
  943.   /*friend ostream& operator << <> (ostream&, const NAME##_value_list&); */
  944.   public: 
  945.     const NAME *obj;
  946.     cchar *delem;
  947.     Manip manip;
  948.   public: 
  949.     NAME##_value_list (const NAME *o, cchar *d, Manip m) 
  950.       : obj(o), delem(d), manip(m) {} 
  951.   };
  952.   template <class Manip>
  953.   class NAME##_##field_list {
  954.   /* friend ostream& operator << <> (ostream&, const NAME##_field_list&); */
  955.   public: 
  956.     const NAME *obj; 
  957.     cchar *delem;
  958.     Manip manip;
  959.   public: 
  960.     NAME##_field_list (const NAME *o, cchar *d, Manip m) 
  961.       : obj(o), delem(d), manip(m) {} 
  962.   };
  963.   template <class Manip>
  964.   class NAME##_equal_list { 
  965.   /* friend ostream& operator << <> (ostream&, const NAME##_equal_list&); */
  966.   public: 
  967.     const NAME *obj;
  968.     cchar *delem;
  969.     cchar *comp;
  970.     Manip manip;
  971.   public: 
  972.     NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) 
  973.       : obj(o), delem(d), comp(c), manip(m) {}
  974.   };
  975.   template <class Manip>
  976.   class NAME##_cus_value_list {
  977.   /* friend ostream& operator << <> (ostream&, 
  978.      const NAME##_cus_value_list<Manip>&); */
  979.   public:
  980.     const NAME *obj;
  981.     cchar *delem;
  982.     Manip manip;
  983.     vector<bool> *include;
  984.     bool del_vector;
  985.   public: 
  986.     ~##NAME##_cus_value_list () {if (del_vector) delete include;} 
  987.     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);
  988.     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); 
  989.     NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,vector<bool>)
  990.       : obj(o), include(i), del_vector(false), delem(d), manip(m) {}
  991.   };
  992.   template <class Manip>
  993.   class NAME##_cus_field_list { 
  994.   /* friend ostream& operator << <> (ostream&, 
  995.         const NAME##_cus_field_list<Manip>&); */
  996.   public:
  997.     const NAME *obj; 
  998.     cchar *delem;
  999.     Manip manip;
  1000.     vector<bool> *include; 
  1001.     bool del_vector; 
  1002.   public: 
  1003.     ~##NAME##_cus_field_list () {if (del_vector) delete include;} 
  1004.     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); 
  1005.     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); 
  1006.     NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, vector<bool> *i) 
  1007.       : obj(o), include(i), del_vector(false), delem(d), manip(m) {}
  1008.   };
  1009.  template <class Manip>
  1010.  class NAME##_cus_equal_list {
  1011.  /* friend ostream& operator << <> (ostream&, 
  1012.   const NAME##_cus_equal_list<Manip>&); */
  1013.   public:
  1014.     const NAME *obj;
  1015.     vector<bool> *include;
  1016.     bool del_vector;
  1017.     cchar *delem;
  1018.     cchar *comp;
  1019.     Manip manip;
  1020.   public:
  1021.     ~##NAME##_##cus_equal_list () {if (del_vector) delete include;}
  1022.     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); 
  1023.     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); 
  1024.     NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, vector<bool> *i) 
  1025.       : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}
  1026.   };
  1027.   template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);
  1028.   struct NAME { 
  1029.     T1 I1;
  1030.     T2 I2;
  1031.     T3 I3;
  1032.     T4 I4;
  1033.     T5 I5;
  1034.     T6 I6;
  1035.     T7 I7;
  1036.     T8 I8; 
  1037.     NAME () {} 
  1038.     NAME (const MysqlRow &row);
  1039.     void set (const MysqlRow &row);
  1040.     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, 0, 0)
  1041.     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, 0, 0)
  1042.     static char *names[];
  1043.     static char *_table;
  1044.     static char *& table() {return _table;}
  1045.     /* cus_data */
  1046.     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 {
  1047.       return value_list(",", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8);
  1048.     }
  1049.     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 {
  1050.       return value_list(",", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8);
  1051.     }
  1052.     NAME##_cus_value_list<quote_type0> value_list(vector<bool> *i) const {
  1053.       return value_list(",", mysql_quote, i);
  1054.     }
  1055.     NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {
  1056.       return value_list(",", mysql_quote, sc);
  1057.     }
  1058.     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 {
  1059.       return value_list(d, mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8);
  1060.     }
  1061.     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 {
  1062.       return value_list(d, mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8);
  1063.     }
  1064.     NAME##_cus_value_list<quote_type0> value_list(cchar *d, 
  1065. vector<bool> *i) const {
  1066.       return value_list(d, mysql_quote, i);
  1067.     }
  1068.     NAME##_cus_value_list<quote_type0> value_list(cchar *d, 
  1069. sql_cmp_type sc) const {
  1070.       return value_list(d, mysql_quote, sc);
  1071.     }
  1072.     template <class Manip>
  1073.     NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,
  1074.   bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const; 
  1075.     template <class Manip>
  1076.     NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,
  1077.   ##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; 
  1078.     template <class Manip>
  1079.     NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, 
  1080.   vector<bool> *i) const;
  1081.     template <class Manip>
  1082.     NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, 
  1083.   sql_cmp_type sc) const;
  1084.     /* cus field */
  1085.     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 {
  1086.       return field_list(",", mysql_do_nothing, i1, i2, i3, i4, i5, i6, i7, i8);
  1087.     }
  1088.     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 {
  1089.       return field_list(",", mysql_do_nothing, i1, i2, i3, i4, i5, i6, i7, i8);
  1090.     }
  1091.     NAME##_cus_field_list<do_nothing_type0> field_list(vector<bool> *i) const {
  1092.       return field_list(",", mysql_do_nothing, i);
  1093.     }
  1094.     NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const
  1095.     {
  1096.       return field_list(",", mysql_do_nothing, sc);
  1097.     }
  1098.     NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, 
  1099.        bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const {
  1100.       return field_list(d, mysql_do_nothing, i1, i2, i3, i4, i5, i6, i7, i8);
  1101.     }
  1102.     NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,
  1103.        ##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 {
  1104.       return field_list(d, mysql_do_nothing, i1, i2, i3, i4, i5, i6, i7, i8);
  1105.     }
  1106.     NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, 
  1107. vector<bool> *i) const {
  1108.       return field_list(d, mysql_do_nothing, i);
  1109.     }
  1110.     NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, 
  1111. sql_cmp_type sc) const {
  1112.       return field_list(d, mysql_do_nothing, sc);
  1113.     }
  1114.     template <class Manip>
  1115.     NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,
  1116.     bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const; 
  1117.     template <class Manip>
  1118.     NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,
  1119.     ##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; 
  1120.     template <class Manip>
  1121.     NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,
  1122.     vector<bool> *i) const;
  1123.     template <class Manip>
  1124.     NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, 
  1125.     sql_cmp_type sc) const;
  1126.     /* cus equal */
  1127.     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 {
  1128.       return equal_list(",", " = ", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8);
  1129.     }
  1130.     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 {
  1131.       return equal_list(",", " = ", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8);
  1132.     }
  1133.     NAME##_cus_equal_list<quote_type0> equal_list(vector<bool> *i) const {
  1134.       return equal_list(",", " = ", mysql_quote, i);
  1135.     }
  1136.     NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {
  1137.       return equal_list(",", " = ", mysql_quote, sc);
  1138.     }
  1139.     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 {
  1140.       return equal_list(d, " = ", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8);
  1141.     }
  1142.     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 {
  1143.       return equal_list(d, " = ", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8);
  1144.     }
  1145.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, 
  1146. vector<bool> *i) const {
  1147.       return equal_list(d, " = ", mysql_quote, i);
  1148.     }
  1149.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, 
  1150. sql_cmp_type sc) const {
  1151.       return equal_list(d, " = ", mysql_quote, sc);
  1152.     }
  1153.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,
  1154.                                                 bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const {
  1155.       return equal_list(d, c, mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8);
  1156.     }
  1157.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,
  1158.                                                 ##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 {
  1159.       return equal_list(d, c, mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8);
  1160.     }
  1161.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,
  1162. vector<bool> *i) const {
  1163.       return equal_list(d, c, mysql_quote, i);
  1164.     }
  1165.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,
  1166. sql_cmp_type sc) const {
  1167.       return equal_list(d, c, mysql_quote, sc);
  1168.     }
  1169.     template <class Manip>
  1170.     NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, 
  1171.     bool i1, bool i2 = false, bool i3 = false, bool i4 = false, bool i5 = false, bool i6 = false, bool i7 = false, bool i8 = false) const; 
  1172.     template <class Manip>
  1173.     NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, 
  1174.     ##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; 
  1175.     template <class Manip>
  1176.     NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, 
  1177.     vector<bool> *i) const;
  1178.     template <class Manip>
  1179.     NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, 
  1180.     sql_cmp_type sc) const;
  1181.     NAME##_value_list<quote_type0> value_list() const {
  1182.       return value_list(",", mysql_quote);}
  1183.     NAME##_value_list<quote_type0> value_list(cchar *d) const {
  1184.       return value_list(d, mysql_quote);}
  1185.     template <class Manip> 
  1186.     NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; 
  1187.     NAME##_field_list<do_nothing_type0> field_list() const {
  1188.       return field_list(",", mysql_do_nothing);}
  1189.     NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {
  1190.       return field_list(d, mysql_do_nothing);}
  1191.     template <class Manip>
  1192.     NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; 
  1193.     NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", 
  1194.                                               cchar *c = " = ") const{
  1195.       return equal_list(d, c, mysql_quote);}
  1196.     template <class Manip>
  1197.     NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; 
  1198.   }; 
  1199.   char *##NAME##::names[] = { 
  1200.     N1 ,
  1201.     N2 ,
  1202.     N3 ,
  1203.     N4 ,
  1204.     N5 ,
  1205.     N6 ,
  1206.     N7 ,
  1207.     N8  
  1208.   }; 
  1209.   char *##NAME##::_table = #NAME ;  
  1210.   template <class Manip>
  1211.   NAME##_cus_value_list<Manip>::NAME##_cus_value_list
  1212.   (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) 
  1213.   { 
  1214.     delem = d;
  1215.     manip = m;
  1216.     del_vector = true;
  1217.     obj = o; 
  1218.     include = new vector<bool>(8, false);
  1219.     if (i1) (*include)[0]=true;
  1220.     if (i2) (*include)[1]=true;
  1221.     if (i3) (*include)[2]=true;
  1222.     if (i4) (*include)[3]=true;
  1223.     if (i5) (*include)[4]=true;
  1224.     if (i6) (*include)[5]=true;
  1225.     if (i7) (*include)[6]=true;
  1226.     if (i8) (*include)[7]=true;
  1227.   } 
  1228.   template <class Manip>
  1229.   NAME##_cus_value_list<Manip>::NAME##_cus_value_list
  1230.   (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) { 
  1231.     delem = d;
  1232.     manip = m;
  1233.     del_vector = true; 
  1234.     obj = o; 
  1235.     include = new vector<bool>(8, false); 
  1236.     if (i1 == NAME##_NULL) return;
  1237.     (*include)[i1]=true;
  1238.     if (i2 == NAME##_NULL) return;
  1239.     (*include)[i2]=true;
  1240.     if (i3 == NAME##_NULL) return;
  1241.     (*include)[i3]=true;
  1242.     if (i4 == NAME##_NULL) return;
  1243.     (*include)[i4]=true;
  1244.     if (i5 == NAME##_NULL) return;
  1245.     (*include)[i5]=true;
  1246.     if (i6 == NAME##_NULL) return;
  1247.     (*include)[i6]=true;
  1248.     if (i7 == NAME##_NULL) return;
  1249.     (*include)[i7]=true;
  1250.     if (i8 == NAME##_NULL) return;
  1251.     (*include)[i8]=true;
  1252.   }
  1253.   template <class Manip>
  1254.   NAME##_cus_field_list<Manip>::NAME##_cus_field_list
  1255.   (const NAME *o, cchar *d, Manip m, bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) {
  1256.     delem = d;
  1257.     manip = m;
  1258.     del_vector = true; 
  1259.     obj = o; 
  1260.     include = new vector<bool>(8, false); 
  1261.     if (i1) (*include)[0]=true;
  1262.     if (i2) (*include)[1]=true;
  1263.     if (i3) (*include)[2]=true;
  1264.     if (i4) (*include)[3]=true;
  1265.     if (i5) (*include)[4]=true;
  1266.     if (i6) (*include)[5]=true;
  1267.     if (i7) (*include)[6]=true;
  1268.     if (i8) (*include)[7]=true;
  1269.   } 
  1270.   template <class Manip>
  1271.   NAME##_cus_field_list<Manip>::NAME##_cus_field_list
  1272.   (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) { 
  1273.     delem = d;
  1274.     manip = m;
  1275.     del_vector = true; 
  1276.     obj = o; 
  1277.     include = new vector<bool>(8, false); 
  1278.     if (i1 == NAME##_NULL) return;
  1279.     (*include)[i1]=true;
  1280.     if (i2 == NAME##_NULL) return;
  1281.     (*include)[i2]=true;
  1282.     if (i3 == NAME##_NULL) return;
  1283.     (*include)[i3]=true;
  1284.     if (i4 == NAME##_NULL) return;
  1285.     (*include)[i4]=true;
  1286.     if (i5 == NAME##_NULL) return;
  1287.     (*include)[i5]=true;
  1288.     if (i6 == NAME##_NULL) return;
  1289.     (*include)[i6]=true;
  1290.     if (i7 == NAME##_NULL) return;
  1291.     (*include)[i7]=true;
  1292.     if (i8 == NAME##_NULL) return;
  1293.     (*include)[i8]=true;
  1294.   }
  1295.   template <class Manip>
  1296.   NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list
  1297.   (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) { 
  1298.     delem = d;
  1299.     comp = c;
  1300.     manip = m;
  1301.     del_vector = true; 
  1302.     obj = o; 
  1303.     include = new vector<bool>(8, false); 
  1304.     if (i1) (*include)[0]=true;
  1305.     if (i2) (*include)[1]=true;
  1306.     if (i3) (*include)[2]=true;
  1307.     if (i4) (*include)[3]=true;
  1308.     if (i5) (*include)[4]=true;
  1309.     if (i6) (*include)[5]=true;
  1310.     if (i7) (*include)[6]=true;
  1311.     if (i8) (*include)[7]=true;
  1312.   } 
  1313.   template <class Manip>
  1314.   NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list
  1315.   (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) { 
  1316.     delem = d;
  1317.     comp = c;
  1318.     manip = m;
  1319.     del_vector = true; 
  1320.     obj = o; 
  1321.     include = new vector<bool>(8, false); 
  1322.     if (i1 == NAME##_NULL) return;
  1323.     (*include)[i1]=true;
  1324.     if (i2 == NAME##_NULL) return;
  1325.     (*include)[i2]=true;
  1326.     if (i3 == NAME##_NULL) return;
  1327.     (*include)[i3]=true;
  1328.     if (i4 == NAME##_NULL) return;
  1329.     (*include)[i4]=true;
  1330.     if (i5 == NAME##_NULL) return;
  1331.     (*include)[i5]=true;
  1332.     if (i6 == NAME##_NULL) return;
  1333.     (*include)[i6]=true;
  1334.     if (i7 == NAME##_NULL) return;
  1335.     (*include)[i7]=true;
  1336.     if (i8 == NAME##_NULL) return;
  1337.     (*include)[i8]=true;
  1338.   }
  1339.   template <class Manip>
  1340.   ostream& operator << (ostream& s, const NAME##_value_list<Manip>& obj) { 
  1341.     s << obj.manip << obj.obj->##I1 << obj.delem;
  1342.     s << obj.manip << obj.obj->##I2 << obj.delem;
  1343.     s << obj.manip << obj.obj->##I3 << obj.delem;
  1344.     s << obj.manip << obj.obj->##I4 << obj.delem;
  1345.     s << obj.manip << obj.obj->##I5 << obj.delem;
  1346.     s << obj.manip << obj.obj->##I6 << obj.delem;
  1347.     s << obj.manip << obj.obj->##I7 << obj.delem;
  1348.     s << obj.manip << obj.obj->##I8; 
  1349.     return s; 
  1350.   } 
  1351.   template <class Manip>
  1352.   ostream& operator << (ostream& s, const NAME##_field_list<Manip>& obj) { 
  1353.     s << obj.manip << obj.obj->names[0] << obj.delem;
  1354.     s << obj.manip << obj.obj->names[1] << obj.delem;
  1355.     s << obj.manip << obj.obj->names[2] << obj.delem;
  1356.     s << obj.manip << obj.obj->names[3] << obj.delem;
  1357.     s << obj.manip << obj.obj->names[4] << obj.delem;
  1358.     s << obj.manip << obj.obj->names[5] << obj.delem;
  1359.     s << obj.manip << obj.obj->names[6] << obj.delem;
  1360.     s << obj.manip << obj.obj->names[7]; 
  1361.     return s; 
  1362.   } 
  1363.   template <class Manip>
  1364.   ostream& operator << (ostream& s, const NAME##_equal_list<Manip>& obj) { 
  1365.     s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->##I1 << obj.delem;
  1366.     s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->##I2 << obj.delem;
  1367.     s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->##I3 << obj.delem;
  1368.     s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->##I4 << obj.delem;
  1369.     s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->##I5 << obj.delem;
  1370.     s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->##I6 << obj.delem;
  1371.     s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->##I7 << obj.delem;
  1372.     s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->##I8; 
  1373.     return s; 
  1374.   } 
  1375.   template <class Manip>
  1376.   ostream& operator << (ostream& s, const NAME##_cus_value_list<Manip>& obj) { 
  1377.     bool before = false; 
  1378.     if ((*obj.include)[0]) { 
  1379.       s << obj.manip << obj.obj->##I1;
  1380.       before = true; 
  1381.      } 
  1382.     if ((*obj.include)[1]) { 
  1383.       if (before) s << obj.delem;
  1384.       s << obj.manip << obj.obj->##I2;
  1385.       before = true; 
  1386.      } 
  1387.     if ((*obj.include)[2]) { 
  1388.       if (before) s << obj.delem;
  1389.       s << obj.manip << obj.obj->##I3;
  1390.       before = true; 
  1391.      } 
  1392.     if ((*obj.include)[3]) { 
  1393.       if (before) s << obj.delem;
  1394.       s << obj.manip << obj.obj->##I4;
  1395.       before = true; 
  1396.      } 
  1397.     if ((*obj.include)[4]) { 
  1398.       if (before) s << obj.delem;
  1399.       s << obj.manip << obj.obj->##I5;
  1400.       before = true; 
  1401.      } 
  1402.     if ((*obj.include)[5]) { 
  1403.       if (before) s << obj.delem;
  1404.       s << obj.manip << obj.obj->##I6;
  1405.       before = true; 
  1406.      } 
  1407.     if ((*obj.include)[6]) { 
  1408.       if (before) s << obj.delem;
  1409.       s << obj.manip << obj.obj->##I7;
  1410.       before = true; 
  1411.      } 
  1412.     if ((*obj.include)[7]) { 
  1413.       if (before) s << obj.delem;
  1414.       s << obj.manip << obj.obj->##I8;
  1415.      } 
  1416.     return s; 
  1417.   } 
  1418.   template <class Manip>
  1419.   ostream& operator << (ostream& s, const NAME##_cus_field_list<Manip>& obj) { 
  1420.     bool before = false; 
  1421.     if ((*obj.include)[0]) { 
  1422.       s << obj.manip << obj.obj->names[0];
  1423.       before = true; 
  1424.      } 
  1425.     if ((*obj.include)[1]) { 
  1426.       if (before) s << obj.delem;
  1427.       s << obj.manip << obj.obj->names[1];
  1428.       before = true; 
  1429.      } 
  1430.     if ((*obj.include)[2]) { 
  1431.       if (before) s << obj.delem;
  1432.       s << obj.manip << obj.obj->names[2];
  1433.       before = true; 
  1434.      } 
  1435.     if ((*obj.include)[3]) { 
  1436.       if (before) s << obj.delem;
  1437.       s << obj.manip << obj.obj->names[3];
  1438.       before = true; 
  1439.      } 
  1440.     if ((*obj.include)[4]) { 
  1441.       if (before) s << obj.delem;
  1442.       s << obj.manip << obj.obj->names[4];
  1443.       before = true; 
  1444.      } 
  1445.     if ((*obj.include)[5]) { 
  1446.       if (before) s << obj.delem;
  1447.       s << obj.manip << obj.obj->names[5];
  1448.       before = true; 
  1449.      } 
  1450.     if ((*obj.include)[6]) { 
  1451.       if (before) s << obj.delem;
  1452.       s << obj.manip << obj.obj->names[6];
  1453.       before = true; 
  1454.      } 
  1455.     if ((*obj.include)[7]) { 
  1456.       if (before) s << obj.delem;
  1457.       s << obj.manip << obj.obj->names[7];
  1458.      } 
  1459.     return s; 
  1460.   } 
  1461.   template <class Manip>
  1462.   ostream& operator << (ostream& s, const NAME##_cus_equal_list<Manip>& obj) { 
  1463.     bool before = false; 
  1464.     if ((*obj.include)[0]) { 
  1465.       s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->##I1;
  1466.       before = true; 
  1467.      } 
  1468.     if ((*obj.include)[1]) { 
  1469.       if (before) s << obj.delem;
  1470.       s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->##I2;
  1471.       before = true; 
  1472.      } 
  1473.     if ((*obj.include)[2]) { 
  1474.       if (before) s << obj.delem;
  1475.       s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->##I3;
  1476.       before = true; 
  1477.      } 
  1478.     if ((*obj.include)[3]) { 
  1479.       if (before) s << obj.delem;
  1480.       s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->##I4;
  1481.       before = true; 
  1482.      } 
  1483.     if ((*obj.include)[4]) { 
  1484.       if (before) s << obj.delem;
  1485.       s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->##I5;
  1486.       before = true; 
  1487.      } 
  1488.     if ((*obj.include)[5]) { 
  1489.       if (before) s << obj.delem;
  1490.       s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->##I6;
  1491.       before = true; 
  1492.      } 
  1493.     if ((*obj.include)[6]) { 
  1494.       if (before) s << obj.delem;
  1495.       s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->##I7;
  1496.       before = true; 
  1497.      } 
  1498.     if ((*obj.include)[7]) { 
  1499.       if (before) s << obj.delem;
  1500.       s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->##I8;
  1501.      } 
  1502.     return s; 
  1503.   } 
  1504.   template <class Manip>
  1505.   inline NAME##_value_list<Manip> NAME##::value_list(cchar *d, Manip m) const { 
  1506.     return NAME##_value_list<Manip> (this, d, m); 
  1507.   } 
  1508.   template <class Manip>
  1509.   inline NAME##_field_list<Manip> NAME##::field_list(cchar *d, Manip m) const { 
  1510.     return NAME##_field_list<Manip> (this, d, m); 
  1511.   } 
  1512.   template <class Manip>
  1513.   inline NAME##_equal_list<Manip> NAME##::equal_list(cchar *d, cchar *c, Manip m) const { 
  1514.     return NAME##_equal_list<Manip> (this, d, c, m); 
  1515.   } 
  1516.   template <class Manip>
  1517.   inline NAME##_cus_value_list<Manip> NAME##::value_list(cchar *d, Manip m,
  1518.        bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) const {
  1519.     return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8); 
  1520.   } 
  1521.   template <class Manip>
  1522.   inline NAME##_cus_field_list<Manip> NAME##::field_list(cchar *d, Manip m,
  1523.  bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) const { 
  1524.     return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8); 
  1525.   } 
  1526.   template <class Manip>
  1527.   inline NAME##_cus_equal_list<Manip> NAME##::equal_list(cchar *d, cchar *c, Manip m,
  1528.  bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8) const { 
  1529.     return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8); 
  1530.   } 
  1531.   template <class Manip>
  1532.   inline NAME##_cus_value_list<Manip> NAME##::value_list(cchar *d, Manip m,
  1533.        ##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 { 
  1534.     return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8); 
  1535.   } 
  1536.   template <class Manip>
  1537.   inline NAME##_cus_field_list<Manip> NAME##::field_list(cchar *d, Manip m,
  1538.  ##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 {
  1539.     return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8); 
  1540.   } 
  1541.   template <class Manip>
  1542.   inline NAME##_cus_equal_list<Manip> NAME##::equal_list(cchar *d, cchar *c, Manip m, 
  1543.  ##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 { 
  1544.     return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8); 
  1545.   } 
  1546.   template <class Manip>
  1547.   inline NAME##_cus_value_list<Manip> 
  1548.   NAME##::value_list(cchar *d, Manip m, sql_cmp_type sc) const {
  1549.     sql_compare_type_def_##CMP (NAME, value, NUM);
  1550.   }
  1551.   template <class Manip>
  1552.   inline NAME##_cus_field_list<Manip> 
  1553.   NAME##::field_list(cchar *d, Manip m, sql_cmp_type sc) const {
  1554.     sql_compare_type_def_##CMP (NAME, field, NUM);
  1555.   }
  1556.   template <class Manip>
  1557.   inline NAME##_cus_equal_list<Manip> 
  1558.   NAME##::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type sc) const {
  1559.     sql_compare_type_defe_##CMP (NAME, equal, NUM);
  1560.   }
  1561.   template <sql_dummy_type dummy> 
  1562.   void populate_##NAME (NAME *s, const MysqlRow &row) { 
  1563.     s->##I1 = row[ O1 ];
  1564.     s->##I2 = row[ O2 ];
  1565.     s->##I3 = row[ O3 ];
  1566.     s->##I4 = row[ O4 ];
  1567.     s->##I5 = row[ O5 ];
  1568.     s->##I6 = row[ O6 ];
  1569.     s->##I7 = row[ O7 ];
  1570.     s->##I8 = row[ O8 ];
  1571.   } 
  1572.   inline NAME##::##NAME (const MysqlRow &row) 
  1573.                                         {populate_##NAME##<sql_dummy>(this, row);}
  1574.   inline void NAME##::set (const MysqlRow &row)
  1575.                                         {populate_##NAME##<sql_dummy>(this, row);}
  1576.   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, 0 )
  1577. #define sql_create_basic_8(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8) 
  1578.   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)
  1579. #define sql_create_8(NAME, CMP, CONTR, T1, I1, T2, I2, T3, I3, T4, I4, T5, I5, T6, I6, T7, I7, T8, I8) 
  1580.   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) 
  1581. #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) 
  1582.   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)
  1583. #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) 
  1584.   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)
  1585. // ---------------------------------------------------
  1586. //                  End Create 8
  1587. // ---------------------------------------------------
  1588. // ---------------------------------------------------
  1589. //                  Begin Create 9
  1590. // ---------------------------------------------------
  1591. #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)
  1592.   struct NAME; 
  1593.   template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);
  1594.   struct NAME { 
  1595.     T1 I1;
  1596.     T2 I2;
  1597.     T3 I3;
  1598.     T4 I4;
  1599.     T5 I5;
  1600.     T6 I6;
  1601.     T7 I7;
  1602.     T8 I8;
  1603.     T9 I9; 
  1604.     NAME () {} 
  1605.     NAME (const MysqlRow &row);
  1606.     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, 0, 0)
  1607.   }; 
  1608.   template <sql_dummy_type dummy> 
  1609.     void populate_##NAME (NAME *s, const MysqlRow &row) { 
  1610.     s->##I1 = row[ O1 ];
  1611.     s->##I2 = row[ O2 ];
  1612.     s->##I3 = row[ O3 ];
  1613.     s->##I4 = row[ O4 ];
  1614.     s->##I5 = row[ O5 ];
  1615.     s->##I6 = row[ O6 ];
  1616.     s->##I7 = row[ O7 ];
  1617.     s->##I8 = row[ O8 ];
  1618.     s->##I9 = row[ O9 ]; 
  1619.   } 
  1620.   inline NAME##::##NAME (const MysqlRow &row) 
  1621.     {populate_##NAME##<sql_dummy>(this, row);} 
  1622.   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, 0 )
  1623. #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) 
  1624.   struct NAME; 
  1625.   enum NAME##_enum { 
  1626.     NAME##_##I1,
  1627.     NAME##_##I2,
  1628.     NAME##_##I3,
  1629.     NAME##_##I4,
  1630.     NAME##_##I5,
  1631.     NAME##_##I6,
  1632.     NAME##_##I7,
  1633.     NAME##_##I8,
  1634.     NAME##_##I9 
  1635.     ,NAME##_NULL 
  1636.   }; 
  1637.   template <class Manip>
  1638.   class NAME##_value_list { 
  1639.   /*friend ostream& operator << <> (ostream&, const NAME##_value_list&); */
  1640.   public: 
  1641.     const NAME *obj;
  1642.     cchar *delem;
  1643.     Manip manip;
  1644.   public: 
  1645.     NAME##_value_list (const NAME *o, cchar *d, Manip m) 
  1646.       : obj(o), delem(d), manip(m) {} 
  1647.   };
  1648.   template <class Manip>
  1649.   class NAME##_##field_list {
  1650.   /* friend ostream& operator << <> (ostream&, const NAME##_field_list&); */
  1651.   public: 
  1652.     const NAME *obj; 
  1653.     cchar *delem;
  1654.     Manip manip;
  1655.   public: 
  1656.     NAME##_field_list (const NAME *o, cchar *d, Manip m) 
  1657.       : obj(o), delem(d), manip(m) {} 
  1658.   };
  1659.   template <class Manip>
  1660.   class NAME##_equal_list { 
  1661.   /* friend ostream& operator << <> (ostream&, const NAME##_equal_list&); */
  1662.   public: 
  1663.     const NAME *obj;
  1664.     cchar *delem;
  1665.     cchar *comp;
  1666.     Manip manip;
  1667.   public: 
  1668.     NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) 
  1669.       : obj(o), delem(d), comp(c), manip(m) {}
  1670.   };
  1671.   template <class Manip>
  1672.   class NAME##_cus_value_list {
  1673.   /* friend ostream& operator << <> (ostream&, 
  1674.      const NAME##_cus_value_list<Manip>&); */
  1675.   public:
  1676.     const NAME *obj;
  1677.     cchar *delem;
  1678.     Manip manip;
  1679.     vector<bool> *include;
  1680.     bool del_vector;
  1681.   public: 
  1682.     ~##NAME##_cus_value_list () {if (del_vector) delete include;} 
  1683.     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);
  1684.     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); 
  1685.     NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,vector<bool>)
  1686.       : obj(o), include(i), del_vector(false), delem(d), manip(m) {}
  1687.   };
  1688.   template <class Manip>
  1689.   class NAME##_cus_field_list { 
  1690.   /* friend ostream& operator << <> (ostream&, 
  1691.         const NAME##_cus_field_list<Manip>&); */
  1692.   public:
  1693.     const NAME *obj; 
  1694.     cchar *delem;
  1695.     Manip manip;
  1696.     vector<bool> *include; 
  1697.     bool del_vector; 
  1698.   public: 
  1699.     ~##NAME##_cus_field_list () {if (del_vector) delete include;} 
  1700.     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); 
  1701.     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); 
  1702.     NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, vector<bool> *i) 
  1703.       : obj(o), include(i), del_vector(false), delem(d), manip(m) {}
  1704.   };
  1705.  template <class Manip>
  1706.  class NAME##_cus_equal_list {
  1707.  /* friend ostream& operator << <> (ostream&, 
  1708.   const NAME##_cus_equal_list<Manip>&); */
  1709.   public:
  1710.     const NAME *obj;
  1711.     vector<bool> *include;
  1712.     bool del_vector;
  1713.     cchar *delem;
  1714.     cchar *comp;
  1715.     Manip manip;
  1716.   public:
  1717.     ~##NAME##_##cus_equal_list () {if (del_vector) delete include;}
  1718.     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); 
  1719.     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); 
  1720.     NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, vector<bool> *i) 
  1721.       : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}
  1722.   };
  1723.   template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);
  1724.   struct NAME { 
  1725.     T1 I1;
  1726.     T2 I2;
  1727.     T3 I3;
  1728.     T4 I4;
  1729.     T5 I5;
  1730.     T6 I6;
  1731.     T7 I7;
  1732.     T8 I8;
  1733.     T9 I9; 
  1734.     NAME () {} 
  1735.     NAME (const MysqlRow &row);
  1736.     void set (const MysqlRow &row);
  1737.     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, 0, 0)
  1738.     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, 0, 0)
  1739.     static char *names[];
  1740.     static char *_table;
  1741.     static char *& table() {return _table;}
  1742.     /* cus_data */
  1743.     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 {
  1744.       return value_list(",", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);
  1745.     }
  1746.     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 {
  1747.       return value_list(",", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);
  1748.     }
  1749.     NAME##_cus_value_list<quote_type0> value_list(vector<bool> *i) const {
  1750.       return value_list(",", mysql_quote, i);
  1751.     }
  1752.     NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {
  1753.       return value_list(",", mysql_quote, sc);
  1754.     }
  1755.     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 {
  1756.       return value_list(d, mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);
  1757.     }
  1758.     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 {
  1759.       return value_list(d, mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);
  1760.     }
  1761.     NAME##_cus_value_list<quote_type0> value_list(cchar *d, 
  1762. vector<bool> *i) const {
  1763.       return value_list(d, mysql_quote, i);
  1764.     }
  1765.     NAME##_cus_value_list<quote_type0> value_list(cchar *d, 
  1766. sql_cmp_type sc) const {
  1767.       return value_list(d, mysql_quote, sc);
  1768.     }
  1769.     template <class Manip>
  1770.     NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,
  1771.   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; 
  1772.     template <class Manip>
  1773.     NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,
  1774.   ##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; 
  1775.     template <class Manip>
  1776.     NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, 
  1777.   vector<bool> *i) const;
  1778.     template <class Manip>
  1779.     NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, 
  1780.   sql_cmp_type sc) const;
  1781.     /* cus field */
  1782.     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 {
  1783.       return field_list(",", mysql_do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9);
  1784.     }
  1785.     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 {
  1786.       return field_list(",", mysql_do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9);
  1787.     }
  1788.     NAME##_cus_field_list<do_nothing_type0> field_list(vector<bool> *i) const {
  1789.       return field_list(",", mysql_do_nothing, i);
  1790.     }
  1791.     NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const
  1792.     {
  1793.       return field_list(",", mysql_do_nothing, sc);
  1794.     }
  1795.     NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, 
  1796.        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 {
  1797.       return field_list(d, mysql_do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9);
  1798.     }
  1799.     NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,
  1800.        ##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 {
  1801.       return field_list(d, mysql_do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9);
  1802.     }
  1803.     NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, 
  1804. vector<bool> *i) const {
  1805.       return field_list(d, mysql_do_nothing, i);
  1806.     }
  1807.     NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, 
  1808. sql_cmp_type sc) const {
  1809.       return field_list(d, mysql_do_nothing, sc);
  1810.     }
  1811.     template <class Manip>
  1812.     NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,
  1813.     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; 
  1814.     template <class Manip>
  1815.     NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,
  1816.     ##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; 
  1817.     template <class Manip>
  1818.     NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,
  1819.     vector<bool> *i) const;
  1820.     template <class Manip>
  1821.     NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, 
  1822.     sql_cmp_type sc) const;
  1823.     /* cus equal */
  1824.     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 {
  1825.       return equal_list(",", " = ", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);
  1826.     }
  1827.     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 {
  1828.       return equal_list(",", " = ", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);
  1829.     }
  1830.     NAME##_cus_equal_list<quote_type0> equal_list(vector<bool> *i) const {
  1831.       return equal_list(",", " = ", mysql_quote, i);
  1832.     }
  1833.     NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {
  1834.       return equal_list(",", " = ", mysql_quote, sc);
  1835.     }
  1836.     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 {
  1837.       return equal_list(d, " = ", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);
  1838.     }
  1839.     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 {
  1840.       return equal_list(d, " = ", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);
  1841.     }
  1842.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, 
  1843. vector<bool> *i) const {
  1844.       return equal_list(d, " = ", mysql_quote, i);
  1845.     }
  1846.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, 
  1847. sql_cmp_type sc) const {
  1848.       return equal_list(d, " = ", mysql_quote, sc);
  1849.     }
  1850.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,
  1851.                                                 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 {
  1852.       return equal_list(d, c, mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);
  1853.     }
  1854.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,
  1855.                                                 ##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 {
  1856.       return equal_list(d, c, mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9);
  1857.     }
  1858.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,
  1859. vector<bool> *i) const {
  1860.       return equal_list(d, c, mysql_quote, i);
  1861.     }
  1862.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,
  1863. sql_cmp_type sc) const {
  1864.       return equal_list(d, c, mysql_quote, sc);
  1865.     }
  1866.     template <class Manip>
  1867.     NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, 
  1868.     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; 
  1869.     template <class Manip>
  1870.     NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, 
  1871.     ##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; 
  1872.     template <class Manip>
  1873.     NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, 
  1874.     vector<bool> *i) const;
  1875.     template <class Manip>
  1876.     NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, 
  1877.     sql_cmp_type sc) const;
  1878.     NAME##_value_list<quote_type0> value_list() const {
  1879.       return value_list(",", mysql_quote);}
  1880.     NAME##_value_list<quote_type0> value_list(cchar *d) const {
  1881.       return value_list(d, mysql_quote);}
  1882.     template <class Manip> 
  1883.     NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; 
  1884.     NAME##_field_list<do_nothing_type0> field_list() const {
  1885.       return field_list(",", mysql_do_nothing);}
  1886.     NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {
  1887.       return field_list(d, mysql_do_nothing);}
  1888.     template <class Manip>
  1889.     NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; 
  1890.     NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", 
  1891.                                               cchar *c = " = ") const{
  1892.       return equal_list(d, c, mysql_quote);}
  1893.     template <class Manip>
  1894.     NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; 
  1895.   }; 
  1896.   char *##NAME##::names[] = { 
  1897.     N1 ,
  1898.     N2 ,
  1899.     N3 ,
  1900.     N4 ,
  1901.     N5 ,
  1902.     N6 ,
  1903.     N7 ,
  1904.     N8 ,
  1905.     N9  
  1906.   }; 
  1907.   char *##NAME##::_table = #NAME ;  
  1908.   template <class Manip>
  1909.   NAME##_cus_value_list<Manip>::NAME##_cus_value_list
  1910.   (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) 
  1911.   { 
  1912.     delem = d;
  1913.     manip = m;
  1914.     del_vector = true;
  1915.     obj = o; 
  1916.     include = new vector<bool>(9, false);
  1917.     if (i1) (*include)[0]=true;
  1918.     if (i2) (*include)[1]=true;
  1919.     if (i3) (*include)[2]=true;
  1920.     if (i4) (*include)[3]=true;
  1921.     if (i5) (*include)[4]=true;
  1922.     if (i6) (*include)[5]=true;
  1923.     if (i7) (*include)[6]=true;
  1924.     if (i8) (*include)[7]=true;
  1925.     if (i9) (*include)[8]=true;
  1926.   } 
  1927.   template <class Manip>
  1928.   NAME##_cus_value_list<Manip>::NAME##_cus_value_list
  1929.   (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) { 
  1930.     delem = d;
  1931.     manip = m;
  1932.     del_vector = true; 
  1933.     obj = o; 
  1934.     include = new vector<bool>(9, false); 
  1935.     if (i1 == NAME##_NULL) return;
  1936.     (*include)[i1]=true;
  1937.     if (i2 == NAME##_NULL) return;
  1938.     (*include)[i2]=true;
  1939.     if (i3 == NAME##_NULL) return;
  1940.     (*include)[i3]=true;
  1941.     if (i4 == NAME##_NULL) return;
  1942.     (*include)[i4]=true;
  1943.     if (i5 == NAME##_NULL) return;
  1944.     (*include)[i5]=true;
  1945.     if (i6 == NAME##_NULL) return;
  1946.     (*include)[i6]=true;
  1947.     if (i7 == NAME##_NULL) return;
  1948.     (*include)[i7]=true;
  1949.     if (i8 == NAME##_NULL) return;
  1950.     (*include)[i8]=true;
  1951.     if (i9 == NAME##_NULL) return;
  1952.     (*include)[i9]=true;
  1953.   }
  1954.   template <class Manip>
  1955.   NAME##_cus_field_list<Manip>::NAME##_cus_field_list
  1956.   (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) {
  1957.     delem = d;
  1958.     manip = m;
  1959.     del_vector = true; 
  1960.     obj = o; 
  1961.     include = new vector<bool>(9, false); 
  1962.     if (i1) (*include)[0]=true;
  1963.     if (i2) (*include)[1]=true;
  1964.     if (i3) (*include)[2]=true;
  1965.     if (i4) (*include)[3]=true;
  1966.     if (i5) (*include)[4]=true;
  1967.     if (i6) (*include)[5]=true;
  1968.     if (i7) (*include)[6]=true;
  1969.     if (i8) (*include)[7]=true;
  1970.     if (i9) (*include)[8]=true;
  1971.   } 
  1972.   template <class Manip>
  1973.   NAME##_cus_field_list<Manip>::NAME##_cus_field_list
  1974.   (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) { 
  1975.     delem = d;
  1976.     manip = m;
  1977.     del_vector = true; 
  1978.     obj = o; 
  1979.     include = new vector<bool>(9, false); 
  1980.     if (i1 == NAME##_NULL) return;
  1981.     (*include)[i1]=true;
  1982.     if (i2 == NAME##_NULL) return;
  1983.     (*include)[i2]=true;
  1984.     if (i3 == NAME##_NULL) return;
  1985.     (*include)[i3]=true;
  1986.     if (i4 == NAME##_NULL) return;
  1987.     (*include)[i4]=true;
  1988.     if (i5 == NAME##_NULL) return;
  1989.     (*include)[i5]=true;
  1990.     if (i6 == NAME##_NULL) return;
  1991.     (*include)[i6]=true;
  1992.     if (i7 == NAME##_NULL) return;
  1993.     (*include)[i7]=true;
  1994.     if (i8 == NAME##_NULL) return;
  1995.     (*include)[i8]=true;
  1996.     if (i9 == NAME##_NULL) return;
  1997.     (*include)[i9]=true;
  1998.   }
  1999.   template <class Manip>
  2000.   NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list
  2001.   (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) { 
  2002.     delem = d;
  2003.     comp = c;
  2004.     manip = m;
  2005.     del_vector = true; 
  2006.     obj = o; 
  2007.     include = new vector<bool>(9, false); 
  2008.     if (i1) (*include)[0]=true;
  2009.     if (i2) (*include)[1]=true;
  2010.     if (i3) (*include)[2]=true;
  2011.     if (i4) (*include)[3]=true;
  2012.     if (i5) (*include)[4]=true;
  2013.     if (i6) (*include)[5]=true;
  2014.     if (i7) (*include)[6]=true;
  2015.     if (i8) (*include)[7]=true;
  2016.     if (i9) (*include)[8]=true;
  2017.   } 
  2018.   template <class Manip>
  2019.   NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list
  2020.   (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) { 
  2021.     delem = d;
  2022.     comp = c;
  2023.     manip = m;
  2024.     del_vector = true; 
  2025.     obj = o; 
  2026.     include = new vector<bool>(9, false); 
  2027.     if (i1 == NAME##_NULL) return;
  2028.     (*include)[i1]=true;
  2029.     if (i2 == NAME##_NULL) return;
  2030.     (*include)[i2]=true;
  2031.     if (i3 == NAME##_NULL) return;
  2032.     (*include)[i3]=true;
  2033.     if (i4 == NAME##_NULL) return;
  2034.     (*include)[i4]=true;
  2035.     if (i5 == NAME##_NULL) return;
  2036.     (*include)[i5]=true;
  2037.     if (i6 == NAME##_NULL) return;
  2038.     (*include)[i6]=true;
  2039.     if (i7 == NAME##_NULL) return;
  2040.     (*include)[i7]=true;
  2041.     if (i8 == NAME##_NULL) return;
  2042.     (*include)[i8]=true;
  2043.     if (i9 == NAME##_NULL) return;
  2044.     (*include)[i9]=true;
  2045.   }
  2046.   template <class Manip>
  2047.   ostream& operator << (ostream& s, const NAME##_value_list<Manip>& obj) { 
  2048.     s << obj.manip << obj.obj->##I1 << obj.delem;
  2049.     s << obj.manip << obj.obj->##I2 << obj.delem;
  2050.     s << obj.manip << obj.obj->##I3 << obj.delem;
  2051.     s << obj.manip << obj.obj->##I4 << obj.delem;
  2052.     s << obj.manip << obj.obj->##I5 << obj.delem;
  2053.     s << obj.manip << obj.obj->##I6 << obj.delem;
  2054.     s << obj.manip << obj.obj->##I7 << obj.delem;
  2055.     s << obj.manip << obj.obj->##I8 << obj.delem;
  2056.     s << obj.manip << obj.obj->##I9; 
  2057.     return s; 
  2058.   } 
  2059.   template <class Manip>
  2060.   ostream& operator << (ostream& s, const NAME##_field_list<Manip>& obj) { 
  2061.     s << obj.manip << obj.obj->names[0] << obj.delem;
  2062.     s << obj.manip << obj.obj->names[1] << obj.delem;
  2063.     s << obj.manip << obj.obj->names[2] << obj.delem;
  2064.     s << obj.manip << obj.obj->names[3] << obj.delem;
  2065.     s << obj.manip << obj.obj->names[4] << obj.delem;
  2066.     s << obj.manip << obj.obj->names[5] << obj.delem;
  2067.     s << obj.manip << obj.obj->names[6] << obj.delem;
  2068.     s << obj.manip << obj.obj->names[7] << obj.delem;
  2069.     s << obj.manip << obj.obj->names[8]; 
  2070.     return s; 
  2071.   } 
  2072.   template <class Manip>
  2073.   ostream& operator << (ostream& s, const NAME##_equal_list<Manip>& obj) { 
  2074.     s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->##I1 << obj.delem;
  2075.     s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->##I2 << obj.delem;
  2076.     s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->##I3 << obj.delem;
  2077.     s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->##I4 << obj.delem;
  2078.     s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->##I5 << obj.delem;
  2079.     s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->##I6 << obj.delem;
  2080.     s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->##I7 << obj.delem;
  2081.     s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->##I8 << obj.delem;
  2082.     s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->##I9; 
  2083.     return s; 
  2084.   } 
  2085.   template <class Manip>
  2086.   ostream& operator << (ostream& s, const NAME##_cus_value_list<Manip>& obj) { 
  2087.     bool before = false; 
  2088.     if ((*obj.include)[0]) { 
  2089.       s << obj.manip << obj.obj->##I1;
  2090.       before = true; 
  2091.      } 
  2092.     if ((*obj.include)[1]) { 
  2093.       if (before) s << obj.delem;
  2094.       s << obj.manip << obj.obj->##I2;
  2095.       before = true; 
  2096.      } 
  2097.     if ((*obj.include)[2]) { 
  2098.       if (before) s << obj.delem;
  2099.       s << obj.manip << obj.obj->##I3;
  2100.       before = true; 
  2101.      } 
  2102.     if ((*obj.include)[3]) { 
  2103.       if (before) s << obj.delem;
  2104.       s << obj.manip << obj.obj->##I4;
  2105.       before = true; 
  2106.      } 
  2107.     if ((*obj.include)[4]) { 
  2108.       if (before) s << obj.delem;
  2109.       s << obj.manip << obj.obj->##I5;
  2110.       before = true; 
  2111.      } 
  2112.     if ((*obj.include)[5]) { 
  2113.       if (before) s << obj.delem;
  2114.       s << obj.manip << obj.obj->##I6;
  2115.       before = true; 
  2116.      } 
  2117.     if ((*obj.include)[6]) { 
  2118.       if (before) s << obj.delem;
  2119.       s << obj.manip << obj.obj->##I7;
  2120.       before = true; 
  2121.      } 
  2122.     if ((*obj.include)[7]) { 
  2123.       if (before) s << obj.delem;
  2124.       s << obj.manip << obj.obj->##I8;
  2125.       before = true; 
  2126.      } 
  2127.     if ((*obj.include)[8]) { 
  2128.       if (before) s << obj.delem;
  2129.       s << obj.manip << obj.obj->##I9;
  2130.      } 
  2131.     return s; 
  2132.   } 
  2133.   template <class Manip>
  2134.   ostream& operator << (ostream& s, const NAME##_cus_field_list<Manip>& obj) { 
  2135.     bool before = false; 
  2136.     if ((*obj.include)[0]) { 
  2137.       s << obj.manip << obj.obj->names[0];
  2138.       before = true; 
  2139.      } 
  2140.     if ((*obj.include)[1]) { 
  2141.       if (before) s << obj.delem;
  2142.       s << obj.manip << obj.obj->names[1];
  2143.       before = true; 
  2144.      } 
  2145.     if ((*obj.include)[2]) { 
  2146.       if (before) s << obj.delem;
  2147.       s << obj.manip << obj.obj->names[2];
  2148.       before = true; 
  2149.      } 
  2150.     if ((*obj.include)[3]) { 
  2151.       if (before) s << obj.delem;
  2152.       s << obj.manip << obj.obj->names[3];
  2153.       before = true; 
  2154.      } 
  2155.     if ((*obj.include)[4]) { 
  2156.       if (before) s << obj.delem;
  2157.       s << obj.manip << obj.obj->names[4];
  2158.       before = true; 
  2159.      } 
  2160.     if ((*obj.include)[5]) { 
  2161.       if (before) s << obj.delem;
  2162.       s << obj.manip << obj.obj->names[5];
  2163.       before = true; 
  2164.      } 
  2165.     if ((*obj.include)[6]) { 
  2166.       if (before) s << obj.delem;
  2167.       s << obj.manip << obj.obj->names[6];
  2168.       before = true; 
  2169.      } 
  2170.     if ((*obj.include)[7]) { 
  2171.       if (before) s << obj.delem;
  2172.       s << obj.manip << obj.obj->names[7];
  2173.       before = true; 
  2174.      } 
  2175.     if ((*obj.include)[8]) { 
  2176.       if (before) s << obj.delem;
  2177.       s << obj.manip << obj.obj->names[8];
  2178.      } 
  2179.     return s; 
  2180.   } 
  2181.   template <class Manip>
  2182.   ostream& operator << (ostream& s, const NAME##_cus_equal_list<Manip>& obj) { 
  2183.     bool before = false; 
  2184.     if ((*obj.include)[0]) { 
  2185.       s << obj.obj->names[0] << obj.comp << obj.manip << obj.obj->##I1;
  2186.       before = true; 
  2187.      } 
  2188.     if ((*obj.include)[1]) { 
  2189.       if (before) s << obj.delem;
  2190.       s << obj.obj->names[1] << obj.comp << obj.manip << obj.obj->##I2;
  2191.       before = true; 
  2192.      } 
  2193.     if ((*obj.include)[2]) { 
  2194.       if (before) s << obj.delem;
  2195.       s << obj.obj->names[2] << obj.comp << obj.manip << obj.obj->##I3;
  2196.       before = true; 
  2197.      } 
  2198.     if ((*obj.include)[3]) { 
  2199.       if (before) s << obj.delem;
  2200.       s << obj.obj->names[3] << obj.comp << obj.manip << obj.obj->##I4;
  2201.       before = true; 
  2202.      } 
  2203.     if ((*obj.include)[4]) { 
  2204.       if (before) s << obj.delem;
  2205.       s << obj.obj->names[4] << obj.comp << obj.manip << obj.obj->##I5;
  2206.       before = true; 
  2207.      } 
  2208.     if ((*obj.include)[5]) { 
  2209.       if (before) s << obj.delem;
  2210.       s << obj.obj->names[5] << obj.comp << obj.manip << obj.obj->##I6;
  2211.       before = true; 
  2212.      } 
  2213.     if ((*obj.include)[6]) { 
  2214.       if (before) s << obj.delem;
  2215.       s << obj.obj->names[6] << obj.comp << obj.manip << obj.obj->##I7;
  2216.       before = true; 
  2217.      } 
  2218.     if ((*obj.include)[7]) { 
  2219.       if (before) s << obj.delem;
  2220.       s << obj.obj->names[7] << obj.comp << obj.manip << obj.obj->##I8;
  2221.       before = true; 
  2222.      } 
  2223.     if ((*obj.include)[8]) { 
  2224.       if (before) s << obj.delem;
  2225.       s << obj.obj->names[8] << obj.comp << obj.manip << obj.obj->##I9;
  2226.      } 
  2227.     return s; 
  2228.   } 
  2229.   template <class Manip>
  2230.   inline NAME##_value_list<Manip> NAME##::value_list(cchar *d, Manip m) const { 
  2231.     return NAME##_value_list<Manip> (this, d, m); 
  2232.   } 
  2233.   template <class Manip>
  2234.   inline NAME##_field_list<Manip> NAME##::field_list(cchar *d, Manip m) const { 
  2235.     return NAME##_field_list<Manip> (this, d, m); 
  2236.   } 
  2237.   template <class Manip>
  2238.   inline NAME##_equal_list<Manip> NAME##::equal_list(cchar *d, cchar *c, Manip m) const { 
  2239.     return NAME##_equal_list<Manip> (this, d, c, m); 
  2240.   } 
  2241.   template <class Manip>
  2242.   inline NAME##_cus_value_list<Manip> NAME##::value_list(cchar *d, Manip m,
  2243.        bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9) const {
  2244.     return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); 
  2245.   } 
  2246.   template <class Manip>
  2247.   inline NAME##_cus_field_list<Manip> NAME##::field_list(cchar *d, Manip m,
  2248.  bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9) const { 
  2249.     return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); 
  2250.   } 
  2251.   template <class Manip>
  2252.   inline NAME##_cus_equal_list<Manip> NAME##::equal_list(cchar *d, cchar *c, Manip m,
  2253.  bool i1, bool i2, bool i3, bool i4, bool i5, bool i6, bool i7, bool i8, bool i9) const { 
  2254.     return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); 
  2255.   } 
  2256.   template <class Manip>
  2257.   inline NAME##_cus_value_list<Manip> NAME##::value_list(cchar *d, Manip m,
  2258.        ##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 { 
  2259.     return NAME##_cus_value_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); 
  2260.   } 
  2261.   template <class Manip>
  2262.   inline NAME##_cus_field_list<Manip> NAME##::field_list(cchar *d, Manip m,
  2263.  ##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 {
  2264.     return NAME##_cus_field_list<Manip> (this, d, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); 
  2265.   } 
  2266.   template <class Manip>
  2267.   inline NAME##_cus_equal_list<Manip> NAME##::equal_list(cchar *d, cchar *c, Manip m, 
  2268.  ##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 { 
  2269.     return NAME##_cus_equal_list<Manip> (this, d, c, m, i1, i2, i3, i4, i5, i6, i7, i8, i9); 
  2270.   } 
  2271.   template <class Manip>
  2272.   inline NAME##_cus_value_list<Manip> 
  2273.   NAME##::value_list(cchar *d, Manip m, sql_cmp_type sc) const {
  2274.     sql_compare_type_def_##CMP (NAME, value, NUM);
  2275.   }
  2276.   template <class Manip>
  2277.   inline NAME##_cus_field_list<Manip> 
  2278.   NAME##::field_list(cchar *d, Manip m, sql_cmp_type sc) const {
  2279.     sql_compare_type_def_##CMP (NAME, field, NUM);
  2280.   }
  2281.   template <class Manip>
  2282.   inline NAME##_cus_equal_list<Manip> 
  2283.   NAME##::equal_list(cchar *d, cchar *c, Manip m, sql_cmp_type sc) const {
  2284.     sql_compare_type_defe_##CMP (NAME, equal, NUM);
  2285.   }
  2286.   template <sql_dummy_type dummy> 
  2287.   void populate_##NAME (NAME *s, const MysqlRow &row) { 
  2288.     s->##I1 = row[ O1 ];
  2289.     s->##I2 = row[ O2 ];
  2290.     s->##I3 = row[ O3 ];
  2291.     s->##I4 = row[ O4 ];
  2292.     s->##I5 = row[ O5 ];
  2293.     s->##I6 = row[ O6 ];
  2294.     s->##I7 = row[ O7 ];
  2295.     s->##I8 = row[ O8 ];
  2296.     s->##I9 = row[ O9 ];
  2297.   } 
  2298.   inline NAME##::##NAME (const MysqlRow &row) 
  2299.                                         {populate_##NAME##<sql_dummy>(this, row);}
  2300.   inline void NAME##::set (const MysqlRow &row)
  2301.                                         {populate_##NAME##<sql_dummy>(this, row);}
  2302.   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, 0 )
  2303. #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) 
  2304.   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)
  2305. #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) 
  2306.   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) 
  2307. #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) 
  2308.   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)
  2309. #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) 
  2310.   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)
  2311. // ---------------------------------------------------
  2312. //                  End Create 9
  2313. // ---------------------------------------------------
  2314. // ---------------------------------------------------
  2315. //                  Begin Create 10
  2316. // ---------------------------------------------------
  2317. #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)
  2318.   struct NAME; 
  2319.   template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);
  2320.   struct NAME { 
  2321.     T1 I1;
  2322.     T2 I2;
  2323.     T3 I3;
  2324.     T4 I4;
  2325.     T5 I5;
  2326.     T6 I6;
  2327.     T7 I7;
  2328.     T8 I8;
  2329.     T9 I9;
  2330.     T10 I10; 
  2331.     NAME () {} 
  2332.     NAME (const MysqlRow &row);
  2333.     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, 0, 0)
  2334.   }; 
  2335.   template <sql_dummy_type dummy> 
  2336.     void populate_##NAME (NAME *s, const MysqlRow &row) { 
  2337.     s->##I1 = row[ O1 ];
  2338.     s->##I2 = row[ O2 ];
  2339.     s->##I3 = row[ O3 ];
  2340.     s->##I4 = row[ O4 ];
  2341.     s->##I5 = row[ O5 ];
  2342.     s->##I6 = row[ O6 ];
  2343.     s->##I7 = row[ O7 ];
  2344.     s->##I8 = row[ O8 ];
  2345.     s->##I9 = row[ O9 ];
  2346.     s->##I10 = row[ O10 ]; 
  2347.   } 
  2348.   inline NAME##::##NAME (const MysqlRow &row) 
  2349.     {populate_##NAME##<sql_dummy>(this, row);} 
  2350.   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, 0 )
  2351. #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) 
  2352.   struct NAME; 
  2353.   enum NAME##_enum { 
  2354.     NAME##_##I1,
  2355.     NAME##_##I2,
  2356.     NAME##_##I3,
  2357.     NAME##_##I4,
  2358.     NAME##_##I5,
  2359.     NAME##_##I6,
  2360.     NAME##_##I7,
  2361.     NAME##_##I8,
  2362.     NAME##_##I9,
  2363.     NAME##_##I10 
  2364.     ,NAME##_NULL 
  2365.   }; 
  2366.   template <class Manip>
  2367.   class NAME##_value_list { 
  2368.   /*friend ostream& operator << <> (ostream&, const NAME##_value_list&); */
  2369.   public: 
  2370.     const NAME *obj;
  2371.     cchar *delem;
  2372.     Manip manip;
  2373.   public: 
  2374.     NAME##_value_list (const NAME *o, cchar *d, Manip m) 
  2375.       : obj(o), delem(d), manip(m) {} 
  2376.   };
  2377.   template <class Manip>
  2378.   class NAME##_##field_list {
  2379.   /* friend ostream& operator << <> (ostream&, const NAME##_field_list&); */
  2380.   public: 
  2381.     const NAME *obj; 
  2382.     cchar *delem;
  2383.     Manip manip;
  2384.   public: 
  2385.     NAME##_field_list (const NAME *o, cchar *d, Manip m) 
  2386.       : obj(o), delem(d), manip(m) {} 
  2387.   };
  2388.   template <class Manip>
  2389.   class NAME##_equal_list { 
  2390.   /* friend ostream& operator << <> (ostream&, const NAME##_equal_list&); */
  2391.   public: 
  2392.     const NAME *obj;
  2393.     cchar *delem;
  2394.     cchar *comp;
  2395.     Manip manip;
  2396.   public: 
  2397.     NAME##_equal_list (const NAME *o, cchar *d, cchar *c, Manip m) 
  2398.       : obj(o), delem(d), comp(c), manip(m) {}
  2399.   };
  2400.   template <class Manip>
  2401.   class NAME##_cus_value_list {
  2402.   /* friend ostream& operator << <> (ostream&, 
  2403.      const NAME##_cus_value_list<Manip>&); */
  2404.   public:
  2405.     const NAME *obj;
  2406.     cchar *delem;
  2407.     Manip manip;
  2408.     vector<bool> *include;
  2409.     bool del_vector;
  2410.   public: 
  2411.     ~##NAME##_cus_value_list () {if (del_vector) delete include;} 
  2412.     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);
  2413.     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); 
  2414.     NAME##_cus_value_list (const NAME *o, cchar *d, Manip m ,vector<bool>)
  2415.       : obj(o), include(i), del_vector(false), delem(d), manip(m) {}
  2416.   };
  2417.   template <class Manip>
  2418.   class NAME##_cus_field_list { 
  2419.   /* friend ostream& operator << <> (ostream&, 
  2420.         const NAME##_cus_field_list<Manip>&); */
  2421.   public:
  2422.     const NAME *obj; 
  2423.     cchar *delem;
  2424.     Manip manip;
  2425.     vector<bool> *include; 
  2426.     bool del_vector; 
  2427.   public: 
  2428.     ~##NAME##_cus_field_list () {if (del_vector) delete include;} 
  2429.     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); 
  2430.     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); 
  2431.     NAME##_cus_field_list (const NAME *o, cchar *d, Manip m, vector<bool> *i) 
  2432.       : obj(o), include(i), del_vector(false), delem(d), manip(m) {}
  2433.   };
  2434.  template <class Manip>
  2435.  class NAME##_cus_equal_list {
  2436.  /* friend ostream& operator << <> (ostream&, 
  2437.   const NAME##_cus_equal_list<Manip>&); */
  2438.   public:
  2439.     const NAME *obj;
  2440.     vector<bool> *include;
  2441.     bool del_vector;
  2442.     cchar *delem;
  2443.     cchar *comp;
  2444.     Manip manip;
  2445.   public:
  2446.     ~##NAME##_##cus_equal_list () {if (del_vector) delete include;}
  2447.     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); 
  2448.     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); 
  2449.     NAME##_##cus_equal_list (const NAME *o, cchar *d, cchar *c, Manip m, vector<bool> *i) 
  2450.       : obj(o), include(i), del_vector(false), delem(d), comp(c), manip(m) {}
  2451.   };
  2452.   template <sql_dummy_type dummy> int sql_compare_##NAME (const NAME &, const NAME &);
  2453.   struct NAME { 
  2454.     T1 I1;
  2455.     T2 I2;
  2456.     T3 I3;
  2457.     T4 I4;
  2458.     T5 I5;
  2459.     T6 I6;
  2460.     T7 I7;
  2461.     T8 I8;
  2462.     T9 I9;
  2463.     T10 I10; 
  2464.     NAME () {} 
  2465.     NAME (const MysqlRow &row);
  2466.     void set (const MysqlRow &row);
  2467.     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, 0, 0)
  2468.     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, 0, 0)
  2469.     static char *names[];
  2470.     static char *_table;
  2471.     static char *& table() {return _table;}
  2472.     /* cus_data */
  2473.     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 {
  2474.       return value_list(",", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
  2475.     }
  2476.     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 {
  2477.       return value_list(",", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
  2478.     }
  2479.     NAME##_cus_value_list<quote_type0> value_list(vector<bool> *i) const {
  2480.       return value_list(",", mysql_quote, i);
  2481.     }
  2482.     NAME##_cus_value_list<quote_type0> value_list(sql_cmp_type sc) const {
  2483.       return value_list(",", mysql_quote, sc);
  2484.     }
  2485.     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 {
  2486.       return value_list(d, mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
  2487.     }
  2488.     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 {
  2489.       return value_list(d, mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
  2490.     }
  2491.     NAME##_cus_value_list<quote_type0> value_list(cchar *d, 
  2492. vector<bool> *i) const {
  2493.       return value_list(d, mysql_quote, i);
  2494.     }
  2495.     NAME##_cus_value_list<quote_type0> value_list(cchar *d, 
  2496. sql_cmp_type sc) const {
  2497.       return value_list(d, mysql_quote, sc);
  2498.     }
  2499.     template <class Manip>
  2500.     NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,
  2501.   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; 
  2502.     template <class Manip>
  2503.     NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m,
  2504.   ##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; 
  2505.     template <class Manip>
  2506.     NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, 
  2507.   vector<bool> *i) const;
  2508.     template <class Manip>
  2509.     NAME##_cus_value_list<Manip> value_list(cchar *d, Manip m, 
  2510.   sql_cmp_type sc) const;
  2511.     /* cus field */
  2512.     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 {
  2513.       return field_list(",", mysql_do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
  2514.     }
  2515.     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 {
  2516.       return field_list(",", mysql_do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
  2517.     }
  2518.     NAME##_cus_field_list<do_nothing_type0> field_list(vector<bool> *i) const {
  2519.       return field_list(",", mysql_do_nothing, i);
  2520.     }
  2521.     NAME##_cus_field_list<do_nothing_type0> field_list(sql_cmp_type sc) const
  2522.     {
  2523.       return field_list(",", mysql_do_nothing, sc);
  2524.     }
  2525.     NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, 
  2526.        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 {
  2527.       return field_list(d, mysql_do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
  2528.     }
  2529.     NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d,
  2530.        ##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 {
  2531.       return field_list(d, mysql_do_nothing, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
  2532.     }
  2533.     NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, 
  2534. vector<bool> *i) const {
  2535.       return field_list(d, mysql_do_nothing, i);
  2536.     }
  2537.     NAME##_cus_field_list<do_nothing_type0> field_list(cchar *d, 
  2538. sql_cmp_type sc) const {
  2539.       return field_list(d, mysql_do_nothing, sc);
  2540.     }
  2541.     template <class Manip>
  2542.     NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,
  2543.     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; 
  2544.     template <class Manip>
  2545.     NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,
  2546.     ##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; 
  2547.     template <class Manip>
  2548.     NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m,
  2549.     vector<bool> *i) const;
  2550.     template <class Manip>
  2551.     NAME##_cus_field_list<Manip> field_list(cchar *d, Manip m, 
  2552.     sql_cmp_type sc) const;
  2553.     /* cus equal */
  2554.     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 {
  2555.       return equal_list(",", " = ", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
  2556.     }
  2557.     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 {
  2558.       return equal_list(",", " = ", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
  2559.     }
  2560.     NAME##_cus_equal_list<quote_type0> equal_list(vector<bool> *i) const {
  2561.       return equal_list(",", " = ", mysql_quote, i);
  2562.     }
  2563.     NAME##_cus_equal_list<quote_type0> equal_list(sql_cmp_type sc) const {
  2564.       return equal_list(",", " = ", mysql_quote, sc);
  2565.     }
  2566.     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 {
  2567.       return equal_list(d, " = ", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
  2568.     }
  2569.     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 {
  2570.       return equal_list(d, " = ", mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
  2571.     }
  2572.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, 
  2573. vector<bool> *i) const {
  2574.       return equal_list(d, " = ", mysql_quote, i);
  2575.     }
  2576.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, 
  2577. sql_cmp_type sc) const {
  2578.       return equal_list(d, " = ", mysql_quote, sc);
  2579.     }
  2580.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,
  2581.                                                 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 {
  2582.       return equal_list(d, c, mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
  2583.     }
  2584.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,
  2585.                                                 ##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 {
  2586.       return equal_list(d, c, mysql_quote, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10);
  2587.     }
  2588.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,
  2589. vector<bool> *i) const {
  2590.       return equal_list(d, c, mysql_quote, i);
  2591.     }
  2592.     NAME##_cus_equal_list<quote_type0> equal_list(cchar *d, cchar *c,
  2593. sql_cmp_type sc) const {
  2594.       return equal_list(d, c, mysql_quote, sc);
  2595.     }
  2596.     template <class Manip>
  2597.     NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, 
  2598.     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; 
  2599.     template <class Manip>
  2600.     NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, 
  2601.     ##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; 
  2602.     template <class Manip>
  2603.     NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, 
  2604.     vector<bool> *i) const;
  2605.     template <class Manip>
  2606.     NAME##_cus_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m, 
  2607.     sql_cmp_type sc) const;
  2608.     NAME##_value_list<quote_type0> value_list() const {
  2609.       return value_list(",", mysql_quote);}
  2610.     NAME##_value_list<quote_type0> value_list(cchar *d) const {
  2611.       return value_list(d, mysql_quote);}
  2612.     template <class Manip> 
  2613.     NAME##_value_list<Manip> value_list(cchar *d, Manip m) const; 
  2614.     NAME##_field_list<do_nothing_type0> field_list() const {
  2615.       return field_list(",", mysql_do_nothing);}
  2616.     NAME##_field_list<do_nothing_type0> field_list(cchar *d) const {
  2617.       return field_list(d, mysql_do_nothing);}
  2618.     template <class Manip>
  2619.     NAME##_field_list<Manip> field_list(cchar *d, Manip m) const; 
  2620.     NAME##_equal_list<quote_type0> equal_list(cchar *d = ",", 
  2621.                                               cchar *c = " = ") const{
  2622.       return equal_list(d, c, mysql_quote);}
  2623.     template <class Manip>
  2624.     NAME##_equal_list<Manip> equal_list(cchar *d, cchar *c, Manip m) const; 
  2625.   }; 
  2626.   char *##NAME##::names[] = { 
  2627.     N1 ,
  2628.     N2 ,
  2629.     N3 ,
  2630.     N4 ,
  2631.     N5 ,
  2632.     N6 ,
  2633.     N7 ,
  2634.     N8 ,
  2635.     N9 ,
  2636.     N10  
  2637.   }; 
  2638.   char *##NAME##::_table = #NAME ;  
  2639.   template <class Manip>
  2640.   NAME##_cus_value_list<Manip>::NAME##_cus_value_list
  2641.   (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) 
  2642.   { 
  2643.     delem = d;
  2644.     manip = m;
  2645.     del_vector = true;
  2646.     obj = o; 
  2647.     include = new vector<bool>(10, false);
  2648.     if (i1) (*include)[0]=true;
  2649.     if (i2) (*include)[1]=true;
  2650.     if (i3) (*include)[2]=true;
  2651.     if (i4) (*include)[3]=true;
  2652.     if (i5) (*include)[4]=true;
  2653.     if (i6) (*include)[5]=true;
  2654.     if (i7) (*include)[6]=true;
  2655.     if (i8) (*include)[7]=true;
  2656.     if (i9) (*include)[8]=true;
  2657.     if (i10) (*include)[9]=true;
  2658.   } 
  2659.   template <class Manip>
  2660.   NAME##_cus_value_list<Manip>::NAME##_cus_value_list
  2661.   (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) { 
  2662.     delem = d;
  2663.     manip = m;
  2664.     del_vector = true; 
  2665.     obj = o; 
  2666.     include = new vector<bool>(10, false); 
  2667.     if (i1 == NAME##_NULL) return;
  2668.     (*include)[i1]=true;
  2669.     if (i2 == NAME##_NULL) return;
  2670.     (*include)[i2]=true;
  2671.     if (i3 == NAME##_NULL) return;
  2672.     (*include)[i3]=true;
  2673.     if (i4 == NAME##_NULL) return;
  2674.     (*include)[i4]=true;
  2675.     if (i5 == NAME##_NULL) return;
  2676.     (*include)[i5]=true;
  2677.     if (i6 == NAME##_NULL) return;
  2678.     (*include)[i6]=true;
  2679.     if (i7 == NAME##_NULL) return;
  2680.     (*include)[i7]=true;
  2681.     if (i8 == NAME##_NULL) return;
  2682.     (*include)[i8]=true;
  2683.     if (i9 == NAME##_NULL) return;
  2684.     (*include)[i9]=true;
  2685.     if (i10 == NAME##_NULL) return;
  2686.     (*include)[i10]=true;
  2687.   }
  2688.   template <class Manip>
  2689.   NAME##_cus_field_list<Manip>::NAME##_cus_field_list
  2690.   (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) {
  2691.     delem = d;
  2692.     manip = m;
  2693.     del_vector = true; 
  2694.     obj = o; 
  2695.     include = new vector<bool>(10, false); 
  2696.     if (i1) (*include)[0]=true;
  2697.     if (i2) (*include)[1]=true;
  2698.     if (i3) (*include)[2]=true;
  2699.     if (i4) (*include)[3]=true;
  2700.     if (i5) (*include)[4]=true;
  2701.     if (i6) (*include)[5]=true;
  2702.     if (i7) (*include)[6]=true;
  2703.     if (i8) (*include)[7]=true;
  2704.     if (i9) (*include)[8]=true;
  2705.     if (i10) (*include)[9]=true;
  2706.   } 
  2707.   template <class Manip>
  2708.   NAME##_cus_field_list<Manip>::NAME##_cus_field_list
  2709.   (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) { 
  2710.     delem = d;
  2711.     manip = m;
  2712.     del_vector = true; 
  2713.     obj = o; 
  2714.     include = new vector<bool>(10, false); 
  2715.     if (i1 == NAME##_NULL) return;
  2716.     (*include)[i1]=true;
  2717.     if (i2 == NAME##_NULL) return;
  2718.     (*include)[i2]=true;
  2719.     if (i3 == NAME##_NULL) return;
  2720.     (*include)[i3]=true;
  2721.     if (i4 == NAME##_NULL) return;
  2722.     (*include)[i4]=true;
  2723.     if (i5 == NAME##_NULL) return;
  2724.     (*include)[i5]=true;
  2725.     if (i6 == NAME##_NULL) return;
  2726.     (*include)[i6]=true;
  2727.     if (i7 == NAME##_NULL) return;
  2728.     (*include)[i7]=true;
  2729.     if (i8 == NAME##_NULL) return;
  2730.     (*include)[i8]=true;
  2731.     if (i9 == NAME##_NULL) return;
  2732.     (*include)[i9]=true;
  2733.     if (i10 == NAME##_NULL) return;
  2734.     (*include)[i10]=true;
  2735.   }
  2736.   template <class Manip>
  2737.   NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list
  2738.   (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) { 
  2739.     delem = d;
  2740.     comp = c;
  2741.     manip = m;
  2742.     del_vector = true; 
  2743.     obj = o; 
  2744.     include = new vector<bool>(10, false); 
  2745.     if (i1) (*include)[0]=true;
  2746.     if (i2) (*include)[1]=true;
  2747.     if (i3) (*include)[2]=true;
  2748.     if (i4) (*include)[3]=true;
  2749.     if (i5) (*include)[4]=true;
  2750.     if (i6) (*include)[5]=true;
  2751.     if (i7) (*include)[6]=true;
  2752.     if (i8) (*include)[7]=true;
  2753.     if (i9) (*include)[8]=true;
  2754.     if (i10) (*include)[9]=true;
  2755.   } 
  2756.   template <class Manip>
  2757.   NAME##_cus_equal_list<Manip>::NAME##_cus_equal_list
  2758.   (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) { 
  2759.     delem = d;
  2760.     comp = c;
  2761.     manip = m;
  2762.     del_vector = true; 
  2763.     obj = o; 
  2764.     include = new vector<bool>(10, false); 
  2765.     if (i1 == NAME##_NULL) return;
  2766.     (*include)[i1]=true;
  2767.     if (i2 == NAME##_NULL) return;
  2768.     (*include)[i2]=true;
  2769.     if (i3 == NAME##_NULL) return;
  2770.     (*include)[i3]=true;
  2771.     if (i4 == NAME##_NULL) return;
  2772.     (*include)[i4]=true;
  2773.     if (i5 == NAME##_NULL) return;
  2774.     (*include)[i5]=true;
  2775.     if (i6 == NAME##_NULL) return;
  2776.     (*include)[i6]=true;
  2777.     if (i7 == NAME##_NULL) return;
  2778.     (*include)[i7]=true;
  2779.     if (i8 == NAME##_NULL) return;
  2780.     (*include)[i8]=true;
  2781.     if (i9 == NAME##_NULL) return;
  2782.     (*include)[i9]=true;
  2783.     if (i10 == NAME##_NULL) return;
  2784.     (*include)[i10]=true;
  2785.   }
  2786.   template <class Manip>
  2787.   ostream& operator << (ostream& s, const NAME##_value_list<Manip>& obj) { 
  2788.     s << obj.manip << obj.obj->##I1 << obj.delem;
  2789.     s << obj.manip << obj.obj->##I2 << obj.delem;
  2790.     s << obj.manip << obj.obj->##I3 << obj.delem;
  2791.     s << obj.manip << obj.obj->##I4 << obj.delem;
  2792.     s << obj.manip << obj.obj->##I5 << obj.delem;
  2793.     s << obj.manip << obj.obj->##I6 << obj.delem;
  2794.     s << obj.manip << obj.obj->##I7 << obj.delem;
  2795.     s << obj.manip << obj.obj->##I8 << obj.delem;
  2796.     s << obj.manip << obj.obj->##I9 << obj.delem;
  2797.     s << obj.manip << obj.obj->##I10; 
  2798.     return s; 
  2799.   } 
  2800.   template <class Manip>
  2801.   ostream& operator << (ostream& s, const NAME##_field_list<Manip>& obj) { 
  2802.     s << obj.manip << obj.obj->names[0] << obj.delem;
  2803.     s << obj.manip << obj.obj->names[1] << obj.delem;
  2804.     s << obj.manip << obj.obj->names[2] << obj.delem;
  2805.     s << obj.manip << obj.obj->names[3] << obj.delem;
  2806.     s << obj.manip << obj.obj->names[4] << obj.delem;
  2807.     s << obj.manip << obj.obj->names[5] << obj.delem;
  2808.     s << obj.manip << obj.obj->names[6] << obj.delem;
  2809.     s << obj.manip << obj.obj->names[7] << obj.delem;