diff options
Diffstat (limited to 'e-util/e-sorter-array.h')
-rw-r--r-- | e-util/e-sorter-array.h | 140 |
1 files changed, 77 insertions, 63 deletions
diff --git a/e-util/e-sorter-array.h b/e-util/e-sorter-array.h index a80534c0e5..5dc20812e4 100644 --- a/e-util/e-sorter-array.h +++ b/e-util/e-sorter-array.h @@ -1,78 +1,92 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* +/* * e-sorter-array.h - * Copyright 2000, 2001, Ximian, Inc. * - * Authors: - * Chris Lahey <clahey@ximian.com> + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) version 3. * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License, version 2, as published by the Free Software Foundation. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with the program; if not, see <http://www.gnu.org/licenses/> * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - * 02111-1307, USA. */ -#ifndef _E_SORTER_ARRAY_H_ -#define _E_SORTER_ARRAY_H_ +#if !defined (__E_UTIL_H_INSIDE__) && !defined (LIBEUTIL_COMPILATION) +#error "Only <e-util/e-util.h> should be included directly." +#endif + +#ifndef E_SORTER_ARRAY_H +#define E_SORTER_ARRAY_H -#include <gtk/gtkobject.h> -#include <gal/util/e-sorter.h> -#include <glib.h> -#include <libgnome/gnome-defs.h> +#include <e-util/e-sorter.h> -BEGIN_GNOME_DECLS +/* Standard GObject macros */ +#define E_TYPE_SORTER_ARRAY \ + (e_sorter_array_get_type ()) +#define E_SORTER_ARRAY(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST \ + ((obj), E_TYPE_SORTER_ARRAY, ESorterArray)) +#define E_SORTER_ARRAY_CLASS(cls) \ + (G_TYPE_CHECK_CLASS_CAST \ + ((cls), E_TYPE_SORTER_ARRAY, ESorterArrayClass)) +#define E_IS_SORTER_ARRAY(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE \ + ((obj), E_TYPE_SORTER_ARRAY)) +#define E_IS_SORTER_ARRAY_CLASS(cls) \ + (G_TYPE_CHECK_CLASS_TYPE \ + ((cls), E_TYPE_SORTER_ARRAY)) +#define E_SORTER_ARRAY_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS \ + ((obj), E_TYPE_SORTER_ARRAY, ESorterArrayClass)) -#define E_SORTER_ARRAY_TYPE (e_sorter_array_get_type ()) -#define E_SORTER_ARRAY(o) (GTK_CHECK_CAST ((o), E_SORTER_ARRAY_TYPE, ESorterArray)) -#define E_SORTER_ARRAY_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_SORTER_ARRAY_TYPE, ESorterArrayClass)) -#define E_IS_SORTER_ARRAY(o) (GTK_CHECK_TYPE ((o), E_SORTER_ARRAY_TYPE)) -#define E_IS_SORTER_ARRAY_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_SORTER_ARRAY_TYPE)) +G_BEGIN_DECLS -#ifndef _E_COMPARE_ROWS_FUNC_H_ -#define _E_COMPARE_ROWS_FUNC_H_ -typedef int (*ECompareRowsFunc) (int row1, - int row2, +typedef struct _ESorterArray ESorterArray; +typedef struct _ESorterArrayClass ESorterArrayClass; + +typedef gint (*ECompareRowsFunc) (gint row1, + gint row2, + GHashTable *cmp_cache, gpointer closure); -#endif -typedef struct { - ESorter base; +typedef GHashTable * (*ECreateCmpCacheFunc) (gpointer closure); + +struct _ESorterArray { + GObject parent; + GHashTable *cmp_cache; + ECreateCmpCacheFunc create_cmp_cache; ECompareRowsFunc compare; - gpointer closure; - - /* If needs_sorting is 0, then model_to_sorted and sorted_to_model are no-ops. */ - int *sorted; - int *backsorted; - - int rows; -} ESorterArray; - -typedef struct { - ESorterClass parent_class; -} ESorterArrayClass; - -GtkType e_sorter_array_get_type (void); -ESorterArray *e_sorter_array_construct (ESorterArray *sorter, - ECompareRowsFunc compare, - gpointer closure); -ESorterArray *e_sorter_array_new (ECompareRowsFunc compare, - gpointer closure); -void e_sorter_array_clean (ESorterArray *esa); -void e_sorter_array_set_count (ESorterArray *esa, - int count); -void e_sorter_array_append (ESorterArray *esa, - int count); - -END_GNOME_DECLS - -#endif /* _E_SORTER_ARRAY_H_ */ + gpointer closure; + + /* If needs_sorting is 0, then + * model_to_sorted and sorted_to_model are no-ops. */ + gint *sorted; + gint *backsorted; + + gint rows; +}; + +struct _ESorterArrayClass { + GObjectClass parent_class; +}; + +GType e_sorter_array_get_type (void) G_GNUC_CONST; +ESorterArray * e_sorter_array_new (ECreateCmpCacheFunc create_cmp_cache, + ECompareRowsFunc compare, + gpointer closure); +void e_sorter_array_clean (ESorterArray *sorter); +void e_sorter_array_set_count + (ESorterArray *sorter, + gint count); +void e_sorter_array_append (ESorterArray *sorter, + gint count); + +G_END_DECLS + +#endif /* E_SORTER_ARRAY_H */ |