@@ -38,25 +38,104 @@ namespace fbcpp
3838 // /
3939 enum class DescriptorOriginalType : unsigned
4040 {
41+ // /
42+ // / Null type indicator.
43+ // /
4144 NULL_TYPE = SQL_NULL ,
45+
46+ // /
47+ // / Fixed-length text.
48+ // /
4249 TEXT = SQL_TEXT ,
50+
51+ // /
52+ // / Variable-length text.
53+ // /
4354 VARYING = SQL_VARYING ,
55+
56+ // /
57+ // / 16-bit signed integer.
58+ // /
4459 SHORT = SQL_SHORT ,
60+
61+ // /
62+ // / 32-bit signed integer.
63+ // /
4564 LONG = SQL_LONG ,
65+
66+ // /
67+ // / Single-precision floating point.
68+ // /
4669 FLOAT = SQL_FLOAT ,
70+
71+ // /
72+ // / Double-precision floating point.
73+ // /
4774 DOUBLE = SQL_DOUBLE ,
75+
76+ // /
77+ // / Timestamp without time zone.
78+ // /
4879 TIMESTAMP = SQL_TIMESTAMP ,
80+
81+ // /
82+ // / Binary large object.
83+ // /
4984 BLOB = SQL_BLOB ,
85+
86+ // /
87+ // / Time of day without time zone.
88+ // /
5089 TIME = SQL_TYPE_TIME ,
90+
91+ // /
92+ // / Calendar date.
93+ // /
5194 DATE = SQL_TYPE_DATE ,
95+
96+ // /
97+ // / 64-bit signed integer.
98+ // /
5299 INT64 = SQL_INT64 ,
100+
101+ // /
102+ // / Timestamp with time zone.
103+ // /
53104 TIMESTAMP_TZ = SQL_TIMESTAMP_TZ ,
105+
106+ // /
107+ // / Extended timestamp with time zone.
108+ // /
54109 TIMESTAMP_TZ_EX = SQL_TIMESTAMP_TZ_EX ,
110+
111+ // /
112+ // / Time of day with time zone.
113+ // /
55114 TIME_TZ = SQL_TIME_TZ ,
115+
116+ // /
117+ // / Extended time of day with time zone.
118+ // /
56119 TIME_TZ_EX = SQL_TIME_TZ_EX ,
120+
121+ // /
122+ // / 128-bit signed integer.
123+ // /
57124 INT128 = SQL_INT128 ,
125+
126+ // /
127+ // / 16-digit decimal floating point.
128+ // /
58129 DEC16 = SQL_DEC16 ,
130+
131+ // /
132+ // / 34-digit decimal floating point.
133+ // /
59134 DEC34 = SQL_DEC34 ,
135+
136+ // /
137+ // / Boolean value.
138+ // /
60139 BOOLEAN = SQL_BOOLEAN ,
61140 };
62141
@@ -65,24 +144,99 @@ namespace fbcpp
65144 // /
66145 enum class DescriptorAdjustedType : unsigned
67146 {
147+ // /
148+ // / Null type indicator.
149+ // /
68150 NULL_TYPE = SQL_NULL ,
151+
152+ // /
153+ // / String type (variable-length).
154+ // /
69155 STRING = SQL_VARYING ,
156+
157+ // /
158+ // / 16-bit signed integer.
159+ // /
70160 INT16 = SQL_SHORT ,
161+
162+ // /
163+ // / 32-bit signed integer.
164+ // /
71165 INT32 = SQL_LONG ,
166+
167+ // /
168+ // / Single-precision floating point.
169+ // /
72170 FLOAT = SQL_FLOAT ,
171+
172+ // /
173+ // / Double-precision floating point.
174+ // /
73175 DOUBLE = SQL_DOUBLE ,
176+
177+ // /
178+ // / Timestamp without time zone.
179+ // /
74180 TIMESTAMP = SQL_TIMESTAMP ,
181+
182+ // /
183+ // / Binary large object.
184+ // /
75185 BLOB = SQL_BLOB ,
186+
187+ // /
188+ // / Time of day without time zone.
189+ // /
76190 TIME = SQL_TYPE_TIME ,
191+
192+ // /
193+ // / Calendar date.
194+ // /
77195 DATE = SQL_TYPE_DATE ,
196+
197+ // /
198+ // / 64-bit signed integer.
199+ // /
78200 INT64 = SQL_INT64 ,
201+
202+ // /
203+ // / Timestamp with time zone.
204+ // /
79205 TIMESTAMP_TZ = SQL_TIMESTAMP_TZ ,
206+
207+ // /
208+ // / Extended timestamp with time zone.
209+ // /
80210 TIMESTAMP_TZ_EX = SQL_TIMESTAMP_TZ_EX ,
211+
212+ // /
213+ // / Time of day with time zone.
214+ // /
81215 TIME_TZ = SQL_TIME_TZ ,
216+
217+ // /
218+ // / Extended time of day with time zone.
219+ // /
82220 TIME_TZ_EX = SQL_TIME_TZ_EX ,
221+
222+ // /
223+ // / 128-bit signed integer.
224+ // /
83225 INT128 = SQL_INT128 ,
226+
227+ // /
228+ // / 16-digit decimal floating point.
229+ // /
84230 DECFLOAT16 = SQL_DEC16 ,
231+
232+ // /
233+ // / 34-digit decimal floating point.
234+ // /
85235 DECFLOAT34 = SQL_DEC34 ,
236+
237+ // /
238+ // / Boolean value.
239+ // /
86240 BOOLEAN = SQL_BOOLEAN ,
87241 };
88242
@@ -91,12 +245,39 @@ namespace fbcpp
91245 // /
92246 struct Descriptor final
93247 {
248+ // /
249+ // / Original SQL type as reported by Firebird.
250+ // /
94251 DescriptorOriginalType originalType;
252+
253+ // /
254+ // / Adjusted type after normalization for easier handling.
255+ // /
95256 DescriptorAdjustedType adjustedType;
257+
258+ // /
259+ // / Decimal scale for numeric types; zero for non-numeric types.
260+ // /
96261 int scale;
262+
263+ // /
264+ // / Length in bytes of the column or parameter data.
265+ // /
97266 unsigned length;
267+
268+ // /
269+ // / Byte offset of this field within the message buffer.
270+ // /
98271 unsigned offset;
272+
273+ // /
274+ // / Byte offset of the null indicator within the message buffer.
275+ // /
99276 unsigned nullOffset;
277+
278+ // /
279+ // / Indicates whether the column or parameter can contain null values.
280+ // /
100281 bool isNullable;
101282 // FIXME: more things
102283 };
0 commit comments