Mercurial > forge
changeset 11657:465192f682f0 octave-forge
Pass connection information to converters.
author | i7tiol |
---|---|
date | Sat, 27 Apr 2013 09:35:39 +0000 |
parents | d38859613a53 |
children | f9f1af45e49a |
files | main/database/src/command.cc main/database/src/command.h main/database/src/converters.cc main/database/src/converters.h main/database/src/converters_arr_comp.cc |
diffstat | 5 files changed, 151 insertions(+), 85 deletions(-) [+] |
line wrap: on
line diff
--- a/main/database/src/command.cc Sat Apr 27 08:33:57 2013 +0000 +++ b/main/database/src/command.cc Sat Apr 27 09:35:39 2013 +0000 @@ -95,7 +95,6 @@ { oct_type_t oct_type; oct_pq_conv_t *conv; - oct_pq_from_octave_fp_t conv_fcn; if (ptypes(i).is_empty ()) { @@ -136,18 +135,17 @@ switch (oct_type) { case simple: - conv_fcn = conv->from_octave_bin; - if (conv_fcn (params(i), valsvec[i])) + if (conv->from_octave_bin (conn, params(i), valsvec[i])) valid = 0; break; case array: - if (from_octave_bin_array (params(i), valsvec[i], conv)) + if (from_octave_bin_array (conn, params(i), valsvec[i], conv)) valid = 0; break; case composite: - if (from_octave_bin_composite (params(i), valsvec[i], conv)) + if (from_octave_bin_composite (conn, params(i), valsvec[i], conv)) valid = 0; break; @@ -425,17 +423,17 @@ switch (oct_type) { case simple: - if (simple_type_to_octave (v, ov, nb)) + if (simple_type_to_octave (conn, v, ov, nb)) valid = 0; break; case array: - if ((this->*array_to_octave) (v, ov, nb, conv)) + if ((this->*array_to_octave) (conn, v, ov, nb, conv)) valid = 0; break; case composite: - if ((this->*composite_to_octave) (v, ov, nb, conv)) + if ((this->*composite_to_octave) (conn, v, ov, nb, conv)) valid = 0; break; @@ -766,17 +764,18 @@ switch (oct_types[j]) { case simple: - if (convs[j]->from_octave_bin (data(i, j), val)) + if (convs[j]->from_octave_bin (conn, data(i, j), val)) conversion_failed = true; break; case array: - if (from_octave_bin_array (data(i, j), val, convs[j])) + if (from_octave_bin_array (conn, data(i, j), val, + convs[j])) conversion_failed = true; break; case composite: - if (from_octave_bin_composite (data(i, j), val, + if (from_octave_bin_composite (conn, data(i, j), val, convs[j])) conversion_failed = true; break;
--- a/main/database/src/command.h Sat Apr 27 08:33:57 2013 +0000 +++ b/main/database/src/command.h Sat Apr 27 09:35:39 2013 +0000 @@ -58,10 +58,12 @@ count_state; typedef int (command::*to_octave_array_fp_t) - (char *, octave_value &, int, oct_pq_conv_t *); + (const octave_pq_connection &, char *, octave_value &, + int, oct_pq_conv_t *); typedef int (command::*to_octave_composite_fp_t) - (char *, octave_value &, int, oct_pq_conv_t *); + (const octave_pq_connection &, char *, octave_value &, + int, oct_pq_conv_t *); int all_results_fetched (void) { @@ -126,25 +128,33 @@ oct_pq_conv_t *pgtype_from_spec (Oid, oct_pq_conv_t *&, oct_type_t &); - int from_octave_bin_array (const octave_value &oct_arr, oct_pq_dynvec_t &val, + 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 (const octave_value &oct_comp, + 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 (const octave_value &oct_arr, oct_pq_dynvec_t &val, + 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 (const octave_value &oct_comp, + 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 (char *, octave_value &, int, oct_pq_conv_t *); + int to_octave_bin_array (const octave_pq_connection &conn, + char *, octave_value &, int, oct_pq_conv_t *); - int to_octave_bin_composite (char *, octave_value &, int, oct_pq_conv_t *); + int to_octave_bin_composite (const octave_pq_connection &conn, + char *, octave_value &, int, oct_pq_conv_t *); - int to_octave_str_array (char *, octave_value &, int, oct_pq_conv_t *); + int to_octave_str_array (const octave_pq_connection &conn, + char *, octave_value &, int, oct_pq_conv_t *); - int to_octave_str_composite (char *, octave_value &, int, oct_pq_conv_t *); + int to_octave_str_composite (const octave_pq_connection &conn, + char *, octave_value &, int, oct_pq_conv_t *); octave_idx_type count_row_major_order (dim_vector &, count_state &, bool);
--- a/main/database/src/converters.cc Sat Apr 27 08:33:57 2013 +0000 +++ b/main/database/src/converters.cc Sat Apr 27 09:35:39 2013 +0000 @@ -42,7 +42,8 @@ /* type bool */ -int to_octave_str_bool (const char *c, octave_value &ov, int nb) +int to_octave_str_bool (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { bool tp = (*c == 't' ? true : false); @@ -51,14 +52,16 @@ return 0; } -int to_octave_bin_bool (const char *c, octave_value &ov, int nb) +int to_octave_bin_bool (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { ov = octave_value (bool (*c)); return 0; } -int from_octave_str_bool (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_str_bool (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { bool b = ov.bool_value (); @@ -74,7 +77,8 @@ return 0; } -int from_octave_bin_bool (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_bin_bool (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { bool b = ov.bool_value (); @@ -106,24 +110,28 @@ /* type oid */ -int to_octave_str_oid (const char *c, octave_value &ov, int nb) +int to_octave_str_oid (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { return 1; } -int to_octave_bin_oid (const char *c, octave_value &ov, int nb) +int to_octave_bin_oid (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { ov = octave_value (octave_uint32 (be32toh (*((uint32_t *) c)))); return 0; } -int from_octave_str_oid (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_str_oid (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { return 1; } -int from_octave_bin_oid (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_bin_oid (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { uint32_t oid = ov.uint_value (); @@ -155,14 +163,16 @@ /* type float8 */ -int to_octave_str_float8 (const char *c, octave_value &ov, int nb) +int to_octave_str_float8 (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { // not implemented return 1; } -int to_octave_bin_float8 (const char *c, octave_value &ov, int nb) +int to_octave_bin_float8 (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { union { @@ -178,14 +188,16 @@ return 0; } -int from_octave_str_float8 (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_str_float8 (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { // not implemented return 1; } -int from_octave_bin_float8 (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_bin_float8 (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { union { @@ -224,14 +236,16 @@ /* type float4 */ -int to_octave_str_float4 (const char *c, octave_value &ov, int nb) +int to_octave_str_float4 (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { // not implemented return 1; } -int to_octave_bin_float4 (const char *c, octave_value &ov, int nb) +int to_octave_bin_float4 (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { union { @@ -247,14 +261,16 @@ return 0; } -int from_octave_str_float4 (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_str_float4 (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { // not implemented return 1; } -int from_octave_bin_float4 (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_bin_float4 (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { union { @@ -293,12 +309,14 @@ /* type bytea */ -int to_octave_str_bytea (const char *c, octave_value &ov, int nb) +int to_octave_str_bytea (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { return 1; } -int to_octave_bin_bytea (const char *c, octave_value &ov, int nb) +int to_octave_bin_bytea (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { uint8NDArray m (dim_vector (nb, 1)); @@ -311,12 +329,14 @@ return 0; } -int from_octave_str_bytea (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_str_bytea (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { return 1; } -int from_octave_bin_bytea (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_bin_bytea (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { uint8NDArray b = ov.uint8_array_value (); @@ -358,12 +378,14 @@ /* type text */ -int to_octave_str_text (const char *c, octave_value &ov, int nb) +int to_octave_str_text (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { return 1; } -int to_octave_bin_text (const char *c, octave_value &ov, int nb) +int to_octave_bin_text (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { std::string s (c, nb); @@ -372,12 +394,14 @@ return 0; } -int from_octave_str_text (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_str_text (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { return 1; } -int from_octave_bin_text (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_bin_text (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { std::string s = ov.string_value (); @@ -446,12 +470,14 @@ /* type name */ -int to_octave_str_name (const char *c, octave_value &ov, int nb) +int to_octave_str_name (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { return 1; } -int to_octave_bin_name (const char *c, octave_value &ov, int nb) +int to_octave_bin_name (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { // FIXME: should we check the string in c? @@ -462,12 +488,14 @@ return 0; } -int from_octave_str_name (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_str_name (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { return 1; } -int from_octave_bin_name (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_bin_name (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { std::string s = ov.string_value (); @@ -502,24 +530,28 @@ /* type int2 */ -int to_octave_str_int2 (const char *c, octave_value &ov, int nb) +int to_octave_str_int2 (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { return 1; } -int to_octave_bin_int2 (const char *c, octave_value &ov, int nb) +int to_octave_bin_int2 (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { ov = octave_value (octave_int16 (int16_t (be16toh (*((int16_t *) c))))); return 0; } -int from_octave_str_int2 (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_str_int2 (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { return 1; } -int from_octave_bin_int2 (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_bin_int2 (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { int16_t i2 = ov.int_value (); @@ -552,24 +584,28 @@ /* type int4 */ -int to_octave_str_int4 (const char *c, octave_value &ov, int nb) +int to_octave_str_int4 (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { return 1; } -int to_octave_bin_int4 (const char *c, octave_value &ov, int nb) +int to_octave_bin_int4 (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { ov = octave_value (octave_int32 (int32_t (be32toh (*((int32_t *) c))))); return 0; } -int from_octave_str_int4 (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_str_int4 (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { return 1; } -int from_octave_bin_int4 (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_bin_int4 (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { int32_t i4 = ov.int_value (); @@ -602,24 +638,28 @@ /* type int8 */ -int to_octave_str_int8 (const char *c, octave_value &ov, int nb) +int to_octave_str_int8 (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { return 1; } -int to_octave_bin_int8 (const char *c, octave_value &ov, int nb) +int to_octave_bin_int8 (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb) { ov = octave_value (octave_int64 (int64_t (be64toh (*((int64_t *) c))))); return 0; } -int from_octave_str_int8 (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_str_int8 (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { return 1; } -int from_octave_bin_int8 (const octave_value &ov, oct_pq_dynvec_t &val) +int from_octave_bin_int8 (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val) { int64_t i8 = ov.int64_scalar_value ();
--- a/main/database/src/converters.h Sat Apr 27 08:33:57 2013 +0000 +++ b/main/database/src/converters.h Sat Apr 27 09:35:39 2013 +0000 @@ -36,9 +36,14 @@ typedef std::vector<char> oct_pq_dynvec_t; -typedef int (*oct_pq_to_octave_fp_t) (const char *, octave_value &, int); +class octave_pq_connection; -typedef int (*oct_pq_from_octave_fp_t) (const octave_value &, oct_pq_dynvec_t &); +typedef int (*oct_pq_to_octave_fp_t) (const octave_pq_connection &, + const char *, octave_value &, int); + +typedef int (*oct_pq_from_octave_fp_t) (const octave_pq_connection &, + const octave_value &, + oct_pq_dynvec_t &); typedef std::vector<Oid> oct_pq_el_oids_t; @@ -119,10 +124,14 @@ // these prototypes are needed because pointers to these functions are // stored in the converter structures of each found enum type -int to_octave_str_text (const char *c, octave_value &ov, int nb); -int to_octave_bin_text (const char *c, octave_value &ov, int nb); -int from_octave_str_text (const octave_value &ov, oct_pq_dynvec_t &val); -int from_octave_bin_text (const octave_value &ov, oct_pq_dynvec_t &val); +int to_octave_str_text (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb); +int to_octave_bin_text (const octave_pq_connection &conn, + const char *c, octave_value &ov, int nb); +int from_octave_str_text (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val); +int from_octave_bin_text (const octave_pq_connection &conn, + const octave_value &ov, oct_pq_dynvec_t &val); // append bytes of value 'val' of type 'type' to dynamic char vector 'dv' #define OCT_PQ_PUT(dv, type, val) \
--- a/main/database/src/converters_arr_comp.cc Sat Apr 27 08:33:57 2013 +0000 +++ b/main/database/src/converters_arr_comp.cc Sat Apr 27 09:35:39 2013 +0000 @@ -85,7 +85,8 @@ } } -int command::from_octave_bin_array (const octave_value &oct_arr, +int command::from_octave_bin_array (const octave_pq_connection &conn, + const octave_value &oct_arr, oct_pq_dynvec_t &val, oct_pq_conv_t *conv) { octave_scalar_map m = oct_arr.scalar_map_value (); @@ -177,12 +178,12 @@ if (conv->is_composite) { - if (from_octave_bin_composite (arr(i), val, conv)) + if (from_octave_bin_composite (conn, arr(i), val, conv)) return 1; } else { - if (conv->from_octave_bin (arr(i), val)) + if (conv->from_octave_bin (conn, arr(i), val)) return 1; } @@ -193,7 +194,8 @@ return 0; } -int command::from_octave_bin_composite (const octave_value &oct_comp, +int command::from_octave_bin_composite (const octave_pq_connection &conn, + const octave_value &oct_comp, oct_pq_dynvec_t &val, oct_pq_conv_t *conv) { @@ -240,17 +242,17 @@ switch (oct_type) { case simple: - if (el_conv->from_octave_bin (rec(i), val)) + if (el_conv->from_octave_bin (conn, rec(i), val)) return 1; break; case array: - if (from_octave_bin_array (rec(i), val, el_conv)) + if (from_octave_bin_array (conn, rec(i), val, el_conv)) return 1; break; case composite: - if (from_octave_bin_composite (rec(i), val, el_conv)) + if (from_octave_bin_composite (conn, rec(i), val, el_conv)) return 1; break; @@ -268,7 +270,8 @@ return 0; } -int command::from_octave_str_array (const octave_value &oct_arr, +int command::from_octave_str_array (const octave_pq_connection &conn, + const octave_value &oct_arr, oct_pq_dynvec_t &val, octave_value &type) { // not implemented @@ -278,7 +281,8 @@ return 0; } -int command::from_octave_str_composite (const octave_value &oct_comp, +int command::from_octave_str_composite (const octave_pq_connection &conn, + const octave_value &oct_comp, oct_pq_dynvec_t &val, octave_value &type) { @@ -289,7 +293,8 @@ return 0; } -int command::to_octave_bin_array (char *v, octave_value &ov, int nb, +int command::to_octave_bin_array (const octave_pq_connection &conn, + char *v, octave_value &ov, int nb, oct_pq_conv_t *conv) { char *p = v; @@ -348,12 +353,12 @@ if (conv->is_composite) { - if (to_octave_bin_composite (p, ov_el, nb_el, conv)) + if (to_octave_bin_composite (conn, p, ov_el, nb_el, conv)) return 1; } else { - if (conv->to_octave_bin (p, ov_el, nb_el)) + if (conv->to_octave_bin (conn, p, ov_el, nb_el)) return 1; } @@ -373,7 +378,8 @@ return 0; } -int command::to_octave_bin_composite (char *v, octave_value &ov, int nb, +int command::to_octave_bin_composite (const octave_pq_connection &conn, + char *v, octave_value &ov, int nb, oct_pq_conv_t *conv) { char *p = v; @@ -408,17 +414,17 @@ switch (oct_type) { case simple: - if (el_conv->to_octave_bin (p, el, nb_el)) + if (el_conv->to_octave_bin (conn, p, el, nb_el)) return 1; break; case array: - if (to_octave_bin_array (p, el, nb_el, el_conv)) + if (to_octave_bin_array (conn, p, el, nb_el, el_conv)) return 1; break; case composite: - if (to_octave_bin_composite (p, el, nb_el, el_conv)) + if (to_octave_bin_composite (conn, p, el, nb_el, el_conv)) return 1; break; @@ -441,7 +447,8 @@ } -int command::to_octave_str_array (char *v, octave_value &ov, int nb, +int command::to_octave_str_array (const octave_pq_connection &conn, + char *v, octave_value &ov, int nb, oct_pq_conv_t *conv) { // not implemented @@ -451,7 +458,8 @@ return 0; } -int command::to_octave_str_composite (char *v, octave_value &ov, int nb, +int command::to_octave_str_composite (const octave_pq_connection &conn, + char *v, octave_value &ov, int nb, oct_pq_conv_t *conv) { // not implemented