Back to index

python3.2  3.2.2
Classes | Defines | Typedefs | Functions
asdl.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  asdl_seq
struct  asdl_int_seq

Defines

#define asdl_seq_GET(S, I)   (S)->elements[(I)]
#define asdl_seq_LEN(S)   ((S) == NULL ? 0 : (S)->size)
#define asdl_seq_SET(S, I, V)   (S)->elements[I] = (V)

Typedefs

typedef PyObjectidentifier
typedef PyObjectstring
typedef PyObjectobject

Functions

asdl_seqasdl_seq_new (int size, PyArena *arena)
asdl_int_seqasdl_int_seq_new (int size, PyArena *arena)

Class Documentation

struct asdl_seq

Definition at line 16 of file asdl.h.

Class Members
void * elements
int size
struct asdl_int_seq

Definition at line 21 of file asdl.h.

Class Members
int elements
int size

Define Documentation

#define asdl_seq_GET (   S,
  I 
)    (S)->elements[(I)]

Definition at line 29 of file asdl.h.

#define asdl_seq_LEN (   S)    ((S) == NULL ? 0 : (S)->size)

Definition at line 30 of file asdl.h.

#define asdl_seq_SET (   S,
  I,
 
)    (S)->elements[I] = (V)

Definition at line 38 of file asdl.h.


Typedef Documentation

typedef PyObject* identifier

Definition at line 4 of file asdl.h.

Definition at line 6 of file asdl.h.

typedef PyObject* string

Definition at line 5 of file asdl.h.


Function Documentation

asdl_int_seq* asdl_int_seq_new ( int  size,
PyArena *  arena 
)

Definition at line 36 of file asdl.c.

{
    asdl_int_seq *seq = NULL;
    size_t n = (size ? (sizeof(void *) * (size - 1)) : 0);

    /* check size is sane */
    if (size < 0 || size == INT_MIN ||
        (size && ((size - 1) > (PY_SIZE_MAX / sizeof(void *))))) {
            PyErr_NoMemory();
            return NULL;
    }

    /* check if size can be added safely */
    if (n > PY_SIZE_MAX - sizeof(asdl_seq)) {
        PyErr_NoMemory();
        return NULL;
    }

    n += sizeof(asdl_seq);

    seq = (asdl_int_seq *)PyArena_Malloc(arena, n);
    if (!seq) {
        PyErr_NoMemory();
        return NULL;
    }
    memset(seq, 0, n);
    seq->size = size;
    return seq;
}

Here is the call graph for this function:

Here is the caller graph for this function:

asdl_seq* asdl_seq_new ( int  size,
PyArena *  arena 
)

Definition at line 5 of file asdl.c.

{
    asdl_seq *seq = NULL;
    size_t n = (size ? (sizeof(void *) * (size - 1)) : 0);

    /* check size is sane */
    if (size < 0 || size == INT_MIN ||
        (size && ((size - 1) > (PY_SIZE_MAX / sizeof(void *))))) {
        PyErr_NoMemory();
        return NULL;
    }

    /* check if size can be added safely */
    if (n > PY_SIZE_MAX - sizeof(asdl_seq)) {
        PyErr_NoMemory();
        return NULL;
    }

    n += sizeof(asdl_seq);

    seq = (asdl_seq *)PyArena_Malloc(arena, n);
    if (!seq) {
        PyErr_NoMemory();
        return NULL;
    }
    memset(seq, 0, n);
    seq->size = size;
    return seq;
}

Here is the call graph for this function:

Here is the caller graph for this function: