#include "internal_deque.h" #include i_deque_t * i_deque_t_new ( PyObject * content , i_deque_t * next) { i_deque_t * deque = malloc(sizeof(i_deque_t)); if(!deque) { return NULL; } deque->content = content; deque->next = next; if(next) { deque->following = next->following + 1; } else { deque->following = 0; } return deque; } void i_deque_t_del (i_deque_t * deque) { if(deque) { free(deque); } } PyObject * i_deque_t_to_List (i_deque_t * deque) { if(!deque) { return PyList_New(0); } PyObject * list = PyList_New(deque->following + 1); if(!list) { return NULL; } i_deque_t * this_node; PyObject * this_content; size_t i; size_t content_length = deque->following + 1; for(i = 0; i < content_length; i++) { this_node = deque; deque = deque->next; this_content = this_node->content; i_deque_t_del(this_node); Py_INCREF(this_content); PyList_SetItem(list, content_length - 1 - i, this_content); } return list; }