3 * Copyright (C) 2002-2009 Jim Evins <evins@snaught.com>.
5 * This file is part of gLabels.
7 * gLabels is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * gLabels is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with gLabels. If not, see <http://www.gnu.org/licenses/>.
24 #include <glib-object.h>
29 GL_MERGE_SRC_IS_FIXED,
40 GList *field_list; /* List of glMergeFields */
44 #define GL_TYPE_MERGE (gl_merge_get_type ())
45 #define GL_MERGE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GL_TYPE_MERGE, glMerge))
46 #define GL_MERGE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GL_TYPE_MERGE, glMergeClass))
47 #define GL_IS_MERGE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GL_TYPE_MERGE))
48 #define GL_IS_MERGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GL_TYPE_MERGE))
49 #define GL_MERGE_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), GL_TYPE_MERGE, glMergeClass))
52 typedef struct _glMerge glMerge;
53 typedef struct _glMergeClass glMergeClass;
55 typedef struct _glMergePrivate glMergePrivate;
64 struct _glMergeClass {
65 GObjectClass parent_class;
67 GList *(*get_key_list) (const glMerge *merge);
69 gchar *(*get_primary_key) (const glMerge *merge);
71 void (*open) (glMerge *merge);
73 void (*close) (glMerge *merge);
75 glMergeRecord *(*get_record) (glMerge *merge);
77 void (*copy) (glMerge *dst_merge,
78 const glMerge *src_merge);
82 void gl_merge_register_backend (GType type,
85 glMergeSrcType src_type,
86 const gchar *first_arg_name,
89 GList *gl_merge_get_descriptions (void);
91 void gl_merge_free_descriptions (GList **descriptions);
93 gchar *gl_merge_description_to_name (gchar *description);
95 GType gl_merge_get_type (void) G_GNUC_CONST;
97 glMerge *gl_merge_new (const gchar *name);
99 glMerge *gl_merge_dup (const glMerge *orig);
101 gchar *gl_merge_get_name (const glMerge *merge);
103 gchar *gl_merge_get_description (const glMerge *merge);
105 glMergeSrcType gl_merge_get_src_type (const glMerge *merge);
107 void gl_merge_set_src (glMerge *merge,
110 gchar *gl_merge_get_src (const glMerge *merge);
112 GList *gl_merge_get_key_list (const glMerge *merge);
114 void gl_merge_free_key_list (GList **keys);
116 gchar *gl_merge_get_primary_key (const glMerge *merge);
118 gchar *gl_merge_eval_key (const glMergeRecord *record,
121 const GList *gl_merge_get_record_list (const glMerge *merge);
123 gint gl_merge_get_record_count (const glMerge *merge);
132 * Local Variables: -- emacs
134 * c-basic-offset: 8 -- emacs
135 * tab-width: 8 -- emacs
136 * indent-tabs-mode: nil -- emacs