## Creating an extractor module binary

Modules are implemented as standalone .so files with a defined API, the indexer's task is to crawl through all the defined directories in the .module file and ask the module for information about that file.

The API to implement is the following:

    void     indexer_module_initialize (void); /* GTypes and other static data initialization */
    void     indexer_module_shutdown   (void); /* Free all static resources here */
    TrackerModuleFile *
             indexer_module_create_file (GFile *file);

Modules can implement one or many TrackerModuleFile objects, which will be used by the indexer to extract information. Optionally, TrackerModuleFile objects can also implement the TrackerModuleIteratable interface, so the indexer can iterate through the contents of the file and index them as separate entities.