]> git.cworth.org Git - mnemon/blobdiff - mnemon.c
Break mnemon up into a main program and a mnemon "library"
[mnemon] / mnemon.c
index 5fa8ac9e418a8d6f6f1e143c92d6d4addd039f6b..f869993061de67ad9332bbe3b77a8753ab882310 100644 (file)
--- a/mnemon.c
+++ b/mnemon.c
@@ -1,9 +1,10 @@
-/*
- * Copyright © 2006 Carl Worth
+/* mnemon - A memory training library
+ *
+ * Copyright © 2006,2011 Carl Worth
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
+ * the Free Software Foundation; either version 3, or (at your option)
  * any later version.
  *
  * This program is distributed in the hope that it will be useful,
@@ -16,6 +17,8 @@
  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA."
  */
 
+#include "mnemon.h"
+
 /* for asprintf */
 #define _GNU_SOURCE
 #include <stdio.h>
@@ -52,12 +55,12 @@ typedef struct _item {
     char *response;
 } item_t;
 
-typedef struct _bin {
+struct _bin {
     int score;
     int items_size;
     int num_items;
     item_t **items;
-} bin_t;
+};
 
 typedef enum {
     CATEGORY_ORDER_RANDOM,
@@ -72,7 +75,7 @@ typedef enum {
     CHALLENGE_TYPE_TEXT_TO_SPEECH
 } challenge_type_t;
 
-typedef struct _category {
+struct _category {
     char *name;
     int items_size;
     int num_items;
@@ -87,24 +90,7 @@ typedef struct _category {
     challenge_type_t challenge_type;
     /* Whether to repeat afterwards (for a little extra reinforcement) */
     bool_t repeat;
-} category_t;
-
-typedef struct _mnemon {
-    char *dir_name;
-
-    int categories_size;
-    int num_categories;
-    category_t *categories;
-
-    int bins_size;
-    int num_bins;
-    bin_t *bins;
-
-    int to_introduce;
-    int to_master;
-    int unlearned;
-    int mastered;
-} mnemon_t;
+};
 
 static void *
 xmalloc (size_t size)
@@ -410,7 +396,7 @@ bin_num_items_matching (bin_t                       *bin,
     return num_items;
 }
 
-static void
+void
 mnemon_init (mnemon_t *mnemon)
 {
     char *home;
@@ -435,7 +421,7 @@ mnemon_init (mnemon_t *mnemon)
     mnemon->mastered = -1;
 }
 
-static void
+void
 mnemon_fini (mnemon_t *mnemon)
 {
     int i;
@@ -579,7 +565,7 @@ trim_space (char *string)
     return string;
 }
 
-static void
+void
 mnemon_load_category (mnemon_t         *mnemon,
                      const char        *name)
 {
@@ -750,7 +736,7 @@ mnemon_load_category (mnemon_t              *mnemon,
     }
 }
 
-static void
+void
 mnemon_load (mnemon_t *mnemon)
 {
     DIR *dir;
@@ -779,7 +765,7 @@ mnemon_load (mnemon_t *mnemon)
     closedir (dir);
 }
 
-static void
+void
 mnemon_save (mnemon_t *mnemon)
 {
     int i, err;
@@ -1011,7 +997,7 @@ print_histogram_bar (double        size,
     printf ("\n");
 }
 
-static void
+void
 mnemon_print_histogram (mnemon_t    *mnemon,
                        const char  *category_name,
                        int          length)
@@ -1254,7 +1240,7 @@ mnemon_hide_challenge (unused (mnemon_t *mnemon),
     free (command);
 }
 
-static void
+void
 mnemon_do_challenges (mnemon_t *mnemon)
 {
     bin_t *bin;
@@ -1348,46 +1334,3 @@ mnemon_do_challenges (mnemon_t *mnemon)
             mnemon->unlearned ||
             mnemon->to_master > 0);
 }
-
-int
-main (int argc, char *argv[])
-{
-    mnemon_t mnemon;
-    char *response;
-
-    void _load_categories()
-    {
-       if (argc > 1) {
-           int i;
-           for (i = 1; i < argc; i++)
-               mnemon_load_category (&mnemon, argv[i]);
-       } else {
-           mnemon_load (&mnemon);
-       }
-    }
-
-    srand (time (NULL));
-
-    mnemon_init (&mnemon);
-
-    _load_categories ();
-
-    mnemon_do_challenges (&mnemon);
-
-    mnemon_save (&mnemon);
-
-    mnemon_fini (&mnemon);
-
-    mnemon_init (&mnemon);
-
-    _load_categories ();
-
-    printf ("Great job.\nHere are your current results:\n");
-    mnemon_print_histogram (&mnemon, NULL, 0);
-    response = readline ("Press enter to quit.\n");
-    free (response);
-
-    mnemon_fini (&mnemon);
-
-    return 0;
-}