00001
00002
00003 #ifndef _LIBGNOMEMM_MODULEINFO_H
00004 #define _LIBGNOMEMM_MODULEINFO_H
00005
00006 #include <glibmm.h>
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include <glibmm/containers.h>
00030 #include <libgnome/gnome-program.h>
00031
00032
00033 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00034 extern "C" { typedef struct _GnomeModuleInfo GnomeModuleInfo; }
00035 #endif
00036
00037 namespace Gnome
00038 {
00039
00040 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00041
00042 GnomeModuleInfo* gnomemm_module_info_copy(const GnomeModuleInfo* src);
00043 void gnomemm_module_info_free(GnomeModuleInfo* src);
00044 #endif //DOXYGEN_SHOULD_SKIP_THIS
00045
00046 class ModuleInfo
00047 {
00048 public:
00049 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00050 typedef ModuleInfo CppObjectType;
00051 typedef GnomeModuleInfo BaseObjectType;
00052
00053 static GType get_type() G_GNUC_CONST;
00054 #endif
00055
00056
00057 explicit ModuleInfo(GnomeModuleInfo* gobject, bool make_a_copy = true);
00058
00059 ModuleInfo(const ModuleInfo& other);
00060 ModuleInfo& operator=(const ModuleInfo& other);
00061
00062 ~ModuleInfo();
00063
00064 void swap(ModuleInfo& other);
00065
00067 GnomeModuleInfo* gobj() { return gobject_; }
00068
00070 const GnomeModuleInfo* gobj() const { return gobject_; }
00071
00073 GnomeModuleInfo* gobj_copy() const;
00074
00075 protected:
00076 GnomeModuleInfo* gobject_;
00077
00078 private:
00079
00080 public:
00081
00082
00083 ModuleInfo();
00084
00086 ModuleInfo(const gchar* name, const gchar* version, const gchar* description);
00087
00088
00089 Glib::ustring get_name() const;
00090 Glib::ustring get_version() const;
00091 Glib::ustring get_description() const;
00092
00093
00094
00095 void set_requirements(GnomeModuleRequirement* requirements);
00096
00097 void set_post_args_parse(GnomeModuleHook function);
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110 };
00111
00112 }
00113
00114
00115 namespace Gnome
00116 {
00117
00122 inline void swap(ModuleInfo& lhs, ModuleInfo& rhs)
00123 { lhs.swap(rhs); }
00124
00125 }
00126
00127 namespace Glib
00128 {
00129
00135 Gnome::ModuleInfo wrap(GnomeModuleInfo* object, bool take_copy = false);
00136
00137 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00138 template <>
00139 class Value<Gnome::ModuleInfo> : public Glib::Value_Boxed<Gnome::ModuleInfo>
00140 {};
00141 #endif
00142
00143 }
00144
00145 #endif
00146