You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdebindings/python/sip/siplib/sipint.h

122 lines
3.6 KiB

/*
* This file defines the SIP library internal interfaces.
*
* Copyright (c) 2007
* Riverbank Computing Limited <info@riverbankcomputing.co.uk>
*
* This file is part of SIP.
*
* This copy of SIP is licensed for use under the terms of the SIP License
* Agreement. See the file LICENSE for more details.
*
* SIP is supplied WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
#ifndef _SIPINT_H
#define _SIPINT_H
#ifdef __cplusplus
extern "C" {
#endif
#undef TRUE
#define TRUE 1
#undef FALSE
#define FALSE 0
/*
* This defines a single entry in an object map's hash table.
*/
typedef struct
{
void *key; /* The C/C++ address. */
sipWrapper *first; /* The first object at this address. */
} sipHashEntry;
/*
* This defines the interface to a hash table class for mapping C/C++ addresses
* to the corresponding wrapped Python object.
*/
typedef struct
{
int primeIdx; /* Index into table sizes. */
unsigned long size; /* Size of hash table. */
unsigned long unused; /* Nr. unused in hash table. */
unsigned long stale; /* Nr. stale in hash table. */
sipHashEntry *hash_array; /* Current hash table. */
} sipObjectMap;
extern PyInterpreterState *sipInterpreter; /* The interpreter. */
extern sipQtAPI *sipQtSupport; /* The Qt support API. */
extern sipWrapperType *sipQObjectClass; /* The Python TQObject class. */
void *sip_api_convert_rx(sipWrapper *txSelf, const char *sigargs,
PyObject *rxObj, const char *slot,
const char **memberp);
void *sipGetRx(sipWrapper *txSelf,const char *sigargs,PyObject *rxObj,
const char *slot,const char **memberp);
int sip_api_emit_signal(PyObject *self,const char *sig,PyObject *sigargs);
PyObject *sip_api_get_sender();
PyObject *sip_api_connect_rx(PyObject *txObj,const char *sig,
PyObject *rxObj,const char *slot, int type);
PyObject *sip_api_disconnect_rx(PyObject *txObj,const char *sig,
PyObject *rxObj,const char *slot);
sipSignature *sip_api_parse_signature(const char *sig);
/*
* These are part of the SIP API but are also used within the SIP module.
*/
void *sip_api_malloc(size_t nbytes);
void sip_api_free(void *mem);
void *sip_api_get_cpp_ptr(sipWrapper *w,sipWrapperType *type);
PyObject *sip_api_convert_from_instance(void *cppPtr, sipWrapperType *type,
PyObject *transferObj);
void sip_api_start_thread(void);
void sip_api_end_thread(void);
PyObject *sip_api_convert_from_void_ptr(void *val);
PyObject *sip_api_convert_from_named_enum(int eval, PyTypeObject *et);
int sip_api_wrapper_check(PyObject *o);
void sip_api_free_connection(sipSlotConnection *conn);
int sip_api_emit_to_slot(sipSlot *slot, PyObject *sigargs);
int sip_api_same_connection(sipSlotConnection *conn, void *tx, const char *sig,
PyObject *rxObj, const char *slot);
/*
* These are not part of the SIP API but are used within the SIP module.
*/
void sipFreeSlotList(sipSlotList *rx);
void sipSaveMethod(sipPyMethod *pm,PyObject *meth);
void *sipGetPending(sipWrapper **op, int *fp);
PyObject *sipWrapSimpleInstance(void *cppPtr, sipWrapperType *type,
sipWrapper *owner, int initflags);
int sipLambdaSlot(PyObject *slotObj);
void sipOMInit(sipObjectMap *om);
void sipOMFinalise(sipObjectMap *om);
sipWrapper *sipOMFindObject(sipObjectMap *om,void *key,sipWrapperType *type);
void sipOMAddObject(sipObjectMap *om,sipWrapper *val);
int sipOMRemoveObject(sipObjectMap *om,sipWrapper *val);
void sipSetBool(void *ptr,int val);
void *sipGetAddress(sipWrapper *w);
void sipFindSigArgType(const char *name, size_t len, sipSigArg *at, int indir);
#ifdef __cplusplus
}
#endif
#endif