Qore DataProvider Module Reference  2.3
AbstractDataProviderType.qc.dox.h
1 // -*- mode: c++; indent-tabs-mode: nil -*-
3 
27 namespace DataProvider {
29 const TypeCodeMap = ...;
30 
31 
33 
36 
37 
39 
42 
43 
45 const DataTypeMap = ...;
46 
47 
50 
51 
55  string type;
56 
58  string desc;
59 };
60 
62 public struct DataTypeInfo {
64  string name;
65 
67  *hash<string, hash<DataProviderTypeOptionInfo>> supported_options;
68 
70  *hash<auto> options;
71 
73  string base_type;
74 
76  bool mandatory;
77 
79  list<string> types_accepted;
80 
82  list<string> types_returned;
83 
85  hash<string, hash<DataFieldInfo>> fields;
86 
89 
91  *hash<DataTypeInfo> default_field_type_info;
92 
94  *hash<auto> tags;
95 };
96 
102 const DTT_FromFile = "from_file";
103 
105 const DTT_FromLocation = "from_location";
106 
108 const DTT_ClientOnly = "client_only";
110 
112 class AbstractDataProviderType : public Serializable {
113 
114 public:
115  static Type nothingType = Reflection::NothingType;
116  static Type anyType = Reflection::AutoType;
117  // not initialized here to workaround issue #4048 (circular initializtion error)
118  static AbstractDataProviderType anyDataType;
119 
120 protected:
122  hash<auto> options;
123 
125  *hash<auto> tags;
126 
127 public:
128 
131 
132 
134 
138  constructor(hash<auto> options, *hash<auto> tags);
139 
140 
142  *hash<string, hash<DataProviderTypeOptionInfo>> getSupportedOptions();
143 
144 
146 
152  hash<DataTypeInfo> getInputInfo();
153 
154 
156  hash<DataTypeInfo> getInfo();
157 
158 
160  *hash<string, hash<DataFieldInfo>> getFieldInfo();
161 
162 
165 
166 
168  bool isAssignableFrom(Type t);
169 
170 
172  bool isList();
173 
174 
176  bool isMandatory();
177 
178 
180  *AbstractDataField getField(string field_name);
181 
182 
184  bool hasType();
185 
186 
188  string getBaseTypeName();
189 
190 
193 
194 
196  *hash<string, bool> getDirectTypeHash();
197 
198 
201 
202 
205 
206 
208  auto getOptionValue(string opt);
209 
210 
212  *hash<auto> getOptions();
213 
214 
216 
221  setOption(string opt, auto value);
222 
223 
225 
229  setOptions(hash<auto> options);
230 
231 
233  auto getTag(string tag);
234 
235 
237  *hash<auto> getTags();
238 
239 
241 
247 
248 
250 
258 
259 
261  abstract string getName();
262 
264  abstract *Type getValueType();
265 
268 
270  abstract *hash<string, AbstractDataField> getFields();
271 
273  abstract hash<string, bool> getAcceptTypeHash();
274 
276  abstract hash<string, bool> getReturnTypeHash();
277 
279 
283  abstract auto acceptsValue(auto value);
284 
286  static AbstractDataProviderType get(Type type, *hash<auto> options, *hash<auto> tags);
287 
289 
292  static AbstractDataProviderType get(string typename, *hash<auto> options);
293 
295 protected:
296  setOptionIntern(string opt, auto value);
297 public:
298 
299 };
300 };
describes a data type based on a hashdecl
Definition: AbstractDataField.qc.dox.h:47
describes a data type
Definition: AbstractDataProviderType.qc.dox.h:112
bool hasType()
Returns True if the type is not a wildcard type.
*hash< string, hash< DataFieldInfo > > getFieldInfo()
Returns information on fields supported.
int getBaseTypeCode()
Returns the base type code for the type.
*hash< auto > tags
type tags
Definition: AbstractDataProviderType.qc.dox.h:125
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:122
hash< DataTypeInfo > getInfo()
Returns a description of the type as a hash.
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.
*hash< string, bool > getDirectTypeHash()
Returns a hash of native base type code keys where no translations are performed; keys are type codes...
hash< DataTypeInfo > getInputInfo()
Returns a description of the type as an input type.
bool isMandatory()
Returns True if the type must have a value.
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.
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.
*hash< string, hash< DataProviderTypeOptionInfo > > getSupportedOptions()
Returns supported options.
AbstractDataProviderType getOrNothingType()
Returns an "or nothing" type equivalent to the current type.
abstract string getName()
Returns the type name.
abstract *hash< string, AbstractDataField > getFields()
Returns the fields of the data structure; if any.
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.
*AbstractDataField getField(string field_name)
Returns the given field, if present, or NOTHING if not.
*hash< auto > getOptions()
Returns options set on the type.
constructor(hash< auto > options, *hash< auto > tags)
creates the type and sets options
AbstractDataProviderType getSoftType()
Returns a "soft" type equivalent to the current type.
setOption(string opt, auto value)
sets the given option on the type
abstract hash< string, bool > getReturnTypeHash()
Returns a hash of types returned by this type; keys are type names.
*hash< auto > getTags()
Returns tags set on the type.
abstract hash< string, bool > getAcceptTypeHash()
Returns a hash of types accepted by this type; keys are type names.
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.
const False
const NothingType
string type(auto arg)
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 DTT_FromLocation
Tag indicates that a string value can indicate a location.
Definition: AbstractDataProviderType.qc.dox.h:105
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 DTT_FromFile
Tag indicating that a string value can be taken from a file.
Definition: AbstractDataProviderType.qc.dox.h:102
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
const DTT_ClientOnly
Tag indicates that the value is only applicable in client contexts.
Definition: AbstractDataProviderType.qc.dox.h:108
describes type options
Definition: AbstractDataProviderType.qc.dox.h:53
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:62
*hash< auto > options
output: current transformation option values
Definition: AbstractDataProviderType.qc.dox.h:70
*hash< auto > tags
Any tags set on the type.
Definition: AbstractDataProviderType.qc.dox.h:94
*hash< DataTypeInfo > default_field_type_info
default type for fields not listed in fields
Definition: AbstractDataProviderType.qc.dox.h:91
*hash< string, hash< DataProviderTypeOptionInfo > > supported_options
output: transformation options supported by the type
Definition: AbstractDataProviderType.qc.dox.h:67
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:88
bool mandatory
output: can be null / missing?
Definition: AbstractDataProviderType.qc.dox.h:76
list< string > types_returned
input: list of types returned
Definition: AbstractDataProviderType.qc.dox.h:82
string base_type
output: base type
Definition: AbstractDataProviderType.qc.dox.h:73
list< string > types_accepted
output: list of types accepted
Definition: AbstractDataProviderType.qc.dox.h:79
hash< string, hash< DataFieldInfo > > fields
any fields supported by the type
Definition: AbstractDataProviderType.qc.dox.h:85
string name
the name of the type
Definition: AbstractDataProviderType.qc.dox.h:64