El archivo *.c correspondiente

Veamos ahora el archivo myapp-spell-checker.c:

#include "myapp-spell-checker.h"
#include <string.h>

struct _MyappSpellChecker
{
  gchar *language_code;

  /* Ponga aqui otras estructuras de datos utilizadas
   * para implementar la revision ortografica.
   */
};

static void
load_dictionary (MyappSpellChecker *checker)
{
  /* ... */
};

/**
 * myapp_spell_checker_new:
 * @language_code: el lenguaje del codigo a utlizar.
 *
 * Returns: un nuevo objeto #MyappSpellChecker. Libre con
 * myapp_spell_checker_free().
 */
MyappSpellChecker *
myapp_spell_checker_new (const gchar *language_code)
{
  MyappSpellChecker *checker;

  g_return_val_if_fail (language_code != NULL, NULL);

  checker = g_new0 (MyappSpellChecker, 1);
  checker->language_code = g_strdup (language_code);

  load_dictionary (checker);

  return checker;
}

/**
 * myapp_spell_checker_free:
 * @checker: un #MyappSpellChecker.
 *
 * Libera @checker.
 */
void
myapp_spell_checker_free (MyappSpellChecker *checker)
{
  if (checker == NULL)
    return;

  g_free (checker->language_code);
  g_free (checker);
}

/**
 * myapp_spell_checker_check_word:
 * @checker: un #MyappSpellChecker.
 * @word: la palabra para comprobar.
 * @word_length: la longitud de bytes de @word, o -1 si @word
 * es terminado en nulo.
 *
 * Returns: %TRUE si @word esta escrito correctamente, %FALSE
 * de lo contrario.
 */
gboolean
myapp_spell_checker_check_word (MyappSpellChecker *checker,
                                const gchar       *word,
                                gssize             word_length)
{
  g_return_val_if_fail (checker != NULL, FALSE);
  g_return_val_if_fail (word != NULL, FALSE);
  g_return_val_if_fail (word_length >= -1, FALSE);

  /* ... Compruebe si la palabra esta presente en un diccionario. */

  return TRUE;
}

/**
 * myapp_spell_checker_get_suggestions:
 * @checker: un #MyappSpellChecker.
 * @word: una palabra mal escrita.
 * @word_length: la longitud de bytes de @word, o -1 si @word
 * es terminado en nulo.
 *
 * Obtiene las sugerencias para @word. Libera el valor de retorno con
 * g_slist_free_full(suggestions, g_free).
 *
 * Returns: (transfer full) (element-type utf8): la lista de sugerencias.
 */
GSList *
myapp_spell_checker_get_suggestions (MyappSpellChecker *checker,
                                     const gchar       *word,
                                     gssize             word_length)
{
  GSList *suggestions = NULL;

  g_return_val_if_fail (checker != NULL, NULL);
  g_return_val_if_fail (word != NULL, NULL);
  g_return_val_if_fail (word_length >= -1, NULL);

  if (word_length == -1)
    word_length = strlen (word);

  if (strncmp (word, "punchness", word_length) == 0)
    suggestions = g_slist_prepend (suggestions,
                                   g_strdup ("punchiness"));

  return suggestions;
}

Listado: myapp-spell-checker.c