404

[ Avaa Bypassed ]




Upload:

Command:

elspacio@18.119.192.221: ~ $
#ifndef Py_CPYTHON_OBJIMPL_H
#  error "this header file must not be included directly"
#endif

#define _PyObject_SIZE(typeobj) ( (typeobj)->tp_basicsize )

/* _PyObject_VAR_SIZE returns the number of bytes (as size_t) allocated for a
   vrbl-size object with nitems items, exclusive of gc overhead (if any).  The
   value is rounded up to the closest multiple of sizeof(void *), in order to
   ensure that pointer fields at the end of the object are correctly aligned
   for the platform (this is of special importance for subclasses of, e.g.,
   str or int, so that pointers can be stored after the embedded data).

   Note that there's no memory wastage in doing this, as malloc has to
   return (at worst) pointer-aligned memory anyway.
*/
#if ((SIZEOF_VOID_P - 1) & SIZEOF_VOID_P) != 0
#   error "_PyObject_VAR_SIZE requires SIZEOF_VOID_P be a power of 2"
#endif

#define _PyObject_VAR_SIZE(typeobj, nitems)     \
    _Py_SIZE_ROUND_UP((typeobj)->tp_basicsize + \
        (nitems)*(typeobj)->tp_itemsize,        \
        SIZEOF_VOID_P)


/* This example code implements an object constructor with a custom
   allocator, where PyObject_New is inlined, and shows the important
   distinction between two steps (at least):
       1) the actual allocation of the object storage;
       2) the initialization of the Python specific fields
      in this storage with PyObject_{Init, InitVar}.

   PyObject *
   YourObject_New(...)
   {
       PyObject *op;

       op = (PyObject *) Your_Allocator(_PyObject_SIZE(YourTypeStruct));
       if (op == NULL) {
           return PyErr_NoMemory();
       }

       PyObject_Init(op, &YourTypeStruct);

       op->ob_field = value;
       ...
       return op;
   }

   Note that in C++, the use of the new operator usually implies that
   the 1st step is performed automatically for you, so in a C++ class
   constructor you would start directly with PyObject_Init/InitVar. */


typedef struct {
    /* user context passed as the first argument to the 2 functions */
    void *ctx;

    /* allocate an arena of size bytes */
    void* (*alloc) (void *ctx, size_t size);

    /* free an arena */
    void (*free) (void *ctx, void *ptr, size_t size);
} PyObjectArenaAllocator;

/* Get the arena allocator. */
PyAPI_FUNC(void) PyObject_GetArenaAllocator(PyObjectArenaAllocator *allocator);

/* Set the arena allocator. */
PyAPI_FUNC(void) PyObject_SetArenaAllocator(PyObjectArenaAllocator *allocator);


/* Test if an object implements the garbage collector protocol */
PyAPI_FUNC(int) PyObject_IS_GC(PyObject *obj);


/* Code built with Py_BUILD_CORE must include pycore_gc.h instead which
   defines a different _PyGC_FINALIZED() macro. */
#ifndef Py_BUILD_CORE
   // Kept for backward compatibility with Python 3.8
#  define _PyGC_FINALIZED(o) PyObject_GC_IsFinalized(o)
#endif


// Test if a type supports weak references
PyAPI_FUNC(int) PyType_SUPPORTS_WEAKREFS(PyTypeObject *type);

PyAPI_FUNC(PyObject **) PyObject_GET_WEAKREFS_LISTPTR(PyObject *op);

Filemanager

Name Type Size Permission Actions
abstract.h File 8.04 KB 0644
bytearrayobject.h File 1.27 KB 0644
bytesobject.h File 4.46 KB 0644
cellobject.h File 723 B 0644
ceval.h File 1.21 KB 0644
classobject.h File 1.62 KB 0644
code.h File 11.21 KB 0644
compile.h File 2.17 KB 0644
complexobject.h File 1.22 KB 0644
context.h File 1.91 KB 0644
descrobject.h File 1.6 KB 0644
dictobject.h File 3.25 KB 0644
fileobject.h File 818 B 0644
fileutils.h File 232 B 0644
floatobject.h File 702 B 0644
frameobject.h File 1.08 KB 0644
funcobject.h File 4.32 KB 0644
genobject.h File 3.2 KB 0644
import.h File 1.49 KB 0644
initconfig.h File 7.63 KB 0644
listobject.h File 1.73 KB 0644
longintrepr.h File 3.73 KB 0644
longobject.h File 4.43 KB 0644
methodobject.h File 2.5 KB 0644
modsupport.h File 4.2 KB 0644
object.h File 17.88 KB 0644
objimpl.h File 2.93 KB 0644
odictobject.h File 1.27 KB 0644
picklebufobject.h File 846 B 0644
pthread_stubs.h File 3.42 KB 0644
pyctype.h File 1.35 KB 0644
pydebug.h File 1.05 KB 0644
pyerrors.h File 4.42 KB 0644
pyfpe.h File 444 B 0644
pyframe.h File 582 B 0644
pylifecycle.h File 2.05 KB 0644
pymem.h File 3.3 KB 0644
pystate.h File 14.01 KB 0644
pythonrun.h File 4.7 KB 0644
pythread.h File 1.39 KB 0644
pytime.h File 11.87 KB 0644
setobject.h File 1.95 KB 0644
sysmodule.h File 489 B 0644
traceback.h File 444 B 0644
tupleobject.h File 1.48 KB 0644
unicodeobject.h File 40.93 KB 0644
warnings.h File 560 B 0644
weakrefobject.h File 2.05 KB 0644