+#define do_builtin(m) \
+ { \
+ const GtkIMContextInfo **contexts; \
+ int n_contexts; \
+ extern void _gtk_immodule_ ## m ## _list (const GtkIMContextInfo ***contexts, \
+ guint *n_contexts); \
+ extern void _gtk_immodule_ ## m ## _init (GTypeModule *module); \
+ extern void _gtk_immodule_ ## m ## _exit (void); \
+ extern GtkIMContext *_gtk_immodule_ ## m ## _create (const gchar *context_id); \
+ \
+ _gtk_immodule_ ## m ## _list (&contexts, &n_contexts); \
+ module = add_builtin_module (#m, contexts, n_contexts); \
+ module->init = _gtk_immodule_ ## m ## _init; \
+ module->exit = _gtk_immodule_ ## m ## _exit; \
+ module->create = _gtk_immodule_ ## m ## _create; \
+ module = NULL; \
+ }
+
+#ifdef INCLUDE_IM_am_et
+ do_builtin (am_et);
+#endif
+#ifdef INCLUDE_IM_cedilla
+ do_builtin (cedilla);
+#endif
+#ifdef INCLUDE_IM_cyrillic_translit
+ do_builtin (cyrillic_translit);
+#endif
+#ifdef INCLUDE_IM_ime
+ do_builtin (ime);
+#endif
+#ifdef INCLUDE_IM_inuktitut
+ do_builtin (inuktitut);
+#endif
+#ifdef INCLUDE_IM_ipa
+ do_builtin (ipa);
+#endif
+#ifdef INCLUDE_IM_multipress
+ do_builtin (multipress);
+#endif
+#ifdef INCLUDE_IM_thai
+ do_builtin (thai);
+#endif
+#ifdef INCLUDE_IM_ti_er
+ do_builtin (ti_er);
+#endif
+#ifdef INCLUDE_IM_ti_et
+ do_builtin (ti_et);
+#endif
+#ifdef INCLUDE_IM_viqr
+ do_builtin (viqr);
+#endif
+#ifdef INCLUDE_IM_xim
+ do_builtin (xim);
+#endif
+
+#undef do_builtin
+
+ file = g_fopen (filename, "r");