]> mj.ucw.cz Git - leo.git/blobdiff - dict.c
TODO
[leo.git] / dict.c
diff --git a/dict.c b/dict.c
index a3679e713c1425f1a890cc0a41664744e11a2086..072b0a9445864b892ed00f843aeebb4784065704 100644 (file)
--- a/dict.c
+++ b/dict.c
@@ -1,15 +1,14 @@
 /*
  *     Hic Est Leo -- Universal Dictionaries
  *
- *     (c) 2014 Martin Mares <mj@ucw.cz>
+ *     (c) 2014--2015 Martin Mares <mj@ucw.cz>
  */
 
-#include <ucw/lib.h>
-#include <ucw/mempool.h>
-
 #include "leo.h"
 #include "dict.h"
 
+#include <ucw/mempool.h>
+
 struct kv_map {
   u32 id;
   char *name;
@@ -18,6 +17,7 @@ struct kv_map {
 #define HASH_NODE struct kv_map
 #define HASH_PREFIX(x) kv_map_##x
 #define HASH_KEY_STRING name
+#define HASH_WANT_FIND
 #define HASH_WANT_LOOKUP
 #define HASH_AUTO_POOL 4096
 #define HASH_ZERO_FILL
@@ -61,3 +61,9 @@ u32 dict_encode(struct dict *d, const char *key)
   *GARY_PUSH(d->names) = k->name;
   return k->id;
 }
+
+u32 dict_encode_if_exists(struct dict *d, const char *key)
+{
+  struct kv_map *k = kv_map_find(d->hash, (char *) key);
+  return k ? k->id : 0;
+}