changeset 11714:7198ecd313b5 octave-forge

A better way of the previous 'command' cleanup.
author i7tiol
date Mon, 20 May 2013 07:12:42 +0000
parents ee2b22964070
children ed5361361a0f
files main/database/src/command.h main/database/src/converters.h main/database/src/converters_arr_comp.cc
diffstat 3 files changed, 44 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
--- a/main/database/src/command.h	Mon May 20 06:06:37 2013 +0000
+++ b/main/database/src/command.h	Mon May 20 07:12:42 2013 +0000
@@ -50,11 +50,11 @@
   }
 
   typedef int (*to_octave_array_fp_t)
-    (octave_pq_connection &, char *, octave_value &,
+    (const octave_pq_connection &, char *, octave_value &,
      int, oct_pq_conv_t *);
 
   typedef int (*to_octave_composite_fp_t)
-    (octave_pq_connection &, char *, octave_value &,
+    (const octave_pq_connection &, char *, octave_value &,
      int, oct_pq_conv_t *);
 
   int all_results_fetched (void)
--- a/main/database/src/converters.h	Mon May 20 06:06:37 2013 +0000
+++ b/main/database/src/converters.h	Mon May 20 07:12:42 2013 +0000
@@ -121,6 +121,8 @@
 
   oct_pq_conv_t *&operator->(void) { return conv; }
 
+  oct_pq_conv_t *get_copy (void) const { return conv; }
+
 private:
 
   oct_pq_conv_t *conv;
@@ -147,47 +149,47 @@
 int from_octave_bin_text (const octave_pq_connection &conn,
                           const octave_value &ov, oct_pq_dynvec_t &val);
 
-oct_pq_conv_t *pgtype_from_octtype (octave_pq_connection &conn,
+oct_pq_conv_t *pgtype_from_octtype (const octave_pq_connection &conn,
                                     const octave_value &);
 
-oct_pq_conv_t *pgtype_from_spec (octave_pq_connection &, std::string &,
+oct_pq_conv_t *pgtype_from_spec (const octave_pq_connection &, std::string &,
                                  pq_oct_type_t &);
 
-oct_pq_conv_t *pgtype_from_spec (octave_pq_connection &, Oid,
+oct_pq_conv_t *pgtype_from_spec (const octave_pq_connection &, Oid,
                                  pq_oct_type_t &);
 
-oct_pq_conv_t *pgtype_from_spec (octave_pq_connection &, Oid,
+oct_pq_conv_t *pgtype_from_spec (const octave_pq_connection &, Oid,
                                  oct_pq_conv_t *&, pq_oct_type_t &);
 
 octave_idx_type count_row_major_order (dim_vector &, oct_mo_count_state &,
                                        bool);
 
-int from_octave_bin_array (octave_pq_connection &conn,
+int from_octave_bin_array (const octave_pq_connection &conn,
                            const octave_value &oct_arr, oct_pq_dynvec_t &val,
                            oct_pq_conv_t *);
 
-int from_octave_bin_composite (octave_pq_connection &conn,
+int from_octave_bin_composite (const octave_pq_connection &conn,
                                const octave_value &oct_comp,
                                oct_pq_dynvec_t &val, oct_pq_conv_t *);
 
-int from_octave_str_array (octave_pq_connection &conn,
+int from_octave_str_array (const octave_pq_connection &conn,
                            const octave_value &oct_arr, oct_pq_dynvec_t &val,
                            octave_value &type);
 
-int from_octave_str_composite (octave_pq_connection &conn,
+int from_octave_str_composite (const octave_pq_connection &conn,
                                const octave_value &oct_comp,
                                oct_pq_dynvec_t &val, octave_value &type);
 
-int to_octave_bin_array (octave_pq_connection &conn,
+int to_octave_bin_array (const octave_pq_connection &conn,
                          char *, octave_value &, int, oct_pq_conv_t *);
 
-int to_octave_bin_composite (octave_pq_connection &conn,
+int to_octave_bin_composite (const octave_pq_connection &conn,
                              char *, octave_value &, int, oct_pq_conv_t *);
 
-int to_octave_str_array (octave_pq_connection &conn,
+int to_octave_str_array (const octave_pq_connection &conn,
                          char *, octave_value &, int, oct_pq_conv_t *);
 
-int to_octave_str_composite (octave_pq_connection &conn,
+int to_octave_str_composite (const octave_pq_connection &conn,
                              char *, octave_value &, int, oct_pq_conv_t *);
 
 // append bytes of value 'val' of type 'type' to dynamic char vector 'dv'
--- a/main/database/src/converters_arr_comp.cc	Mon May 20 06:06:37 2013 +0000
+++ b/main/database/src/converters_arr_comp.cc	Mon May 20 07:12:42 2013 +0000
@@ -33,7 +33,7 @@
    return NULL;                                                         \
  }
 
-oct_pq_conv_t *pgtype_from_spec (octave_pq_connection &conn,
+oct_pq_conv_t *pgtype_from_spec (const octave_pq_connection &conn,
                                  std::string &name,
                                  pq_oct_type_t &oct_type)
 {
@@ -51,7 +51,7 @@
       // printf ("array ");
     }
 
-  oct_pq_name_conv_map_t::iterator iter;
+  oct_pq_name_conv_map_t::const_iterator iter;
 
   if ((iter = conn.name_conv_map.find (name.c_str ())) ==
       conn.name_conv_map.end ())
@@ -61,7 +61,7 @@
     {
       // printf ("(looked up in name map) ");
 
-      conv = iter->second;
+      conv = iter->second.get_copy ();
 
       if (oct_type == array && ! conv->aoid)
         {
@@ -82,21 +82,21 @@
   return conv;
 }
 
-oct_pq_conv_t *pgtype_from_spec (octave_pq_connection &conn, Oid oid,
+oct_pq_conv_t *pgtype_from_spec (const octave_pq_connection &conn, Oid oid,
                                  pq_oct_type_t &oct_type)
 {
   // printf ("pgtype_from_spec(%u): ", oid);
 
   oct_pq_conv_t *conv = NULL;
 
-  oct_pq_conv_map_t::iterator iter;
+  oct_pq_conv_map_t::const_iterator iter;
   
   if ((iter = conn.conv_map.find (oid)) == conn.conv_map.end ())
     {
       error ("no converter found for element oid %u", oid);
       return conv;
     }
-  conv = iter->second;
+  conv = iter->second.get_copy ();
   // printf ("(looked up %s in oid map) ", conv->name.c_str ());
 
   if (conv->aoid == oid)
@@ -111,7 +111,7 @@
   return conv;
 }
 
-oct_pq_conv_t *pgtype_from_spec (octave_pq_connection &conn, Oid oid,
+oct_pq_conv_t *pgtype_from_spec (const octave_pq_connection &conn, Oid oid,
                                  oct_pq_conv_t *&c_conv,
                                  pq_oct_type_t &oct_type)
 {
@@ -130,7 +130,7 @@
   return c_conv;
 }
 
-oct_pq_conv_t *pgtype_from_octtype (octave_pq_connection &conn,
+oct_pq_conv_t *pgtype_from_octtype (const octave_pq_connection &conn,
                                     const octave_value &param)
 {
   // printf ("pgtype_from_octtype: ");
@@ -138,19 +138,19 @@
   if (param.is_bool_scalar ())
     {
       // printf ("bool\n");
-      return conn.name_conv_map["bool"];
+      return conn.name_conv_map.find ("bool")->second.get_copy ();
     }
   else if (param.is_real_scalar ())
     {
       if (param.is_double_type ())
         {
           // printf ("float8\n");
-          return conn.name_conv_map["float8"];
+          return conn.name_conv_map.find ("float8")->second.get_copy ();
         }
       else if (param.is_single_type ())
         {
           // printf ("float4\n");
-          return conn.name_conv_map["float4"];
+          return conn.name_conv_map.find ("float4")->second.get_copy ();
         }
     }
 
@@ -159,34 +159,34 @@
       if (param.is_int16_type ())
         {
           // printf ("int2\n");
-          return conn.name_conv_map["int2"];
+          return conn.name_conv_map.find ("int2")->second.get_copy ();
         }
       else if (param.is_int32_type ())
         {
           // printf ("int4\n");
-          return conn.name_conv_map["int4"];
+          return conn.name_conv_map.find ("int4")->second.get_copy ();
         }
       else if (param.is_int64_type ())
         {
           // printf ("int8\n");
-          return conn.name_conv_map["int8"];
+          return conn.name_conv_map.find ("int8")->second.get_copy ();
         }
       else if (param.is_uint32_type ())
         {
           // printf ("oid\n");
-          return conn.name_conv_map["oid"];
+          return conn.name_conv_map.find ("oid")->second.get_copy ();
         }
     }
 
   if (param.is_uint8_type ())
     {
       // printf ("bytea\n");
-      return conn.name_conv_map["bytea"];
+      return conn.name_conv_map.find ("bytea")->second.get_copy ();
     }
   else if (param.is_string ())
     {
       // printf ("text\n");
-      return conn.name_conv_map["text"];
+      return conn.name_conv_map.find ("text")->second.get_copy ();
     }
 
   // is_real_type() is true for strings, so is_numeric_type() would
@@ -197,13 +197,13 @@
         {
         case 2:
           // printf ("point\n");
-          return conn.name_conv_map["point"];
+          return conn.name_conv_map.find ("point")->second.get_copy ();
         case 3:
           // printf ("circle\n");
-          return conn.name_conv_map["circle"];
+          return conn.name_conv_map.find ("circle")->second.get_copy ();
         case 4:
           // printf ("lseg\n");
-          return conn.name_conv_map["lseg"];
+          return conn.name_conv_map.find ("lseg")->second.get_copy ();
         }
     }
 
@@ -269,7 +269,7 @@
     }
 }
 
-int from_octave_bin_array (octave_pq_connection &conn,
+int from_octave_bin_array (const octave_pq_connection &conn,
                            const octave_value &oct_arr,
                            oct_pq_dynvec_t &val, oct_pq_conv_t *conv)
 {
@@ -377,7 +377,7 @@
   return 0;
 }
 
-int from_octave_bin_composite (octave_pq_connection &conn,
+int from_octave_bin_composite (const octave_pq_connection &conn,
                                const octave_value &oct_comp,
                                oct_pq_dynvec_t &val,
                                oct_pq_conv_t *conv)
@@ -453,7 +453,7 @@
   return 0;
 }
 
-int from_octave_str_array (octave_pq_connection &conn,
+int from_octave_str_array (const octave_pq_connection &conn,
                            const octave_value &oct_arr,
                            oct_pq_dynvec_t &val, octave_value &type)
 {
@@ -464,7 +464,7 @@
   return 0;
 }
 
-int from_octave_str_composite (octave_pq_connection &conn,
+int from_octave_str_composite (const octave_pq_connection &conn,
                                const octave_value &oct_comp,
                                oct_pq_dynvec_t &val,
                                octave_value &type)
@@ -476,7 +476,7 @@
   return 0;
 }
 
-int to_octave_bin_array (octave_pq_connection &conn,
+int to_octave_bin_array (const octave_pq_connection &conn,
                          char *v, octave_value &ov, int nb,
                          oct_pq_conv_t *conv)
 {
@@ -561,7 +561,7 @@
   return 0;
 }
 
-int to_octave_bin_composite (octave_pq_connection &conn,
+int to_octave_bin_composite (const octave_pq_connection &conn,
                              char *v, octave_value &ov, int nb,
                              oct_pq_conv_t *conv)
 {
@@ -629,7 +629,7 @@
 }
 
 
-int to_octave_str_array (octave_pq_connection &conn,
+int to_octave_str_array (const octave_pq_connection &conn,
                          char *v, octave_value &ov, int nb,
                          oct_pq_conv_t *conv)
 {
@@ -640,7 +640,7 @@
   return 0;
 }
 
-int to_octave_str_composite (octave_pq_connection &conn,
+int to_octave_str_composite (const octave_pq_connection &conn,
                              char *v, octave_value &ov, int nb,
                              oct_pq_conv_t *conv)
 {