mirror of
https://github.com/python/cpython.git
synced 2025-11-11 19:12:05 +00:00
Add new functions to pack and unpack C double (serialize and deserialize): * PyFloat_Pack2(), PyFloat_Pack4(), PyFloat_Pack8() * PyFloat_Unpack2(), PyFloat_Unpack4(), PyFloat_Unpack8() Document these functions and add unit tests. Rename private functions and move them from the internal C API to the public C API: * _PyFloat_Pack2() => PyFloat_Pack2() * _PyFloat_Pack4() => PyFloat_Pack4() * _PyFloat_Pack8() => PyFloat_Pack8() * _PyFloat_Unpack2() => PyFloat_Unpack2() * _PyFloat_Unpack4() => PyFloat_Unpack4() * _PyFloat_Unpack8() => PyFloat_Unpack8() Replace the "unsigned char*" type with "char*" which is more common and easy to use.
21 lines
702 B
C
21 lines
702 B
C
#ifndef Py_CPYTHON_FLOATOBJECT_H
|
|
# error "this header file must not be included directly"
|
|
#endif
|
|
|
|
typedef struct {
|
|
PyObject_HEAD
|
|
double ob_fval;
|
|
} PyFloatObject;
|
|
|
|
// Macro version of PyFloat_AsDouble() trading safety for speed.
|
|
// It doesn't check if op is a double object.
|
|
#define PyFloat_AS_DOUBLE(op) (((PyFloatObject *)(op))->ob_fval)
|
|
|
|
|
|
PyAPI_FUNC(int) PyFloat_Pack2(double x, char *p, int le);
|
|
PyAPI_FUNC(int) PyFloat_Pack4(double x, char *p, int le);
|
|
PyAPI_FUNC(int) PyFloat_Pack8(double x, char *p, int le);
|
|
|
|
PyAPI_FUNC(double) PyFloat_Unpack2(const char *p, int le);
|
|
PyAPI_FUNC(double) PyFloat_Unpack4(const char *p, int le);
|
|
PyAPI_FUNC(double) PyFloat_Unpack8(const char *p, int le);
|