bpo-35134: Add Include/cpython/floatobject.h (GH-28957) · python/cpython@0a883a7 (original) (raw)

`@@ -11,106 +11,44 @@ PyFloatObject represents a (double precision) floating point number.

`

11

11

`extern "C" {

`

12

12

`#endif

`

13

13

``

14

``

`-

#ifndef Py_LIMITED_API

`

15

``

`-

typedef struct {

`

16

``

`-

PyObject_HEAD

`

17

``

`-

double ob_fval;

`

18

``

`-

} PyFloatObject;

`

19

``

`-

#endif

`

20

``

-

21

14

`PyAPI_DATA(PyTypeObject) PyFloat_Type;

`

22

15

``

23

16

`#define PyFloat_Check(op) PyObject_TypeCheck(op, &PyFloat_Type)

`

24

17

`#define PyFloat_CheckExact(op) Py_IS_TYPE(op, &PyFloat_Type)

`

25

18

``

26

19

`#ifdef Py_NAN

`

27

``

`-

#define Py_RETURN_NAN return PyFloat_FromDouble(Py_NAN)

`

``

20

`+

define Py_RETURN_NAN return PyFloat_FromDouble(Py_NAN)

`

28

21

`#endif

`

29

22

``

30

``

`-

#define Py_RETURN_INF(sign) do \

`

31

``

`-

if (copysign(1., sign) == 1.) { \

`

32

``

`-

return PyFloat_FromDouble(Py_HUGE_VAL); \

`

33

``

`-

} else { \

`

34

``

`-

return PyFloat_FromDouble(-Py_HUGE_VAL); \

`

``

23

`+

#define Py_RETURN_INF(sign) \

`

``

24

`+

do { \

`

``

25

`+

if (copysign(1., sign) == 1.) { \

`

``

26

`+

return PyFloat_FromDouble(Py_HUGE_VAL); \

`

``

27

`+

} \

`

``

28

`+

else { \

`

``

29

`+

return PyFloat_FromDouble(-Py_HUGE_VAL); \

`

``

30

`+

} \

`

35

31

` } while(0)

`

36

32

``

37

33

`PyAPI_FUNC(double) PyFloat_GetMax(void);

`

38

34

`PyAPI_FUNC(double) PyFloat_GetMin(void);

`

39

``

`-

PyAPI_FUNC(PyObject *) PyFloat_GetInfo(void);

`

``

35

`+

PyAPI_FUNC(PyObject*) PyFloat_GetInfo(void);

`

40

36

``

41

37

`/* Return Python float from string PyObject. */

`

42

``

`-

PyAPI_FUNC(PyObject ) PyFloat_FromString(PyObject);

`

``

38

`+

PyAPI_FUNC(PyObject*) PyFloat_FromString(PyObject*);

`

43

39

``

44

40

`/* Return Python float from C double. */

`

45

``

`-

PyAPI_FUNC(PyObject *) PyFloat_FromDouble(double);

`

``

41

`+

PyAPI_FUNC(PyObject*) PyFloat_FromDouble(double);

`

46

42

``

47

43

`/* Extract C double from Python float. The macro version trades safety for

`

48

44

` speed. */

`

49

``

`-

PyAPI_FUNC(double) PyFloat_AsDouble(PyObject *);

`

50

``

`-

#ifndef Py_LIMITED_API

`

51

``

`-

#define PyFloat_AS_DOUBLE(op) (((PyFloatObject *)(op))->ob_fval)

`

52

``

`-

#endif

`

``

45

`+

PyAPI_FUNC(double) PyFloat_AsDouble(PyObject*);

`

53

46

``

54

47

`#ifndef Py_LIMITED_API

`

55

``

`-

/* PyFloat{Pack,Unpack}{4,8}

`

56

``

`-

`

57

``

`-

`

58

``

`-

`

59

``

`-

`

60

``

`-

`

61

``

`-

`

62

``

`-

`

63

``

`-

`

64

``

`-

`

65

``

`-

`

66

``

`-

`

67

``

`-

`

68

``

`-

`

69

``

`-

`

70

``

`-

`

71

``

`-

`

72

``

`-

`

73

``

`-

`

74

``

`-

`

75

``

`-

*/

`

76

``

-

77

``

`-

/* The pack routines write 2, 4 or 8 bytes, starting at p. le is a bool

`

78

``

`-

`

79

``

`-

`

80

``

`-

`

81

``

`-

`

82

``

`-

`

83

``

`-

`

84

``

`-

`

85

``

`-

`

86

``

`-

*/

`

87

``

`-

PyAPI_FUNC(int) _PyFloat_Pack2(double x, unsigned char *p, int le);

`

88

``

`-

PyAPI_FUNC(int) _PyFloat_Pack4(double x, unsigned char *p, int le);

`

89

``

`-

PyAPI_FUNC(int) _PyFloat_Pack8(double x, unsigned char *p, int le);

`

90

``

-

91

``

`-

/* The unpack routines read 2, 4 or 8 bytes, starting at p. le is a bool

`

92

``

`-

`

93

``

`-

`

94

``

`-

`

95

``

`-

`

96

``

`-

`

97

``

`-

`

98

``

`-

*/

`

99

``

`-

PyAPI_FUNC(double) _PyFloat_Unpack2(const unsigned char *p, int le);

`

100

``

`-

PyAPI_FUNC(double) _PyFloat_Unpack4(const unsigned char *p, int le);

`

101

``

`-

PyAPI_FUNC(double) _PyFloat_Unpack8(const unsigned char *p, int le);

`

102

``

-

103

``

`-

PyAPI_FUNC(void) _PyFloat_DebugMallocStats(FILE* out);

`

104

``

-

105

``

`-

/* Format the object based on the format_spec, as defined in PEP 3101

`

106

``

`-

(Advanced String Formatting). */

`

107

``

`-

PyAPI_FUNC(int) _PyFloat_FormatAdvancedWriter(

`

108

``

`-

_PyUnicodeWriter *writer,

`

109

``

`-

PyObject *obj,

`

110

``

`-

PyObject *format_spec,

`

111

``

`-

Py_ssize_t start,

`

112

``

`-

Py_ssize_t end);

`

113

``

`-

#endif /* Py_LIMITED_API */

`

``

48

`+

define Py_CPYTHON_FLOATOBJECT_H

`

``

49

`+

include "cpython/floatobject.h"

`

``

50

`+

undef Py_CPYTHON_FLOATOBJECT_H

`

``

51

`+

#endif

`

114

52

``

115

53

`#ifdef __cplusplus

`

116

54

`}

`