Status AddValueToTensor()

in tensorflow_serving/util/json_tensor.cc [233:285]


Status AddValueToTensor(const rapidjson::Value& val, DataType dtype,
                        TensorProto* tensor) {
  switch (dtype) {
    case DT_FLOAT:
      if (!val.IsNumber()) return TypeError(val, dtype);
      tensor->add_float_val(val.GetFloat());
      break;

    case DT_DOUBLE:
      if (!val.IsNumber()) return TypeError(val, dtype);
      tensor->add_double_val(val.GetDouble());
      break;

    case DT_INT32:
    case DT_INT16:
    case DT_INT8:
    case DT_UINT8:
      if (!val.IsInt()) return TypeError(val, dtype);
      tensor->add_int_val(val.GetInt());
      break;

    case DT_STRING:
      if (!val.IsString()) return TypeError(val, dtype);
      tensor->add_string_val(val.GetString(), val.GetStringLength());
      break;

    case DT_INT64:
      if (!val.IsInt64()) return TypeError(val, dtype);
      tensor->add_int64_val(val.GetInt64());
      break;

    case DT_BOOL:
      if (!val.IsBool()) return TypeError(val, dtype);
      tensor->add_bool_val(val.GetBool());
      break;

    case DT_UINT32:
      if (!val.IsUint()) return TypeError(val, dtype);
      tensor->add_uint32_val(val.GetUint());
      break;

    case DT_UINT64:
      if (!val.IsUint64()) return TypeError(val, dtype);
      tensor->add_uint64_val(val.GetUint64());
      break;

    default:
      return errors::Unimplemented(
          "Conversion of JSON Value: ", JsonValueToString(val),
          " to type: ", DataTypeString(dtype));
  }
  return Status::OK();
}