Qore DataProvider Module Reference 2.7.1
Loading...
Searching...
No Matches
AbstractDataProviderType.qc.dox.h
1// -*- mode: c++; indent-tabs-mode: nil -*-
3
27namespace DataProvider {
29const TypeCodeMap = {
30 NT_INT: "int",
31 NT_STRING: "string",
32 NT_BOOLEAN: "bool",
33 NT_FLOAT: "float",
34 NT_NUMBER: "number",
35 NT_BINARY: "binary",
36 NT_LIST: "list",
37 NT_HASH: "hash",
38 NT_OBJECT: "object",
39 NT_ALL: "any",
40 NT_DATE: "date",
41 NT_NULL: "null",
42 NT_NOTHING: "nothing",
43};
44
46
49 "int": "int",
50 Type::Int: "int",
51 Type::String: "string",
52 "boolean": "bool",
53 Type::Boolean: "bool",
54 "double": "float",
55 Type::Float: "float",
56 Type::Number: "number",
57 Type::Binary: "binary",
58 Type::List: "list<auto>",
59 Type::Hash: "hash<auto>",
60 Type::Object: "object",
61 Type::Date: "date",
62 Type::NullType: "null",
63 Type::NothingType: "nothing",
64 "all": "any",
65};
66
68
71 "int": "softint",
72 Type::Int: "softint",
73 Type::String: "softstring",
74 "boolean": "softbool",
75 Type::Boolean: "softbool",
76 "double": "softfloat",
77 Type::Float: "softfloat",
78 Type::Number: "softnumber",
79 Type::List: "softlist<auto>",
80 Type::Date: "softdate",
81};
82
84const DataTypeMap = {
85 "int": IntType,
86 Type::Int: IntType,
87 Type::String: StringType,
88 "boolean": BoolType,
89 Type::Boolean: BoolType,
90 "double": FloatType,
91 Type::Float: FloatType,
92 Type::Number: NumberType,
93 Type::Binary: BinaryType,
94 Type::List: AutoListType,
95 Type::Hash: AutoHashType,
96 Type::Object: ObjectType,
97 Type::Date: DateType,
98 Type::NullType: Reflection::NullType,
99 Type::NothingType: AbstractDataProviderType::nothingType,
100 "data": DataType,
101 "all": AbstractDataProviderType::anyType,
102 "any": AbstractDataProviderType::anyType,
103 "auto": AbstractDataProviderType::anyType,
104 "*int": IntOrNothingType,
105 "*integer": IntOrNothingType,
106 "*string": StringOrNothingType,
107 "*boolean": BoolOrNothingType,
108 "*bool": BoolOrNothingType,
109 "*double": FloatOrNothingType,
110 "*float": FloatOrNothingType,
111 "*number": NumberOrNothingType,
112 "*binary": BinaryOrNothingType,
113 "*list": AutoListOrNothingType,
114 "*hash": AutoHashOrNothingType,
115 "*object": ObjectOrNothingType,
116 "*date": DateOrNothingType,
117 "*data": DataOrNothingType,
118};
119
122
123
127 string type;
128
130 string desc;
131};
132
134public hashdecl DataTypeInfo {
136 string name;
137
139 string desc;
140
142 *hash<string, hash<DataProviderTypeOptionInfo>> supported_options;
143
145 *hash<auto> options;
146
148 string base_type;
149
152
154 list<string> types_accepted;
155
157 list<string> types_returned;
158
160 hash<string, hash<DataFieldInfo>> fields;
161
163 bool can_manage_fields = False;
164
166 *hash<DataTypeInfo> default_field_type_info;
167
169 *hash<auto> tags;
170};
171
177const DTT_FromFile = "from_file";
178
180const DTT_FromLocation = "from_location";
181
183const DTT_ClientOnly = "client_only";
185
188
189public:
190 static Type nothingType = Reflection::NothingType;
191 static Type anyType = Reflection::AutoType;
192 // not initialized here to workaround issue #4048 (circular initializtion error)
193 static AbstractDataProviderType anyDataType;
194
196 const DefaultDesc = "no description available";
197
198protected:
200 hash<auto> options;
201
203 *hash<auto> tags;
204
205public:
206
209
210
212
217 constructor(hash<auto> options, *hash<auto> tags);
218
219
221 string getDesc();
222
223
225 *hash<string, hash<DataProviderTypeOptionInfo>> getSupportedOptions();
226
227
229
235 hash<DataTypeInfo> getInputInfo();
236
237
239 hash<DataTypeInfo> getInfo();
240
241
243 *hash<string, hash<DataFieldInfo>> getFieldInfo();
244
245
248
249
251 bool isAssignableFrom(Type t);
252
253
255 bool isList();
256
257
260
261
263 *AbstractDataField getField(string field_name);
264
265
267 bool hasType();
268
269
272
273
276
277
279 *hash<string, bool> getDirectTypeHash();
280
281
284
285
288
289
291 auto getOptionValue(string opt);
292
293
295 *hash<auto> getOptions();
296
297
299
304 setOption(string opt, auto value);
305
306
308
312 setOptions(hash<auto> options);
313
314
316 auto getTag(string tag);
317
318
320 *hash<auto> getTags();
321
322
324
330
331
333
341
342
344 abstract string getName();
345
347 abstract *Type getValueType();
348
351
353 abstract *hash<string, AbstractDataField> getFields();
354
356 abstract hash<string, bool> getAcceptTypeHash();
357
359 abstract hash<string, bool> getReturnTypeHash();
360
362
366 abstract auto acceptsValue(auto value);
367
369 static AbstractDataProviderType get(Type type, *hash<auto> options, *hash<auto> tags);
370
372
375 static AbstractDataProviderType get(string typename, *hash<auto> options);
376
378protected:
379 setOptionIntern(string opt, auto value);
380public:
381
382};
383};
describes a data type based on a hashdecl
Definition: AbstractDataField.qc.dox.h:47
describes a data type
Definition: AbstractDataProviderType.qc.dox.h:187
bool hasType()
Returns True if the type is not a wildcard type.
int getBaseTypeCode()
Returns the base type code for the type.
*hash< auto > tags
type tags
Definition: AbstractDataProviderType.qc.dox.h:203
*hash< string, hash< DataProviderTypeOptionInfo > > getSupportedOptions()
Returns supported options.
bool isAssignableFrom(AbstractDataProviderType t)
Returns True if this type can be assigned from values of the argument type.
*AbstractDataProviderType getFieldType(string field_name)
get the given field type if it exists, otherwise return NOTHING
hash< auto > options
type options
Definition: AbstractDataProviderType.qc.dox.h:200
*hash< string, bool > getDirectTypeHash()
Returns a hash of native base type code keys where no translations are performed; keys are type codes...
bool isAssignableFrom(Type t)
Returns True if this type can be assigned from values of the argument type.
abstract *AbstractDataProviderType getElementType()
Returns the subtype (for lists or hashes) if there is only one.
abstract hash< string, bool > getReturnTypeHash()
Returns a hash of types returned by this type; keys are type names.
hash< DataTypeInfo > getInfo()
Returns a description of the type as a hash.
bool isMandatory()
Returns True if the type must have a value.
abstract *hash< string, AbstractDataField > getFields()
Returns the fields of the data structure; if any.
bool isList()
Returns True if this type is a list.
string getBaseTypeName()
Returns the base type name for the type; must be a standard Qore base type name.
bool isOrNothingType()
Returns True if the type also accepts NOTHING.
*hash< auto > getTags()
Returns tags set on the type.
const DefaultDesc
Default description.
Definition: AbstractDataProviderType.qc.dox.h:196
abstract auto acceptsValue(auto value)
Returns the value if the value can be assigned to the type.
static AbstractDataProviderType get(string typename, *hash< auto > options)
Returns an appropriate object for the given type.
AbstractDataProviderType getOrNothingType()
Returns an "or nothing" type equivalent to the current type.
abstract string getName()
Returns the type name.
setOptionIntern(string opt, auto value)
sets the given option without any validation of the option
setOptions(hash< auto > options)
sets options on the type
abstract *Type getValueType()
Returns the base type for the type, if any.
*hash< string, hash< DataFieldInfo > > getFieldInfo()
Returns information on fields supported.
*AbstractDataField getField(string field_name)
Returns the given field, if present, or NOTHING if not.
constructor(hash< auto > options, *hash< auto > tags)
creates the type and sets options
abstract hash< string, bool > getAcceptTypeHash()
Returns a hash of types accepted by this type; keys are type names.
hash< DataTypeInfo > getInputInfo()
Returns a description of the type as an input type.
*hash< auto > getOptions()
Returns options set on the type.
AbstractDataProviderType getSoftType()
Returns a "soft" type equivalent to the current type.
setOption(string opt, auto value)
sets the given option on the type
static AbstractDataProviderType get(Type type, *hash< auto > options, *hash< auto > tags)
Returns an appropriate object for the given type.
auto getOptionValue(string opt)
Returns the value of the given option.
auto getTag(string tag)
Returns the value of the given tag.
string getDesc()
Returns the description.
const DTT_FromLocation
Tag indicates that a string value can indicate a location.
Definition: AbstractDataProviderType.qc.dox.h:180
const DTT_FromFile
Definition: AbstractDataProviderType.qc.dox.h:177
const DTT_ClientOnly
Tag indicates that the value is only applicable in client contexts.
Definition: AbstractDataProviderType.qc.dox.h:183
Qore AbstractDataField class definition.
Definition: AbstractDataField.qc.dox.h:27
const DataTypeMap
Maps Qore type name constant values to data type objects.
Definition: AbstractDataProviderType.qc.dox.h:84
const OptimalQoreDataTypeMap
maps Qore type name constant values from the Type namespace to optimal Qore types names
Definition: AbstractDataProviderType.qc.dox.h:48
const TypeCodeMap
maps type codes to type names
Definition: AbstractDataProviderType.qc.dox.h:29
const AbstractDataProviderTypeMap
Maps Qore type name constant values to AbstractDataProviderType values.
Definition: AbstractDataProviderType.qc.dox.h:121
const OptimalQoreSoftDataTypeMap
maps Qore type name constant values from the Type namespace to optimal Qore types names
Definition: AbstractDataProviderType.qc.dox.h:70
describes type options
Definition: AbstractDataProviderType.qc.dox.h:125
string desc
the description of the option
Definition: AbstractDataProviderType.qc.dox.h:130
string type
the option value type
Definition: AbstractDataProviderType.qc.dox.h:127
describes a data type
Definition: AbstractDataProviderType.qc.dox.h:134
*hash< auto > options
Output: current transformation option values.
Definition: AbstractDataProviderType.qc.dox.h:145
*hash< auto > tags
Any tags set on the type.
Definition: AbstractDataProviderType.qc.dox.h:169
*hash< DataTypeInfo > default_field_type_info
Default type for fields not listed in fields.
Definition: AbstractDataProviderType.qc.dox.h:166
*hash< string, hash< DataProviderTypeOptionInfo > > supported_options
Output: transformation options supported by the type.
Definition: AbstractDataProviderType.qc.dox.h:142
bool can_manage_fields
If fields can be added dynamically to the type and if the type will accept any field at runtime.
Definition: AbstractDataProviderType.qc.dox.h:163
bool mandatory
Output: can be null / missing?
Definition: AbstractDataProviderType.qc.dox.h:151
list< string > types_returned
Input: list of types returned.
Definition: AbstractDataProviderType.qc.dox.h:157
string desc
The description of the type.
Definition: AbstractDataProviderType.qc.dox.h:139
string base_type
Output: base type.
Definition: AbstractDataProviderType.qc.dox.h:148
list< string > types_accepted
Output: list of types accepted.
Definition: AbstractDataProviderType.qc.dox.h:154
hash< string, hash< DataFieldInfo > > fields
Any fields supported by the type.
Definition: AbstractDataProviderType.qc.dox.h:160
string name
The name of the type.
Definition: AbstractDataProviderType.qc.dox.h:136