[Ocemp-CVS] papi/src papi.c, 1.2, 1.3 papi.h, 1.3, 1.4 papi_atkattribute.c, 1.2, 1.3 papi_atkhyperl
Status: Beta
Brought to you by:
marcusva
From: Marcus v. A. <mar...@us...> - 2008-04-20 09:46:54
|
Update of /cvsroot/ocemp/papi/src In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv12566/src Modified Files: papi.c papi.h papi_atkattribute.c papi_atkhyperlink.c papi_atkobject.c papi_atkrelation.c papi_atkrelationset.c papi_atkstateset.c papi_atktextrange.c papi_atktextrectangle.c papi_private.h Log Message: Added C API support. Index: papi_atkrelation.c =================================================================== RCS file: /cvsroot/ocemp/papi/src/papi_atkrelation.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- papi_atkrelation.c 22 Dec 2006 12:43:28 -0000 1.2 +++ papi_atkrelation.c 20 Apr 2008 09:46:57 -0000 1.3 @@ -1,6 +1,6 @@ /* $Id$ * - * Copyright (c) 2006, Marcus von Appen + * Copyright (c) 2006-2008, Marcus von Appen * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -24,6 +24,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#define PAPI_ATKRELATION_INTERNAL + #include "papi.h" #include "papi_private.h" @@ -38,6 +40,8 @@ static PyObject* _atkrelation_get_target (PyAtkRelation *self); static PyObject* _atkrelation_add_target (PyAtkRelation *self, PyObject *args); +static PyObject* PyAtkRelation_New (void); + /** * Methods, which are bound to the PyAtkRelation type. */ @@ -270,3 +274,21 @@ atk_relation_add_target (ATKRELATION (self), ATKOBJECT (val)); Py_RETURN_NONE; } + +/** + * C API interface. + */ +static PyObject* +PyAtkRelation_New (void) +{ + PyAtkRelation *self = (PyAtkRelation *) + PyAtkRelation_Type.tp_alloc (&PyAtkRelation_Type, 0); + return (PyObject *) self; +} + +void +atkrelation_export_api (void *c_api[]) +{ + c_api[PAPI_ATKRELATION_FIRSTSLOT] = &PyAtkRelation_Type; + c_api[PAPI_ATKRELATION_FIRSTSLOT + 1] = &PyAtkRelation_New; +} Index: papi_atkrelationset.c =================================================================== RCS file: /cvsroot/ocemp/papi/src/papi_atkrelationset.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- papi_atkrelationset.c 23 Jul 2006 07:48:18 -0000 1.1.1.1 +++ papi_atkrelationset.c 20 Apr 2008 09:46:57 -0000 1.2 @@ -1,6 +1,6 @@ /* $Id$ * - * Copyright (c) 2006, Marcus von Appen + * Copyright (c) 2006-2008, Marcus von Appen * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -24,6 +24,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#define PAPI_ATKRELATIONSET_INTERNAL + #include "papi.h" #include "papi_private.h" @@ -46,6 +48,8 @@ static PyObject* _atkrelationset_add_relation_by_type (PyAtkRelationSet *self, PyObject *args); +static PyObject* PyAtkRelationSet_New (void); + /** * Methods, which are bound to the PyAtkRelationSet type. */ @@ -338,3 +342,21 @@ ATKOBJECT (obj)); Py_RETURN_NONE; } + +/** + * C API interface. + */ +static PyObject* +PyAtkRelationSet_New (void) +{ + PyAtkRelationSet *self = (PyAtkRelationSet *) + PyAtkRelationSet_Type.tp_alloc (&PyAtkRelationSet_Type, 0); + return (PyObject *) self; +} + +void +atkrelationset_export_api (void *c_api[]) +{ + c_api[PAPI_ATKRELATIONSET_FIRSTSLOT] = &PyAtkRelationSet_Type; + c_api[PAPI_ATKRELATIONSET_FIRSTSLOT + 1] = &PyAtkRelationSet_New; +} Index: papi_atktextrange.c =================================================================== RCS file: /cvsroot/ocemp/papi/src/papi_atktextrange.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- papi_atktextrange.c 26 May 2007 11:51:49 -0000 1.4 +++ papi_atktextrange.c 20 Apr 2008 09:46:57 -0000 1.5 @@ -1,6 +1,6 @@ /* $Id$ * - * Copyright (c) 2006, Marcus von Appen + * Copyright (c) 2006-2008, Marcus von Appen * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -24,6 +24,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#define PAPI_ATKTEXTRANGE_INTERNAL + #include "papi.h" #include "papi_private.h" @@ -50,6 +52,8 @@ static int _atktextrange_set_content (PyAtkTextRange *self, PyObject *value, void *closure); +static PyObject* PyAtkTextRange_New (void); + /** * Getters and setters for the PyAtkTextRange. */ @@ -322,3 +326,27 @@ self->obj->content = PyString_AsString (value); return 0; } + +/** + * C API interface. + */ +static PyObject* +PyAtkTextRange_New (void) +{ + PyAtkTextRange *self = (PyAtkTextRange *) + PyAtkTextRange_Type.tp_alloc (&PyAtkTextRange_Type, 0); + self->obj = g_new (AtkTextRange, 1); + if (!self->obj) + { + PyErr_SetNone (PyExc_MemoryError); + return NULL; + } + return (PyObject*) self; +} + +void +atktextrange_export_api (void *c_api[]) +{ + c_api[PAPI_ATKTEXTRANGE_FIRSTSLOT] = &PyAtkTextRange_Type; + c_api[PAPI_ATKTEXTRANGE_FIRSTSLOT + 1] = &PyAtkTextRange_New; +} Index: papi.h =================================================================== RCS file: /cvsroot/ocemp/papi/src/papi.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- papi.h 5 Aug 2006 11:13:32 -0000 1.3 +++ papi.h 20 Apr 2008 09:46:57 -0000 1.4 @@ -1,6 +1,6 @@ /* $Id$ * - * Copyright (c) 2006, Marcus von Appen + * Copyright (c) 2006-2008, Marcus von Appen * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -31,6 +31,10 @@ #include <gmodule.h> #include <atk/atk.h> +#ifdef __cplusplus +extern "C" { +#endif + /** * PyObject type, that encapsulates an AtkObject. */ @@ -42,8 +46,15 @@ PyObject *prop_handlers; PyObject *weakrefs; } PyAtkObject; - #define ATKOBJECT(x) (ATK_OBJECT (((PyAtkObject *) x)->obj)) +#define PAPI_ATKOBJECT_FIRSTSLOT 0 +#define PAPI_ATKOBJECT_SLOTS 2 +#ifndef PAPI_ATKOBJECT_INTERNAL +#define PyAtkObject_Check(x) \ + ((x)->ob_type == (PyTypeObject *) PyPapi_C_API[PAPI_ATKOBJECT_FIRSTSLOT]) +#define PyAtkObject_New \ + (*(PyObject*(*)(long))PyPapi_C_API[PAPI_ATKOBJECT_FIRSTSLOT + 1]) +#endif /* PAPI_ATKOBJECT_INTERNAL */ /** * PyObject type, that encapsulates an AtkStateSet. @@ -54,6 +65,15 @@ AtkStateSet *obj; } PyAtkStateSet; #define ATKSTATESET(x) (ATK_STATE_SET (((PyAtkStateSet *) x)->obj)) +#define PAPI_ATKSTATESET_FIRSTSLOT \ + (PAPI_ATKOBJECT_FIRSTSLOT + PAPI_ATKOBJECT_SLOTS) +#define PAPI_ATKSTATESET_SLOTS 2 +#ifndef PAPI_ATKSTATESET_INTERNAL +#define PyAtkStateSet_Check(x) \ + ((x)->ob_type == (PyTypeObject *) PyPapi_C_API[PAPI_ATKSTATESET_FIRSTSLOT]) +#define PyAtkStateSet_New \ + (*(PyObject*(*)(void))PyPapi_C_API[PAPI_ATKSTATESET_FIRSTSLOT + 1]) +#endif /* PAPI_ATKSTATESET_INTERNAL */ /** * PyObject type, that encapsulates an AtkRelation. @@ -64,6 +84,15 @@ AtkRelation *obj; } PyAtkRelation; #define ATKRELATION(x) (ATK_RELATION (((PyAtkRelation *) x)->obj)) +#define PAPI_ATKRELATION_FIRSTSLOT \ + (PAPI_ATKSTATESET_FIRSTSLOT + PAPI_ATKSTATESET_SLOTS) +#define PAPI_ATKRELATION_SLOTS 2 +#ifndef PAPI_ATKRELATION_INTERNAL +#define PyAtkRelation_Check(x) \ + ((x)->ob_type == (PyTypeObject *) PyPapi_C_API[PAPI_ATKRELATION_FIRSTSLOT]) +#define PyAtkRelation_New \ + (*(PyObject*(*)(void))PyPapi_C_API[PAPI_ATKRELATION_FIRSTSLOT + 1]) +#endif /* PAPI_ATKRELATION_INTERNAL */ /** * PyObject type, that encapsulates an AtkRelationSet. @@ -74,6 +103,16 @@ AtkRelationSet *obj; } PyAtkRelationSet; #define ATKRELATIONSET(x) (ATK_RELATION_SET (((PyAtkRelationSet *) x)->obj)) +#define PAPI_ATKRELATIONSET_FIRSTSLOT \ + (PAPI_ATKRELATION_FIRSTSLOT + PAPI_ATKRELATION_SLOTS) +#define PAPI_ATKRELATIONSET_SLOTS 2 +#ifndef PAPI_ATKRELATIONSET_INTERNAL +#define PyAtkRelationSet_Check(x) \ + ((x)->ob_type == (PyTypeObject *) \ + PyPapi_C_API[PAPI_ATKRELATIONSET_FIRSTSLOT]) +#define PyAtkRelationSet_New \ + (*(PyObject*(*)(void))PyPapi_C_API[PAPI_ATKRELATIONSET_FIRSTSLOT + 1]) +#endif /* PAPI_ATKRELATIONSET_INTERNAL */ /** * PyObject type, that encapsulates an AtkHyperlink. @@ -84,6 +123,15 @@ AtkHyperlink *obj; } PyAtkHyperlink; #define ATKHYPERLINK(x) (ATK_HYPERLINK (((PyAtkHyperlink *) x)->obj)) +#define PAPI_ATKHYPERLINK_FIRSTSLOT \ + (PAPI_ATKRELATIONSET_FIRSTSLOT + PAPI_ATKRELATIONSET_SLOTS) +#define PAPI_ATKHYPERLINK_SLOTS 2 +#ifndef PAPI_ATKHYPERLINK_INTERNAL +#define PyAtkHyperlink_Check(x) \ + ((x)->ob_type == (PyTypeObject *) PyPapi_C_API[PAPI_ATKHYPERLINK_FIRSTSLOT]) +#define PyAtkHyperlink_New \ + (*(PyObject*(*)(void))PyPapi_C_API[PAPI_ATKHYPERLINK_FIRSTSLOT + 1]) +#endif /** * PyObject type, that encapsulates an AtkAttribute. @@ -94,6 +142,15 @@ AtkAttribute *obj; } PyAtkAttribute; #define ATKATTRIBUTE(x) (ATK_ATTRIBUTE (((PyAtkAttribute *) x)->obj)) +#define PAPI_ATKATTRIBUTE_FIRSTSLOT \ + (PAPI_ATKHYPERLINK_FIRSTSLOT + PAPI_ATKHYPERLINK_SLOTS) +#define PAPI_ATKATTRIBUTE_SLOTS 2 +#ifndef PAPI_ATKATTRIBUTE_INTERNAL +#define PyAtkAttribute_Check(x) \ + ((x)->ob_type == (PyTypeObject *) PyPapi_C_API[PAPI_ATKATTRIBUTE_FIRSTSLOT]) +#define PyAtkAttribute_New \ + (*(PyObject*(*)(void))PyPapi_C_API[PAPI_ATKATTRIBUTE_FIRSTSLOT + 1]) +#endif /* PAPI_ATKATRRIBUTE_INTERNAL */ /** * PyObject type, that encapsulates an AtkTextRectangle. @@ -103,8 +160,18 @@ PyObject_HEAD AtkTextRectangle *obj; } PyAtkTextRectangle; -#define ATKTEXTRECTANGLE(x) ((AtkTextRectangle *) \ - ((PyAtkTextRectangle *) x)->obj) +#define ATKTEXTRECTANGLE(x) \ + ((AtkTextRectangle *) ((PyAtkTextRectangle *) x)->obj) +#define PAPI_ATKTEXTRECTANGLE_FIRSTSLOT \ + (PAPI_ATKATTRIBUTE_FIRSTSLOT + PAPI_ATKATTRIBUTE_SLOTS) +#define PAPI_ATKTEXTRECTANGLE_SLOTS 2 +#ifndef PAPI_ATKTEXTRECTANGLE_INTERNAL +#define PyAtkTextRectangle_Check(x) \ + ((x)->ob_type == (PyTypeObject *) \ + PyPapi_C_API[PAPI_ATKTEXTRECTANGLE_FIRSTSLOT]) +#define PyAtkTextRectangle_New \ + (*(PyObject*(*)(void))PyPapi_C_API[PAPI_ATKTEXTRECTANGLE_FIRSTSLOT + 1]) +#endif /* PAPI_ATKTEXTRECTANGLE_INTERNAL */ /** * PyObject type, that encapsulates an AtkTextRange. @@ -115,6 +182,39 @@ AtkTextRange *obj; } PyAtkTextRange; #define ATKTEXTRANGE(x) ((AtkTextRange *) ((PyAtkTextRange *) x)->obj) +#define PAPI_ATKTEXTRANGE_FIRSTSLOT \ + (PAPI_ATKTEXTRECTANGLE_FIRSTSLOT + PAPI_ATKTEXTRECTANGLE_SLOTS) +#define PAPI_ATKTEXTRANGE_SLOTS 2 +#ifndef PAPI_ATKTEXTRANGE_INTERNAL +#define PyAtkTextRange_Check(x) \ + ((x)->ob_type == (PyTypeObject *) PyPapi_C_API[PAPI_ATKTEXTRANGE_FIRSTSLOT]) +#define PyAtkTextRange_New \ + (*(PyObject*(*)(void))PyPapi_C_API[PAPI_ATKTEXTRANGE_FIRSTSLOT + 1]) +#endif /* PAPI_ATKTEXTRANGE_INTERNAL */ + +static void **PyPapi_C_API; +#define PAPI_API_SLOTS \ + (PAPI_ATKTEXTRANGE_FIRSTSLOT + PAPI_ATKTEXTRANGE_SLOTS) +#define PAPI_CAPI_ENTRY "_PAPI_C_API" + +static int +import_papi (void) +{ + PyObject *_module = PyImport_ImportModule ("papi"); + if (_module != NULL) + { + PyObject *_capi = PyObject_GetAttrString(_module, PAPI_CAPI_ENTRY); + if (!PyCObject_Check (_capi)) + { + Py_DECREF (_module); + return -1; + } + PyPapi_C_API = (void**) PyCObject_AsVoidPtr (_capi); + Py_DECREF (_capi); + return 0; + } + return -1; +} /** * Python module initialization function. This will be called upon the @@ -122,4 +222,8 @@ */ PyMODINIT_FUNC initpapi (void); +#ifdef __cplusplus +} +#endif + #endif /* _PAPI_H_ */ Index: papi_atkstateset.c =================================================================== RCS file: /cvsroot/ocemp/papi/src/papi_atkstateset.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -d -r1.1.1.1 -r1.2 --- papi_atkstateset.c 23 Jul 2006 07:48:18 -0000 1.1.1.1 +++ papi_atkstateset.c 20 Apr 2008 09:46:57 -0000 1.2 @@ -1,6 +1,6 @@ /* $Id$ * - * Copyright (c) 2006, Marcus von Appen + * Copyright (c) 2006-2008, Marcus von Appen * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -24,6 +24,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#define PAPI_ATKSTATESET_INTERNAL + #include "papi.h" #include "papi_private.h" @@ -47,6 +49,8 @@ static PyObject* _atkstateset_or_sets (PyAtkStateSet *self, PyObject *args); static PyObject* _atkstateset_xor_sets (PyAtkStateSet *self, PyObject *args); +static PyObject* PyAtkStateSet_New (void); + /** * Methods, which are bound to the PyAtkStateSet type. */ @@ -445,3 +449,21 @@ retval->obj = result; return (PyObject *) retval; } + +/** + * C API interface. + */ +static PyObject* +PyAtkStateSet_New (void) +{ + PyAtkStateSet *self = (PyAtkStateSet *) + PyAtkStateSet_Type.tp_alloc (&PyAtkStateSet_Type, 0); + return (PyObject *) self; +} + +void +atkstateset_export_api (void *c_api[]) +{ + c_api[PAPI_ATKSTATESET_FIRSTSLOT] = &PyAtkStateSet_Type; + c_api[PAPI_ATKSTATESET_FIRSTSLOT + 1] = &PyAtkStateSet_New; +} Index: papi_atkobject.c =================================================================== RCS file: /cvsroot/ocemp/papi/src/papi_atkobject.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- papi_atkobject.c 26 May 2007 11:51:49 -0000 1.12 +++ papi_atkobject.c 20 Apr 2008 09:46:57 -0000 1.13 @@ -1,6 +1,6 @@ /* $Id$ * - * Copyright (c) 2006, Marcus von Appen + * Copyright (c) 2006-2008, Marcus von Appen * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -24,6 +24,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#define PAPI_ATKOBJECT_INTERNAL + #include "papi.h" #include "papi_private.h" @@ -78,6 +80,8 @@ /* Signal handler for the property changes. */ static void _atkobject_handle_property_change (AtkObject *obj, AtkPropertyValues *value); +/* C API interfaces */ +static PyObject* PyAtkObject_New (long ifaces); /** * Methods, which are bound to the PyAtkObject type. @@ -948,6 +952,35 @@ } /** + * C API interface + */ +static PyObject* +PyAtkObject_New (long ifaces) +{ + PyAtkObject *self = (PyAtkObject *) PyType_GenericNew (&PyAtkObject_Type, + NULL, NULL); + + if (!self) + return NULL; + + if (!self->obj) + { + if (ifaces == IFACE_INVALID) + self->obj = g_object_new (ATK_TYPE_OBJECT, NULL); + else + self->obj = g_object_new (atktype_get_type (ifaces), NULL); + + /* Prepare some data slots for the references. */ + g_object_set_data (G_OBJECT (self->obj), PAPI_CHILDREN, NULL); + g_object_set_data (G_OBJECT (self->obj), PAPI_PYOBJECT, self); + + atktype_add_interface_methods ((PyObject *) self, ifaces); + } + return (PyObject *) self; +} + + +/** * Bind the different AtkObjectClass interfaces to their needed * implementations. */ @@ -961,3 +994,10 @@ class->get_index_in_parent = _class_get_index_in_parent; class->ref_state_set = _class_ref_state_set; } + +void +atkobject_export_api (void *c_api[]) +{ + c_api[PAPI_ATKOBJECT_FIRSTSLOT] = &PyAtkObject_Type; + c_api[PAPI_ATKOBJECT_FIRSTSLOT + 1] = &PyAtkObject_New; +} Index: papi.c =================================================================== RCS file: /cvsroot/ocemp/papi/src/papi.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- papi.c 28 Jul 2007 06:10:36 -0000 1.2 +++ papi.c 20 Apr 2008 09:46:57 -0000 1.3 @@ -57,6 +57,8 @@ initpapi (void) { PyObject *mod; + PyObject *c_api_obj; + static void *c_api[PAPI_API_SLOTS]; _init_module (); @@ -115,4 +117,17 @@ /* Export the Atk constants. */ constants_export (mod); + + /* C API */ + atkobject_export_api (c_api); + atkstateset_export_api (c_api); + atkrelation_export_api (c_api); + atkrelationset_export_api (c_api); + atkhyperlink_export_api (c_api); + atkattribute_export_api (c_api); + atktextrectangle_export_api (c_api); + atktextrange_export_api (c_api); + c_api_obj = PyCObject_FromVoidPtr ((void *) c_api, NULL); + if (c_api_obj) + PyModule_AddObject (mod, PAPI_CAPI_ENTRY, c_api_obj); } Index: papi_atktextrectangle.c =================================================================== RCS file: /cvsroot/ocemp/papi/src/papi_atktextrectangle.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- papi_atktextrectangle.c 2 Feb 2007 10:28:12 -0000 1.2 +++ papi_atktextrectangle.c 20 Apr 2008 09:46:57 -0000 1.3 @@ -1,6 +1,6 @@ /* $Id$ * - * Copyright (c) 2006, Marcus von Appen + * Copyright (c) 2006-2008, Marcus von Appen * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -24,6 +24,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#define PAPI_ATKTEXTRECTANGLE_INTERNAL + #include "papi.h" #include "papi_private.h" @@ -50,6 +52,8 @@ static int _atktextrectangle_set_height (PyAtkTextRectangle *self, PyObject *value, void *closure); +static PyObject* PyAtkTextRectangle_New (void); + /** * Getters and setters for the PyAtkTextRectangle. */ @@ -278,3 +282,31 @@ self->obj->height = PyInt_AsLong (value); return 0; } + +/** + * C API interface. + */ +static PyObject* +PyAtkTextRectangle_New (void) +{ + PyAtkTextRectangle *self = (PyAtkTextRectangle *) + PyAtkTextRectangle_Type.tp_alloc (&PyAtkTextRectangle_Type, 0); + self->obj = g_new (AtkTextRectangle, 1); + if (!self->obj) + { + PyErr_SetNone (PyExc_MemoryError); + return NULL; + } + self->obj->x = 0; + self->obj->y = 0; + self->obj->width = 0; + self->obj->height = 0; + return (PyObject *) self; +} + +void +atktextrectangle_export_api (void *c_api[]) +{ + c_api[PAPI_ATKTEXTRECTANGLE_FIRSTSLOT] = &PyAtkTextRectangle_Type; + c_api[PAPI_ATKTEXTRECTANGLE_FIRSTSLOT + 1] = &PyAtkTextRectangle_New; +} Index: papi_atkhyperlink.c =================================================================== RCS file: /cvsroot/ocemp/papi/src/papi_atkhyperlink.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- papi_atkhyperlink.c 26 May 2007 11:51:49 -0000 1.3 +++ papi_atkhyperlink.c 20 Apr 2008 09:46:57 -0000 1.4 @@ -1,6 +1,6 @@ /* $Id$ * - * Copyright (c) 2006-2007, Marcus von Appen + * Copyright (c) 2006-2008, Marcus von Appen * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -24,6 +24,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#define PAPI_ATKHYPERLINK_INTERNAL + #include "papi.h" #include "papi_private.h" @@ -45,6 +47,8 @@ static PyObject *_atkhyperlink_is_selected_link (PyAtkHyperlink *self, void *closure); +static PyObject* PyAtkHyperlink_New (void); + /** * Methods, which are bound to the PyAtkHyperlink type. */ @@ -279,3 +283,21 @@ /* TODO */ Py_RETURN_NONE; } + +/** + * C API interface. + */ +static PyObject* +PyAtkHyperlink_New (void) +{ + PyAtkHyperlink *self = (PyAtkHyperlink *) + PyAtkHyperlink_Type.tp_alloc (&PyAtkHyperlink_Type, 0); + return (PyObject *) self; +} + +void +atkhyperlink_export_api (void *c_api[]) +{ + c_api[PAPI_ATKHYPERLINK_FIRSTSLOT] = &PyAtkHyperlink_Type; + c_api[PAPI_ATKHYPERLINK_FIRSTSLOT + 1] = &PyAtkHyperlink_New; +} Index: papi_private.h =================================================================== RCS file: /cvsroot/ocemp/papi/src/papi_private.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- papi_private.h 26 May 2007 12:38:05 -0000 1.5 +++ papi_private.h 20 Apr 2008 09:46:57 -0000 1.6 @@ -1,6 +1,6 @@ /* $Id$ * - * Copyright (c) 2006, Marcus von Appen + * Copyright (c) 2006-2008, Marcus von Appen * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -114,6 +114,18 @@ void atkbridge_export_funcs (PyObject *module); /** + * C API export functions. + */ +void atkobject_export_api (void *c_api[]); +void atkstateset_export_api (void *c_api[]); +void atkrelation_export_api (void *c_api[]); +void atkrelationset_export_api (void *c_api[]); +void atkhyperlink_export_api (void *c_api[]); +void atkattribute_export_api (void *c_api[]); +void atktextrectangle_export_api (void *c_api[]); +void atktextrange_export_api (void *c_api[]); + +/** * Creates constants for the python module from the different ATK * enumerations. */ Index: papi_atkattribute.c =================================================================== RCS file: /cvsroot/ocemp/papi/src/papi_atkattribute.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- papi_atkattribute.c 22 Dec 2006 12:43:28 -0000 1.2 +++ papi_atkattribute.c 20 Apr 2008 09:46:57 -0000 1.3 @@ -1,6 +1,6 @@ /* $Id$ * - * Copyright (c) 2006, Marcus von Appen + * Copyright (c) 2006-2008, Marcus von Appen * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -24,6 +24,8 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#define PAPI_ATKATTRIBUTE_INTERNAL + #include "papi.h" #include "papi_private.h" @@ -39,6 +41,9 @@ static PyObject* _atkattribute_get_value (PyAtkAttribute *self, void *closure); static int _atkattribute_set_value (PyAtkAttribute *self, PyObject *value, void *closure); + +static PyObject* PyAtkAttribute_New (void); + /** * Getters and setters for the PyAtkAttribute. */ @@ -222,3 +227,30 @@ self->obj->name = val; return 0; } + +/** + * C API interface. + */ +static PyObject* +PyAtkAttribute_New (void) +{ + PyAtkAttribute *self = (PyAtkAttribute *) + PyAtkAttribute_Type.tp_alloc (&PyAtkAttribute_Type, 0); + + self->obj = PyMem_New (AtkAttribute, 1); + if (!self->obj) + { + PyErr_SetNone (PyExc_MemoryError); + return NULL; + } + self->obj->name = ""; + self->obj->value = ""; + return (PyObject *) self; +} + +void +atkattribute_export_api (void *c_api[]) +{ + c_api[PAPI_ATKATTRIBUTE_FIRSTSLOT] = &PyAtkAttribute_Type; + c_api[PAPI_ATKATTRIBUTE_FIRSTSLOT + 1] = &PyAtkAttribute_New; +} |