annotate main/database/src/converters.cc @ 11409:21794ea37065 octave-forge

Make char* in to_octave_ converters const.
author i7tiol
date Tue, 22 Jan 2013 19:43:04 +0000
parents f4098c7d5b35
children 61ea672a060a
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>
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
21 #include <octave/ov-float.h>
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
22 #include <octave/ov-uint8.h>
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
23
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
24 #include <postgresql/libpq-fe.h>
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
25 // FIXME: needed for NAMEDATALEN, but defining a lot of stuff which
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
26 // might conflict with names here
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
27 #include <postgresql/pg_config_manual.h>
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
28
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
29 #include "converters.h"
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
30
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
31 // remember to adjust OCT_PQ_NUM_CONVERTERS in converters.h
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 // helper function for debugging
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
34 void print_conv (oct_pq_conv_t *c)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
35 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
36 printf ("oid: %u, aoid: %u, relid: %u, c: %i, e: %i, nc: %i, n: %s, to_s: %i, to_b: %i, fr_s: %i, fr_b: %i\n",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
37 c->oid, c->aoid, c->relid, 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);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
38 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
39
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
40 /* type bool */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
41
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
42 int to_octave_str_bool (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
43 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
44 bool tp = (*c == 't' ? true : false);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
45
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
46 ov = octave_value (tp);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
47
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
48 return 0;
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
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
51 int to_octave_bin_bool (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
52 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
53 ov = octave_value (bool (*c));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
54
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
55 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
56 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
57
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
58 int from_octave_str_bool (const octave_value &ov, oct_pq_dynvec_t &val)
11394
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 bool b = ov.bool_value ();
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 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
63 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
64 error ("can not convert octave_value to bool value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
65 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
66 }
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 val.push_back (b ? '1' : '0');
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
69 val.push_back ('\0');
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
70
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
71 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
72 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
73
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
74 int from_octave_bin_bool (const octave_value &ov, oct_pq_dynvec_t &val)
11394
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 bool b = ov.bool_value ();
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 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
79 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
80 error ("can not convert octave_value to bool value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
81 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
82 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
83
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
84 val.push_back (char (b));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
85
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
86 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
87 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
88
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
89 oct_pq_conv_t conv_bool = {0, // 16
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
90 0, // 1000
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
91 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
92 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
93 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
94 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
95 "bool",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
96 &to_octave_str_bool,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
97 &to_octave_bin_bool,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
98 &from_octave_str_bool,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
99 &from_octave_bin_bool};
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 /* end type bool */
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 /* type oid */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
104
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
105 int to_octave_str_oid (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
106 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
107 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
108 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
109
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
110 int to_octave_bin_oid (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
111 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
112 ov = octave_value (octave_uint32 (be32toh (*((uint32_t *) c))));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
113
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
114 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
115 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
116
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
117 int from_octave_str_oid (const octave_value &ov, oct_pq_dynvec_t &val)
11394
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 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
120 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
121
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
122 int from_octave_bin_oid (const octave_value &ov, oct_pq_dynvec_t &val)
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 uint32_t oid = ov.uint_value ();
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 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
127 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
128 error ("can not convert octave_value to oid value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
129 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
130 }
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 OCT_PQ_PUT(val, uint32_t, htobe32 (oid))
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 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
135 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
136
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
137 oct_pq_conv_t conv_oid = {0, // 26
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
138 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
139 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
140 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
141 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
142 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
143 "oid",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
144 &to_octave_str_oid,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
145 &to_octave_bin_oid,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
146 &from_octave_str_oid,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
147 &from_octave_bin_oid};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
148
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
149 /* end type oid */
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 /* type float8 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
152
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
153 int to_octave_str_float8 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
154 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
155 // not implemented
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 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
158 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
159
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
160 int to_octave_bin_float8 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
161 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
162 union
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
163 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
164 double d;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
165 int64_t i;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
166 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
167 swap;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
168
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
169 swap.i = be64toh (*((int64_t *) c));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
170
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
171 ov = octave_value (swap.d);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
172
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
173 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
174 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
175
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
176 int from_octave_str_float8 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
177 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
178 // not implemented
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
179
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
180 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
181 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
182
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
183 int from_octave_bin_float8 (const octave_value &ov, oct_pq_dynvec_t &val)
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 double d = ov.double_value ();
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 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
188 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
189 error ("can not convert octave_value to float8 value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
190 return 1;
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
193 union
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
194 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
195 double d;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
196 int64_t i;
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 swap;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
199
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
200 swap.d = d;
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 OCT_PQ_PUT(val, int64_t, htobe64 (swap.i))
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 0;
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
207 oct_pq_conv_t conv_float8 = {0, // 701
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
208 0, // 1022
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
209 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
210 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
211 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
212 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
213 "float8",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
214 &to_octave_str_float8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
215 &to_octave_bin_float8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
216 &from_octave_str_float8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
217 &from_octave_bin_float8};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
218
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
219 /* end type float8 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
220
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
221 /* type float4 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
222
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
223 int to_octave_str_float4 (const char *c, octave_value &ov, int nb)
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 // not implemented
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 1;
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
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
230 int to_octave_bin_float4 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
231 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
232 union
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
233 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
234 float f;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
235 int32_t i;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
236 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
237 swap;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
238
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
239 swap.i = be32toh (*((int32_t *) c));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
240
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
241 ov = octave_value (swap.f);
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 return 0;
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
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
246 int from_octave_str_float4 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
247 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
248 // not implemented
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 return 1;
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
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
253 int from_octave_bin_float4 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
254 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
255 double f = ov.float_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
256
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
257 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
258 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
259 error ("can not convert octave_value to float4 value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
260 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
261 }
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 union
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 float f;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
266 int32_t i;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
267 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
268 swap;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
269
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
270 swap.f = f;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
271
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
272 OCT_PQ_PUT(val, int32_t, htobe32 (swap.i))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
273
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
274 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
275 }
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 oct_pq_conv_t conv_float4 = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
278 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
279 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
280 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
281 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
282 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
283 "float4",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
284 &to_octave_str_float4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
285 &to_octave_bin_float4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
286 &from_octave_str_float4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
287 &from_octave_bin_float4};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
288
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
289 /* end type float4 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
290
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
291 /* type bytea */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
292
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
293 int to_octave_str_bytea (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
294 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
295 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
296 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
297
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
298 int to_octave_bin_bytea (const char *c, octave_value &ov, int nb)
11394
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 uint8NDArray m (dim_vector (nb, 1));
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 uint8_t *p = (uint8_t *) m.fortran_vec ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
303 for (octave_idx_type i = 0; i < nb; i++)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
304 *(p++) = uint8_t (*(c++));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
305
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
306 ov = octave_value (m);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
307
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
308 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
309 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
310
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
311 int from_octave_str_bytea (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
312 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
313 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
314 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
315
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
316 int from_octave_bin_bytea (const octave_value &ov, oct_pq_dynvec_t &val)
11394
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 uint8NDArray b = ov.uint8_array_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
319
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
320 if (! error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
321 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
322 dim_vector dv = b.dims ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
323 if (dv.length () > 2 || (dv(0) > 1 && dv(1) > 1))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
324 error ("bytea representation must be one-dimensional");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
325 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
326
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
327 if (error_state)
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 error ("can not convert octave_value to bytea representation");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
330 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
331 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
332
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
333 octave_idx_type nl = b.numel ();
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 for (int i = 0; i < nl; i++)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
336 val.push_back (b(i).value ());
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
337
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
338 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
339 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
340
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
341 oct_pq_conv_t conv_bytea = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
342 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
343 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
344 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
345 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
346 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
347 "bytea",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
348 &to_octave_str_bytea,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
349 &to_octave_bin_bytea,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
350 &from_octave_str_bytea,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
351 &from_octave_bin_bytea};
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 /* end type bytea */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
354
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
355 /* type text */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
356
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
357 int to_octave_str_text (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
358 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
359 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
360 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
361
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
362 int to_octave_bin_text (const char *c, octave_value &ov, int nb)
11394
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 std::string s (c, nb);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
365
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
366 ov = octave_value (s);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
367
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
368 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
369 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
370
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
371 int from_octave_str_text (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
372 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
373 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
374 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
375
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
376 int from_octave_bin_text (const octave_value &ov, oct_pq_dynvec_t &val)
11394
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 std::string s = ov.string_value ();
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 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
381 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
382 error ("can not convert octave_value to string");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
383 return 1;
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
386 octave_idx_type l = s.size ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
387
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
388 for (int i = 0; i < l; i++)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
389 val.push_back (s[i]);
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 return 0;
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
394 oct_pq_conv_t conv_text = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
395 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
396 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
397 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
398 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
399 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
400 "text",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
401 &to_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
402 &to_octave_bin_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
403 &from_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
404 &from_octave_bin_text};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
405
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
406 /* end type text */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
407
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
408 /* type varchar */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
409
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
410 oct_pq_conv_t conv_varchar = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
411 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
412 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
413 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
414 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
415 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
416 "varchar",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
417 &to_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
418 &to_octave_bin_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
419 &from_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
420 &from_octave_bin_text};
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 /* end type varchar */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
423
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
424 /* type bpchar */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
425
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
426 oct_pq_conv_t conv_bpchar = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
427 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
428 0,
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 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
431 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
432 "bpchar",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
433 &to_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
434 &to_octave_bin_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
435 &from_octave_str_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
436 &from_octave_bin_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 /* end type bpchar */
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 /* type name */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
441
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
442 int to_octave_str_name (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
443 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
444 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
445 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
446
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
447 int to_octave_bin_name (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
448 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
449 // FIXME: should we check the string in c?
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
450
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
451 std::string s (c, nb);
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 ov = octave_value (s);
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 return 0;
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
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
458 int from_octave_str_name (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
459 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
460 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
461 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
462
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
463 int from_octave_bin_name (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
464 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
465 std::string s = ov.string_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
466
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
467 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
468 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
469 error ("can not convert octave_value to string");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
470 return 1;
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
473 octave_idx_type l = s.size ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
474
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
475 if (l >= NAMEDATALEN)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
476 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
477 error ("identifier too long, must be less than %d characters",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
478 NAMEDATALEN);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
479 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
480 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
481
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
482 for (int i = 0; i < l; i++)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
483 val.push_back (s[i]);
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
484
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
485 return 0;
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
488 oct_pq_conv_t conv_name = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
489 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
490 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
491 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
492 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
493 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
494 "name",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
495 &to_octave_str_name,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
496 &to_octave_bin_name,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
497 &from_octave_str_name,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
498 &from_octave_bin_name};
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 /* end type name */
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 /* type int2 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
503
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
504 int to_octave_str_int2 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
505 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
506 return 1;
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
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
509 int to_octave_bin_int2 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
510 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
511 ov = octave_value (octave_int16 (int16_t (be16toh (*((int16_t *) c)))));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
512
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
513 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
514 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
515
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
516 int from_octave_str_int2 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
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 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
519 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
520
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
521 int from_octave_bin_int2 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
522 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
523 int16_t i2 = ov.int_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
524
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
525 if (error_state)
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 error ("can not convert octave_value to int2 value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
528 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
529 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
530
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
531 OCT_PQ_PUT(val, int16_t, htobe16 (i2))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
532
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
533 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
534 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
535
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
536 oct_pq_conv_t conv_int2 = {0, // 26
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
537 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
538 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
539 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
540 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
541 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
542 "int2",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
543 &to_octave_str_int2,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
544 &to_octave_bin_int2,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
545 &from_octave_str_int2,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
546 &from_octave_bin_int2};
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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
549 /* end type int2 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
550
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
551 /* type int4 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
552
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
553 int to_octave_str_int4 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
554 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
555 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
556 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
557
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
558 int to_octave_bin_int4 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
559 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
560 ov = octave_value (octave_int32 (int32_t (be32toh (*((int32_t *) c)))));
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 0;
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
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
565 int from_octave_str_int4 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
566 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
567 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
568 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
569
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
570 int from_octave_bin_int4 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
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 int32_t i4 = ov.int_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
573
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
574 if (error_state)
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 error ("can not convert octave_value to int4 value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
577 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
578 }
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 OCT_PQ_PUT(val, int32_t, htobe32 (i4))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
581
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
582 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
583 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
584
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
585 oct_pq_conv_t conv_int4 = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
586 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
587 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
588 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
589 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
590 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
591 "int4",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
592 &to_octave_str_int4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
593 &to_octave_bin_int4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
594 &from_octave_str_int4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
595 &from_octave_bin_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
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
598 /* end type int4 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
599
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
600 /* type int8 */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
601
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
602 int to_octave_str_int8 (const char *c, octave_value &ov, int nb)
11394
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 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
605 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
606
11409
21794ea37065 Make char* in to_octave_ converters const.
i7tiol
parents: 11407
diff changeset
607 int to_octave_bin_int8 (const char *c, octave_value &ov, int nb)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
608 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
609 ov = octave_value (octave_int64 (int64_t (be64toh (*((int64_t *) c)))));
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
610
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
611 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
612 }
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
613
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
614 int from_octave_str_int8 (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
11407
f4098c7d5b35 Wrong implementation of copy-in from argument.
i7tiol
parents: 11394
diff changeset
619 int from_octave_bin_int8 (const octave_value &ov, oct_pq_dynvec_t &val)
11394
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
620 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
621 int64_t i8 = ov.int64_scalar_value ();
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
622
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
623 if (error_state)
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
624 {
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
625 error ("can not convert octave_value to int8 value");
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
626 return 1;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
627 }
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 OCT_PQ_PUT(val, int64_t, htobe64 (i8))
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
630
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
631 return 0;
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
632 }
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 oct_pq_conv_t conv_int8 = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
635 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
636 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
637 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
638 false,
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 "int8",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
641 &to_octave_str_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
642 &to_octave_bin_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
643 &from_octave_str_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
644 &from_octave_bin_int8};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
645
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
646
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
647 /* end type int8 */
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 /* type money */
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 oct_pq_conv_t conv_money = {0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
652 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
653 0,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
654 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
655 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
656 false,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
657 "money",
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
658 &to_octave_str_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
659 &to_octave_bin_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
660 &from_octave_str_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
661 &from_octave_bin_int8};
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
662
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
663 /* end type money */
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
664
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
665 oct_pq_conv_t *conv_ptrs[OCT_PQ_NUM_CONVERTERS] = {&conv_bool,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
666 &conv_oid,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
667 &conv_float8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
668 &conv_float4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
669 &conv_text,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
670 &conv_varchar,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
671 &conv_bpchar,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
672 &conv_name,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
673 &conv_bytea,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
674 &conv_int2,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
675 &conv_int4,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
676 &conv_int8,
9aee227e296c Populated new database package with initial postgresql interface.
i7tiol
parents:
diff changeset
677 &conv_money};