getDataType static method

int getDataType(
  1. dynamic value,
  2. DistributedConnection connection
)
Get the DataType of a given value. This function is needed to compose a value. Value to find its DataType. DistributedConnection is required to check locality of resources.

Implementation

static int getDataType(value, DistributedConnection connection) {
  if (value == null) return DataType.Void;

  if (value is bool)
    return DataType.Bool;
  else if (value is List<bool>)
    return DataType.BoolArray;
  else if (value is int)
    return DataType.Int64;
  else if (value is List<int> || value is Int64List)
    return DataType.Int64Array;
  else if (value is double)
    return DataType.Float64;
  else if (value is List<double>)
    return DataType.Float64Array;
  else if (value is String)
    return DataType.String;
  else if (value is List<String>)
    return DataType.StringArray;
  else if (value is Uint8List)
    return DataType.UInt8Array;
  else if (value is Int8List)
    return DataType.Int8Array;
  else if (value is Uint16List)
    return DataType.UInt16Array;
  else if (value is Int16List)
    return DataType.Int16Array;
  else if (value is Uint32List)
    return DataType.UInt32Array;
  else if (value is Int32List)
    return DataType.Int32Array;
  else if (value is Uint64List)
    return DataType.Int64Array;
  else if (value is DateTime)
    return DataType.DateTime;
  else if (value is List<DateTime>)
    return DataType.DateTimeArray;
  else if (value is IResource)
    return isLocalResource(value, connection)
        ? DataType.Resource
        : DataType.DistributedResource;
  else if (value is List<IResource>)
    return DataType.ResourceArray;
  else if (value is Structure)
    return DataType.Structure;
  else if (value is List<Structure>)
    return DataType.StructureArray;
  else if (value is List)
    return DataType.VarArray;
  else if (value is IRecord)
    return DataType.Record;
  else if (value is List<IRecord>)
    return DataType.RecordArray;
  else
    return DataType.Void;
}