]> git.sur5r.net Git - glabels/blob - glabels2/src/merge.h
Initial revision
[glabels] / glabels2 / src / merge.h
1 /*
2  *  (GLABELS) Label and Business Card Creation program for GNOME
3  *
4  *  merge.h:  document merge module header file
5  *
6  *  Copyright (C) 2002  Jim Evins <evins@snaught.com>.
7  *
8  *  This program is free software; you can redistribute it and/or modify
9  *  it under the terms of the GNU General Public License as published by
10  *  the Free Software Foundation; either version 2 of the License, or
11  *  (at your option) any later version.
12  *
13  *  This program is distributed in the hope that it will be useful,
14  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  *  GNU General Public License for more details.
17  *
18  *  You should have received a copy of the GNU General Public License
19  *  along with this program; if not, write to the Free Software
20  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
21  */
22 #ifndef __MERGE_H__
23 #define __MERGE_H__
24
25 #include <glib.h>
26
27 typedef enum {
28
29         GL_MERGE_NONE,
30         GL_MERGE_TEXT_TAB,
31         GL_MERGE_TEXT_COMMA,
32         GL_MERGE_TEXT_COLON,
33
34         GL_MERGE_N_TYPES
35 } glMergeType;
36
37 typedef struct {
38         glMergeType  type;
39         gchar       *src;
40         GList       *field_defs;
41 } glMerge;
42
43 typedef struct {
44         gchar *key;
45         gchar *loc;
46 } glMergeFieldDefinition;
47
48 typedef struct {
49         gchar *loc;
50         gchar *value;
51 } glMergeRawField;
52
53 typedef struct {
54         gchar *key;
55         gchar *value;
56 } glMergeField;
57
58 typedef struct {
59         gboolean select_flag;
60         GList    *field_list;  /* List of glMergeFields */
61 } glMergeRecord;
62
63 typedef struct {
64         glMergeType type;
65         GList *field_defs;
66         gpointer handle;
67 } glMergeInput;
68
69 extern void
70  gl_merge_init (void);
71
72 extern glMerge *gl_merge_new (void);
73 extern glMerge *gl_merge_dup (glMerge *orig);
74 extern void    gl_merge_free (glMerge **merge);
75
76 extern glMergeType gl_merge_text_to_type (gchar * text);
77 extern gchar *gl_merge_type_to_text (glMergeType type);
78 extern glMergeType gl_merge_long_text_to_type (gchar * text);
79 extern gchar *gl_merge_type_to_long_text (glMergeType type);
80 extern GList *gl_merge_get_long_texts_list (void);
81 extern void gl_merge_free_long_texts_list (GList ** list);
82
83 extern GList *gl_merge_dup_field_def_list (GList * field_defs);
84 extern void   gl_merge_free_field_def_list (GList ** field_defs);
85
86 extern GList *gl_merge_get_key_list (GList * field_defs);
87 extern void gl_merge_free_key_list (GList ** keys);
88
89 extern gchar *gl_merge_find_key (GList * field_defs, gchar * loc);
90
91 extern glMergeInput *gl_merge_open (glMergeType type, GList * field_defs,
92                                     gchar * src);
93 extern void gl_merge_close (glMergeInput * input);
94 extern glMergeRecord *gl_merge_get_record (glMergeInput * input);
95 extern GList *gl_merge_get_raw_record (glMergeInput * input);
96 extern void gl_merge_free_record (glMergeRecord ** record);
97 extern void gl_merge_free_raw_record (GList ** record);
98 extern gchar *gl_merge_eval_key (gchar * key, glMergeRecord * record);
99
100 extern GList *gl_merge_read_data (glMergeType type, GList * field_defs,
101                                   gchar * src);
102 extern void gl_merge_free_data (GList **record_list);
103 extern gint gl_merge_count_records (GList *record_list);
104
105 #endif