inline int getTensorDType()

in src/util.h [79:120]


inline int getTensorDType(char dtype, int itemsize) {
  using rpc::Tensor;
  switch (dtype) {
  case 'f':
    if (itemsize == 2) {
      return Tensor::kFloat16;
    } else if (itemsize == 4) {
      return Tensor::kFloat32;
    } else if (itemsize == 8) {
      return Tensor::kFloat64;
    } else {
      throw std::runtime_error("Unexpected itemsize for float");
    }
    break;
  case 'i':
    if (itemsize == 1) {
      return Tensor::kInt8;
    } else if (itemsize == 2) {
      return Tensor::kInt16;
    } else if (itemsize == 4) {
      return Tensor::kInt32;
    } else if (itemsize == 8) {
      return Tensor::kInt64;
    } else
      throw std::runtime_error("Unexpected itemsize for int");
    break;
  case 'u':
    if (itemsize == 1) {
      return Tensor::kUInt8;
    } else
      throw std::runtime_error("Unexpected itemsize for unsigned int");
    break;
  case 'b':
    if (itemsize == 1) {
      return Tensor::kBool;
    } else
      throw std::runtime_error("Unexpected itemsize for boolean");
    break;
  default:
    throw std::runtime_error("Unsupported dtype '" + std::string(1, dtype) + "'");
  }
}