annotate main/database/src/converters.cc @ 11715:ed5361361a0f octave-forge

Added converter for type 'record'. Some 'const' corrections.
author i7tiol
date Mon, 20 May 2013 08:02:13 +0000
parents f4c52c68f744
children 67adec29dee0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
1 /*
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
2
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
3 Copyright (C) 2012, 2013 Olaf Till <i7tiol@t-online.de>
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
4
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
5 This program is free software; you can redistribute it and/or modify
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
6 it under the terms of the GNU General Public License as published by
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
7 the Free Software Foundation; either version 3 of the License, or
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
8 (at your option) any later version.
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
9
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
10 This program is distributed in the hope that it will be useful,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
13 GNU General Public License for more details.
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
14
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
15 You should have received a copy of the GNU General Public License
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
16 along with this program; If not, see <http://www.gnu.org/licenses/>.
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
17
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
18 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
19
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
20 #include <octave/oct.h>
11697
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
21 #include <octave/ov-struct.h>
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
22 #include <octave/ov-float.h>
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
23 #include <octave/ov-uint8.h>
11668
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
24 #include <octave/Cell.h>
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
25
11553
35e9e4b6ab34 Fix configuration of postgresql include directories.
i7tiol
parents: 11480
diff changeset
26 #include <libpq-fe.h>
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
27
11708
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
28 #include <sys/socket.h> // for AF_INET, needed in network address types
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
29
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
30 #include "converters.h"
11661
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
31 #include "pq_connection.h"
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
32
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
33 // remember to adjust OCT_PQ_NUM_CONVERTERS in converters.h
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
34
11708
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
35 #define PGSQL_AF_INET6 (AF_INET + 1) // defined so in postgresql, no
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
36 // public header file available
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
37
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
38 // helper function for debugging
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
39 void print_conv (oct_pq_conv_t *c)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
40 {
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
41 printf ("oid: %u, aoid: %u, c: %i, e: %i, nc: %i, n: %s, to_s: %i, to_b: %i, fr_s: %i, fr_b: %i,",
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
42 c->oid, c->aoid, c->is_composite, c->is_enum, c->is_not_constant, c->name.c_str (), c->to_octave_str ? 1 : 0, c->to_octave_bin ? 1 : 0, c->from_octave_str ? 1 : 0, c->from_octave_bin ? 1 : 0);
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
43
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
44 printf (", el_oids:");
11645
bd5a8f1bdfb8 Clean out harmless warnings and one unnecessarily returned column.
i7tiol
parents: 11553
diff changeset
45 for (size_t i = 0; i < c->el_oids.size (); i++)
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
46 printf (" %u", c->el_oids[i]);
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
47
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
48 printf ("\n");
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
49 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
50
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
51 /* type bool */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
52
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
53 int to_octave_str_bool (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
54 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
55 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
56 bool tp = (*c == 't' ? true : false);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
57
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
58 ov = octave_value (tp);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
59
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
60 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
61 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
62
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
63 int to_octave_bin_bool (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
64 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
65 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
66 ov = octave_value (bool (*c));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
67
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
68 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
69 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
70
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
71 int from_octave_str_bool (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
72 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
73 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
74 bool b = ov.bool_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
75
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
76 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
77 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
78 error ("can not convert octave_value to bool value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
79 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
80 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
81
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
82 val.push_back (b ? '1' : '0');
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
83 val.push_back ('\0');
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
84
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
85 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
86 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
87
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
88 int from_octave_bin_bool (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
89 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
90 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
91 bool b = ov.bool_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
92
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
93 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
94 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
95 error ("can not convert octave_value to bool value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
96 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
97 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
98
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
99 val.push_back (char (b));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
100
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
101 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
102 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
103
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
104 oct_pq_conv_t conv_bool = {0, // 16
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
105 0, // 1000
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
106 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
107 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
108 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
109 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
110 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
111 "bool",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
112 &to_octave_str_bool,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
113 &to_octave_bin_bool,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
114 &from_octave_str_bool,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
115 &from_octave_bin_bool};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
116
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
117 /* end type bool */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
118
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
119 /* type oid */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
120
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
121 int to_octave_str_oid (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
122 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
123 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
124 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
125 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
126
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
127 int to_octave_bin_oid (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
128 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
129 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
130 ov = octave_value (octave_uint32 (be32toh (*((uint32_t *) c))));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
131
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
132 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
133 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
134
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
135 int from_octave_str_oid (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
136 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
137 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
138 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
139 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
140
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
141 int from_octave_bin_oid (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
142 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
143 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
144 uint32_t oid = ov.uint_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
145
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
146 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
147 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
148 error ("can not convert octave_value to oid value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
149 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
150 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
151
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
152 OCT_PQ_PUT(val, uint32_t, htobe32 (oid))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
153
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
154 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
155 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
156
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
157 oct_pq_conv_t conv_oid = {0, // 26
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
158 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
159 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
160 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
161 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
162 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
163 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
164 "oid",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
165 &to_octave_str_oid,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
166 &to_octave_bin_oid,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
167 &from_octave_str_oid,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
168 &from_octave_bin_oid};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
169
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
170 /* end type oid */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
171
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
172 /* type float8 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
173
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
174 int to_octave_str_float8 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
175 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
176 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
177 // not implemented
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
178
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
179 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
180 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
181
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
182 int to_octave_bin_float8 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
183 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
184 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
185 union
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
186 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
187 double d;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
188 int64_t i;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
189 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
190 swap;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
191
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
192 swap.i = be64toh (*((int64_t *) c));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
193
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
194 ov = octave_value (swap.d);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
195
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
196 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
197 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
198
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
199 int from_octave_str_float8 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
200 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
201 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
202 // not implemented
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
203
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
204 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
205 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
206
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
207 int from_octave_bin_float8 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
208 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
209 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
210 union
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
211 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
212 double d;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
213 int64_t i;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
214 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
215 swap;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
216
11655
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
217 swap.d = ov.double_value ();
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
218
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
219 if (error_state)
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
220 {
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
221 error ("can not convert octave_value to float8 value");
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
222 return 1;
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
223 }
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
224
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
225 OCT_PQ_PUT(val, int64_t, htobe64 (swap.i))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
226
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
227 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
228 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
229
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
230 oct_pq_conv_t conv_float8 = {0, // 701
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
231 0, // 1022
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
232 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
233 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
234 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
235 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
236 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
237 "float8",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
238 &to_octave_str_float8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
239 &to_octave_bin_float8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
240 &from_octave_str_float8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
241 &from_octave_bin_float8};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
242
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
243 /* end type float8 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
244
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
245 /* type float4 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
246
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
247 int to_octave_str_float4 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
248 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
249 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
250 // not implemented
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
251
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
252 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
253 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
254
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
255 int to_octave_bin_float4 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
256 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
257 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
258 union
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
259 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
260 float f;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
261 int32_t i;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
262 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
263 swap;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
264
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
265 swap.i = be32toh (*((int32_t *) c));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
266
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
267 ov = octave_value (swap.f);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
268
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
269 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
270 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
271
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
272 int from_octave_str_float4 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
273 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
274 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
275 // not implemented
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
276
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
277 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
278 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
279
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
280 int from_octave_bin_float4 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
281 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
282 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
283 union
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
284 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
285 float f;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
286 int32_t i;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
287 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
288 swap;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
289
11655
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
290 swap.f = ov.float_value ();
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
291
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
292 if (error_state)
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
293 {
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
294 error ("can not convert octave_value to float4 value");
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
295 return 1;
6bbb1584d933 More efficient code order in float converters (probably useless with -O0).
i7tiol
parents: 11645
diff changeset
296 }
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
297
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
298 OCT_PQ_PUT(val, int32_t, htobe32 (swap.i))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
299
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
300 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
301 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
302
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
303 oct_pq_conv_t conv_float4 = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
304 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
305 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
306 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
307 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
308 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
309 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
310 "float4",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
311 &to_octave_str_float4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
312 &to_octave_bin_float4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
313 &from_octave_str_float4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
314 &from_octave_bin_float4};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
315
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
316 /* end type float4 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
317
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
318 /* type bytea */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
319
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
320 int to_octave_str_bytea (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
321 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
322 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
323 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
324 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
325
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
326 int to_octave_bin_bytea (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
327 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
328 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
329 uint8NDArray m (dim_vector (nb, 1));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
330
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
331 uint8_t *p = (uint8_t *) m.fortran_vec ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
332 for (octave_idx_type i = 0; i < nb; i++)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
333 *(p++) = uint8_t (*(c++));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
334
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
335 ov = octave_value (m);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
336
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
337 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
338 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
339
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
340 int from_octave_str_bytea (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
341 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
342 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
343 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
344 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
345
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
346 int from_octave_bin_bytea (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
347 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
348 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
349 uint8NDArray b = ov.uint8_array_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
350
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
351 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
352 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
353 error ("can not convert octave_value to bytea representation");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
354 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
355 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
356
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
357 octave_idx_type nl = b.numel ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
358
11712
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
359 for (octave_idx_type i = 0; i < nl; i++)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
360 val.push_back (b(i).value ());
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
361
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
362 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
363 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
364
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
365 oct_pq_conv_t conv_bytea = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
366 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
367 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
368 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
369 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
370 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
371 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
372 "bytea",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
373 &to_octave_str_bytea,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
374 &to_octave_bin_bytea,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
375 &from_octave_str_bytea,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
376 &from_octave_bin_bytea};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
377
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
378 /* end type bytea */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
379
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
380 /* type text */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
381
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
382 int to_octave_str_text (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
383 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
384 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
385 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
386 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
387
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
388 int to_octave_bin_text (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
389 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
390 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
391 std::string s (c, nb);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
392
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
393 ov = octave_value (s);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
395 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
396 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
397
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
398 int from_octave_str_text (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
399 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
400 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
401 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
402 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
403
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
404 int from_octave_bin_text (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
405 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
406 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
407 std::string s = ov.string_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
408
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
409 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
410 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
411 error ("can not convert octave_value to string");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
412 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
413 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
414
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
415 octave_idx_type l = s.size ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
416
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
417 for (int i = 0; i < l; i++)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
418 val.push_back (s[i]);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
419
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
420 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
421 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
422
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
423 oct_pq_conv_t conv_text = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
424 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
425 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
426 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
427 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
428 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
429 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
430 "text",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
431 &to_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
432 &to_octave_bin_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
433 &from_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
434 &from_octave_bin_text};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
435
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
436 /* end type text */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
437
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
438 /* type varchar */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
439
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
440 oct_pq_conv_t conv_varchar = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
441 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
442 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
443 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
444 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
445 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
446 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
447 "varchar",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
448 &to_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
449 &to_octave_bin_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
450 &from_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
451 &from_octave_bin_text};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
452
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
453 /* end type varchar */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
454
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
455 /* type bpchar */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
456
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
457 oct_pq_conv_t conv_bpchar = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
458 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
459 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
460 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
461 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
462 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
463 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
464 "bpchar",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
465 &to_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
466 &to_octave_bin_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
467 &from_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
468 &from_octave_bin_text};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
469
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
470 /* end type bpchar */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
471
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
472 /* type name */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
473
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
474 oct_pq_conv_t conv_name = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
475 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
476 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
477 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
478 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
479 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
480 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
481 "name",
11658
f9f1af45e49a Some cleanup in 'name' converters.
i7tiol
parents: 11657
diff changeset
482 &to_octave_str_text,
f9f1af45e49a Some cleanup in 'name' converters.
i7tiol
parents: 11657
diff changeset
483 &to_octave_bin_text,
f9f1af45e49a Some cleanup in 'name' converters.
i7tiol
parents: 11657
diff changeset
484 &from_octave_str_text,
f9f1af45e49a Some cleanup in 'name' converters.
i7tiol
parents: 11657
diff changeset
485 &from_octave_bin_text};
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
486
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
487 /* end type name */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
488
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
489 /* type int2 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
490
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
491 int to_octave_str_int2 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
492 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
493 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
494 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
495 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
496
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
497 int to_octave_bin_int2 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
498 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
499 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
500 ov = octave_value (octave_int16 (int16_t (be16toh (*((int16_t *) c)))));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
501
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
502 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
503 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
504
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
505 int from_octave_str_int2 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
506 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
507 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
508 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
509 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
510
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
511 int from_octave_bin_int2 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
512 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
513 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
514 int16_t i2 = ov.int_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
515
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
516 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
517 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
518 error ("can not convert octave_value to int2 value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
519 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
520 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
521
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
522 OCT_PQ_PUT(val, int16_t, htobe16 (i2))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
523
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
524 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
525 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
526
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
527 oct_pq_conv_t conv_int2 = {0, // 26
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
528 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
529 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
530 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
531 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
532 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
533 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
534 "int2",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
535 &to_octave_str_int2,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
536 &to_octave_bin_int2,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
537 &from_octave_str_int2,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
538 &from_octave_bin_int2};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
539
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
540
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
541 /* end type int2 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
542
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
543 /* type int4 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
544
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
545 int to_octave_str_int4 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
546 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
547 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
548 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
549 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
550
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
551 int to_octave_bin_int4 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
552 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
553 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
554 ov = octave_value (octave_int32 (int32_t (be32toh (*((int32_t *) c)))));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
555
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
556 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
557 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
558
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
559 int from_octave_str_int4 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
560 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
561 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
562 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
563 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
564
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
565 int from_octave_bin_int4 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
566 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
567 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
568 int32_t i4 = ov.int_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
569
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
570 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
571 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
572 error ("can not convert octave_value to int4 value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
573 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
574 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
575
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
576 OCT_PQ_PUT(val, int32_t, htobe32 (i4))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
577
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
578 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
579 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
580
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
581 oct_pq_conv_t conv_int4 = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
582 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
583 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
584 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
585 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
586 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
587 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
588 "int4",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
589 &to_octave_str_int4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
590 &to_octave_bin_int4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
591 &from_octave_str_int4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
592 &from_octave_bin_int4};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
593
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
594
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
595 /* end type int4 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
596
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
597 /* type int8 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
598
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
599 int to_octave_str_int8 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
600 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
601 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
602 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
603 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
604
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
605 int to_octave_bin_int8 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
606 const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
607 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
608 ov = octave_value (octave_int64 (int64_t (be64toh (*((int64_t *) c)))));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
609
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
610 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
611 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
612
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
613 int from_octave_str_int8 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
614 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
615 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
616 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
617 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
618
11657
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
619 int from_octave_bin_int8 (const octave_pq_connection &conn,
465192f682f0 Pass connection information to converters.
i7tiol
parents: 11656
diff changeset
620 const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
621 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
622 int64_t i8 = ov.int64_scalar_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
623
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
624 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
625 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
626 error ("can not convert octave_value to int8 value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
627 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
628 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
629
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
630 OCT_PQ_PUT(val, int64_t, htobe64 (i8))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
631
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
632 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
633 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
634
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
635 oct_pq_conv_t conv_int8 = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
636 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
637 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
638 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
639 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
640 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
641 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
642 "int8",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
643 &to_octave_str_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
644 &to_octave_bin_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
645 &from_octave_str_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
646 &from_octave_bin_int8};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
647
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
648
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
649 /* end type int8 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
650
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
651 /* type money */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
652
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
653 oct_pq_conv_t conv_money = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
654 0,
11474
4fd39d36eff5 Retrieve element information of composite types already at connection time. Exclude negative element numbers (system columns) of composite types corresponding to tables.
i7tiol
parents: 11429
diff changeset
655 oct_pq_el_oids_t (),
11480
d14a23884d9c Cache map lookups of converters for composite type elements.
i7tiol
parents: 11474
diff changeset
656 oct_pq_conv_cache_t (),
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
657 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
658 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
659 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
660 "money",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
661 &to_octave_str_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
662 &to_octave_bin_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
663 &from_octave_str_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
664 &from_octave_bin_int8};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
665
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
666 /* end type money */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
667
11661
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
668 // helpers for time types
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
669
11667
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
670 static inline octave_value time_8byte_to_octave (const char *c,
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
671 const bool &int_dt)
11661
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
672 {
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
673 if (int_dt)
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
674 {
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
675 return octave_value (octave_int64 (int64_t (be64toh (*((int64_t *) c)))));
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
676 }
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
677 else
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
678 {
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
679 union
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
680 {
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
681 double d;
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
682 int64_t i;
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
683 }
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
684 swap;
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
685
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
686 swap.i = be64toh (*((int64_t *) c));
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
687
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
688 return octave_value (swap.d);
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
689 }
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
690 }
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
691
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
692 static inline int time_8byte_from_octave (const octave_value &ov,
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
693 oct_pq_dynvec_t &val,
11667
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
694 const bool &int_dt)
11661
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
695 {
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
696 if (int_dt)
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
697 {
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
698 // don't convert automatically because of possible overflow
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
699 if (ov.is_float_type ())
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
700 {
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
701 error ("floating point octave_value provided for 8-byte time value, but postgresql is configured for int64");
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
702 return 1;
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
703 }
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
704
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
705 int64_t i8 = ov.int64_scalar_value ();
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
706
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
707 if (error_state)
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
708 {
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
709 error ("can not convert octave_value to int64 time value");
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
710 return 1;
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
711 }
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
712
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
713 OCT_PQ_PUT(val, int64_t, htobe64 (i8))
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
714
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
715 return 0;
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
716 }
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
717 else
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
718 {
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
719 // don't convert automatically because of possible loss of accuracy
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
720 if (ov.is_integer_type ())
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
721 {
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
722 error ("integer type octave_value provided for 8-byte time value, but postgresql is configured for double");
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
723 return 1;
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
724 }
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
725
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
726 union
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
727 {
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
728 double d;
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
729 int64_t i;
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
730 }
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
731 swap;
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
732
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
733 swap.d = ov.double_value ();
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
734
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
735 if (error_state)
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
736 {
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
737 error ("can not convert octave_value to double time value");
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
738 return 1;
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
739 }
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
740
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
741 OCT_PQ_PUT(val, int64_t, htobe64 (swap.i))
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
742
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
743 return 0;
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
744 }
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
745 }
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
746
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
747 // end helpers for time types
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
748
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
749 /* type timestamp */
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
750
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
751 int to_octave_str_timestamp (const octave_pq_connection &conn,
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
752 const char *c, octave_value &ov, int nb)
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
753 {
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
754 return 1;
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
755 }
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
756
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
757 int to_octave_bin_timestamp (const octave_pq_connection &conn,
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
758 const char *c, octave_value &ov, int nb)
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
759 {
11667
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
760 ov = time_8byte_to_octave (c, conn.get_integer_datetimes ());
11661
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
761
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
762 return 0;
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
763 }
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
764
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
765 int from_octave_str_timestamp (const octave_pq_connection &conn,
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
766 const octave_value &ov, oct_pq_dynvec_t &val)
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
767 {
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
768 return 1;
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
769 }
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
770
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
771 int from_octave_bin_timestamp (const octave_pq_connection &conn,
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
772 const octave_value &ov, oct_pq_dynvec_t &val)
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
773 {
11667
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
774 return (time_8byte_from_octave (ov, val, conn.get_integer_datetimes ()));
11661
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
775 }
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
776
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
777 oct_pq_conv_t conv_timestamp = {0,
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
778 0,
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
779 oct_pq_el_oids_t (),
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
780 oct_pq_conv_cache_t (),
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
781 false,
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
782 false,
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
783 false,
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
784 "timestamp",
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
785 &to_octave_str_timestamp,
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
786 &to_octave_bin_timestamp,
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
787 &from_octave_str_timestamp,
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
788 &from_octave_bin_timestamp};
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
789
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
790 /* end type timestamp */
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
791
11667
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
792 /* type timestamptz */
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
793
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
794 oct_pq_conv_t conv_timestamptz = {0,
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
795 0,
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
796 oct_pq_el_oids_t (),
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
797 oct_pq_conv_cache_t (),
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
798 false,
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
799 false,
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
800 false,
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
801 "timestamptz",
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
802 &to_octave_str_timestamp,
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
803 &to_octave_bin_timestamp,
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
804 &from_octave_str_timestamp,
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
805 &from_octave_bin_timestamp};
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
806
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
807 /* end type timestamptz */
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
808
11668
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
809 /* type interval */
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
810
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
811 int to_octave_str_interval (const octave_pq_connection &conn,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
812 const char *c, octave_value &ov, int nb)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
813 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
814 return 1;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
815 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
816
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
817 int to_octave_bin_interval (const octave_pq_connection &conn,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
818 const char *c, octave_value &ov, int nb)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
819 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
820 Cell tp (dim_vector (3, 1));
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
821
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
822 tp(0) = time_8byte_to_octave (c, conn.get_integer_datetimes ());
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
823
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
824 c += 8;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
825
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
826 tp(1) = octave_value (octave_int32 (int32_t (be32toh (*((int32_t *) c)))));
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
827
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
828 c += 4;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
829
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
830 tp(2) = octave_value (octave_int32 (int32_t (be32toh (*((int32_t *) c)))));
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
831
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
832 ov = octave_value (tp);
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
833
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
834 return 0;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
835 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
836
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
837 int from_octave_str_interval (const octave_pq_connection &conn,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
838 const octave_value &ov, oct_pq_dynvec_t &val)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
839 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
840 return 1;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
841 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
842
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
843 int from_octave_bin_interval (const octave_pq_connection &conn,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
844 const octave_value &ov, oct_pq_dynvec_t &val)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
845 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
846 Cell iv = ov.cell_value ();
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
847 if (error_state || iv.numel () != 3)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
848 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
849 error ("interval: can not convert octave_value to cell with 3 elements");
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
850 return 1;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
851 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
852
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
853 if (time_8byte_from_octave (iv(0), val, conn.get_integer_datetimes ()))
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
854 return 1;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
855
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
856 for (int id = 1; id < 3; id++)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
857 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
858 int32_t i4 = iv(id).int_value ();
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
859
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
860 if (error_state)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
861 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
862 error ("interval: can not convert octave_value to int4 value");
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
863 return 1;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
864 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
865
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
866 OCT_PQ_PUT(val, int32_t, htobe32 (i4))
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
867 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
868
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
869 return 0;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
870 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
871
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
872 oct_pq_conv_t conv_interval = {0,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
873 0,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
874 oct_pq_el_oids_t (),
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
875 oct_pq_conv_cache_t (),
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
876 false,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
877 false,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
878 false,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
879 "interval",
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
880 &to_octave_str_interval,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
881 &to_octave_bin_interval,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
882 &from_octave_str_interval,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
883 &from_octave_bin_interval};
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
884
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
885 /* end type interval */
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
886
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
887 /* type time */
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
888
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
889 int to_octave_str_time (const octave_pq_connection &conn,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
890 const char *c, octave_value &ov, int nb)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
891 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
892 return 1;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
893 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
894
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
895 int to_octave_bin_time (const octave_pq_connection &conn,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
896 const char *c, octave_value &ov, int nb)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
897 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
898 ov = time_8byte_to_octave (c, conn.get_integer_datetimes ());
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
899
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
900 return 0;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
901 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
902
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
903 int from_octave_str_time (const octave_pq_connection &conn,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
904 const octave_value &ov, oct_pq_dynvec_t &val)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
905 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
906 return 1;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
907 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
908
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
909 int from_octave_bin_time (const octave_pq_connection &conn,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
910 const octave_value &ov, oct_pq_dynvec_t &val)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
911 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
912 return (time_8byte_from_octave (ov, val, conn.get_integer_datetimes ()));
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
913 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
914
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
915 oct_pq_conv_t conv_time = {0,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
916 0,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
917 oct_pq_el_oids_t (),
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
918 oct_pq_conv_cache_t (),
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
919 false,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
920 false,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
921 false,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
922 "time",
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
923 &to_octave_str_time,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
924 &to_octave_bin_time,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
925 &from_octave_str_time,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
926 &from_octave_bin_time};
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
927
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
928 /* end type time */
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
929
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
930 /* type timetz */
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
931
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
932 int to_octave_str_timetz (const octave_pq_connection &conn,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
933 const char *c, octave_value &ov, int nb)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
934 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
935 return 1;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
936 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
937
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
938 int to_octave_bin_timetz (const octave_pq_connection &conn,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
939 const char *c, octave_value &ov, int nb)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
940 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
941 Cell tp (dim_vector (2, 1));
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
942
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
943 tp(0) = time_8byte_to_octave (c, conn.get_integer_datetimes ());
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
944
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
945 c += 8;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
946
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
947 tp(1) = octave_value (octave_int32 (int32_t (be32toh (*((int32_t *) c)))));
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
948
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
949 ov = octave_value (tp);
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
950
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
951 return 0;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
952 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
953
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
954 int from_octave_str_timetz (const octave_pq_connection &conn,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
955 const octave_value &ov, oct_pq_dynvec_t &val)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
956 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
957 return 1;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
958 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
959
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
960 int from_octave_bin_timetz (const octave_pq_connection &conn,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
961 const octave_value &ov, oct_pq_dynvec_t &val)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
962 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
963 Cell iv = ov.cell_value ();
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
964 if (error_state || iv.numel () != 2)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
965 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
966 error ("timetz: can not convert octave_value to cell with 2 elements");
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
967 return 1;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
968 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
969
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
970 if (time_8byte_from_octave (iv(0), val, conn.get_integer_datetimes ()))
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
971 return 1;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
972
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
973 int32_t i4 = iv(1).int_value ();
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
974
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
975 if (error_state)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
976 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
977 error ("timetz: can not convert octave_value to int4 value");
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
978 return 1;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
979 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
980
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
981 OCT_PQ_PUT(val, int32_t, htobe32 (i4))
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
982
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
983 return 0;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
984 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
985
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
986 oct_pq_conv_t conv_timetz = {0,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
987 0,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
988 oct_pq_el_oids_t (),
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
989 oct_pq_conv_cache_t (),
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
990 false,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
991 false,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
992 false,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
993 "timetz",
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
994 &to_octave_str_timetz,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
995 &to_octave_bin_timetz,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
996 &from_octave_str_timetz,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
997 &from_octave_bin_timetz};
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
998
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
999 /* end type timetz */
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1000
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1001 /* type date */
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1002
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1003 int to_octave_str_date (const octave_pq_connection &conn,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1004 const char *c, octave_value &ov, int nb)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1005 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1006 return 1;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1007 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1008
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1009 int to_octave_bin_date (const octave_pq_connection &conn,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1010 const char *c, octave_value &ov, int nb)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1011 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1012 ov = octave_value (octave_int32 (int32_t (be32toh (*((int32_t *) c)))));
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1013
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1014 return 0;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1015 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1016
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1017 int from_octave_str_date (const octave_pq_connection &conn,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1018 const octave_value &ov, oct_pq_dynvec_t &val)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1019 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1020 return 1;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1021 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1022
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1023 int from_octave_bin_date (const octave_pq_connection &conn,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1024 const octave_value &ov, oct_pq_dynvec_t &val)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1025 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1026 int32_t i4 = ov.int_value ();
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1027
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1028 if (error_state)
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1029 {
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1030 error ("date: can not convert octave_value to int4 value");
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1031 return 1;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1032 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1033
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1034 OCT_PQ_PUT(val, int32_t, htobe32 (i4))
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1035
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1036 return 0;
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1037 }
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1038
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1039 oct_pq_conv_t conv_date = {0,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1040 0,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1041 oct_pq_el_oids_t (),
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1042 oct_pq_conv_cache_t (),
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1043 false,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1044 false,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1045 false,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1046 "date",
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1047 &to_octave_str_date,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1048 &to_octave_bin_date,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1049 &from_octave_str_date,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1050 &from_octave_bin_date};
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1051
11697
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1052 /* end type date */
11668
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1053
11697
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1054 /* type point */
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1055
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1056 int to_octave_str_point (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1057 const char *c, octave_value &ov, int nb)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1058 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1059 return 1;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1060 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1061
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1062 int to_octave_bin_point (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1063 const char *c, octave_value &ov, int nb)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1064 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1065 ColumnVector m (2);
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1066
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1067 union
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1068 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1069 double d;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1070 int64_t i;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1071 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1072 swap;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1073
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1074 for (int id = 0; id < 2; id++, c += 8)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1075 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1076 swap.i = be64toh (*((int64_t *) c));
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1077
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1078 m(id) = swap.d;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1079 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1080
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1081 ov = octave_value (m);
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1082
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1083 return 0;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1084 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1085
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1086 int from_octave_str_point (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1087 const octave_value &ov, oct_pq_dynvec_t &val)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1088 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1089 return 1;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1090 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1091
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1092 int from_octave_bin_point (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1093 const octave_value &ov, oct_pq_dynvec_t &val)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1094 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1095 NDArray m = ov.array_value ();
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1096
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1097 if (error_state || m.numel () != 2)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1098 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1099 error ("can not convert octave_value to point representation");
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1100 return 1;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1101 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1102
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1103 union
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1104 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1105 double d;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1106 int64_t i;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1107 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1108 swap;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1109
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1110 for (int id = 0; id < 2; id++)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1111 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1112 swap.d = m(id);
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1113
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1114 OCT_PQ_PUT(val, int64_t, htobe64 (swap.i))
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1115 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1116
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1117 return 0;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1118 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1119
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1120 oct_pq_conv_t conv_point = {0,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1121 0,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1122 oct_pq_el_oids_t (),
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1123 oct_pq_conv_cache_t (),
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1124 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1125 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1126 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1127 "point",
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1128 &to_octave_str_point,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1129 &to_octave_bin_point,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1130 &from_octave_str_point,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1131 &from_octave_bin_point};
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1132
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1133 /* end type point */
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1134
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1135 /* type lseg */
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1136
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1137 int to_octave_str_lseg (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1138 const char *c, octave_value &ov, int nb)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1139 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1140 return 1;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1141 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1142
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1143 int to_octave_bin_lseg (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1144 const char *c, octave_value &ov, int nb)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1145 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1146 Matrix m (2, 2);
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1147
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1148 union
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1149 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1150 double d;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1151 int64_t i;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1152 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1153 swap;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1154
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1155 for (int id = 0; id < 4; id++, c += 8)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1156 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1157 swap.i = be64toh (*((int64_t *) c));
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1158
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1159 m(id) = swap.d;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1160 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1161
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1162 ov = octave_value (m);
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1163
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1164 return 0;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1165 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1166
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1167 int from_octave_str_lseg (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1168 const octave_value &ov, oct_pq_dynvec_t &val)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1169 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1170 return 1;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1171 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1172
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1173 int from_octave_bin_lseg (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1174 const octave_value &ov, oct_pq_dynvec_t &val)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1175 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1176 NDArray m = ov.array_value ();
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1177
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1178 if (error_state || m.numel () != 4)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1179 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1180 error ("can not convert octave_value to 4 doubles");
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1181 return 1;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1182 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1183
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1184 union
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1185 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1186 double d;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1187 int64_t i;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1188 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1189 swap;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1190
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1191 for (int id = 0; id < 4; id++)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1192 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1193 swap.d = m(id);
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1194
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1195 OCT_PQ_PUT(val, int64_t, htobe64 (swap.i))
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1196 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1197
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1198 return 0;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1199 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1200
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1201 oct_pq_conv_t conv_lseg = {0,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1202 0,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1203 oct_pq_el_oids_t (),
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1204 oct_pq_conv_cache_t (),
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1205 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1206 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1207 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1208 "lseg",
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1209 &to_octave_str_lseg,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1210 &to_octave_bin_lseg,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1211 &from_octave_str_lseg,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1212 &from_octave_bin_lseg};
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1213
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1214 /* end type lseg */
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1215
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1216 /* type line */
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1217
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1218 oct_pq_conv_t conv_line = {0,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1219 0,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1220 oct_pq_el_oids_t (),
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1221 oct_pq_conv_cache_t (),
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1222 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1223 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1224 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1225 "line",
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1226 &to_octave_str_lseg,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1227 &to_octave_bin_lseg,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1228 &from_octave_str_lseg,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1229 &from_octave_bin_lseg};
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1230
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1231 /* end type line */
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1232
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1233 /* type box */
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1234
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1235 oct_pq_conv_t conv_box = {0,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1236 0,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1237 oct_pq_el_oids_t (),
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1238 oct_pq_conv_cache_t (),
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1239 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1240 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1241 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1242 "box",
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1243 &to_octave_str_lseg,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1244 &to_octave_bin_lseg,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1245 &from_octave_str_lseg,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1246 &from_octave_bin_lseg};
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1247
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1248 /* end type box */
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1249
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1250 /* type circle */
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1251
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1252 int to_octave_str_circle (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1253 const char *c, octave_value &ov, int nb)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1254 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1255 return 1;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1256 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1257
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1258 int to_octave_bin_circle (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1259 const char *c, octave_value &ov, int nb)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1260 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1261 ColumnVector m (3);
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1262
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1263 union
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1264 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1265 double d;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1266 int64_t i;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1267 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1268 swap;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1269
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1270 for (int id = 0; id < 3; id++, c += 8)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1271 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1272 swap.i = be64toh (*((int64_t *) c));
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1273
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1274 m(id) = swap.d;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1275 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1276
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1277 ov = octave_value (m);
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1278
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1279 return 0;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1280 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1281
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1282 int from_octave_str_circle (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1283 const octave_value &ov, oct_pq_dynvec_t &val)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1284 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1285 return 1;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1286 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1287
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1288 int from_octave_bin_circle (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1289 const octave_value &ov, oct_pq_dynvec_t &val)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1290 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1291 NDArray m = ov.array_value ();
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1292
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1293 if (error_state || m.numel () != 3)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1294 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1295 error ("can not convert octave_value to circle representation");
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1296 return 1;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1297 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1298
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1299 union
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1300 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1301 double d;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1302 int64_t i;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1303 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1304 swap;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1305
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1306 for (int id = 0; id < 3; id++)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1307 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1308 swap.d = m(id);
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1309
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1310 OCT_PQ_PUT(val, int64_t, htobe64 (swap.i))
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1311 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1312
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1313 return 0;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1314 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1315
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1316 oct_pq_conv_t conv_circle = {0,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1317 0,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1318 oct_pq_el_oids_t (),
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1319 oct_pq_conv_cache_t (),
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1320 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1321 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1322 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1323 "circle",
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1324 &to_octave_str_circle,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1325 &to_octave_bin_circle,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1326 &from_octave_str_circle,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1327 &from_octave_bin_circle};
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1328
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1329 /* end type circle */
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1330
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1331 /* type polygon */
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1332
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1333 int to_octave_str_polygon (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1334 const char *c, octave_value &ov, int nb)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1335 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1336 return 1;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1337 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1338
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1339 int to_octave_bin_polygon (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1340 const char *c, octave_value &ov, int nb)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1341 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1342 int32_t np = int32_t (be32toh (*((int32_t *) c)));
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1343
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1344 c += 4;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1345
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1346 Matrix m (2, np);
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1347
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1348 union
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1349 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1350 double d;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1351 int64_t i;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1352 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1353 swap;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1354
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1355 for (int id = 0; id < np * 2; id++, c += 8)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1356 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1357 swap.i = be64toh (*((int64_t *) c));
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1358
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1359 m(id) = swap.d;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1360 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1361
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1362 ov = octave_value (m);
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1363
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1364 return 0;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1365 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1366
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1367 int from_octave_str_polygon (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1368 const octave_value &ov, oct_pq_dynvec_t &val)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1369 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1370 return 1;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1371 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1372
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1373 int from_octave_bin_polygon (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1374 const octave_value &ov, oct_pq_dynvec_t &val)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1375 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1376 octave_idx_type nel;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1377
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1378 NDArray m = ov.array_value ();
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1379
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1380 if (error_state || (nel = m.numel ()) % 2)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1381 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1382 error ("can not convert octave_value to polygon representation");
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1383 return 1;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1384 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1385
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1386 union
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1387 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1388 double d;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1389 int64_t i;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1390 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1391 swap;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1392
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1393 int32_t np = nel / 2;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1394
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1395 OCT_PQ_PUT(val, int32_t, htobe32 (np))
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1396
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1397 for (int id = 0; id < nel; id++)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1398 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1399 swap.d = m(id);
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1400
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1401 OCT_PQ_PUT(val, int64_t, htobe64 (swap.i))
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1402 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1403
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1404 return 0;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1405 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1406
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1407 oct_pq_conv_t conv_polygon = {0,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1408 0,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1409 oct_pq_el_oids_t (),
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1410 oct_pq_conv_cache_t (),
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1411 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1412 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1413 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1414 "polygon",
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1415 &to_octave_str_polygon,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1416 &to_octave_bin_polygon,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1417 &from_octave_str_polygon,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1418 &from_octave_bin_polygon};
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1419
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1420 /* end type polygon */
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1421
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1422 /* type path */
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1423
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1424 int to_octave_str_path (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1425 const char *c, octave_value &ov, int nb)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1426 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1427 return 1;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1428 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1429
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1430 int to_octave_bin_path (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1431 const char *c, octave_value &ov, int nb)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1432 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1433 bool closed = bool (*(c++));
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1434
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1435 int32_t np = int32_t (be32toh (*((int32_t *) c)));
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1436
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1437 c += 4;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1438
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1439 Matrix m (2, np);
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1440
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1441 union
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1442 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1443 double d;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1444 int64_t i;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1445 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1446 swap;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1447
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1448 for (int id = 0; id < np * 2; id++, c += 8)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1449 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1450 swap.i = be64toh (*((int64_t *) c));
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1451
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1452 m(id) = swap.d;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1453 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1454
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1455 octave_scalar_map tp;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1456 tp.assign ("closed", octave_value (closed));
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1457 tp.assign ("path", octave_value (m));
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1458
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1459 ov = octave_value (tp);
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1460
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1461 return 0;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1462 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1463
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1464 int from_octave_str_path (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1465 const octave_value &ov, oct_pq_dynvec_t &val)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1466 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1467 return 1;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1468 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1469
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1470 int from_octave_bin_path (const octave_pq_connection &conn,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1471 const octave_value &ov, oct_pq_dynvec_t &val)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1472 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1473 octave_scalar_map tp = ov.scalar_map_value ();
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1474 if (error_state || ! tp.isfield ("closed") || ! tp.isfield ("path"))
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1475 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1476 error ("can not convert octave_value to path representation");
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1477 return 1;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1478 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1479
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1480 octave_idx_type nel;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1481
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1482 char closed = char (tp.contents ("closed").bool_value ());
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1483
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1484 NDArray m = tp.contents ("path").array_value ();
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1485
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1486 if (error_state || (nel = m.numel ()) % 2)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1487 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1488 error ("can not convert octave_value to path representation");
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1489 return 1;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1490 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1491
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1492 union
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1493 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1494 double d;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1495 int64_t i;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1496 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1497 swap;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1498
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1499 int32_t np = nel / 2;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1500
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1501 val.push_back (closed);
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1502
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1503 OCT_PQ_PUT(val, int32_t, htobe32 (np))
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1504
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1505 for (int id = 0; id < nel; id++)
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1506 {
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1507 swap.d = m(id);
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1508
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1509 OCT_PQ_PUT(val, int64_t, htobe64 (swap.i))
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1510 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1511
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1512 return 0;
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1513 }
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1514
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1515 oct_pq_conv_t conv_path = {0,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1516 0,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1517 oct_pq_el_oids_t (),
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1518 oct_pq_conv_cache_t (),
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1519 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1520 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1521 false,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1522 "path",
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1523 &to_octave_str_path,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1524 &to_octave_bin_path,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1525 &from_octave_str_path,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1526 &from_octave_bin_path};
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1527
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
1528 /* end type path */
11668
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
1529
11698
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1530 /* type unknown */
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1531
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1532 // These are pseudo-converters for postgresql type 'unknown'. They do
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1533 // nothing except signalling an error. The rationale is that the only
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1534 // values of type 'unknown' may be NULL, in which case the converter
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1535 // will not be called, but because a converter exists there won't be a
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1536 // "no converter found" error thrown.
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1537
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1538 int to_octave_str_unknown (const octave_pq_connection &conn,
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1539 const char *c, octave_value &ov, int nb)
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1540 {
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1541 error ("can not convert postgresql type 'unknown'");
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1542
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1543 return 1;
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1544 }
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1545
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1546 int to_octave_bin_unknown (const octave_pq_connection &conn,
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1547 const char *c, octave_value &ov, int nb)
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1548 {
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1549 error ("can not convert postgresql type 'unknown'");
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1550
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1551 return 1;
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1552 }
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1553
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1554 int from_octave_str_unknown (const octave_pq_connection &conn,
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1555 const octave_value &ov, oct_pq_dynvec_t &val)
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1556 {
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1557 error ("can not convert postgresql type 'unknown'");
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1558
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1559 return 1;
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1560 }
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1561
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1562 int from_octave_bin_unknown (const octave_pq_connection &conn,
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1563 const octave_value &ov, oct_pq_dynvec_t &val)
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1564 {
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1565 error ("can not convert postgresql type 'unknown'");
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1566
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1567 return 1;
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1568 }
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1569
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1570 oct_pq_conv_t conv_unknown = {0,
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1571 0,
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1572 oct_pq_el_oids_t (),
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1573 oct_pq_conv_cache_t (),
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1574 false,
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1575 false,
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1576 false,
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1577 "unknown",
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1578 &to_octave_str_unknown,
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1579 &to_octave_bin_unknown,
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1580 &from_octave_str_unknown,
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1581 &from_octave_bin_unknown};
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1582
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1583 /* end type unknown */
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
1584
11708
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1585 // helpers for network types
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1586
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1587 static inline
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1588 int to_octave_bin_cidr_inet (const char *c, octave_value &ov, bool &cidr)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1589 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1590 int8_t nb;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1591
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1592 if (*(c++) == AF_INET)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1593 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1594 uint8NDArray a (dim_vector (5, 1), 0);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1595
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1596 a(4) = uint8_t (*(c++)); // number of set mask bits
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1597
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1598 cidr = *(c++);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1599
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1600 nb = *(c++);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1601
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1602 if (nb < 0)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1603 nb = 0;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1604
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1605 if (nb > 4)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1606 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1607 error ("internal error: received too many bytes for AF_INET type");
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1608
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1609 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1610 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1611
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1612 for (int8_t i = 0; i < nb; i++, c++)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1613 a(i) = uint8_t (*c);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1614
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1615 ov = octave_value (a);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1616 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1617 else
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1618 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1619 uint16NDArray a (dim_vector (9, 1), 0);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1620
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1621 a(8) = uint16_t (uint8_t (*(c++))); // number of set mask bits
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1622
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1623 cidr = *(c++);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1624
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1625 nb = *(c++);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1626
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1627 if (nb < 0)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1628 nb = 0;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1629
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1630 if (nb > 16)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1631 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1632 error ("internal error: received too many bytes for AF_INET6 type");
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1633
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1634 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1635 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1636
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1637 int8_t n = nb / 2;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1638 bool odd = nb % 2;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1639
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1640 for (int8_t i = 0; i < n; i++, c += 2)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1641 a(i) = uint16_t (be16toh (*((uint16_t *) c)));
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1642
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1643 if (odd)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1644 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1645 uint16_t tp = *c;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1646
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1647 a(n) = uint16_t (be16toh (tp));
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1648 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1649
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1650 ov = octave_value (a);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1651 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1652
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1653 return 0;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1654 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1655
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1656 static inline
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1657 int from_octave_bin_cidr_inet (const octave_value &ov, oct_pq_dynvec_t &val,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1658 bool cidr)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1659 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1660 int nl = ov.numel ();
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1661
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1662 uint8_t n_mbits;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1663
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1664 if (nl == 4 || nl == 5)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1665 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1666 uint8NDArray a = ov.uint8_array_value ();
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1667
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1668 if (error_state)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1669 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1670 error ("can not convert octave_value to network type representation");
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1671 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1672 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1673
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1674 if (nl == 5)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1675 n_mbits = a(4).value ();
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1676 else
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1677 n_mbits = 32;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1678
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1679 val.push_back (AF_INET);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1680 val.push_back (n_mbits);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1681 val.push_back (cidr);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1682 val.push_back (4);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1683 for (int i = 0; i < 4; i++)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1684 val.push_back (a(i).value ());
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1685 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1686 else if (nl == 8 || nl == 9)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1687 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1688 uint16NDArray a = ov.uint16_array_value ();
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1689
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1690 if (error_state)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1691 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1692 error ("can not convert octave_value to network type representation");
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1693 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1694 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1695
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1696 if (nl == 9)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1697 n_mbits = a(8).value ();
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1698 else
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1699 n_mbits = 128;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1700
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1701 val.push_back (PGSQL_AF_INET6);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1702 val.push_back (n_mbits);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1703 val.push_back (cidr);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1704 val.push_back (16);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1705 for (int i = 0; i < 8; i++)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1706 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1707 OCT_PQ_PUT(val, uint16_t, htobe16(a(i).value ()))
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1708 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1709 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1710 else
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1711 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1712 error ("invalid network type representation");
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1713 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1714 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1715
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1716 return 0;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1717 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1718
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1719 // end helpers for network types
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1720
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1721 /* type cidr */
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1722
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1723 int to_octave_str_cidr (const octave_pq_connection &conn,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1724 const char *c, octave_value &ov, int nb)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1725 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1726 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1727 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1728
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1729 int to_octave_bin_cidr (const octave_pq_connection &conn,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1730 const char *c, octave_value &ov, int nb)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1731 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1732 bool cidr = false;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1733
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1734 if (to_octave_bin_cidr_inet (c, ov, cidr))
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1735 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1736
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1737 if (! cidr)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1738 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1739 error ("internal error: unexpected flag in cidr type");
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1740
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1741 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1742 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1743
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1744 return 0;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1745 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1746
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1747 int from_octave_str_cidr (const octave_pq_connection &conn,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1748 const octave_value &ov, oct_pq_dynvec_t &val)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1749 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1750 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1751 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1752
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1753 int from_octave_bin_cidr (const octave_pq_connection &conn,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1754 const octave_value &ov, oct_pq_dynvec_t &val)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1755 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1756 return from_octave_bin_cidr_inet (ov, val, true);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1757 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1758
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1759 oct_pq_conv_t conv_cidr = {0,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1760 0,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1761 oct_pq_el_oids_t (),
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1762 oct_pq_conv_cache_t (),
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1763 false,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1764 false,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1765 false,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1766 "cidr",
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1767 &to_octave_str_cidr,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1768 &to_octave_bin_cidr,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1769 &from_octave_str_cidr,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1770 &from_octave_bin_cidr};
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1771
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1772 /* end type cidr */
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1773
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1774 /* type inet */
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1775
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1776 int to_octave_str_inet (const octave_pq_connection &conn,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1777 const char *c, octave_value &ov, int nb)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1778 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1779 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1780 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1781
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1782 int to_octave_bin_inet (const octave_pq_connection &conn,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1783 const char *c, octave_value &ov, int nb)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1784 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1785 bool cidr = false;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1786
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1787 if (to_octave_bin_cidr_inet (c, ov, cidr))
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1788 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1789
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1790 if (cidr)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1791 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1792 error ("internal error: unexpected flag in inet type");
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1793
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1794 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1795 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1796
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1797 return 0;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1798 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1799
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1800 int from_octave_str_inet (const octave_pq_connection &conn,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1801 const octave_value &ov, oct_pq_dynvec_t &val)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1802 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1803 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1804 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1805
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1806 int from_octave_bin_inet (const octave_pq_connection &conn,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1807 const octave_value &ov, oct_pq_dynvec_t &val)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1808 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1809 return from_octave_bin_cidr_inet (ov, val, false);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1810 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1811
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1812 oct_pq_conv_t conv_inet = {0,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1813 0,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1814 oct_pq_el_oids_t (),
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1815 oct_pq_conv_cache_t (),
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1816 false,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1817 false,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1818 false,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1819 "inet",
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1820 &to_octave_str_inet,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1821 &to_octave_bin_inet,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1822 &from_octave_str_inet,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1823 &from_octave_bin_inet};
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1824
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1825 /* end type inet */
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1826
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1827 /* type macaddr */
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1828
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1829 int to_octave_str_macaddr (const octave_pq_connection &conn,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1830 const char *c, octave_value &ov, int nb)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1831 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1832 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1833 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1834
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1835 int to_octave_bin_macaddr (const octave_pq_connection &conn,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1836 const char *c, octave_value &ov, int nb)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1837 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1838 uint8NDArray a (dim_vector (6, 1));
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1839
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1840 for (int i = 0; i < 6; i++, c++)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1841 a(i) = uint8_t (*c);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1842
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1843 ov = octave_value (a);
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1844
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1845 return 0;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1846 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1847
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1848 int from_octave_str_macaddr (const octave_pq_connection &conn,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1849 const octave_value &ov, oct_pq_dynvec_t &val)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1850 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1851 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1852 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1853
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1854 int from_octave_bin_macaddr (const octave_pq_connection &conn,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1855 const octave_value &ov, oct_pq_dynvec_t &val)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1856 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1857 uint8NDArray a = ov.uint8_array_value ();
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1858
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1859 if (error_state)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1860 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1861 error ("can not convert octave_value to macaddr representation");
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1862 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1863 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1864
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1865 if (a.numel () != 6)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1866 {
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1867 error ("macaddr representation must have 6 elements");
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1868 return 1;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1869 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1870
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1871 for (int i = 0; i < 6; i++)
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1872 val.push_back (a(i).value ());
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1873
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1874 return 0;
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1875 }
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1876
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1877 oct_pq_conv_t conv_macaddr = {0,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1878 0,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1879 oct_pq_el_oids_t (),
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1880 oct_pq_conv_cache_t (),
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1881 false,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1882 false,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1883 false,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1884 "macaddr",
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1885 &to_octave_str_macaddr,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1886 &to_octave_bin_macaddr,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1887 &from_octave_str_macaddr,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1888 &from_octave_bin_macaddr};
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1889
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1890 /* end type macaddr */
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
1891
11710
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1892 /* type bit */
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1893
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1894 int to_octave_str_bit (const octave_pq_connection &conn,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1895 const char *c, octave_value &ov, int nb)
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1896 {
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1897 return 1;
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1898 }
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1899
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1900 int to_octave_bin_bit (const octave_pq_connection &conn,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1901 const char *c, octave_value &ov, int nb)
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1902 {
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1903 int32_t nbits = int32_t (be32toh (*((int32_t *) c)));
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1904
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1905 c += 4;
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1906
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1907 int32_t nbytes = (nbits + 7) / 8;
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1908
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1909 uint8NDArray a (dim_vector (nbytes, 1));
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1910
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1911 for (int i = 0; i < nbytes; i++, c++)
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1912 a(i) = uint8_t (*c);
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1913
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1914 octave_scalar_map tp;
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1915 tp.assign ("bitlen", octave_value (octave_int32 (nbits)));
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1916 tp.assign ("bits", octave_value (a));
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1917
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1918 ov = octave_value (tp);
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1919
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1920 return 0;
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1921 }
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1922
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1923 int from_octave_str_bit (const octave_pq_connection &conn,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1924 const octave_value &ov, oct_pq_dynvec_t &val)
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1925 {
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1926 return 1;
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1927 }
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1928
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1929 int from_octave_bin_bit (const octave_pq_connection &conn,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1930 const octave_value &ov, oct_pq_dynvec_t &val)
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1931 {
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1932 octave_scalar_map tp = ov.scalar_map_value ();
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1933 if (error_state || ! tp.isfield ("bitlen") || ! tp.isfield ("bits"))
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1934 {
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1935 error ("can not convert octave_value to bitstring representation");
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1936 return 1;
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1937 }
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1938
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1939 int32_t nbits = tp.contents ("bitlen").int_value ();
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1940
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1941 uint8NDArray a = tp.contents ("bits").uint8_array_value ();
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1942
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1943 if (error_state || nbits < 0)
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1944 {
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1945 error ("can not convert octave_value to bitstring representation");
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1946 return 1;
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1947 }
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1948
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1949 int32_t nbytes = (nbits + 7) / 8;
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1950
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1951 if (a.numel () != nbytes)
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1952 {
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1953 error ("wrong number of elements in bitstring representation");
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1954 return 1;
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1955 }
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1956
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1957 OCT_PQ_PUT(val, int32_t, htobe32 (nbits))
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1958
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1959 for (int i = 0; i < nbytes; i++)
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1960 val.push_back (a(i).value ());
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1961
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1962 return 0;
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1963 }
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1964
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1965 oct_pq_conv_t conv_bit = {0,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1966 0,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1967 oct_pq_el_oids_t (),
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1968 oct_pq_conv_cache_t (),
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1969 false,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1970 false,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1971 false,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1972 "bit",
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1973 &to_octave_str_bit,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1974 &to_octave_bin_bit,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1975 &from_octave_str_bit,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1976 &from_octave_bin_bit};
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1977
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1978 /* end type bit */
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1979
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1980 /* type varbit */
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1981
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1982 oct_pq_conv_t conv_varbit = {0,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1983 0,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1984 oct_pq_el_oids_t (),
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1985 oct_pq_conv_cache_t (),
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1986 false,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1987 false,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1988 false,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1989 "varbit",
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1990 &to_octave_str_bit,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1991 &to_octave_bin_bit,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1992 &from_octave_str_bit,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1993 &from_octave_bin_bit};
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1994
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1995 /* end type varbit */
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
1996
11712
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
1997 /* type uuid */
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
1998
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
1999 int to_octave_str_uuid (const octave_pq_connection &conn,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2000 const char *c, octave_value &ov, int nb)
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2001 {
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2002 return 1;
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2003 }
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2004
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2005 int to_octave_bin_uuid (const octave_pq_connection &conn,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2006 const char *c, octave_value &ov, int nb)
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2007 {
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2008 uint8NDArray m (dim_vector (16, 1));
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2009
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2010 uint8_t *p = (uint8_t *) m.fortran_vec ();
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2011 for (int i = 0; i < 16; i++, c++)
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2012 *(p++) = uint8_t (*c);
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2013
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2014 ov = octave_value (m);
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2015
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2016 return 0;
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2017 }
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2018
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2019 int from_octave_str_uuid (const octave_pq_connection &conn,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2020 const octave_value &ov, oct_pq_dynvec_t &val)
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2021 {
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2022 return 1;
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2023 }
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2024
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2025 int from_octave_bin_uuid (const octave_pq_connection &conn,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2026 const octave_value &ov, oct_pq_dynvec_t &val)
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2027 {
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2028 uint8NDArray b = ov.uint8_array_value ();
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2029
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2030 if (error_state)
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2031 {
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2032 error ("can not convert octave_value to uuid representation");
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2033 return 1;
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2034 }
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2035
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2036 if (b.numel () != 16)
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2037 {
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2038 error ("uuid representation must have 16 elements");
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2039 return 1;
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2040 }
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2041
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2042 for (int i = 0; i < 16; i++)
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2043 val.push_back (b(i).value ());
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2044
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2045 return 0;
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2046 }
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2047
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2048 oct_pq_conv_t conv_uuid = {0,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2049 0,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2050 oct_pq_el_oids_t (),
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2051 oct_pq_conv_cache_t (),
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2052 false,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2053 false,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2054 false,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2055 "uuid",
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2056 &to_octave_str_uuid,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2057 &to_octave_bin_uuid,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2058 &from_octave_str_uuid,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2059 &from_octave_bin_uuid};
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2060
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2061 /* end type uuid */
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2062
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2063 /* type xml */
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2064
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2065 int to_octave_str_xml (const octave_pq_connection &conn,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2066 const char *c, octave_value &ov, int nb)
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2067 {
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2068 return 1;
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2069 }
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2070
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2071 int to_octave_bin_xml (const octave_pq_connection &conn,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2072 const char *c, octave_value &ov, int nb)
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2073 {
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2074 std::string s (c, nb);
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2075
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2076 ov = octave_value (s);
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2077
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2078 return 0;
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2079 }
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2080
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2081 int from_octave_str_xml (const octave_pq_connection &conn,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2082 const octave_value &ov, oct_pq_dynvec_t &val)
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2083 {
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2084 return 1;
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2085 }
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2086
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2087 int from_octave_bin_xml (const octave_pq_connection &conn,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2088 const octave_value &ov, oct_pq_dynvec_t &val)
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2089 {
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2090 std::string s = ov.string_value ();
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2091
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2092 if (error_state)
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2093 {
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2094 error ("can not convert octave_value to string");
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2095 return 1;
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2096 }
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2097
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2098 octave_idx_type l = s.size ();
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2099
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2100 for (int i = 0; i < l; i++)
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2101 val.push_back (s[i]);
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2102
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2103 return 0;
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2104 }
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2105
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2106 oct_pq_conv_t conv_xml = {0,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2107 0,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2108 oct_pq_el_oids_t (),
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2109 oct_pq_conv_cache_t (),
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2110 false,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2111 false,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2112 false,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2113 "xml",
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2114 &to_octave_str_text,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2115 &to_octave_bin_text,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2116 &from_octave_str_text,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2117 &from_octave_bin_text};
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2118
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2119 /* end type xml */
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2120
11715
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2121 /* type record */
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2122
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2123 int to_octave_str_record (const octave_pq_connection &conn,
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2124 const char *c, octave_value &ov, int nb)
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2125 {
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2126 return 1;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2127 }
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2128
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2129 int to_octave_bin_record (const octave_pq_connection &conn,
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2130 const char *v, octave_value &ov, int nb)
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2131 {
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2132 const char *p = v;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2133
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2134 // ncols
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2135 OCT_PQ_DECL_GET_INT32(nl, p, int32_t)
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2136
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2137 // elements
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2138 Cell c (nl, 1);
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2139 for (int i = 0; i < nl; i++)
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2140 {
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2141 // element OID
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2142 OCT_PQ_DECL_GET_INT32(oid, p, uint32_t)
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2143
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2144 OCT_PQ_DECL_GET_INT32(null_id, p, int32_t)
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2145
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2146 if (null_id == -1)
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2147 // NULL
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2148 c(i) = octave_value (octave_NA);
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2149 else
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2150 {
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2151 uint32_t nb_el = uint32_t (null_id);
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2152
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2153 oct_pq_conv_t *el_conv;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2154 pq_oct_type_t oct_type;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2155
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2156 if (! (el_conv = pgtype_from_spec (conn, oid, oct_type)))
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2157 return 1;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2158
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2159 octave_value el;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2160 switch (oct_type)
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2161 {
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2162 case simple:
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2163 if (el_conv->to_octave_bin (conn, p, el, nb_el))
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2164 return 1;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2165 break;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2166
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2167 case array:
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2168 if (to_octave_bin_array (conn, p, el, nb_el, el_conv))
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2169 return 1;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2170 break;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2171
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2172 case composite:
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2173 if (to_octave_bin_composite (conn, p, el, nb_el, el_conv))
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2174 return 1;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2175 break;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2176
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2177 default:
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2178 // should not get here
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2179 error ("'record' converter: internal error, undefined type identifier");
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2180 return 1;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2181 }
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2182
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2183 p += nb_el;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2184
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2185 c(i) = el;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2186 }
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2187 }
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2188
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2189 ov = octave_value (c);
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2190
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2191 return 0;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2192 }
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2193
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2194 int from_octave_str_record (const octave_pq_connection &conn,
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2195 const octave_value &ov, oct_pq_dynvec_t &val)
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2196 {
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2197 return 1;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2198 }
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2199
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2200 int from_octave_bin_record (const octave_pq_connection &conn,
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2201 const octave_value &ov, oct_pq_dynvec_t &val)
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2202 {
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2203 error ("Type 'record' can't be sent to postgresql.");
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2204
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2205 return 1;
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2206 }
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2207
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2208 oct_pq_conv_t conv_record = {0,
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2209 0,
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2210 oct_pq_el_oids_t (),
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2211 oct_pq_conv_cache_t (),
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2212 false,
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2213 false,
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2214 false,
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2215 "record",
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2216 &to_octave_str_record,
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2217 &to_octave_bin_record,
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2218 &from_octave_str_record,
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2219 &from_octave_bin_record};
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2220
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2221 /* end type record */
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2222
11429
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
2223 oct_pq_conv_t *t_conv_ptrs[OCT_PQ_NUM_CONVERTERS] = {&conv_bool,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
2224 &conv_oid,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
2225 &conv_float8,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
2226 &conv_float4,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
2227 &conv_text,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
2228 &conv_varchar,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
2229 &conv_bpchar,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
2230 &conv_name,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
2231 &conv_bytea,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
2232 &conv_int2,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
2233 &conv_int4,
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
2234 &conv_int8,
11661
1b4e81051b66 Add converter for timestamp.
i7tiol
parents: 11658
diff changeset
2235 &conv_money,
11667
2c21253d3341 Add converter for timestamptz.
i7tiol
parents: 11661
diff changeset
2236 &conv_timestamp,
11668
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
2237 &conv_timestamptz,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
2238 &conv_interval,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
2239 &conv_time,
abd563353849 Added remaining date/time converters (time, timetz, date, interval).
i7tiol
parents: 11667
diff changeset
2240 &conv_timetz,
11697
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
2241 &conv_date,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
2242 &conv_point,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
2243 &conv_lseg,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
2244 &conv_line,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
2245 &conv_box,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
2246 &conv_circle,
9e624fa135a1 Added converters for geometric types.
i7tiol
parents: 11668
diff changeset
2247 &conv_polygon,
11698
b3cbebad8a26 Fix segfault after internal error. Add converter for type 'unknown'.
i7tiol
parents: 11697
diff changeset
2248 &conv_path,
11708
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
2249 &conv_unknown,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
2250 &conv_cidr,
efca9c2a8a7e Added converters for network types.
i7tiol
parents: 11698
diff changeset
2251 &conv_inet,
11710
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
2252 &conv_macaddr,
4f5471a9bce6 Added converters for bit string types.
i7tiol
parents: 11709
diff changeset
2253 &conv_bit,
11712
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2254 &conv_varbit,
f4c52c68f744 Added converters for types uuid and xml.
i7tiol
parents: 11710
diff changeset
2255 &conv_uuid,
11715
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2256 &conv_xml,
ed5361361a0f Added converter for type 'record'. Some 'const' corrections.
i7tiol
parents: 11712
diff changeset
2257 &conv_record};
11429
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
2258
61ea672a060a Consider schemas in type specifications by name.
i7tiol
parents: 11409
diff changeset
2259 oct_pq_conv_ptrs_t conv_ptrs (OCT_PQ_NUM_CONVERTERS, t_conv_ptrs);