Check for redundant resizes. Keep the alternate screen buffer size the
[vte.git] / src / ring.h
1 /*
2  * Copyright (C) 2002 Red Hat, Inc.
3  *
4  * This is free software; you can redistribute it and/or modify it under
5  * the terms of the GNU Library General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * General Public License for more details.
13  *
14  * You should have received a copy of the GNU Library General Public
15  * License along with this program; if not, write to the Free Software
16  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17  */
18
19 #ifndef vte_ring_h_included
20 #define vte_ring_h_included
21
22 #ident "$Id$"
23
24 #include <glib.h>
25
26 typedef struct _VteRing VteRing;
27 typedef void (*VteRingFreeFunc)(gpointer freeing, gpointer data);
28
29 #define vte_ring_index(ring, cast, position) (cast) vte_ring_at(ring, position)
30 VteRing *vte_ring_new(long max_elements, VteRingFreeFunc free, gpointer data);
31 void vte_ring_insert(VteRing *ring, long position, gpointer data);
32 void vte_ring_remove(VteRing *ring, long position, gboolean free_element);
33 gpointer vte_ring_at(VteRing *ring, long position);
34 void vte_ring_append(VteRing *ring, gpointer data);
35 long vte_ring_delta(VteRing *ring);
36 long vte_ring_length(VteRing *ring);
37 long vte_ring_max(VteRing *ring);
38 long vte_ring_next(VteRing *ring);
39 gboolean vte_ring_contains(VteRing *ring, long position);
40 void vte_ring_free(VteRing *ring, gboolean free_elements);
41
42 #endif