xref: /aosp_15_r20/external/pytorch/torch/csrc/Dtype.h (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1 #pragma once
2 
3 #include <c10/core/ScalarType.h>
4 #include <torch/csrc/Export.h>
5 #include <torch/csrc/python_headers.h>
6 
7 constexpr int DTYPE_NAME_LEN = 64;
8 
9 struct TORCH_API THPDtype {
10   PyObject_HEAD at::ScalarType scalar_type;
11   // NOLINTNEXTLINE(cppcoreguidelines-avoid-c-arrays,modernize-avoid-c-arrays)
12   char name[DTYPE_NAME_LEN + 1];
13 };
14 
15 TORCH_API extern PyTypeObject THPDtypeType;
16 
THPDtype_Check(PyObject * obj)17 inline bool THPDtype_Check(PyObject* obj) {
18   return Py_TYPE(obj) == &THPDtypeType;
19 }
20 
THPPythonScalarType_Check(PyObject * obj)21 inline bool THPPythonScalarType_Check(PyObject* obj) {
22   return obj == (PyObject*)(&PyFloat_Type) ||
23       obj == (PyObject*)(&PyComplex_Type) || obj == (PyObject*)(&PyBool_Type) ||
24       obj == (PyObject*)(&PyLong_Type);
25 }
26 
27 TORCH_API PyObject* THPDtype_New(
28     at::ScalarType scalar_type,
29     const std::string& name);
30 
31 void THPDtype_init(PyObject* module);
32