Loading...
Searching...
No Matches
AbstractDataProviderType.qc.dox.h
// -*- mode: c++; indent-tabs-mode: nil -*-
namespace DataProvider {
const TypeCodeMap = {
NT_INT: "int",
NT_STRING: "string",
NT_BOOLEAN: "bool",
NT_FLOAT: "float",
NT_NUMBER: "number",
NT_BINARY: "binary",
NT_LIST: "list",
NT_HASH: "hash",
NT_OBJECT: "object",
NT_ALL: "any",
NT_DATE: "date",
NT_NULL: "null",
NT_NOTHING: "nothing",
};
const OptimalQoreDataTypeMap = {
"int": "int",
Type::Int: "int",
Type::String: "string",
"boolean": "bool",
Type::Boolean: "bool",
"double": "float",
Type::Float: "float",
Type::Number: "number",
Type::Binary: "binary",
Type::List: "list<auto>",
Type::Hash: "hash<auto>",
Type::Object: "object",
Type::Date: "date",
Type::NullType: "null",
Type::NothingType: "nothing",
"all": "any",
};
const OptimalQoreSoftDataTypeMap = OptimalQoreDataTypeMap + {
"int": "softint",
Type::Int: "softint",
Type::String: "softstring",
"boolean": "softbool",
Type::Boolean: "softbool",
"double": "softfloat",
Type::Float: "softfloat",
Type::Number: "softnumber",
Type::List: "softlist<auto>",
Type::Date: "softdate",
};
const DataTypeMap = {
"int": IntType,
Type::Int: IntType,
Type::String: StringType,
"boolean": BoolType,
Type::Boolean: BoolType,
"double": FloatType,
Type::Float: FloatType,
Type::Number: NumberType,
Type::Binary: BinaryType,
Type::List: AutoListType,
Type::Hash: AutoHashType,
Type::Object: ObjectType,
Type::Date: DateType,
Type::NullType: Reflection::NullType,
Type::NothingType: AbstractDataProviderType::nothingType,
"base64binary": Base64BinaryType,
"hexbinary": HexBinaryType,
"data": DataType,
"softint": SoftIntType,
"softstring": SoftStringType,
"softbool": SoftBoolType,
"softfloat": SoftFloatType,
"softnumber": SoftNumberType,
"softdate": SoftDateType,
"*softint": SoftIntOrNothingType,
"*softstring": SoftStringOrNothingType,
"*softbool": SoftBoolOrNothingType,
"*softfloat": SoftFloatOrNothingType,
"*softnumber": SoftNumberOrNothingType,
"*softdate": SoftDateOrNothingType,
"all": AbstractDataProviderType::anyType,
"any": AbstractDataProviderType::anyType,
"auto": AbstractDataProviderType::anyType,
"*int": IntOrNothingType,
"*integer": IntOrNothingType,
"*string": StringOrNothingType,
"*boolean": BoolOrNothingType,
"*bool": BoolOrNothingType,
"*double": FloatOrNothingType,
"*float": FloatOrNothingType,
"*number": NumberOrNothingType,
"*binary": BinaryOrNothingType,
"*list": AutoListOrNothingType,
"*hash": AutoHashOrNothingType,
"*object": ObjectOrNothingType,
"*date": DateOrNothingType,
"*data": DataOrNothingType,
"*hexbinary": HexBinaryOrNothingType,
};
const AbstractDataProviderTypeMap = ...;
public struct DataProviderTypeOptionInfo {
string type;
string desc;
};
public struct DataTypeInfo {
string name;
string desc;
*hash<string, hash<DataProviderTypeOptionInfo>> supported_options;
*hash<auto> options;
string base_type;
bool mandatory;
list<string> types_accepted;
list<string> types_returned;
hash<string, hash<DataFieldInfo>> fields;
bool can_manage_fields = False;
*hash<DataTypeInfo> default_field_type_info;
*hash<auto> tags;
};
const DTT_FromFile = "from_file";
const DTT_FromLocation = "from_location";
const DTT_ClientOnly = "client_only";
class AbstractDataProviderType : public Qore::Serializable {
public:
static Type nothingType = Reflection::NothingType;
static Type anyType = Reflection::AutoType;
// not initialized here to workaround issue #4048 (circular initializtion error)
static AbstractDataProviderType anyDataType;
const DefaultDesc = "no description available";
protected:
hash<auto> options;
*hash<auto> tags;
public:
constructor();
constructor(hash<auto> options, *hash<auto> tags);
string getDesc();
*hash<string, hash<DataProviderTypeOptionInfo>> getSupportedOptions();
hash<DataTypeInfo> getInputInfo();
hash<DataTypeInfo> getInfo();
*hash<string, hash<DataFieldInfo>> getFieldInfo();
bool isAssignableFrom(AbstractDataProviderType t);
bool isAssignableFrom(Type t);
bool isList();
bool isMandatory();
*AbstractDataField getField(string field_name);
bool hasType();
string getBaseTypeName();
int getBaseTypeCode();
*hash<string, bool> getDirectTypeHash();
bool isOrNothingType();
*AbstractDataProviderType getFieldType(string field_name);
auto getOptionValue(string opt);
*hash<auto> getOptions();
setOption(string opt, auto value);
setOptions(hash<auto> options);
auto getTag(string tag);
*hash<auto> getTags();
AbstractDataProviderType getSoftType();
AbstractDataProviderType getOrNothingType();
abstract string getName();
abstract *Type getValueType();
abstract *AbstractDataProviderType getElementType();
abstract *hash<string, AbstractDataField> getFields();
abstract hash<string, bool> getAcceptTypeHash();
abstract hash<string, bool> getReturnTypeHash();
abstract auto acceptsValue(auto value);
static AbstractDataProviderType get(Type type, *hash<auto> options, *hash<auto> tags);
static AbstractDataProviderType get(string typename, *hash<auto> options);
protected:
setOptionIntern(string opt, auto value);
public:
};
};
DataProvider::AbstractDataField
describes a data type based on a hashdecl
Definition: AbstractDataField.qc.dox.h:47
DataProvider::AbstractDataProviderType
describes a data type
Definition: AbstractDataProviderType.qc.dox.h:206
DataProvider::AbstractDataProviderType::hasType
bool hasType()
Returns True if the type is not a wildcard type.
DataProvider::AbstractDataProviderType::getBaseTypeCode
int getBaseTypeCode()
Returns the base type code for the type.
DataProvider::AbstractDataProviderType::tags
*hash< auto > tags
type tags
Definition: AbstractDataProviderType.qc.dox.h:222
DataProvider::AbstractDataProviderType::getSupportedOptions
*hash< string, hash< DataProviderTypeOptionInfo > > getSupportedOptions()
Returns supported options.
DataProvider::AbstractDataProviderType::isAssignableFrom
bool isAssignableFrom(AbstractDataProviderType t)
Returns True if this type can be assigned from values of the argument type.
DataProvider::AbstractDataProviderType::getFieldType
*AbstractDataProviderType getFieldType(string field_name)
get the given field type if it exists, otherwise return NOTHING
DataProvider::AbstractDataProviderType::options
hash< auto > options
type options
Definition: AbstractDataProviderType.qc.dox.h:219
DataProvider::AbstractDataProviderType::getDirectTypeHash
*hash< string, bool > getDirectTypeHash()
Returns a hash of native base type code keys where no translations are performed; keys are type codes...
DataProvider::AbstractDataProviderType::isAssignableFrom
bool isAssignableFrom(Type t)
Returns True if this type can be assigned from values of the argument type.
DataProvider::AbstractDataProviderType::getElementType
abstract *AbstractDataProviderType getElementType()
Returns the subtype (for lists or hashes) if there is only one.
DataProvider::AbstractDataProviderType::getReturnTypeHash
abstract hash< string, bool > getReturnTypeHash()
Returns a hash of types returned by this type; keys are type names.
DataProvider::AbstractDataProviderType::getInfo
hash< DataTypeInfo > getInfo()
Returns a description of the type as a hash.
DataProvider::AbstractDataProviderType::isMandatory
bool isMandatory()
Returns True if the type must have a value.
DataProvider::AbstractDataProviderType::getFields
abstract *hash< string, AbstractDataField > getFields()
Returns the fields of the data structure; if any.
DataProvider::AbstractDataProviderType::isList
bool isList()
Returns True if this type is a list.
DataProvider::AbstractDataProviderType::getBaseTypeName
string getBaseTypeName()
Returns the base type name for the type; must be a standard Qore base type name.
DataProvider::AbstractDataProviderType::isOrNothingType
bool isOrNothingType()
Returns True if the type also accepts NOTHING.
DataProvider::AbstractDataProviderType::getTags
*hash< auto > getTags()
Returns tags set on the type.
DataProvider::AbstractDataProviderType::DefaultDesc
const DefaultDesc
Default description.
Definition: AbstractDataProviderType.qc.dox.h:215
DataProvider::AbstractDataProviderType::acceptsValue
abstract auto acceptsValue(auto value)
Returns the value if the value can be assigned to the type.
DataProvider::AbstractDataProviderType::get
static AbstractDataProviderType get(string typename, *hash< auto > options)
Returns an appropriate object for the given type.
DataProvider::AbstractDataProviderType::getOrNothingType
AbstractDataProviderType getOrNothingType()
Returns an "or nothing" type equivalent to the current type.
DataProvider::AbstractDataProviderType::getName
abstract string getName()
Returns the type name.
DataProvider::AbstractDataProviderType::setOptionIntern
setOptionIntern(string opt, auto value)
sets the given option without any validation of the option
DataProvider::AbstractDataProviderType::setOptions
setOptions(hash< auto > options)
sets options on the type
DataProvider::AbstractDataProviderType::getValueType
abstract *Type getValueType()
Returns the base type for the type, if any.
DataProvider::AbstractDataProviderType::getFieldInfo
*hash< string, hash< DataFieldInfo > > getFieldInfo()
Returns information on fields supported.
DataProvider::AbstractDataProviderType::getField
*AbstractDataField getField(string field_name)
Returns the given field, if present, or NOTHING if not.
DataProvider::AbstractDataProviderType::constructor
constructor(hash< auto > options, *hash< auto > tags)
creates the type and sets options
DataProvider::AbstractDataProviderType::getAcceptTypeHash
abstract hash< string, bool > getAcceptTypeHash()
Returns a hash of types accepted by this type; keys are type names.
DataProvider::AbstractDataProviderType::getInputInfo
hash< DataTypeInfo > getInputInfo()
Returns a description of the type as an input type.
DataProvider::AbstractDataProviderType::getOptions
*hash< auto > getOptions()
Returns options set on the type.
DataProvider::AbstractDataProviderType::constructor
constructor()
creates the type
DataProvider::AbstractDataProviderType::getSoftType
AbstractDataProviderType getSoftType()
Returns a "soft" type equivalent to the current type.
DataProvider::AbstractDataProviderType::setOption
setOption(string opt, auto value)
sets the given option on the type
DataProvider::AbstractDataProviderType::get
static AbstractDataProviderType get(Type type, *hash< auto > options, *hash< auto > tags)
Returns an appropriate object for the given type.
DataProvider::AbstractDataProviderType::getOptionValue
auto getOptionValue(string opt)
Returns the value of the given option.
DataProvider::AbstractDataProviderType::getTag
auto getTag(string tag)
Returns the value of the given tag.
DataProvider::AbstractDataProviderType::getDesc
string getDesc()
Returns the description.
Qore::Serializable
DataProvider::DTT_FromLocation
const DTT_FromLocation
Tag indicates that a string value can indicate a location.
Definition: AbstractDataProviderType.qc.dox.h:199
DataProvider::DTT_FromFile
const DTT_FromFile
Definition: AbstractDataProviderType.qc.dox.h:196
DataProvider::DTT_ClientOnly
const DTT_ClientOnly
Tag indicates that the value is only applicable in client contexts.
Definition: AbstractDataProviderType.qc.dox.h:202
DataProvider
Qore AbstractDataField class definition.
Definition: AbstractDataField.qc.dox.h:27
DataProvider::DataTypeMap
const DataTypeMap
Maps Qore type name constant values to data type objects.
Definition: AbstractDataProviderType.qc.dox.h:84
DataProvider::OptimalQoreDataTypeMap
const OptimalQoreDataTypeMap
maps Qore type name constant values from the Type namespace to optimal Qore types names
Definition: AbstractDataProviderType.qc.dox.h:48
DataProvider::TypeCodeMap
const TypeCodeMap
maps type codes to type names
Definition: AbstractDataProviderType.qc.dox.h:29
DataProvider::AbstractDataProviderTypeMap
const AbstractDataProviderTypeMap
Maps Qore type name constant values to AbstractDataProviderType values.
Definition: AbstractDataProviderType.qc.dox.h:140
DataProvider::OptimalQoreSoftDataTypeMap
const OptimalQoreSoftDataTypeMap
maps Qore type name constant values from the Type namespace to optimal Qore types names
Definition: AbstractDataProviderType.qc.dox.h:70
DataProvider::DataProviderTypeOptionInfo
describes type options
Definition: AbstractDataProviderType.qc.dox.h:144
DataProvider::DataProviderTypeOptionInfo::desc
string desc
the description of the option
Definition: AbstractDataProviderType.qc.dox.h:149
DataProvider::DataProviderTypeOptionInfo::type
string type
the option value type
Definition: AbstractDataProviderType.qc.dox.h:146
DataProvider::DataTypeInfo
describes a data type
Definition: AbstractDataProviderType.qc.dox.h:153
DataProvider::DataTypeInfo::options
*hash< auto > options
Output: current transformation option values.
Definition: AbstractDataProviderType.qc.dox.h:164
DataProvider::DataTypeInfo::tags
*hash< auto > tags
Any tags set on the type.
Definition: AbstractDataProviderType.qc.dox.h:188
DataProvider::DataTypeInfo::default_field_type_info
*hash< DataTypeInfo > default_field_type_info
Default type for fields not listed in fields.
Definition: AbstractDataProviderType.qc.dox.h:185
DataProvider::DataTypeInfo::supported_options
*hash< string, hash< DataProviderTypeOptionInfo > > supported_options
Output: transformation options supported by the type.
Definition: AbstractDataProviderType.qc.dox.h:161
DataProvider::DataTypeInfo::can_manage_fields
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:182
DataProvider::DataTypeInfo::mandatory
bool mandatory
Output: can be null / missing?
Definition: AbstractDataProviderType.qc.dox.h:170
DataProvider::DataTypeInfo::types_returned
list< string > types_returned
Input: list of types returned.
Definition: AbstractDataProviderType.qc.dox.h:176
DataProvider::DataTypeInfo::desc
string desc
The description of the type.
Definition: AbstractDataProviderType.qc.dox.h:158
DataProvider::DataTypeInfo::base_type
string base_type
Output: base type.
Definition: AbstractDataProviderType.qc.dox.h:167
DataProvider::DataTypeInfo::types_accepted
list< string > types_accepted
Output: list of types accepted.
Definition: AbstractDataProviderType.qc.dox.h:173
DataProvider::DataTypeInfo::fields
hash< string, hash< DataFieldInfo > > fields
Any fields supported by the type.
Definition: AbstractDataProviderType.qc.dox.h:179
DataProvider::DataTypeInfo::name
string name
The name of the type.
Definition: AbstractDataProviderType.qc.dox.h:155