Qore DataProvider Module Reference 3.0
Loading...
Searching...
No Matches
AbstractDataProviderType.qc.dox.h
1// -*- mode: c++; indent-tabs-mode: nil -*-
3
27namespace DataProvider {
29const TypeCodeMap = ...;
30
31
33
36
37
39
42
43
45const DataTypeMap = ...;
46
47
50
51
55 string type;
56
58 string desc;
59
61 bool publish;
62};
63
65public struct DataTypeInfo {
67 string name;
68
71
73 string short_desc;
74
76 string desc;
77
79 *string path;
80
82 *hash<string, hash<DataProviderTypeOptionInfo>> supported_options;
83
85 *hash<auto> options;
86
88 string base_type;
89
92
94 list<string> types_accepted;
95
97 list<string> types_returned;
98
100 *hash<string, hash<DataFieldInfo>> fields;
101
103 *hash<DataTypeInfo> element_type;
104
107
109 bool can_manage_fields = False;
110
112 *hash<DataTypeInfo> default_field_type_info;
113
116
119
121 *hash<auto> tags;
122};
123
129const DTT_FromFile = "from_file";
130
132const DTT_FromLocation = "from_location";
133
135const DTT_ClientOnly = "client_only";
137
139class AbstractDataProviderType : public Qore::Serializable {
140
141public:
142 static Type nothingType = Reflection::NothingType;
143 static Type anyType = Reflection::AutoType;
144 // not initialized here to workaround issue #4048 (circular initializtion error)
145 static AbstractDataProviderType anyDataType;
146
148 const DefaultDesc = "no description available";
149
150protected:
152 hash<auto> options;
153
155 *hash<auto> tags;
156
158 *string path;
159
160public:
161
164
165
168
169
171
177 constructor(hash<auto> options, *hash<auto> tags, *string path);
178
179
181
187 constructor(*hash<auto> options, hash<auto> tags, *string path);
188
189
191 string getDesc();
192
193
195
197 *string getPath();
198
199
201
203 setPath(string path);
204
205
207
210
211
213 *hash<string, hash<DataProviderTypeOptionInfo>> getSupportedOptions();
214
215
217
223 hash<DataTypeInfo> getInputInfo(*bool simple);
224
225
227 hash<DataTypeInfo> getInfo(*bool simple);
228
229
231 *hash<string, hash<DataFieldInfo>> getFieldInfo();
232
233
236
237
239 bool isAssignableFrom(Type t);
240
241
243
255
256
258
270
271
273 bool isList();
274
275
278
279
281 *AbstractDataField getField(string field_name);
282
283
285 bool hasType();
286
287
290
291
294
295
297 *hash<string, bool> getDirectTypeHash();
298
299
302
303
306
307
309 auto getOptionValue(string opt);
310
311
313 *hash<auto> getOptions();
314
315
317
319 *hash<auto> getPublicOptions();
320
321
323
328 setOption(string opt, auto value);
329
330
332
336 setOptions(hash<auto> options);
337
338
340 auto getTag(string tag);
341
342
344 *hash<auto> getTags();
345
346
349
350
352
358
359
361
369
370
372
380
381
383
388 auto getExampleValue(*hash<string, bool> emap, *string fname);
389
390
392
397
398
400
405
406
408 abstract string getName();
409
411 abstract *Type getValueType();
412
415
417 abstract *hash<string, AbstractDataField> getFields();
418
420 abstract hash<string, bool> getAcceptTypeHash(*bool simple);
421
423 abstract hash<string, bool> getReturnTypeHash(*bool simple);
424
426
430 abstract auto acceptsValue(auto value);
431
433 static AbstractDataProviderType get(Type type, *hash<auto> options, *hash<auto> tags, auto default_value, *hash<NameDescInfo> attr);
434
436
439 static AbstractDataProviderType get(string typename, *hash<auto> options);
440
442
444 static AbstractDataProviderType get(hash<DataTypeInfo> info);
445
447protected:
448 setOptionIntern(string opt, auto value);
449public:
450
451};
452};
453
454namespace Priv {
456thread_local hash<string, bool> rimap;
457};
describes a data type based on a hashdecl
Definition AbstractDataField.qc.dox.h:74
describes a data type
Definition AbstractDataProviderType.qc.dox.h:139
abstract hash< string, bool > getReturnTypeHash(*bool simple)
Returns a hash of types returned by this type; keys are type names.
bool hasType()
Returns True if the type is not a wildcard type.
setDynamicTag()
Sets the dynamic tag on the type.
int getBaseTypeCode()
Returns the base type code for the type.
static AbstractDataProviderType get(Type type, *hash< auto > options, *hash< auto > tags, auto default_value, *hash< NameDescInfo > attr)
Returns an appropriate object for the given type.
*hash< auto > tags
type tags
Definition AbstractDataProviderType.qc.dox.h:155
*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:152
hash< DataTypeInfo > getInputInfo(*bool simple)
Returns a description of the type as an input type.
*hash< string, bool > getDirectTypeHash()
Returns a hash of native base type code keys where no translations are performed; keys are type codes...
clearPath()
Clears the type path for the type.
static AbstractDataProviderType get(hash< DataTypeInfo > info)
Returns an appropriate object for the given type description.
bool hasDefaultValue()
! Returns True if this type has a default value
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.
*string getPath()
Returns the type path in the type cache, if any.
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.
*hash< auto > getPublicOptions()
Returns options with the publish flag set on the type.
const DefaultDesc
Default description.
Definition AbstractDataProviderType.qc.dox.h:148
string getDisplayName()
Returns the type's display name.
abstract hash< string, bool > getAcceptTypeHash(*bool simple)
Returns a hash of types accepted by this type; keys are type names.
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.
string getShortDescription()
Returns the type's short description.
setOptionIntern(string opt, auto value)
sets the given option without any validation of the option
setOptions(hash< auto > options)
sets options on the type
*string path
The type path, if any.
Definition AbstractDataProviderType.qc.dox.h:158
abstract *Type getValueType()
Returns the base type for the type, if any.
constructor(string path)
creates the type
auto getExampleValue(*hash< string, bool > emap, *string fname)
Returns any example value for 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, *string path)
creates the type and sets options
*hash< auto > getOptions()
Returns options set on the type.
setPath(string path)
Sets the type path for 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
AbstractDataProviderType getMandatoryType()
Returns a mandatory (i.e. not "or nothing") type equivalent to the current type.
auto getOptionValue(string opt)
Returns the value of the given option.
hash< DataTypeInfo > getInfo(*bool simple)
Returns a description of the type as a hash.
auto getTag(string tag)
Returns the value of the given tag.
constructor(hash< auto > options, *hash< auto > tags, *string path)
creates the type and sets options
string getDesc()
Returns the description.
const DTT_FromLocation
Tag indicates that a string value can indicate a location.
Definition AbstractDataProviderType.qc.dox.h:132
const DTT_FromFile
Definition AbstractDataProviderType.qc.dox.h:129
const DTT_ClientOnly
Tag indicates that the value is only applicable in client contexts.
Definition AbstractDataProviderType.qc.dox.h:135
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:45
const OptimalQoreDataTypeMap
maps Qore type name constant values from the Type namespace to optimal Qore types names
Definition AbstractDataProviderType.qc.dox.h:35
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:49
const OptimalQoreSoftDataTypeMap
maps Qore type name constant values from the Type namespace to optimal Qore types names
Definition AbstractDataProviderType.qc.dox.h:41
Private definitions.
Definition AbstractDataProviderType.qc.dox.h:454
thread_local hash< string, bool > rimap
Recursive info map: unique key -> True.
Definition AbstractDataProviderType.qc.dox.h:456
describes type options
Definition AbstractDataProviderType.qc.dox.h:53
bool publish
Flag to publish the option as a `type_option`.
Definition AbstractDataProviderType.qc.dox.h:61
string desc
the description of the option
Definition AbstractDataProviderType.qc.dox.h:58
string type
the option value type
Definition AbstractDataProviderType.qc.dox.h:55
describes a data type
Definition AbstractDataProviderType.qc.dox.h:65
*hash< auto > options
Output: current transformation option values.
Definition AbstractDataProviderType.qc.dox.h:85
*hash< auto > tags
Any tags set on the type.
Definition AbstractDataProviderType.qc.dox.h:121
string short_desc
A short description for the type, plain text formatting.
Definition AbstractDataProviderType.qc.dox.h:73
*hash< DataTypeInfo > default_field_type_info
Default type for fields not listed in fields.
Definition AbstractDataProviderType.qc.dox.h:112
*string path
The type path in the type cache, if known.
Definition AbstractDataProviderType.qc.dox.h:79
bool recursive
Recursive flag.
Definition AbstractDataProviderType.qc.dox.h:118
*hash< string, hash< DataProviderTypeOptionInfo > > supported_options
Output: transformation options supported by the type.
Definition AbstractDataProviderType.qc.dox.h:82
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:109
*hash< string, hash< DataFieldInfo > > fields
Any fields supported by the type; will be NOTHING when recursive is True.
Definition AbstractDataProviderType.qc.dox.h:100
bool mandatory
Output: can be null / missing?
Definition AbstractDataProviderType.qc.dox.h:91
*hash< DataTypeInfo > element_type
A type description of any element type.
Definition AbstractDataProviderType.qc.dox.h:103
list< string > types_returned
Input: list of types returned.
Definition AbstractDataProviderType.qc.dox.h:97
string display_name
The display name for the type.
Definition AbstractDataProviderType.qc.dox.h:70
string unique_key
Unique type identifier.
Definition AbstractDataProviderType.qc.dox.h:115
string desc
The description of the type.
Definition AbstractDataProviderType.qc.dox.h:76
string base_type
Output: base type.
Definition AbstractDataProviderType.qc.dox.h:88
list< string > types_accepted
Output: list of types accepted.
Definition AbstractDataProviderType.qc.dox.h:94
auto default_value
The default value for the type.
Definition AbstractDataProviderType.qc.dox.h:106
string name
The name of the type.
Definition AbstractDataProviderType.qc.dox.h:67