1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
/***************************************************************/
/*** Psyco equivalent of tupleobject.h ***/
/***************************************************************/
#ifndef _PSY_TUPLEOBJECT_H
#define _PSY_TUPLEOBJECT_H
#include "pobject.h"
#include "pabstract.h"
#define TUPLE_ob_item FARRAY(DEF_FIELD(PyTupleObject, PyObject*, ob_item, \
FIX_size))
#define iTUPLE_OB_ITEM FIELD_INDEX(TUPLE_ob_item)
/* The following macro reads an item from a Psyco tuple without any
checks. Be sure the item has already been loaded in the array of
the vinfo_t. This should only be used after a successful call to
PsycoTuple_Load(). */
#define PsycoTuple_GET_ITEM(vtuple, index) \
((vtuple)->array->items[iTUPLE_OB_ITEM + (index)])
/***************************************************************/
/* virtual tuples.
If 'source' is not NULL it gives the content of the tuple.
If 'source' is NULL you have to initialize it yourself. */
EXTERNFN vinfo_t* PsycoTuple_New(int count, vinfo_t** source);
/* get the (possibly virtual) array of items in the tuple,
returning the length of the tuple or -1 if it fails (items not known).
The items are then found in PsycoTuple_GET_ITEM(tuple, i).
Never sets a PycException. */
EXTERNFN int PsycoTuple_Load(vinfo_t* tuple);
EXTERNFN vinfo_t* PsycoTuple_Concat(PsycoObject* po, vinfo_t* v1, vinfo_t* v2);
#endif /* _PSY_TUPLEOBJECT_H */
|