2013-05-09 00:49:45 +02:00
|
|
|
/*
|
|
|
|
* generator.h: dictionary generator
|
|
|
|
*
|
|
|
|
* Nothing fancy. Just something moved out off the `stardict' test to be
|
|
|
|
* conveniently reused by the included tools.
|
|
|
|
*
|
2020-09-03 23:17:17 +02:00
|
|
|
* Copyright (c) 2013 - 2020, Přemysl Eric Janouch <p@janouch.name>
|
2013-05-09 00:49:45 +02:00
|
|
|
*
|
|
|
|
* Permission to use, copy, modify, and/or distribute this software for any
|
2018-06-24 05:23:31 +02:00
|
|
|
* purpose with or without fee is hereby granted.
|
2013-05-09 00:49:45 +02:00
|
|
|
*
|
|
|
|
* 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
|
|
|
|
|
2015-02-26 23:26:52 +01:00
|
|
|
/// Simplifies the task of creating a StarDict dictionary.
|
2013-05-09 00:49:45 +02:00
|
|
|
typedef struct generator Generator;
|
|
|
|
|
|
|
|
struct generator
|
|
|
|
{
|
2015-02-26 23:26:52 +01:00
|
|
|
StardictInfo * info; ///< Dictionary information, fill it in
|
2013-05-09 00:49:45 +02:00
|
|
|
|
2015-02-26 23:26:52 +01:00
|
|
|
goffset entry_mark; ///< Marks the entry's start offset
|
2013-05-09 00:49:45 +02:00
|
|
|
|
2015-02-26 23:26:52 +01:00
|
|
|
GFileOutputStream * dict_stream; ///< Dictionary stream
|
|
|
|
GDataOutputStream * dict_data; ///< Dictionary data stream wrapper
|
2013-05-09 00:49:45 +02:00
|
|
|
|
2015-02-26 23:26:52 +01:00
|
|
|
GFileOutputStream * idx_stream; ///< Index file stream
|
|
|
|
GDataOutputStream * idx_data; ///< Index file data stream wrapper
|
2013-05-09 00:49:45 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
Generator *generator_new (const gchar *base, GError **error);
|
|
|
|
gboolean generator_finish (Generator *self, GError **error);
|
|
|
|
void generator_free (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);
|
2020-09-03 23:17:17 +02:00
|
|
|
|
|
|
|
void generator_begin_entry (Generator *self);
|
|
|
|
gboolean generator_write_fields (Generator *self,
|
|
|
|
const GList *fields, GError **error);
|
2013-05-09 00:49:45 +02:00
|
|
|
gboolean generator_finish_entry (Generator *self,
|
|
|
|
const gchar *word, GError **error);
|
|
|
|
|
2015-02-26 23:26:52 +01:00
|
|
|
#endif // ! GENERATOR_H
|