From bcf933fb9e8cc327a0c095b3456360a3ebf9fe6e Mon Sep 17 00:00:00 2001 From: Přemysl Janouch Date: Thu, 9 May 2013 00:49:45 +0200 Subject: Move dictionary generation to its own module --- src/generator.h | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/generator.h (limited to 'src/generator.h') diff --git a/src/generator.h b/src/generator.h new file mode 100644 index 0000000..bc0b09b --- /dev/null +++ b/src/generator.h @@ -0,0 +1,56 @@ +/* + * generator.h: dictionary generator + * + * Nothing fancy. Just something moved out off the `stardict' test to be + * conveniently reused by the included tools. + * + * Copyright (c) 2013, Přemysl Janouch + * All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ + +#ifndef GENERATOR_H +#define GENERATOR_H + +/** Simplifies the task of creating a StarDict dictionary. */ +typedef struct generator Generator; + +struct generator +{ + StardictInfo * info; //!< Dictionary information, fill it in + + goffset entry_mark; //!< Marks the entry's start offset + + GFileOutputStream * dict_stream; //!< Dictionary stream + GDataOutputStream * dict_data; //!< Dictionary data stream wrapper + + GFileOutputStream * idx_stream; //!< Index file stream + GDataOutputStream * idx_data; //!< Index file data stream wrapper +}; + +Generator *generator_new (const gchar *base, GError **error); +gboolean generator_finish (Generator *self, GError **error); +void generator_free (Generator *self); + +void generator_begin_entry (Generator *self); +gboolean generator_write_type (Generator *self, gchar type, GError **error); +gboolean generator_write_raw (Generator *self, + gpointer data, gsize data_size, gboolean mark_end, GError **error); +gboolean generator_write_string (Generator *self, + const gchar *s, gboolean mark_end, GError **error); +gboolean generator_finish_entry (Generator *self, + const gchar *word, GError **error); + +#endif /* ! GENERATOR_H */ -- cgit v1.2.3-70-g09d2