From 6717cd95edcf1332c81daaa6c608c293dc8ffb4a Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Thu, 21 Sep 2006 02:02:39 -0700 Subject: [PATCH] Move private portions of dict from dict-impl.h back to dict.c This is the punch line in the recent series of commits which removed trie_t and string_t code from grid.c. We now finally have a nice, clean dict_t interface for new programs to use. --- dict-impl.h | 79 ----------------------------------------------------- dict.c | 16 +++++++++++ dict.h | 18 ++++++++++-- grid.c | 3 +- 4 files changed, 34 insertions(+), 82 deletions(-) delete mode 100644 dict-impl.h diff --git a/dict-impl.h b/dict-impl.h deleted file mode 100644 index 78aab1c..0000000 --- a/dict-impl.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright © 2006 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) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA." - */ - -#ifndef _DICT_IMPL_H_ -#define _DICT_IMPL_H_ - -#include - -#ifndef FALSE -# define FALSE 0 -#endif - -#ifndef TRUE -# define TRUE 1 -#endif - -typedef int bool_t; - -typedef struct _string { - size_t size; - char *s; - size_t len; -} string_t; - -void -string_init (string_t *string); - -void -string_fini (string_t *string); - -void -string_append_char (string_t *string, char c); - -void -string_chop (string_t *string); - -void -chomp (char *s); - -#define TRIE_FLAGS_IS_WORD (1<<0) - -typedef struct _trie { - uint32_t flags; - struct _trie *next[26]; -} trie_t; - -typedef bool_t -(*trie_predicate_t) (trie_t *trie); - -#define TRIE_CHAR_TO_INDEX(c) (tolower (c) - 'a') -#define TRIE_INDEX_TO_CHAR(i) (i + 'a') - -trie_t * -trie_create (void); - -void -trie_add (trie_t *trie, - const char *word_chunk); - -trie_t * -trie_find (trie_t *trie, - const char *word_chunk); - -#endif /* _DICT_IMPL_H_ */ diff --git a/dict.c b/dict.c index c364cb8..f975829 100644 --- a/dict.c +++ b/dict.c @@ -26,6 +26,20 @@ #include "dict.h" +typedef struct _string { + size_t size; + char *s; + size_t len; +} string_t; + +#define TRIE_FLAGS_IS_WORD (1<<0) + +typedef bool_t +(*trie_predicate_t) (trie_t *trie); + +#define TRIE_CHAR_TO_INDEX(c) (tolower (c) - 'a') +#define TRIE_INDEX_TO_CHAR(i) (i + 'a') + void * xmalloc (size_t size) { @@ -58,6 +72,8 @@ void chomp (char *s) { int len = strlen (s); + if (len == 0) + return; if (s[len - 1] == '\n') s[len - 1] = '\0'; } diff --git a/dict.h b/dict.h index ccc0c0b..ca0e6f6 100644 --- a/dict.h +++ b/dict.h @@ -19,9 +19,23 @@ #ifndef _DICT_H_ #define _DICT_H_ -#include "dict-impl.h" +#include + +#ifndef FALSE +# define FALSE 0 +#endif + +#ifndef TRUE +# define TRUE 1 +#endif + +typedef int bool_t; + +typedef struct _trie { + uint32_t flags; + struct _trie *next[26]; +} trie_t; -/* Only looks opaque. Perfectly stack-allocatable */ typedef trie_t dict_t; typedef trie_t *dict_cursor_t; typedef uint32_t dict_entry_t; diff --git a/grid.c b/grid.c index cce4ab7..960b796 100644 --- a/grid.c +++ b/grid.c @@ -203,11 +203,12 @@ main (void) sprintf (prompt, "%02d:%02d ", minutes, seconds); response = readline (prompt); add_history (response); - chomp (response); if (strlen (response) == 0) { board_print (&board); } else { dict_entry_t *entry; + if (response[strlen (response) - 1] == '\n') + response[strlen (response) - 1] = '\0'; entry = dict_lookup (&solution, response); if (DICT_ENTRY_IS_WORD (entry)) { if (*entry & GRID_WORD_SEEN) -- 2.43.0