Logo Search packages:      
Sourcecode: inkscape version File versions


 * Functions to keep a listing of all modules in the system.  Has its
 * own file mostly for abstraction reasons, but is pretty simple
 * otherwise.
 * Authors:
 *   Ted Gould <ted@gould.cx>
 *   Lauris Kaplinski <lauris@kaplinski.com>
 * Copyright (C) 2002-2004 Authors
 * Released under GNU GPL, read the file 'COPYING' for more information

#ifndef __MODULES_DB_H__
#define __MODULES_DB_H__

#include <map>
#include <list>

#include <glib.h>
#include <gtkmm.h>
#include <extension/extension.h>

namespace Inkscape {
namespace Extension {

class DB {
    /** A string comparison function to be used in the moduledict
        to find the different extensions in the hash map. */
00032     struct ltstr {
        bool operator()(const char* s1, const char* s2) const {
            return strcmp(s1, s2) < 0;
    /** This is the actual database.  It has all of the modules in it,
        indexed by their ids.  It's a hash table for faster lookups */
    std::map <const char *, Extension *, ltstr> moduledict;
    /** Maintain an ordered list of modules for generating the extension
        lists via "foreach" */
    std::list <Extension *> modulelist;

    static void foreach_internal (gpointer in_key, gpointer in_value, gpointer in_data);

    DB (void);
    Extension * get (const gchar *key);
    void register_ext (Extension *module);
    void unregister_ext (Extension *module);
    void foreach (void (*in_func)(Extension * in_plug, gpointer in_data), gpointer in_data);

    static void input_internal (Extension * in_plug, gpointer data);
    static void output_internal (Extension * in_plug, gpointer data);
    static void effect_internal (Extension * in_plug, gpointer data);

    typedef std::list<Output *> OutputList;
    typedef std::list<Input *> InputList;
    typedef std::list<Effect *> EffectList;

    InputList  &get_input_list (InputList &ou_list);
    OutputList &get_output_list (OutputList &ou_list);
    EffectList &get_effect_list (EffectList &ou_list);
}; /* class DB */

extern DB db;

} } /* namespace Extension, Inkscape */

#endif /* __MODULES_DB_H__ */

  Local Variables:
  c-file-offsets:((innamespace . 0)(inline-open . 0))
// vim: filetype=c++:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :

Generated by  Doxygen 1.6.0   Back to index