dataConvert method

void dataConvert(
  1. TField aField,
  2. TValueBuffer aSource,
  3. TValueBuffer aDest,
  4. bool aToNative,
)

Implementation

void dataConvert(
    TField aField, TValueBuffer aSource, TValueBuffer aDest, bool aToNative) {
  final dt = aField.dataType;
  if (aToNative) {
    switch (dt) {
      case TFieldType.ftDate:
      case TFieldType.ftTime:
      case TFieldType.ftDateTime:
        aDest.value =
            dateTimeToDateTimeRec(dt, aSource.value as DateTime);
        break;
      case TFieldType.ftTimeStamp:
        aDest.value = aSource.value;
        break;
      case TFieldType.ftBCD:
      case TFieldType.ftFMTBcd:
        aDest.value = aSource.value; // TBCD→double (convention 5), no conversion needed
        break;
      // ftBytes/ftVarBytes: see the mantis 8204 comment, left blank in the original source
      case TFieldType.ftWideString:
        aDest.value = aSource.value;
        break;
      default:
        break;
    }
  } else {
    switch (dt) {
      case TFieldType.ftDate:
      case TFieldType.ftTime:
      case TFieldType.ftDateTime:
        aDest.value =
            dateTimeRecToDateTime(dt, aSource.value as TDateTimeRec);
        break;
      case TFieldType.ftTimeStamp:
        aDest.value = aSource.value;
        break;
      case TFieldType.ftBCD:
      case TFieldType.ftFMTBcd:
        aDest.value = aSource.value;
        break;
      case TFieldType.ftWideString:
        aDest.value = aSource.value;
        break;
      default:
        break;
    }
  }
}