1 | /* GLIB - Library of useful routines for C programming |
---|---|

2 | * Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 |

3 | * Soeren Sandmann (sandmann@daimi.au.dk) |

4 | * |

5 | * This library is free software; you can redistribute it and/or |

6 | * modify it under the terms of the GNU Lesser General Public |

7 | * License as published by the Free Software Foundation; either |

8 | * version 2 of the License, or (at your option) any later version. |

9 | * |

10 | * This library is distributed in the hope that it will be useful, |

11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |

12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |

13 | * Lesser General Public License for more details. |

14 | * |

15 | * You should have received a copy of the GNU Lesser General Public |

16 | * License along with this library; if not, see <http://www.gnu.org/licenses/>. |

17 | */ |

18 | |

19 | #ifndef __G_SEQUENCE_H__ |

20 | #define __G_SEQUENCE_H__ |

21 | |

22 | #if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) |

23 | #error "Only <glib.h> can be included directly." |

24 | #endif |

25 | |

26 | #include <glib/gtypes.h> |

27 | |

28 | G_BEGIN_DECLS |

29 | |

30 | typedef struct _GSequence GSequence; |

31 | typedef struct _GSequenceNode GSequenceIter; |

32 | |

33 | typedef gint (* GSequenceIterCompareFunc) (GSequenceIter *a, |

34 | GSequenceIter *b, |

35 | gpointer data); |

36 | |

37 | |

38 | /* GSequence */ |

39 | GLIB_AVAILABLE_IN_ALL |

40 | GSequence * g_sequence_new (GDestroyNotify data_destroy); |

41 | GLIB_AVAILABLE_IN_ALL |

42 | void g_sequence_free (GSequence *seq); |

43 | GLIB_AVAILABLE_IN_ALL |

44 | gint g_sequence_get_length (GSequence *seq); |

45 | GLIB_AVAILABLE_IN_ALL |

46 | void g_sequence_foreach (GSequence *seq, |

47 | GFunc func, |

48 | gpointer user_data); |

49 | GLIB_AVAILABLE_IN_ALL |

50 | void g_sequence_foreach_range (GSequenceIter *begin, |

51 | GSequenceIter *end, |

52 | GFunc func, |

53 | gpointer user_data); |

54 | GLIB_AVAILABLE_IN_ALL |

55 | void g_sequence_sort (GSequence *seq, |

56 | GCompareDataFunc cmp_func, |

57 | gpointer cmp_data); |

58 | GLIB_AVAILABLE_IN_ALL |

59 | void g_sequence_sort_iter (GSequence *seq, |

60 | GSequenceIterCompareFunc cmp_func, |

61 | gpointer cmp_data); |

62 | GLIB_AVAILABLE_IN_2_48 |

63 | gboolean g_sequence_is_empty (GSequence *seq); |

64 | |

65 | |

66 | /* Getting iters */ |

67 | GLIB_AVAILABLE_IN_ALL |

68 | GSequenceIter *g_sequence_get_begin_iter (GSequence *seq); |

69 | GLIB_AVAILABLE_IN_ALL |

70 | GSequenceIter *g_sequence_get_end_iter (GSequence *seq); |

71 | GLIB_AVAILABLE_IN_ALL |

72 | GSequenceIter *g_sequence_get_iter_at_pos (GSequence *seq, |

73 | gint pos); |

74 | GLIB_AVAILABLE_IN_ALL |

75 | GSequenceIter *g_sequence_append (GSequence *seq, |

76 | gpointer data); |

77 | GLIB_AVAILABLE_IN_ALL |

78 | GSequenceIter *g_sequence_prepend (GSequence *seq, |

79 | gpointer data); |

80 | GLIB_AVAILABLE_IN_ALL |

81 | GSequenceIter *g_sequence_insert_before (GSequenceIter *iter, |

82 | gpointer data); |

83 | GLIB_AVAILABLE_IN_ALL |

84 | void g_sequence_move (GSequenceIter *src, |

85 | GSequenceIter *dest); |

86 | GLIB_AVAILABLE_IN_ALL |

87 | void g_sequence_swap (GSequenceIter *a, |

88 | GSequenceIter *b); |

89 | GLIB_AVAILABLE_IN_ALL |

90 | GSequenceIter *g_sequence_insert_sorted (GSequence *seq, |

91 | gpointer data, |

92 | GCompareDataFunc cmp_func, |

93 | gpointer cmp_data); |

94 | GLIB_AVAILABLE_IN_ALL |

95 | GSequenceIter *g_sequence_insert_sorted_iter (GSequence *seq, |

96 | gpointer data, |

97 | GSequenceIterCompareFunc iter_cmp, |

98 | gpointer cmp_data); |

99 | GLIB_AVAILABLE_IN_ALL |

100 | void g_sequence_sort_changed (GSequenceIter *iter, |

101 | GCompareDataFunc cmp_func, |

102 | gpointer cmp_data); |

103 | GLIB_AVAILABLE_IN_ALL |

104 | void g_sequence_sort_changed_iter (GSequenceIter *iter, |

105 | GSequenceIterCompareFunc iter_cmp, |

106 | gpointer cmp_data); |

107 | GLIB_AVAILABLE_IN_ALL |

108 | void g_sequence_remove (GSequenceIter *iter); |

109 | GLIB_AVAILABLE_IN_ALL |

110 | void g_sequence_remove_range (GSequenceIter *begin, |

111 | GSequenceIter *end); |

112 | GLIB_AVAILABLE_IN_ALL |

113 | void g_sequence_move_range (GSequenceIter *dest, |

114 | GSequenceIter *begin, |

115 | GSequenceIter *end); |

116 | GLIB_AVAILABLE_IN_ALL |

117 | GSequenceIter *g_sequence_search (GSequence *seq, |

118 | gpointer data, |

119 | GCompareDataFunc cmp_func, |

120 | gpointer cmp_data); |

121 | GLIB_AVAILABLE_IN_ALL |

122 | GSequenceIter *g_sequence_search_iter (GSequence *seq, |

123 | gpointer data, |

124 | GSequenceIterCompareFunc iter_cmp, |

125 | gpointer cmp_data); |

126 | GLIB_AVAILABLE_IN_ALL |

127 | GSequenceIter *g_sequence_lookup (GSequence *seq, |

128 | gpointer data, |

129 | GCompareDataFunc cmp_func, |

130 | gpointer cmp_data); |

131 | GLIB_AVAILABLE_IN_ALL |

132 | GSequenceIter *g_sequence_lookup_iter (GSequence *seq, |

133 | gpointer data, |

134 | GSequenceIterCompareFunc iter_cmp, |

135 | gpointer cmp_data); |

136 | |

137 | |

138 | /* Dereferencing */ |

139 | GLIB_AVAILABLE_IN_ALL |

140 | gpointer g_sequence_get (GSequenceIter *iter); |

141 | GLIB_AVAILABLE_IN_ALL |

142 | void g_sequence_set (GSequenceIter *iter, |

143 | gpointer data); |

144 | |

145 | /* Operations on GSequenceIter * */ |

146 | GLIB_AVAILABLE_IN_ALL |

147 | gboolean g_sequence_iter_is_begin (GSequenceIter *iter); |

148 | GLIB_AVAILABLE_IN_ALL |

149 | gboolean g_sequence_iter_is_end (GSequenceIter *iter); |

150 | GLIB_AVAILABLE_IN_ALL |

151 | GSequenceIter *g_sequence_iter_next (GSequenceIter *iter); |

152 | GLIB_AVAILABLE_IN_ALL |

153 | GSequenceIter *g_sequence_iter_prev (GSequenceIter *iter); |

154 | GLIB_AVAILABLE_IN_ALL |

155 | gint g_sequence_iter_get_position (GSequenceIter *iter); |

156 | GLIB_AVAILABLE_IN_ALL |

157 | GSequenceIter *g_sequence_iter_move (GSequenceIter *iter, |

158 | gint delta); |

159 | GLIB_AVAILABLE_IN_ALL |

160 | GSequence * g_sequence_iter_get_sequence (GSequenceIter *iter); |

161 | |

162 | |

163 | /* Search */ |

164 | GLIB_AVAILABLE_IN_ALL |

165 | gint g_sequence_iter_compare (GSequenceIter *a, |

166 | GSequenceIter *b); |

167 | GLIB_AVAILABLE_IN_ALL |

168 | GSequenceIter *g_sequence_range_get_midpoint (GSequenceIter *begin, |

169 | GSequenceIter *end); |

170 | |

171 | G_END_DECLS |

172 | |

173 | #endif /* __G_SEQUENCE_H__ */ |

174 |