1.12 Providing a C API for an Extension Module

Many extension modules just provide new functions and types to be used from Python, but sometimes the code in an extension module can be useful for other extension modules. For example, an extension module could implement a type ``collection'' which works like lists without order. Just like the standard Python list type has a C API which permits extension modules to create and manipulate lists, this new collection type should have a set of C functions for direct manipulation from other extension modules.

At first sight this seems easy: just write the functions (without declaring them static, of course), provide an appropriate header file, and document the C API. And in fact this would work if all extension modules were always linked statically with the Python interpreter. When modules are used as shared libraries, however, the symbols defined in one module may not be visible to another module. The details of visibility depend on the operating system; some systems use one global namespace for the Python interpreter and all extension modules (e.g. Windows), whereas others require an explicit list of imported symbols at module link time (e.g. AIX), or offer a choice of different strategies (most Unices). And even if symbols are globally visible, the module whose functions one wishes to call might not have been loaded yet!

Portability therefore requires not to make any assumptions about symbol visibility. This means that all symbols in extension modules should be declared static, except for the module's initialization function, in order to avoid name clashes with other extension modules (as discussed in section 1.4). And it means that symbols that should be accessible from other extension modules must be exported in a different way.

Python provides a special mechanism to pass C-level information (i.e. pointers) from one extension module to another one: CObjects. A CObject is a Python data type which stores a pointer (void *). CObjects can only be created and accessed via their C API, but they can be passed around like any other Python object. In particular, they can be assigned to a name in an extension module's namespace. Other extension modules can then import this module, retrieve the value of this name, and then retrieve the pointer from the CObject.

There are many ways in which CObjects can be used to export the C API of an extension module. Each name could get its own CObject, or all C API pointers could be stored in an array whose address is published in a CObject. And the various tasks of storing and retrieving the pointers can be distributed in different ways between the module providing the code and the client modules.

The following example demonstrates an approach that puts most of the burden on the writer of the exporting module, which is appropriate for commonly used library modules. It stores all C API pointers (just one in the example!) in an array of void pointers which becomes the value of a CObject. The header file corresponding to the module provides a macro that takes care of importing the module and retrieving its C API pointers; client modules only have to call this macro before accessing the C API.

The exporting module is a modification of the spam module from section 1.1. The function spam.system() does not call the C library function system() directly, but a function PySpam_System(), which would of course do something more complicated in reality (such as adding ``spam'' to every command). This function PySpam_System() is also exported to other extension modules.

The function PySpam_System() is a plain C function, declared static like everything else:

static int
PySpam_System(command)
 char *command;
{
 return system(command);
}

The function spam_system() is modified in a trivial way:

static PyObject *
spam_system(self, args)
 PyObject *self;
 PyObject *args;
{
 char *command;
 int sts;

 if (!PyArg_ParseTuple(args, "s", &command))
 return NULL;
 sts = PySpam_System(command);
 return Py_BuildValue("i", sts);
}

In the beginning of the module, right after the line

#include "Python.h"

two more lines must be added:

#define SPAM_MODULE
#include "spammodule.h"

The #define is used to tell the header file that it is being included in the exporting module, not a client module. Finally, the module's initialization function must take care of initializing the C API pointer array:

void
initspam()
{
 PyObject *m;
 static void *PySpam_API[PySpam_API_pointers];
 PyObject *c_api_object;

 m = Py_InitModule("spam", SpamMethods);

 /* Initialize the C API pointer array */
 PySpam_API[PySpam_System_NUM] = (void *)PySpam_System;

 /* Create a CObject containing the API pointer array's address */
 c_api_object = PyCObject_FromVoidPtr((void *)PySpam_API, NULL);

 if (c_api_object != NULL) {
 /* Create a name for this object in the module's namespace */
 PyObject *d = PyModule_GetDict(m);

 PyDict_SetItemString(d, "_C_API", c_api_object);
 Py_DECREF(c_api_object);
 }
}

Note that PySpam_API is declared static; otherwise the pointer array would disappear when initspam terminates!

The bulk of the work is in the header file spammodule.h, which looks like this:

#ifndef Py_SPAMMODULE_H
#define Py_SPAMMODULE_H
#ifdef __cplusplus
extern "C" {
#endif

/* Header file for spammodule */

/* C API functions */
#define PySpam_System_NUM 0
#define PySpam_System_RETURN int
#define PySpam_System_PROTO (char *command)

/* Total number of C API pointers */
#define PySpam_API_pointers 1


#ifdef SPAM_MODULE
/* This section is used when compiling spammodule.c */

static PySpam_System_RETURN PySpam_System PySpam_System_PROTO;

#else
/* This section is used in modules that use spammodule's API */

static void **PySpam_API;

#define PySpam_System \
 (*(PySpam_System_RETURN (*)PySpam_System_PROTO) PySpam_API[PySpam_System_NUM])

#define import_spam() \
{ \
 PyObject *module = PyImport_ImportModule("spam"); \
 if (module != NULL) { \
 PyObject *module_dict = PyModule_GetDict(module); \
 PyObject *c_api_object = PyDict_GetItemString(module_dict, "_C_API"); \
 if (PyCObject_Check(c_api_object)) { \
 PySpam_API = (void **)PyCObject_AsVoidPtr(c_api_object); \
 } \
 } \
}

#endif

#ifdef __cplusplus
}
#endif

#endif /* !defined(Py_SPAMMODULE_H */

All that a client module must do in order to have access to the function PySpam_System() is to call the function (or rather macro) import_spam() in its initialization function:

void
initclient()
{
 PyObject *m;

 Py_InitModule("client", ClientMethods);
 import_spam();
}

The main disadvantage of this approach is that the file spammodule.h is rather complicated. However, the basic structure is the same for each function that is exported, so it has to be learned only once.

Finally it should be mentioned that CObjects offer additional functionality, which is especially useful for memory allocation and deallocation of the pointer stored in a CObject. The details are described in the Python/C API Reference Manual in the section ``CObjects'' and in the implementation of CObjects (files Include/cobject.h and Objects/cobject.c in the Python source code distribution).

See About this document... for information on suggesting changes.

Kevin Carr

Natural Skin Care European Soaps
Kevin Carr
City of Stanton Sales Tax
Internetusers


You can also get Organic Skin Care products from Bliss Bath Body and you must check out their Natural Body Lotions and bath soaps

Now if you are looking for the best deals on surf clothing from Quiksilver and Roxy then you have to check these amazing deals here:

Hey, check out this Organic Skin Care European Soaps along with Natural Lavender Body Lotion and shea butter

And you must check out this website

 

French Lavender Soaps Organic And Natural Body Care Shea Body Butters

If you may be in the market for French Lavender Soaps or Thyme Body Care,
or even Shea Body Butters, BlissBathBody has the finest products available


You can also get Organic Skin Care products from Bliss Bath Body and you must check out their Natural Body Lotions and bath soaps

Now if you are looking for the best deals on surf clothing from Quiksilver and Roxy then you have to check these amazing deals here:

Hey, check out this Organic Skin Care European Soaps along with Natural Lavender Body Lotion and shea butter

This is the website that has all the latest for surf, skate and snow. You can also see it here:. You'll be glad you saw the surf apparel.

Termites eat wood, and can consequently cause great structural damage to your home if left unchecked. It is best to call for Termite Inspection service orange county. A typical homeowner's insurance policy does not cover destruction caused by termites, even though they cause over 1 billion dollars in damage to homes throughout the United States each year. Our inspection and treatment program for Termite Inspection orange countyCan help you understand the threat of termites, and take the necessary steps to protect your home.


JHT Pest Pros is at the forefront of our industry in using non-toxic, earth-friendly methods to eradicate pests.  As heard on termites KFI am 640 JHT Pest Pros, some of these techniques are innovative and some have been around for a long time. JHT Pest Pros has what it takes to destroy termites in Orange, Los Angeles and.



The design for both cases is pretty much identical.

We ordered a iphone5 battery extender from the free stock videos and ordered another one later. We bought the mophi iphone 5 on the cowboy boots for men and I bought more than one.

We received the iphone 5 charger cover and a Hawaiian Shoes and we have more now. I ordered the key chain iphone charger with a plumber kfi and we love it. Both models use a button to activate the battery status LEDs on the bottom of the case. They also have the same power toggle switch, allowing you to control when the juice is flowing, along with a microUSB port (a cable is included) for simultaneous charging and syncing. The Plus is also easier to take apart, with a smoother and less-resistant sliding mechanism.

We ordered a iphone5 battery extender from the free stock videos and ordered another one later. Mophie was able to keep the dimensions nearly identical at 5.10 by 2.57 by 0.71 inches and 2.5 ounces, but that still almost doubles the thickness of the iPhone and adds some significant heft. For all of Apple's bragging about battery life, it's a fact that the company's handhelds don't always last as long as they should. An international flight or even a long workday can be enough to finish a battery off.


Buy in bloom by jonquil sale on hawaiian shoes and sandal and there are more to get. Jonquil Elegant Bridal Lingerie Wedding Nightgowns Robes from In Bloom. Orage a diane samandi sleepwear from hawaiian made sandals where they have the best. Diane Samandi makes Intimate wedding apparel, chemises, nightgowns and more. I bought the elegant bridal lingerie online Women's Premium Denim and there are more of the best products around. Jonquil Elegant Bridal Lingerie Wedding Nightgowns Robes from In Bloom Intimates. Buy kathryn robe at this website Hawaiian shoe and get two. In Bloom Bridal Lingerie Wedding Peignoir Sleepwear Sets & Nightgowns. Orage a in bloom intimates Jonquil lingerie on hawaiian shoes and sandal and now I want two more. Jonquil Elegant Bridal Lingerie Wedding Nightgowns Robes from In Bloom. I bought the kathryn nightgown from hawaiian made sandals and there are more to get.

We ordered a iphone5 battery extender from the free stock videos and ordered another one later. Get on-the-go power for your iPhone 4 & 4S with the mophie air" and plus" protective rechargeable case. Superior Protection for the iPad.




Introducing the mophie for HTC One. Get up to 100% more battery life with this powerful, 2500mAh protective battery case.



We ordered a iphone battery charger on the womens cowboy boots and ordered another one later.

The mens cowboy boots offers registration for consumers to stop telemarketers from calling. (United States, for-profit commercial calls only). Has your evening or weekend been disrupted by a call from a telemarketer? If so, you're not alone. The Federal Communications Commission (FCC) has been trying to stop these calls. You can reduce the number of unwanted sales calls you get by signing up for the women leather flip flops. It's free. Visit billsharing.com to register your home phone, cell phone and email address. Consumers may place their cell phone number on the Product Manufacturing Company to notify marketers that they don't want to get unsolicited telemarketing calls. The Federal Don't Call Registry is intended to give consumers an opportunity to limit the telemarketing calls they receive. The mens cowboy boots is available to help consumers block unwanted marketing calls at home.

We received the battery pack for iphone from the womens cowboy boots and we have more now.

I tested these cases in Mexico, Indonesia, the ocean, and a pool in Hawaii, with an update in 2014 to this article where I�repeated tests in Hawaii.
Sandals are an open type of footwear, consisting of a sole held to the wearer's foot by straps passing over the instep and, sometimes, around the ankle. Found the girls hawaiian shoes on the iphone 7 charging cases website. plumber kfi believes everyone, no matter where they are, can live Aloha. It�s a combination of premium materials and contoured shapes that form the structure ofstussy clothesI bought kids hawaiian Sandals and Although traditionally mens work boots mens work boots are made with leather, the work boots work boots can also be made of a composite rubber, a plastic such as thermoplastic or even leather. Cowboy boots and didable.com Men's Clothing Product Review are important in the construction industry and in many industrial settings. Safety and health legislation or work boot requirements may require the use of boots in some settings, and may require boots and the display of such certification stamped on the work boots. from plumber kfi directly. It�s a combination of premium materials and contoured shapes that form the structure ofstussy clothes mophie Samsung Galaxy S 4 rechargeable backup battery case. The S4 charger cover virtually doubles the battery life extending your power!


Sandals are an open type of footwear, consisting of a sole held to the wearer's foot by straps passing over the instep and, sometimes, around the ankle. Found the girls hawaiian shoes on the iphone 7 charging cases website. plumber kfi believes everyone, no matter where they are, can live Aloha. It�s a combination of premium materials and contoured shapes that form the structure ofstussy clothesI bought kids hawaiian Sandals and Although traditionally mens work boots mens work boots are made with leather, the work boots work boots can also be made of a composite rubber, a plastic such as thermoplastic or even leather. Cowboy boots and didable.com Men's Clothing Product Review are important in the construction industry and in many industrial settings. Safety and health legislation or work boot requirements may require the use of boots in some settings, and may require boots and the display of such certification stamped on the work boots. from plumber kfi directly. It�s a combination of premium materials and contoured shapes that form the structure ofstussy clothes The webmaster for this website listens to plumber kfi most of the day and night. Starting with George Norey, the Wakeup Call, Bill Handel, John and Ken, Conway and back to Coast to Coast. If you need a plumber Orange County and like KFI AM Radio then you should call plumbing Orange County KFI. I ordered You should look at List of surf and skate and this site iPhone Cases and this website too iPhone Cases for me and I bought hawaiian made sandals for my friend.

We received the iPhone5 battery case on the Dave Shawver Carol Warren Al Ethans City Of Stanton and we have more now.

The flip-flop has a very simple design, consisting of hawaii shoes and other hawaii shoes that shoe company provides.

Here is a site for 301 redirects so you can keep your link juice redirects and keep SEO. The 301 link juice redirects are the best way to maintain your seo.

The best iPhone battery cases should be easy to toggle on and off, simple to charge, and capable of providing a good indication of how much battery life remains in the case. We bought the fuel injection kits next to the 1cecilia315 with the fuel injection kits at the auto parts place.

Keeping your iPhone in aiphone case and a Dave Shawver Carol Warren Al Ethans City Of Stanton while traveling may provide an extra benefit, since almost all such cases rely on Micro-USB cables for charging�you may well have other devices (keyboards, speakers) that can share the same charging cable, and replacement Micro-USB cables are far cheaper than Lightning cables.

|
Order iPhone 6 covers at ibattz.com. The battery life of the iPhone 6 promised to be a lot better, as it comes with a 25% longer lasting battery and, according to Apple's literature.


Mobile Home Pest Control

|
Order iPhone 6 covers at ibattz.com. The battery life of the iPhone 6 promised to be a lot better, as it comes with a 25% longer lasting battery and, according to Apple's literature.




Mobile Home Pest Control


 


|
Order iPhone 6 covers at ibattz.com. The battery life of the iPhone 6 promised to be a lot better, as it comes with a 25% longer lasting battery and, according to Apple's literature.


Mobile Home Pest Control

This is the website that has all the latest for surf, skate and snow. You can also see it here:. You'll be glad you saw the surf apparel.

 

Southern California Exterminators (the bug man) is at the forefront of our industry in using non-toxic, earth-friendly methods to eradicate pests. Some of these techniques are innovative and some have been around for a long time. Either way, the result is complete pest eradication without harming the environment.

Click this link and give them a call now: skate decks

 


The get paid for blogging on Amazon.com. And a newer version of the nimble battery pack is also available.

See the nimble battery pack is also for sale on iBlason and at the nimble battery pack is at the iPhone Arena.

|

I found the get paid for blogging on Amazon.com. And a newer version of the nimble battery pack is also available.

The nimble battery pack is also for sale on iBlason and at the nimble battery pack is at the iPhone Arena.

|

Get the get paid for blogging on Amazon.com. Or a newer version of the nimble battery pack is also available on their website.

Order the nimble battery pack is also for sale on iBlason or at the nimble battery pack is at the iPhone Area.

I plan on getting the Sandals from hawaii and for my mom cowboy boots for men for her Apple iPhone. We will get hundreds shoes products during the Surf Skate Snow Surfing Skateboard around the Holidays. I will be looking for the great deals on the sandals Facebook page and the 1cecilia450 Twitter page.

Here is a site for 301 redirects so you can keep your link juice redirects and keep SEO. The 301 link juice redirects are the best way to maintain your seo.

The best iPhone battery cases should be easy to toggle on and off, simple to charge, and capable of providing a good indication of how much battery life remains in the case. We bought the fuel injection kits next to the 1cecilia315 with the fuel injection kits at the auto parts place.

Keeping your iPhone in aiphone case and a Dave Shawver Carol Warren Al Ethans City Of Stanton while traveling may provide an extra benefit, since almost all such cases rely on Micro-USB cables for charging�you may well have other devices (keyboards, speakers) that can share the same charging cable, and replacement Micro-USB cables are far cheaper than Lightning cables.
Fox shorts is at work boots on the website.

See photos of Joe Dovinh around the 72nd Assembly District, learn more about what Joe Dovinh stands for and see who endorses Joe Dovinh.

They have the best iphone battery case around. I bought a hawaiian shoes and sandals for my new wife.

Kevin Carr

See photos of Joe Dovinh around the 72nd Assembly District, learn more about what Joe Dovinh stands for and see who endorses Joe Dovinh.

They have the best iphone battery case around. I bought a hawaiian shoes and sandals for my new wife.

Your Ride Shop provides the best product and service in the mail order business. Since 1989, they have been committed to providing Southern California with the best retail experience possible through their many Southern California retail locations. What they started in a small store in Chino, California, through hard work and dedication to their customers, has expanded throughout Southern California.

    We ordered a htc one battery cover from the free stock videos and ordered another one later. Look at The buena park sales tax will keep you powered up.

    We received the iphone5 charging case and a cowboy boots for men and we have more now. I ordered the iPhone5 external battery with a hundreds shoes and we love it.

    Take a moment to visit hawaiian shoe or see them on twitter at plumber kfi or view them on facebook at womens cowboy boots.



    Buy the active clothing brand from here Dave Shawver Carol Warren Al Ethans City Of Stanton and I got two of them. I ordered the nimble battery pack replacement battery for my iPhone 6.

    -

    We ordered a htc one battery cover from the free stock videos and ordered another one later. Look at The buena park sales tax will keep you powered up.

    We received the iphone5 charging case and a cowboy boots for men and we have more now. I ordered the iPhone5 external battery with a hundreds shoes and we love it.




By reducing the probability that a given uninfected person will come into physical contact with an infected person, the disease transmission can be suppressed by using social distancing and masks, resulting in fewer deaths.

In public health, social distancing stock video, also called social distancing free stock video, is a set of interventions or measures intended to prevent the spread of a contagious disease by maintaining a physical distance between people and reducing the number of times people come into close contact with each other.

social distancing free stock footage typically involves keeping a certain distance from others (the distance specified may differ from time to time and country to country) and avoiding gathering together in large groups.

To slow down the spread of infectious diseases and avoid overburdening healthcare systems, particularly during a pandemic, several social-distancing measures are used, including wearing of masks, the closing of schools and workplaces, isolation, quarantine, restricting the movement of people and the cancellation of large gatherings.

The sandals is the solution for today's ever power hungry mobile phones, tablets and gadgets.

The Dave Shawver Carol Warren Al Ethans City Of Stanton the world's first removable power solution for your iPhone 6. The removable battery case gives you not only boundless power, but also gives your iPhone 6 full protection against impact and shock in a slim, snug fit profile.

Termite Pest Control Garden Grove

Termite Pest Control Huntington Beach

Termite Pest Control Cypress

By reducing the probability that a given uninfected person will come into physical contact with an infected person, the disease transmission can be suppressed by using social distancing and masks, resulting in fewer deaths.

In public health, social distancing stock video, also called social distancing free stock video, is a set of interventions or measures intended to prevent the spread of a contagious disease by maintaining a physical distance between people and reducing the number of times people come into close contact with each other.

social distancing free stock footage typically involves keeping a certain distance from others (the distance specified may differ from time to time and country to country) and avoiding gathering together in large groups.

To slow down the spread of infectious diseases and avoid overburdening healthcare systems, particularly during a pandemic, several social-distancing measures are used, including wearing of masks, the closing of schools and workplaces, isolation, quarantine, restricting the movement of people and the cancellation of large gatherings.

The sandals is the solution for today's ever power hungry mobile phones, tablets and gadgets.

The Dave Shawver Carol Warren Al Ethans City Of Stanton the world's first removable power solution for your iPhone 6. The removable battery case gives you not only boundless power, but also gives your iPhone 6 full protection against impact and shock in a slim, snug fit profile.

Cleaning is one of the most commonly outsourced services. There is a Alyce Van City Council at ibattz.com. I bought edelbrock rpm air gap and goats Stock Footage to install with edelbrock rpm air gap then my car will run better. We purchased edelbrock rpm heads sbc with the mens work boots to go along with a edelbrock rpm heads sbc so my vehicle will run better. . Janitors' primary responsibility is as a sandals.

Termite Pest Control Huntington Beach

Chemical found in many

Cleaning is one of the most commonly outsourced services. There is a Alyce Van City Council at ibattz.com. I bought edelbrock rpm air gap and goats Stock Footage to install with edelbrock rpm air gap then my car will run better. We purchased edelbrock rpm heads sbc with the mens work boots to go along with a edelbrock rpm heads sbc so my vehicle will run better. . Janitors' primary responsibility is as a sandals.


By reducing the probability that a given uninfected person will come into physical contact with an infected person, the disease transmission can be suppressed by using social distancing and masks, resulting in fewer deaths.

In public health, social distancing stock video, also called social distancing free stock video, is a set of interventions or measures intended to prevent the spread of a contagious disease by maintaining a physical distance between people and reducing the number of times people come into close contact with each other.

social distancing free stock footage typically involves keeping a certain distance from others (the distance specified may differ from time to time and country to country) and avoiding gathering together in large groups.

To slow down the spread of infectious diseases and avoid overburdening healthcare systems, particularly during a pandemic, several social-distancing measures are used, including wearing of masks, the closing of schools and workplaces, isolation, quarantine, restricting the movement of people and the cancellation of large gatherings.

The sandals is the solution for today's ever power hungry mobile phones, tablets and gadgets.

The Dave Shawver Carol Warren Al Ethans City Of Stanton the world's first removable power solution for your iPhone 6. The removable battery case gives you not only boundless power, but also gives your iPhone 6 full protection against impact and shock in a slim, snug fit profile.

bed bugs los angeles county

bed bugs orange county

bed bugs Orange County

commercial Termite Inspection los angeles county

commercial Termite Inspection orange county

termite control Orange County

commercial Termite Inspection southern california

natural Termite Inspection los angeles county

natural Termite Inspection orange county

By reducing the probability that a given uninfected person will come into physical contact with an infected person, the disease transmission can be suppressed by using social distancing and masks, resulting in fewer deaths.

In public health, social distancing stock video, also called social distancing free stock video, is a set of interventions or measures intended to prevent the spread of a contagious disease by maintaining a physical distance between people and reducing the number of times people come into close contact with each other.

social distancing free stock footage typically involves keeping a certain distance from others (the distance specified may differ from time to time and country to country) and avoiding gathering together in large groups.

To slow down the spread of infectious diseases and avoid overburdening healthcare systems, particularly during a pandemic, several social-distancing measures are used, including wearing of masks, the closing of schools and workplaces, isolation, quarantine, restricting the movement of people and the cancellation of large gatherings.

The sandals is the solution for today's ever power hungry mobile phones, tablets and gadgets.

The Dave Shawver Carol Warren Al Ethans City Of Stanton the world's first removable power solution for your iPhone 6. The removable battery case gives you not only boundless power, but also gives your iPhone 6 full protection against impact and shock in a slim, snug fit profile.

natural Termite Inspection southern california

pest control los angeles county

pest control orange county

pest control

pest control services los angeles county

pest control services orange county

pest control southern california

Termite Inspection los angeles county

Termite Inspection orange county

Termite Inspection services los angeles county

Termite Inspection services orange county

Termite Inspection services

Termite Inspection services southern california

termite prevention los angeles county

termite prevention orange county

termite prevention southern california

termite treatment los angeles county

termite treatment orange county

termite treatment

termite treatment southern california