Mostly changes to GArray code. See ChangeLog.

This commit is contained in:
Manish Singh
1998-09-02 07:44:02 +00:00
parent b420fa8418
commit 7401460a60
18 changed files with 874 additions and 600 deletions

View File

@@ -1,3 +1,33 @@
Tue Sep 1 23:46:31 1998 Josh MacDonald <jmacd@axis.hip.berkeley.edu>
* testglib.c (main): Update the array tests. Reduce the number of
iterations for the prepend test from 10000 to 100 since it is
O(n^2) and was taking longer than I would like to wait.
* garray.c: I've worked on the GArray interface, mostly. It was
seriously broken before and I hate to do it, but this is going to
break some code. It is important to do this now, because more and
more people are starting to use glib and the interface was both
broken and inconsistent. First, rename the _truncate functions of
both the GArray and GPtrArray classes to _set_size, since this
function can also be used to extend the arrays. GArray now
accepts two more initialization arguments: clear and element_size.
Instead of providing the type to each access function, the array
now stores the element size. Clear, if set, causes the library to
zero element's memory as the array expands. The major broken-ness
here was that array->len was in bytes, not elements. Now, since
the array knows its element size, array->len is correct and I have
removed the g_array_length macro. The only macro which now
accepts the type as an argument is g_array_index, which casts the
element to the right type--this interface does not change. The
append and prepend functions simply need the types removed.
g_ptr_array_remove_index now returns the removed element.
* gprimes.c (g_spaced_primes_closest): Move this function out of
ghash.c and rename it from g_hash_closest_prime. Fix the primes
so that they are actually prime (they weren't all -- isn't that
nice?).
Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org> Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
@@ -26,8 +56,8 @@ Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h: provide a definition for G_VA_COPY. * glib.h: provide a definition for G_VA_COPY.
* glib.h: * glib.h:
* gmessages.c: * gmessages.c:
(g_logv): (g_logv):
(g_vsnprintf): (g_vsnprintf):
pass va_lists by value, not by reference, since this causes problems pass va_lists by value, not by reference, since this causes problems
on platforms that implement va_list as as arrays. internaly, use on platforms that implement va_list as as arrays. internaly, use
@@ -109,7 +139,7 @@ Sun Aug 16 20:28:27 1998 Tim Janik <timj@gtk.org>
gint64 itself, packages that need gint64 should test for this gint64 itself, packages that need gint64 should test for this
themselves. themselves.
* glib.h: * glib.h:
* gutils.c: added a new function g_vsnprintf(). * gutils.c: added a new function g_vsnprintf().
Sun Aug 16 Elliot Lee Sun Aug 16 Elliot Lee
@@ -148,13 +178,13 @@ Fri Aug 13 14:23:37 1998 Tim Janik <timj@gtk.org>
in other required places. in other required places.
* gnode.c: * gnode.c:
(g_node_prepend): (g_node_prepend):
(g_node_insert_before): (g_node_insert_before):
(g_node_insert): (g_node_insert):
(g_node_append_data): (g_node_append_data):
(g_node_prepend_data): (g_node_prepend_data):
(g_node_insert_data_before): (g_node_insert_data_before):
(g_node_insert_data): (g_node_insert_data):
(g_node_append): (g_node_append):
return (node), so these macros/functions can be usefully chained with return (node), so these macros/functions can be usefully chained with
g_node_new(). g_node_new().
@@ -211,7 +241,7 @@ Tue Aug 4 15:17:54 1998 Tim Janik <timj@gtk.org>
Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org> Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gnode.c: change order of gpointer data; field in struct _GNode to * gnode.c: change order of gpointer data; field in struct _GNode to
be partly binary compatible with GList and GSList. be partly binary compatible with GList and GSList.
@@ -228,7 +258,7 @@ Fri Jul 31 09:08:16 1998 Tim Janik <timj@gtk.org>
* Makefile.am: compile gnode.c. * Makefile.am: compile gnode.c.
* glib.h: * glib.h:
* gnode.c: added implementation of n-way trees. * gnode.c: added implementation of n-way trees.
* gtree.c (g_tree_traverse): added a warning to the switch() statement * gtree.c (g_tree_traverse): added a warning to the switch() statement
@@ -245,14 +275,14 @@ Mon Jul 27 01:02:27 1998 Tim Janik <timj@gtk.org>
implementation. implementation.
Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu> Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu>
* glib.h: gtime changed to g_time. gtime is used in * glib.h: gtime changed to g_time. gtime is used in
/usr/include/time.h in NetBSD, causing multiple headaches. /usr/include/time.h in NetBSD, causing multiple headaches.
If this isn't the right way of fixing it.... ;) If this isn't the right way of fixing it.... ;)
Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org> Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gscanner.c: new functions to make a scanner scope sensitive wrt * gscanner.c: new functions to make a scanner scope sensitive wrt
symbol lookups. symbol lookups.
g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol, g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol,
@@ -273,7 +303,7 @@ Tue Jul 14 09:05:18 1998 Tim Janik <timj@gtk.org>
Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org> Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gutils.h: added a bunch of utility/wrapper functions: * gutils.h: added a bunch of utility/wrapper functions:
g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(), g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(),
g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname(). g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname().
@@ -396,7 +426,7 @@ Thu Jun 11 04:15:31 1998 Tim Janik <timj@gtk.org>
Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org> Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org>
* Makefile.am glib.m4 configure.in: * Makefile.am glib.m4 configure.in:
Moved out from GTK+; added AM_PATH_GLIB macro. Moved out from GTK+; added AM_PATH_GLIB macro.
Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org> Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org>
@@ -411,7 +441,7 @@ Sat May 23 19:00:01 1998 Owen Taylor <otaylor@gtk.org>
[ Combination of: [ Combination of:
gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>) gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>)
gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ] gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ]
* glib.h ghash.c gstring.c gdataset.c gutils.c: * glib.h ghash.c gstring.c gdataset.c gutils.c:
- Added new typedef g_const_pointer; expunged all incorrect - Added new typedef g_const_pointer; expunged all incorrect
uses of 'const gpointer'. uses of 'const gpointer'.
@@ -433,7 +463,7 @@ Sat Jun 6 14:09:22 PDT 1998 Manish Singh <yosh@gimp.org>
Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org> Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org>
* glib.h (g_chunk_new0): convenience macro, for allocating small chunks * glib.h (g_chunk_new0): convenience macro, for allocating small chunks
like g_chunk_new() with additional 0 initialization. like g_chunk_new() with additional 0 initialization.
Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org> Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org>
@@ -451,7 +481,7 @@ Tue May 26 18:30:06 1998 Tim Janik <timj@gtk.org>
Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org> Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org>
(Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch) (Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch)
* gutils.c: Restored a missing prototype for g_vsprintf. * gutils.c: Restored a missing prototype for g_vsprintf.
Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org> Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org>
@@ -506,15 +536,15 @@ Tue May 12 19:22:58 1998 Owen Taylor <otaylor@gtk.org>
* glib/glib.h: Added macros G[U]INT_TO_POINTER() and * glib/glib.h: Added macros G[U]INT_TO_POINTER() and
GPOINTER_TO_[U]INT for storing small integers integers GPOINTER_TO_[U]INT for storing small integers integers
inside pointers. inside pointers.
* glib/testglib.c: Print sizeof() results * glib/testglib.c: Print sizeof() results
as g_print("%ld", (glong)sizeof(foo)), to deal with as g_print("%ld", (glong)sizeof(foo)), to deal with
size_t being long on Alpha's. size_t being long on Alpha's.
Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org> Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org>
(James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch) (James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch)
* glib.h gstring.c gmessages.c: Added some missing * glib.h gstring.c gmessages.c: Added some missing
const to arguments. const to arguments.
@@ -611,8 +641,8 @@ Fri May 1 16:36:08 1998 Owen Taylor <otaylor@gtk.org>
Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org> Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org>
* gstring.c : Check arguments more carefully, * gstring.c : Check arguments more carefully,
(gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de) (gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de)
Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu> Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu>
@@ -638,7 +668,7 @@ Fri Apr 3 18:05:45 1998 Owen Taylor <owt1@cornell.edu>
* testglib.c: Removed literal german from strings * testglib.c: Removed literal german from strings
to appease SGI compiler. to appease SGI compiler.
Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu> Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu>
* configure.in glib glibconfig.h.in: Add test for atexit/on_exit - * configure.in glib glibconfig.h.in: Add test for atexit/on_exit -
@@ -689,7 +719,7 @@ Mon Mar 2 17:51:18 1998 Owen Taylor <owt1@cornell.edu>
to take gchar* not guchar* to take gchar* not guchar*
* testglib.c: Remove trailing ; after functions * testglib.c: Remove trailing ; after functions
Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu> Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu>
* glib.h gstring.c: Added g_string_insert[_c]() * glib.h gstring.c: Added g_string_insert[_c]()
@@ -761,7 +791,7 @@ Sat Jan 17 23:52:40 1998 Owen Taylor <owt1@cornell.edu>
renamed g_string_equal => g_str_equal renamed g_string_equal => g_str_equal
renamed g_string_hash => g_str_hash renamed g_string_hash => g_str_hash
And const corrected. Old functions left in for now. And const corrected. Old functions left in for now.
Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net> Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net>
* gutils.c (g_strerror): changed message for EAGAIN from * gutils.c (g_strerror): changed message for EAGAIN from
@@ -789,8 +819,8 @@ Sat Jan 3 20:23:25 1998 Owen Taylor <owt1@cornell.edu>
Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net> Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net>
* glib_pre1.h: * glib_pre1.h:
* glib_pre2.h: * glib_pre2.h:
* glib.h: reverted glibconfig.h and glib.h files back to the * glib.h: reverted glibconfig.h and glib.h files back to the
way they were before my ugly hack. way they were before my ugly hack.
@@ -822,8 +852,8 @@ Mon Dec 15 19:33:58 1997 Tim Janik <timj@psynet.net>
Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net> Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
* glib_pre1.h: * glib_pre1.h:
* glib_pre2.h: * glib_pre2.h:
* glib.h: this file now gets concatenated by makeglib_h from * glib.h: this file now gets concatenated by makeglib_h from
glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got
created by configure (done by Jay Painter). created by configure (done by Jay Painter).
@@ -831,7 +861,7 @@ Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
* glib_pre2.h: the g_assert*() and g_return_*_fail() macros * glib_pre2.h: the g_assert*() and g_return_*_fail() macros
are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts
when used within if (...) g_macro(); else ... conditionals. when used within if (...) g_macro(); else ... conditionals.
Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU> Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU>
* glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to * glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to

View File

@@ -1,3 +1,33 @@
Tue Sep 1 23:46:31 1998 Josh MacDonald <jmacd@axis.hip.berkeley.edu>
* testglib.c (main): Update the array tests. Reduce the number of
iterations for the prepend test from 10000 to 100 since it is
O(n^2) and was taking longer than I would like to wait.
* garray.c: I've worked on the GArray interface, mostly. It was
seriously broken before and I hate to do it, but this is going to
break some code. It is important to do this now, because more and
more people are starting to use glib and the interface was both
broken and inconsistent. First, rename the _truncate functions of
both the GArray and GPtrArray classes to _set_size, since this
function can also be used to extend the arrays. GArray now
accepts two more initialization arguments: clear and element_size.
Instead of providing the type to each access function, the array
now stores the element size. Clear, if set, causes the library to
zero element's memory as the array expands. The major broken-ness
here was that array->len was in bytes, not elements. Now, since
the array knows its element size, array->len is correct and I have
removed the g_array_length macro. The only macro which now
accepts the type as an argument is g_array_index, which casts the
element to the right type--this interface does not change. The
append and prepend functions simply need the types removed.
g_ptr_array_remove_index now returns the removed element.
* gprimes.c (g_spaced_primes_closest): Move this function out of
ghash.c and rename it from g_hash_closest_prime. Fix the primes
so that they are actually prime (they weren't all -- isn't that
nice?).
Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org> Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
@@ -26,8 +56,8 @@ Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h: provide a definition for G_VA_COPY. * glib.h: provide a definition for G_VA_COPY.
* glib.h: * glib.h:
* gmessages.c: * gmessages.c:
(g_logv): (g_logv):
(g_vsnprintf): (g_vsnprintf):
pass va_lists by value, not by reference, since this causes problems pass va_lists by value, not by reference, since this causes problems
on platforms that implement va_list as as arrays. internaly, use on platforms that implement va_list as as arrays. internaly, use
@@ -109,7 +139,7 @@ Sun Aug 16 20:28:27 1998 Tim Janik <timj@gtk.org>
gint64 itself, packages that need gint64 should test for this gint64 itself, packages that need gint64 should test for this
themselves. themselves.
* glib.h: * glib.h:
* gutils.c: added a new function g_vsnprintf(). * gutils.c: added a new function g_vsnprintf().
Sun Aug 16 Elliot Lee Sun Aug 16 Elliot Lee
@@ -148,13 +178,13 @@ Fri Aug 13 14:23:37 1998 Tim Janik <timj@gtk.org>
in other required places. in other required places.
* gnode.c: * gnode.c:
(g_node_prepend): (g_node_prepend):
(g_node_insert_before): (g_node_insert_before):
(g_node_insert): (g_node_insert):
(g_node_append_data): (g_node_append_data):
(g_node_prepend_data): (g_node_prepend_data):
(g_node_insert_data_before): (g_node_insert_data_before):
(g_node_insert_data): (g_node_insert_data):
(g_node_append): (g_node_append):
return (node), so these macros/functions can be usefully chained with return (node), so these macros/functions can be usefully chained with
g_node_new(). g_node_new().
@@ -211,7 +241,7 @@ Tue Aug 4 15:17:54 1998 Tim Janik <timj@gtk.org>
Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org> Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gnode.c: change order of gpointer data; field in struct _GNode to * gnode.c: change order of gpointer data; field in struct _GNode to
be partly binary compatible with GList and GSList. be partly binary compatible with GList and GSList.
@@ -228,7 +258,7 @@ Fri Jul 31 09:08:16 1998 Tim Janik <timj@gtk.org>
* Makefile.am: compile gnode.c. * Makefile.am: compile gnode.c.
* glib.h: * glib.h:
* gnode.c: added implementation of n-way trees. * gnode.c: added implementation of n-way trees.
* gtree.c (g_tree_traverse): added a warning to the switch() statement * gtree.c (g_tree_traverse): added a warning to the switch() statement
@@ -245,14 +275,14 @@ Mon Jul 27 01:02:27 1998 Tim Janik <timj@gtk.org>
implementation. implementation.
Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu> Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu>
* glib.h: gtime changed to g_time. gtime is used in * glib.h: gtime changed to g_time. gtime is used in
/usr/include/time.h in NetBSD, causing multiple headaches. /usr/include/time.h in NetBSD, causing multiple headaches.
If this isn't the right way of fixing it.... ;) If this isn't the right way of fixing it.... ;)
Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org> Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gscanner.c: new functions to make a scanner scope sensitive wrt * gscanner.c: new functions to make a scanner scope sensitive wrt
symbol lookups. symbol lookups.
g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol, g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol,
@@ -273,7 +303,7 @@ Tue Jul 14 09:05:18 1998 Tim Janik <timj@gtk.org>
Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org> Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gutils.h: added a bunch of utility/wrapper functions: * gutils.h: added a bunch of utility/wrapper functions:
g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(), g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(),
g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname(). g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname().
@@ -396,7 +426,7 @@ Thu Jun 11 04:15:31 1998 Tim Janik <timj@gtk.org>
Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org> Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org>
* Makefile.am glib.m4 configure.in: * Makefile.am glib.m4 configure.in:
Moved out from GTK+; added AM_PATH_GLIB macro. Moved out from GTK+; added AM_PATH_GLIB macro.
Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org> Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org>
@@ -411,7 +441,7 @@ Sat May 23 19:00:01 1998 Owen Taylor <otaylor@gtk.org>
[ Combination of: [ Combination of:
gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>) gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>)
gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ] gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ]
* glib.h ghash.c gstring.c gdataset.c gutils.c: * glib.h ghash.c gstring.c gdataset.c gutils.c:
- Added new typedef g_const_pointer; expunged all incorrect - Added new typedef g_const_pointer; expunged all incorrect
uses of 'const gpointer'. uses of 'const gpointer'.
@@ -433,7 +463,7 @@ Sat Jun 6 14:09:22 PDT 1998 Manish Singh <yosh@gimp.org>
Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org> Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org>
* glib.h (g_chunk_new0): convenience macro, for allocating small chunks * glib.h (g_chunk_new0): convenience macro, for allocating small chunks
like g_chunk_new() with additional 0 initialization. like g_chunk_new() with additional 0 initialization.
Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org> Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org>
@@ -451,7 +481,7 @@ Tue May 26 18:30:06 1998 Tim Janik <timj@gtk.org>
Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org> Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org>
(Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch) (Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch)
* gutils.c: Restored a missing prototype for g_vsprintf. * gutils.c: Restored a missing prototype for g_vsprintf.
Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org> Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org>
@@ -506,15 +536,15 @@ Tue May 12 19:22:58 1998 Owen Taylor <otaylor@gtk.org>
* glib/glib.h: Added macros G[U]INT_TO_POINTER() and * glib/glib.h: Added macros G[U]INT_TO_POINTER() and
GPOINTER_TO_[U]INT for storing small integers integers GPOINTER_TO_[U]INT for storing small integers integers
inside pointers. inside pointers.
* glib/testglib.c: Print sizeof() results * glib/testglib.c: Print sizeof() results
as g_print("%ld", (glong)sizeof(foo)), to deal with as g_print("%ld", (glong)sizeof(foo)), to deal with
size_t being long on Alpha's. size_t being long on Alpha's.
Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org> Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org>
(James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch) (James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch)
* glib.h gstring.c gmessages.c: Added some missing * glib.h gstring.c gmessages.c: Added some missing
const to arguments. const to arguments.
@@ -611,8 +641,8 @@ Fri May 1 16:36:08 1998 Owen Taylor <otaylor@gtk.org>
Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org> Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org>
* gstring.c : Check arguments more carefully, * gstring.c : Check arguments more carefully,
(gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de) (gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de)
Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu> Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu>
@@ -638,7 +668,7 @@ Fri Apr 3 18:05:45 1998 Owen Taylor <owt1@cornell.edu>
* testglib.c: Removed literal german from strings * testglib.c: Removed literal german from strings
to appease SGI compiler. to appease SGI compiler.
Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu> Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu>
* configure.in glib glibconfig.h.in: Add test for atexit/on_exit - * configure.in glib glibconfig.h.in: Add test for atexit/on_exit -
@@ -689,7 +719,7 @@ Mon Mar 2 17:51:18 1998 Owen Taylor <owt1@cornell.edu>
to take gchar* not guchar* to take gchar* not guchar*
* testglib.c: Remove trailing ; after functions * testglib.c: Remove trailing ; after functions
Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu> Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu>
* glib.h gstring.c: Added g_string_insert[_c]() * glib.h gstring.c: Added g_string_insert[_c]()
@@ -761,7 +791,7 @@ Sat Jan 17 23:52:40 1998 Owen Taylor <owt1@cornell.edu>
renamed g_string_equal => g_str_equal renamed g_string_equal => g_str_equal
renamed g_string_hash => g_str_hash renamed g_string_hash => g_str_hash
And const corrected. Old functions left in for now. And const corrected. Old functions left in for now.
Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net> Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net>
* gutils.c (g_strerror): changed message for EAGAIN from * gutils.c (g_strerror): changed message for EAGAIN from
@@ -789,8 +819,8 @@ Sat Jan 3 20:23:25 1998 Owen Taylor <owt1@cornell.edu>
Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net> Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net>
* glib_pre1.h: * glib_pre1.h:
* glib_pre2.h: * glib_pre2.h:
* glib.h: reverted glibconfig.h and glib.h files back to the * glib.h: reverted glibconfig.h and glib.h files back to the
way they were before my ugly hack. way they were before my ugly hack.
@@ -822,8 +852,8 @@ Mon Dec 15 19:33:58 1997 Tim Janik <timj@psynet.net>
Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net> Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
* glib_pre1.h: * glib_pre1.h:
* glib_pre2.h: * glib_pre2.h:
* glib.h: this file now gets concatenated by makeglib_h from * glib.h: this file now gets concatenated by makeglib_h from
glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got
created by configure (done by Jay Painter). created by configure (done by Jay Painter).
@@ -831,7 +861,7 @@ Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
* glib_pre2.h: the g_assert*() and g_return_*_fail() macros * glib_pre2.h: the g_assert*() and g_return_*_fail() macros
are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts
when used within if (...) g_macro(); else ... conditionals. when used within if (...) g_macro(); else ... conditionals.
Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU> Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU>
* glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to * glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to

View File

@@ -1,3 +1,33 @@
Tue Sep 1 23:46:31 1998 Josh MacDonald <jmacd@axis.hip.berkeley.edu>
* testglib.c (main): Update the array tests. Reduce the number of
iterations for the prepend test from 10000 to 100 since it is
O(n^2) and was taking longer than I would like to wait.
* garray.c: I've worked on the GArray interface, mostly. It was
seriously broken before and I hate to do it, but this is going to
break some code. It is important to do this now, because more and
more people are starting to use glib and the interface was both
broken and inconsistent. First, rename the _truncate functions of
both the GArray and GPtrArray classes to _set_size, since this
function can also be used to extend the arrays. GArray now
accepts two more initialization arguments: clear and element_size.
Instead of providing the type to each access function, the array
now stores the element size. Clear, if set, causes the library to
zero element's memory as the array expands. The major broken-ness
here was that array->len was in bytes, not elements. Now, since
the array knows its element size, array->len is correct and I have
removed the g_array_length macro. The only macro which now
accepts the type as an argument is g_array_index, which casts the
element to the right type--this interface does not change. The
append and prepend functions simply need the types removed.
g_ptr_array_remove_index now returns the removed element.
* gprimes.c (g_spaced_primes_closest): Move this function out of
ghash.c and rename it from g_hash_closest_prime. Fix the primes
so that they are actually prime (they weren't all -- isn't that
nice?).
Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org> Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
@@ -26,8 +56,8 @@ Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h: provide a definition for G_VA_COPY. * glib.h: provide a definition for G_VA_COPY.
* glib.h: * glib.h:
* gmessages.c: * gmessages.c:
(g_logv): (g_logv):
(g_vsnprintf): (g_vsnprintf):
pass va_lists by value, not by reference, since this causes problems pass va_lists by value, not by reference, since this causes problems
on platforms that implement va_list as as arrays. internaly, use on platforms that implement va_list as as arrays. internaly, use
@@ -109,7 +139,7 @@ Sun Aug 16 20:28:27 1998 Tim Janik <timj@gtk.org>
gint64 itself, packages that need gint64 should test for this gint64 itself, packages that need gint64 should test for this
themselves. themselves.
* glib.h: * glib.h:
* gutils.c: added a new function g_vsnprintf(). * gutils.c: added a new function g_vsnprintf().
Sun Aug 16 Elliot Lee Sun Aug 16 Elliot Lee
@@ -148,13 +178,13 @@ Fri Aug 13 14:23:37 1998 Tim Janik <timj@gtk.org>
in other required places. in other required places.
* gnode.c: * gnode.c:
(g_node_prepend): (g_node_prepend):
(g_node_insert_before): (g_node_insert_before):
(g_node_insert): (g_node_insert):
(g_node_append_data): (g_node_append_data):
(g_node_prepend_data): (g_node_prepend_data):
(g_node_insert_data_before): (g_node_insert_data_before):
(g_node_insert_data): (g_node_insert_data):
(g_node_append): (g_node_append):
return (node), so these macros/functions can be usefully chained with return (node), so these macros/functions can be usefully chained with
g_node_new(). g_node_new().
@@ -211,7 +241,7 @@ Tue Aug 4 15:17:54 1998 Tim Janik <timj@gtk.org>
Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org> Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gnode.c: change order of gpointer data; field in struct _GNode to * gnode.c: change order of gpointer data; field in struct _GNode to
be partly binary compatible with GList and GSList. be partly binary compatible with GList and GSList.
@@ -228,7 +258,7 @@ Fri Jul 31 09:08:16 1998 Tim Janik <timj@gtk.org>
* Makefile.am: compile gnode.c. * Makefile.am: compile gnode.c.
* glib.h: * glib.h:
* gnode.c: added implementation of n-way trees. * gnode.c: added implementation of n-way trees.
* gtree.c (g_tree_traverse): added a warning to the switch() statement * gtree.c (g_tree_traverse): added a warning to the switch() statement
@@ -245,14 +275,14 @@ Mon Jul 27 01:02:27 1998 Tim Janik <timj@gtk.org>
implementation. implementation.
Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu> Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu>
* glib.h: gtime changed to g_time. gtime is used in * glib.h: gtime changed to g_time. gtime is used in
/usr/include/time.h in NetBSD, causing multiple headaches. /usr/include/time.h in NetBSD, causing multiple headaches.
If this isn't the right way of fixing it.... ;) If this isn't the right way of fixing it.... ;)
Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org> Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gscanner.c: new functions to make a scanner scope sensitive wrt * gscanner.c: new functions to make a scanner scope sensitive wrt
symbol lookups. symbol lookups.
g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol, g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol,
@@ -273,7 +303,7 @@ Tue Jul 14 09:05:18 1998 Tim Janik <timj@gtk.org>
Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org> Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gutils.h: added a bunch of utility/wrapper functions: * gutils.h: added a bunch of utility/wrapper functions:
g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(), g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(),
g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname(). g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname().
@@ -396,7 +426,7 @@ Thu Jun 11 04:15:31 1998 Tim Janik <timj@gtk.org>
Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org> Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org>
* Makefile.am glib.m4 configure.in: * Makefile.am glib.m4 configure.in:
Moved out from GTK+; added AM_PATH_GLIB macro. Moved out from GTK+; added AM_PATH_GLIB macro.
Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org> Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org>
@@ -411,7 +441,7 @@ Sat May 23 19:00:01 1998 Owen Taylor <otaylor@gtk.org>
[ Combination of: [ Combination of:
gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>) gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>)
gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ] gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ]
* glib.h ghash.c gstring.c gdataset.c gutils.c: * glib.h ghash.c gstring.c gdataset.c gutils.c:
- Added new typedef g_const_pointer; expunged all incorrect - Added new typedef g_const_pointer; expunged all incorrect
uses of 'const gpointer'. uses of 'const gpointer'.
@@ -433,7 +463,7 @@ Sat Jun 6 14:09:22 PDT 1998 Manish Singh <yosh@gimp.org>
Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org> Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org>
* glib.h (g_chunk_new0): convenience macro, for allocating small chunks * glib.h (g_chunk_new0): convenience macro, for allocating small chunks
like g_chunk_new() with additional 0 initialization. like g_chunk_new() with additional 0 initialization.
Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org> Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org>
@@ -451,7 +481,7 @@ Tue May 26 18:30:06 1998 Tim Janik <timj@gtk.org>
Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org> Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org>
(Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch) (Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch)
* gutils.c: Restored a missing prototype for g_vsprintf. * gutils.c: Restored a missing prototype for g_vsprintf.
Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org> Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org>
@@ -506,15 +536,15 @@ Tue May 12 19:22:58 1998 Owen Taylor <otaylor@gtk.org>
* glib/glib.h: Added macros G[U]INT_TO_POINTER() and * glib/glib.h: Added macros G[U]INT_TO_POINTER() and
GPOINTER_TO_[U]INT for storing small integers integers GPOINTER_TO_[U]INT for storing small integers integers
inside pointers. inside pointers.
* glib/testglib.c: Print sizeof() results * glib/testglib.c: Print sizeof() results
as g_print("%ld", (glong)sizeof(foo)), to deal with as g_print("%ld", (glong)sizeof(foo)), to deal with
size_t being long on Alpha's. size_t being long on Alpha's.
Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org> Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org>
(James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch) (James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch)
* glib.h gstring.c gmessages.c: Added some missing * glib.h gstring.c gmessages.c: Added some missing
const to arguments. const to arguments.
@@ -611,8 +641,8 @@ Fri May 1 16:36:08 1998 Owen Taylor <otaylor@gtk.org>
Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org> Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org>
* gstring.c : Check arguments more carefully, * gstring.c : Check arguments more carefully,
(gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de) (gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de)
Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu> Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu>
@@ -638,7 +668,7 @@ Fri Apr 3 18:05:45 1998 Owen Taylor <owt1@cornell.edu>
* testglib.c: Removed literal german from strings * testglib.c: Removed literal german from strings
to appease SGI compiler. to appease SGI compiler.
Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu> Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu>
* configure.in glib glibconfig.h.in: Add test for atexit/on_exit - * configure.in glib glibconfig.h.in: Add test for atexit/on_exit -
@@ -689,7 +719,7 @@ Mon Mar 2 17:51:18 1998 Owen Taylor <owt1@cornell.edu>
to take gchar* not guchar* to take gchar* not guchar*
* testglib.c: Remove trailing ; after functions * testglib.c: Remove trailing ; after functions
Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu> Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu>
* glib.h gstring.c: Added g_string_insert[_c]() * glib.h gstring.c: Added g_string_insert[_c]()
@@ -761,7 +791,7 @@ Sat Jan 17 23:52:40 1998 Owen Taylor <owt1@cornell.edu>
renamed g_string_equal => g_str_equal renamed g_string_equal => g_str_equal
renamed g_string_hash => g_str_hash renamed g_string_hash => g_str_hash
And const corrected. Old functions left in for now. And const corrected. Old functions left in for now.
Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net> Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net>
* gutils.c (g_strerror): changed message for EAGAIN from * gutils.c (g_strerror): changed message for EAGAIN from
@@ -789,8 +819,8 @@ Sat Jan 3 20:23:25 1998 Owen Taylor <owt1@cornell.edu>
Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net> Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net>
* glib_pre1.h: * glib_pre1.h:
* glib_pre2.h: * glib_pre2.h:
* glib.h: reverted glibconfig.h and glib.h files back to the * glib.h: reverted glibconfig.h and glib.h files back to the
way they were before my ugly hack. way they were before my ugly hack.
@@ -822,8 +852,8 @@ Mon Dec 15 19:33:58 1997 Tim Janik <timj@psynet.net>
Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net> Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
* glib_pre1.h: * glib_pre1.h:
* glib_pre2.h: * glib_pre2.h:
* glib.h: this file now gets concatenated by makeglib_h from * glib.h: this file now gets concatenated by makeglib_h from
glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got
created by configure (done by Jay Painter). created by configure (done by Jay Painter).
@@ -831,7 +861,7 @@ Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
* glib_pre2.h: the g_assert*() and g_return_*_fail() macros * glib_pre2.h: the g_assert*() and g_return_*_fail() macros
are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts
when used within if (...) g_macro(); else ... conditionals. when used within if (...) g_macro(); else ... conditionals.
Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU> Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU>
* glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to * glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to

View File

@@ -1,3 +1,33 @@
Tue Sep 1 23:46:31 1998 Josh MacDonald <jmacd@axis.hip.berkeley.edu>
* testglib.c (main): Update the array tests. Reduce the number of
iterations for the prepend test from 10000 to 100 since it is
O(n^2) and was taking longer than I would like to wait.
* garray.c: I've worked on the GArray interface, mostly. It was
seriously broken before and I hate to do it, but this is going to
break some code. It is important to do this now, because more and
more people are starting to use glib and the interface was both
broken and inconsistent. First, rename the _truncate functions of
both the GArray and GPtrArray classes to _set_size, since this
function can also be used to extend the arrays. GArray now
accepts two more initialization arguments: clear and element_size.
Instead of providing the type to each access function, the array
now stores the element size. Clear, if set, causes the library to
zero element's memory as the array expands. The major broken-ness
here was that array->len was in bytes, not elements. Now, since
the array knows its element size, array->len is correct and I have
removed the g_array_length macro. The only macro which now
accepts the type as an argument is g_array_index, which casts the
element to the right type--this interface does not change. The
append and prepend functions simply need the types removed.
g_ptr_array_remove_index now returns the removed element.
* gprimes.c (g_spaced_primes_closest): Move this function out of
ghash.c and rename it from g_hash_closest_prime. Fix the primes
so that they are actually prime (they weren't all -- isn't that
nice?).
Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org> Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
@@ -26,8 +56,8 @@ Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h: provide a definition for G_VA_COPY. * glib.h: provide a definition for G_VA_COPY.
* glib.h: * glib.h:
* gmessages.c: * gmessages.c:
(g_logv): (g_logv):
(g_vsnprintf): (g_vsnprintf):
pass va_lists by value, not by reference, since this causes problems pass va_lists by value, not by reference, since this causes problems
on platforms that implement va_list as as arrays. internaly, use on platforms that implement va_list as as arrays. internaly, use
@@ -109,7 +139,7 @@ Sun Aug 16 20:28:27 1998 Tim Janik <timj@gtk.org>
gint64 itself, packages that need gint64 should test for this gint64 itself, packages that need gint64 should test for this
themselves. themselves.
* glib.h: * glib.h:
* gutils.c: added a new function g_vsnprintf(). * gutils.c: added a new function g_vsnprintf().
Sun Aug 16 Elliot Lee Sun Aug 16 Elliot Lee
@@ -148,13 +178,13 @@ Fri Aug 13 14:23:37 1998 Tim Janik <timj@gtk.org>
in other required places. in other required places.
* gnode.c: * gnode.c:
(g_node_prepend): (g_node_prepend):
(g_node_insert_before): (g_node_insert_before):
(g_node_insert): (g_node_insert):
(g_node_append_data): (g_node_append_data):
(g_node_prepend_data): (g_node_prepend_data):
(g_node_insert_data_before): (g_node_insert_data_before):
(g_node_insert_data): (g_node_insert_data):
(g_node_append): (g_node_append):
return (node), so these macros/functions can be usefully chained with return (node), so these macros/functions can be usefully chained with
g_node_new(). g_node_new().
@@ -211,7 +241,7 @@ Tue Aug 4 15:17:54 1998 Tim Janik <timj@gtk.org>
Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org> Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gnode.c: change order of gpointer data; field in struct _GNode to * gnode.c: change order of gpointer data; field in struct _GNode to
be partly binary compatible with GList and GSList. be partly binary compatible with GList and GSList.
@@ -228,7 +258,7 @@ Fri Jul 31 09:08:16 1998 Tim Janik <timj@gtk.org>
* Makefile.am: compile gnode.c. * Makefile.am: compile gnode.c.
* glib.h: * glib.h:
* gnode.c: added implementation of n-way trees. * gnode.c: added implementation of n-way trees.
* gtree.c (g_tree_traverse): added a warning to the switch() statement * gtree.c (g_tree_traverse): added a warning to the switch() statement
@@ -245,14 +275,14 @@ Mon Jul 27 01:02:27 1998 Tim Janik <timj@gtk.org>
implementation. implementation.
Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu> Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu>
* glib.h: gtime changed to g_time. gtime is used in * glib.h: gtime changed to g_time. gtime is used in
/usr/include/time.h in NetBSD, causing multiple headaches. /usr/include/time.h in NetBSD, causing multiple headaches.
If this isn't the right way of fixing it.... ;) If this isn't the right way of fixing it.... ;)
Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org> Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gscanner.c: new functions to make a scanner scope sensitive wrt * gscanner.c: new functions to make a scanner scope sensitive wrt
symbol lookups. symbol lookups.
g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol, g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol,
@@ -273,7 +303,7 @@ Tue Jul 14 09:05:18 1998 Tim Janik <timj@gtk.org>
Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org> Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gutils.h: added a bunch of utility/wrapper functions: * gutils.h: added a bunch of utility/wrapper functions:
g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(), g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(),
g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname(). g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname().
@@ -396,7 +426,7 @@ Thu Jun 11 04:15:31 1998 Tim Janik <timj@gtk.org>
Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org> Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org>
* Makefile.am glib.m4 configure.in: * Makefile.am glib.m4 configure.in:
Moved out from GTK+; added AM_PATH_GLIB macro. Moved out from GTK+; added AM_PATH_GLIB macro.
Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org> Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org>
@@ -411,7 +441,7 @@ Sat May 23 19:00:01 1998 Owen Taylor <otaylor@gtk.org>
[ Combination of: [ Combination of:
gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>) gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>)
gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ] gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ]
* glib.h ghash.c gstring.c gdataset.c gutils.c: * glib.h ghash.c gstring.c gdataset.c gutils.c:
- Added new typedef g_const_pointer; expunged all incorrect - Added new typedef g_const_pointer; expunged all incorrect
uses of 'const gpointer'. uses of 'const gpointer'.
@@ -433,7 +463,7 @@ Sat Jun 6 14:09:22 PDT 1998 Manish Singh <yosh@gimp.org>
Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org> Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org>
* glib.h (g_chunk_new0): convenience macro, for allocating small chunks * glib.h (g_chunk_new0): convenience macro, for allocating small chunks
like g_chunk_new() with additional 0 initialization. like g_chunk_new() with additional 0 initialization.
Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org> Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org>
@@ -451,7 +481,7 @@ Tue May 26 18:30:06 1998 Tim Janik <timj@gtk.org>
Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org> Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org>
(Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch) (Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch)
* gutils.c: Restored a missing prototype for g_vsprintf. * gutils.c: Restored a missing prototype for g_vsprintf.
Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org> Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org>
@@ -506,15 +536,15 @@ Tue May 12 19:22:58 1998 Owen Taylor <otaylor@gtk.org>
* glib/glib.h: Added macros G[U]INT_TO_POINTER() and * glib/glib.h: Added macros G[U]INT_TO_POINTER() and
GPOINTER_TO_[U]INT for storing small integers integers GPOINTER_TO_[U]INT for storing small integers integers
inside pointers. inside pointers.
* glib/testglib.c: Print sizeof() results * glib/testglib.c: Print sizeof() results
as g_print("%ld", (glong)sizeof(foo)), to deal with as g_print("%ld", (glong)sizeof(foo)), to deal with
size_t being long on Alpha's. size_t being long on Alpha's.
Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org> Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org>
(James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch) (James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch)
* glib.h gstring.c gmessages.c: Added some missing * glib.h gstring.c gmessages.c: Added some missing
const to arguments. const to arguments.
@@ -611,8 +641,8 @@ Fri May 1 16:36:08 1998 Owen Taylor <otaylor@gtk.org>
Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org> Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org>
* gstring.c : Check arguments more carefully, * gstring.c : Check arguments more carefully,
(gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de) (gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de)
Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu> Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu>
@@ -638,7 +668,7 @@ Fri Apr 3 18:05:45 1998 Owen Taylor <owt1@cornell.edu>
* testglib.c: Removed literal german from strings * testglib.c: Removed literal german from strings
to appease SGI compiler. to appease SGI compiler.
Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu> Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu>
* configure.in glib glibconfig.h.in: Add test for atexit/on_exit - * configure.in glib glibconfig.h.in: Add test for atexit/on_exit -
@@ -689,7 +719,7 @@ Mon Mar 2 17:51:18 1998 Owen Taylor <owt1@cornell.edu>
to take gchar* not guchar* to take gchar* not guchar*
* testglib.c: Remove trailing ; after functions * testglib.c: Remove trailing ; after functions
Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu> Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu>
* glib.h gstring.c: Added g_string_insert[_c]() * glib.h gstring.c: Added g_string_insert[_c]()
@@ -761,7 +791,7 @@ Sat Jan 17 23:52:40 1998 Owen Taylor <owt1@cornell.edu>
renamed g_string_equal => g_str_equal renamed g_string_equal => g_str_equal
renamed g_string_hash => g_str_hash renamed g_string_hash => g_str_hash
And const corrected. Old functions left in for now. And const corrected. Old functions left in for now.
Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net> Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net>
* gutils.c (g_strerror): changed message for EAGAIN from * gutils.c (g_strerror): changed message for EAGAIN from
@@ -789,8 +819,8 @@ Sat Jan 3 20:23:25 1998 Owen Taylor <owt1@cornell.edu>
Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net> Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net>
* glib_pre1.h: * glib_pre1.h:
* glib_pre2.h: * glib_pre2.h:
* glib.h: reverted glibconfig.h and glib.h files back to the * glib.h: reverted glibconfig.h and glib.h files back to the
way they were before my ugly hack. way they were before my ugly hack.
@@ -822,8 +852,8 @@ Mon Dec 15 19:33:58 1997 Tim Janik <timj@psynet.net>
Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net> Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
* glib_pre1.h: * glib_pre1.h:
* glib_pre2.h: * glib_pre2.h:
* glib.h: this file now gets concatenated by makeglib_h from * glib.h: this file now gets concatenated by makeglib_h from
glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got
created by configure (done by Jay Painter). created by configure (done by Jay Painter).
@@ -831,7 +861,7 @@ Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
* glib_pre2.h: the g_assert*() and g_return_*_fail() macros * glib_pre2.h: the g_assert*() and g_return_*_fail() macros
are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts
when used within if (...) g_macro(); else ... conditionals. when used within if (...) g_macro(); else ... conditionals.
Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU> Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU>
* glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to * glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to

View File

@@ -1,3 +1,33 @@
Tue Sep 1 23:46:31 1998 Josh MacDonald <jmacd@axis.hip.berkeley.edu>
* testglib.c (main): Update the array tests. Reduce the number of
iterations for the prepend test from 10000 to 100 since it is
O(n^2) and was taking longer than I would like to wait.
* garray.c: I've worked on the GArray interface, mostly. It was
seriously broken before and I hate to do it, but this is going to
break some code. It is important to do this now, because more and
more people are starting to use glib and the interface was both
broken and inconsistent. First, rename the _truncate functions of
both the GArray and GPtrArray classes to _set_size, since this
function can also be used to extend the arrays. GArray now
accepts two more initialization arguments: clear and element_size.
Instead of providing the type to each access function, the array
now stores the element size. Clear, if set, causes the library to
zero element's memory as the array expands. The major broken-ness
here was that array->len was in bytes, not elements. Now, since
the array knows its element size, array->len is correct and I have
removed the g_array_length macro. The only macro which now
accepts the type as an argument is g_array_index, which casts the
element to the right type--this interface does not change. The
append and prepend functions simply need the types removed.
g_ptr_array_remove_index now returns the removed element.
* gprimes.c (g_spaced_primes_closest): Move this function out of
ghash.c and rename it from g_hash_closest_prime. Fix the primes
so that they are actually prime (they weren't all -- isn't that
nice?).
Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org> Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
@@ -26,8 +56,8 @@ Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h: provide a definition for G_VA_COPY. * glib.h: provide a definition for G_VA_COPY.
* glib.h: * glib.h:
* gmessages.c: * gmessages.c:
(g_logv): (g_logv):
(g_vsnprintf): (g_vsnprintf):
pass va_lists by value, not by reference, since this causes problems pass va_lists by value, not by reference, since this causes problems
on platforms that implement va_list as as arrays. internaly, use on platforms that implement va_list as as arrays. internaly, use
@@ -109,7 +139,7 @@ Sun Aug 16 20:28:27 1998 Tim Janik <timj@gtk.org>
gint64 itself, packages that need gint64 should test for this gint64 itself, packages that need gint64 should test for this
themselves. themselves.
* glib.h: * glib.h:
* gutils.c: added a new function g_vsnprintf(). * gutils.c: added a new function g_vsnprintf().
Sun Aug 16 Elliot Lee Sun Aug 16 Elliot Lee
@@ -148,13 +178,13 @@ Fri Aug 13 14:23:37 1998 Tim Janik <timj@gtk.org>
in other required places. in other required places.
* gnode.c: * gnode.c:
(g_node_prepend): (g_node_prepend):
(g_node_insert_before): (g_node_insert_before):
(g_node_insert): (g_node_insert):
(g_node_append_data): (g_node_append_data):
(g_node_prepend_data): (g_node_prepend_data):
(g_node_insert_data_before): (g_node_insert_data_before):
(g_node_insert_data): (g_node_insert_data):
(g_node_append): (g_node_append):
return (node), so these macros/functions can be usefully chained with return (node), so these macros/functions can be usefully chained with
g_node_new(). g_node_new().
@@ -211,7 +241,7 @@ Tue Aug 4 15:17:54 1998 Tim Janik <timj@gtk.org>
Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org> Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gnode.c: change order of gpointer data; field in struct _GNode to * gnode.c: change order of gpointer data; field in struct _GNode to
be partly binary compatible with GList and GSList. be partly binary compatible with GList and GSList.
@@ -228,7 +258,7 @@ Fri Jul 31 09:08:16 1998 Tim Janik <timj@gtk.org>
* Makefile.am: compile gnode.c. * Makefile.am: compile gnode.c.
* glib.h: * glib.h:
* gnode.c: added implementation of n-way trees. * gnode.c: added implementation of n-way trees.
* gtree.c (g_tree_traverse): added a warning to the switch() statement * gtree.c (g_tree_traverse): added a warning to the switch() statement
@@ -245,14 +275,14 @@ Mon Jul 27 01:02:27 1998 Tim Janik <timj@gtk.org>
implementation. implementation.
Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu> Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu>
* glib.h: gtime changed to g_time. gtime is used in * glib.h: gtime changed to g_time. gtime is used in
/usr/include/time.h in NetBSD, causing multiple headaches. /usr/include/time.h in NetBSD, causing multiple headaches.
If this isn't the right way of fixing it.... ;) If this isn't the right way of fixing it.... ;)
Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org> Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gscanner.c: new functions to make a scanner scope sensitive wrt * gscanner.c: new functions to make a scanner scope sensitive wrt
symbol lookups. symbol lookups.
g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol, g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol,
@@ -273,7 +303,7 @@ Tue Jul 14 09:05:18 1998 Tim Janik <timj@gtk.org>
Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org> Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gutils.h: added a bunch of utility/wrapper functions: * gutils.h: added a bunch of utility/wrapper functions:
g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(), g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(),
g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname(). g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname().
@@ -396,7 +426,7 @@ Thu Jun 11 04:15:31 1998 Tim Janik <timj@gtk.org>
Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org> Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org>
* Makefile.am glib.m4 configure.in: * Makefile.am glib.m4 configure.in:
Moved out from GTK+; added AM_PATH_GLIB macro. Moved out from GTK+; added AM_PATH_GLIB macro.
Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org> Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org>
@@ -411,7 +441,7 @@ Sat May 23 19:00:01 1998 Owen Taylor <otaylor@gtk.org>
[ Combination of: [ Combination of:
gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>) gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>)
gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ] gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ]
* glib.h ghash.c gstring.c gdataset.c gutils.c: * glib.h ghash.c gstring.c gdataset.c gutils.c:
- Added new typedef g_const_pointer; expunged all incorrect - Added new typedef g_const_pointer; expunged all incorrect
uses of 'const gpointer'. uses of 'const gpointer'.
@@ -433,7 +463,7 @@ Sat Jun 6 14:09:22 PDT 1998 Manish Singh <yosh@gimp.org>
Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org> Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org>
* glib.h (g_chunk_new0): convenience macro, for allocating small chunks * glib.h (g_chunk_new0): convenience macro, for allocating small chunks
like g_chunk_new() with additional 0 initialization. like g_chunk_new() with additional 0 initialization.
Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org> Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org>
@@ -451,7 +481,7 @@ Tue May 26 18:30:06 1998 Tim Janik <timj@gtk.org>
Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org> Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org>
(Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch) (Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch)
* gutils.c: Restored a missing prototype for g_vsprintf. * gutils.c: Restored a missing prototype for g_vsprintf.
Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org> Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org>
@@ -506,15 +536,15 @@ Tue May 12 19:22:58 1998 Owen Taylor <otaylor@gtk.org>
* glib/glib.h: Added macros G[U]INT_TO_POINTER() and * glib/glib.h: Added macros G[U]INT_TO_POINTER() and
GPOINTER_TO_[U]INT for storing small integers integers GPOINTER_TO_[U]INT for storing small integers integers
inside pointers. inside pointers.
* glib/testglib.c: Print sizeof() results * glib/testglib.c: Print sizeof() results
as g_print("%ld", (glong)sizeof(foo)), to deal with as g_print("%ld", (glong)sizeof(foo)), to deal with
size_t being long on Alpha's. size_t being long on Alpha's.
Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org> Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org>
(James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch) (James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch)
* glib.h gstring.c gmessages.c: Added some missing * glib.h gstring.c gmessages.c: Added some missing
const to arguments. const to arguments.
@@ -611,8 +641,8 @@ Fri May 1 16:36:08 1998 Owen Taylor <otaylor@gtk.org>
Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org> Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org>
* gstring.c : Check arguments more carefully, * gstring.c : Check arguments more carefully,
(gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de) (gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de)
Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu> Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu>
@@ -638,7 +668,7 @@ Fri Apr 3 18:05:45 1998 Owen Taylor <owt1@cornell.edu>
* testglib.c: Removed literal german from strings * testglib.c: Removed literal german from strings
to appease SGI compiler. to appease SGI compiler.
Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu> Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu>
* configure.in glib glibconfig.h.in: Add test for atexit/on_exit - * configure.in glib glibconfig.h.in: Add test for atexit/on_exit -
@@ -689,7 +719,7 @@ Mon Mar 2 17:51:18 1998 Owen Taylor <owt1@cornell.edu>
to take gchar* not guchar* to take gchar* not guchar*
* testglib.c: Remove trailing ; after functions * testglib.c: Remove trailing ; after functions
Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu> Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu>
* glib.h gstring.c: Added g_string_insert[_c]() * glib.h gstring.c: Added g_string_insert[_c]()
@@ -761,7 +791,7 @@ Sat Jan 17 23:52:40 1998 Owen Taylor <owt1@cornell.edu>
renamed g_string_equal => g_str_equal renamed g_string_equal => g_str_equal
renamed g_string_hash => g_str_hash renamed g_string_hash => g_str_hash
And const corrected. Old functions left in for now. And const corrected. Old functions left in for now.
Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net> Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net>
* gutils.c (g_strerror): changed message for EAGAIN from * gutils.c (g_strerror): changed message for EAGAIN from
@@ -789,8 +819,8 @@ Sat Jan 3 20:23:25 1998 Owen Taylor <owt1@cornell.edu>
Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net> Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net>
* glib_pre1.h: * glib_pre1.h:
* glib_pre2.h: * glib_pre2.h:
* glib.h: reverted glibconfig.h and glib.h files back to the * glib.h: reverted glibconfig.h and glib.h files back to the
way they were before my ugly hack. way they were before my ugly hack.
@@ -822,8 +852,8 @@ Mon Dec 15 19:33:58 1997 Tim Janik <timj@psynet.net>
Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net> Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
* glib_pre1.h: * glib_pre1.h:
* glib_pre2.h: * glib_pre2.h:
* glib.h: this file now gets concatenated by makeglib_h from * glib.h: this file now gets concatenated by makeglib_h from
glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got
created by configure (done by Jay Painter). created by configure (done by Jay Painter).
@@ -831,7 +861,7 @@ Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
* glib_pre2.h: the g_assert*() and g_return_*_fail() macros * glib_pre2.h: the g_assert*() and g_return_*_fail() macros
are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts
when used within if (...) g_macro(); else ... conditionals. when used within if (...) g_macro(); else ... conditionals.
Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU> Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU>
* glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to * glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to

View File

@@ -1,3 +1,33 @@
Tue Sep 1 23:46:31 1998 Josh MacDonald <jmacd@axis.hip.berkeley.edu>
* testglib.c (main): Update the array tests. Reduce the number of
iterations for the prepend test from 10000 to 100 since it is
O(n^2) and was taking longer than I would like to wait.
* garray.c: I've worked on the GArray interface, mostly. It was
seriously broken before and I hate to do it, but this is going to
break some code. It is important to do this now, because more and
more people are starting to use glib and the interface was both
broken and inconsistent. First, rename the _truncate functions of
both the GArray and GPtrArray classes to _set_size, since this
function can also be used to extend the arrays. GArray now
accepts two more initialization arguments: clear and element_size.
Instead of providing the type to each access function, the array
now stores the element size. Clear, if set, causes the library to
zero element's memory as the array expands. The major broken-ness
here was that array->len was in bytes, not elements. Now, since
the array knows its element size, array->len is correct and I have
removed the g_array_length macro. The only macro which now
accepts the type as an argument is g_array_index, which casts the
element to the right type--this interface does not change. The
append and prepend functions simply need the types removed.
g_ptr_array_remove_index now returns the removed element.
* gprimes.c (g_spaced_primes_closest): Move this function out of
ghash.c and rename it from g_hash_closest_prime. Fix the primes
so that they are actually prime (they weren't all -- isn't that
nice?).
Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org> Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
@@ -26,8 +56,8 @@ Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h: provide a definition for G_VA_COPY. * glib.h: provide a definition for G_VA_COPY.
* glib.h: * glib.h:
* gmessages.c: * gmessages.c:
(g_logv): (g_logv):
(g_vsnprintf): (g_vsnprintf):
pass va_lists by value, not by reference, since this causes problems pass va_lists by value, not by reference, since this causes problems
on platforms that implement va_list as as arrays. internaly, use on platforms that implement va_list as as arrays. internaly, use
@@ -109,7 +139,7 @@ Sun Aug 16 20:28:27 1998 Tim Janik <timj@gtk.org>
gint64 itself, packages that need gint64 should test for this gint64 itself, packages that need gint64 should test for this
themselves. themselves.
* glib.h: * glib.h:
* gutils.c: added a new function g_vsnprintf(). * gutils.c: added a new function g_vsnprintf().
Sun Aug 16 Elliot Lee Sun Aug 16 Elliot Lee
@@ -148,13 +178,13 @@ Fri Aug 13 14:23:37 1998 Tim Janik <timj@gtk.org>
in other required places. in other required places.
* gnode.c: * gnode.c:
(g_node_prepend): (g_node_prepend):
(g_node_insert_before): (g_node_insert_before):
(g_node_insert): (g_node_insert):
(g_node_append_data): (g_node_append_data):
(g_node_prepend_data): (g_node_prepend_data):
(g_node_insert_data_before): (g_node_insert_data_before):
(g_node_insert_data): (g_node_insert_data):
(g_node_append): (g_node_append):
return (node), so these macros/functions can be usefully chained with return (node), so these macros/functions can be usefully chained with
g_node_new(). g_node_new().
@@ -211,7 +241,7 @@ Tue Aug 4 15:17:54 1998 Tim Janik <timj@gtk.org>
Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org> Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gnode.c: change order of gpointer data; field in struct _GNode to * gnode.c: change order of gpointer data; field in struct _GNode to
be partly binary compatible with GList and GSList. be partly binary compatible with GList and GSList.
@@ -228,7 +258,7 @@ Fri Jul 31 09:08:16 1998 Tim Janik <timj@gtk.org>
* Makefile.am: compile gnode.c. * Makefile.am: compile gnode.c.
* glib.h: * glib.h:
* gnode.c: added implementation of n-way trees. * gnode.c: added implementation of n-way trees.
* gtree.c (g_tree_traverse): added a warning to the switch() statement * gtree.c (g_tree_traverse): added a warning to the switch() statement
@@ -245,14 +275,14 @@ Mon Jul 27 01:02:27 1998 Tim Janik <timj@gtk.org>
implementation. implementation.
Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu> Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu>
* glib.h: gtime changed to g_time. gtime is used in * glib.h: gtime changed to g_time. gtime is used in
/usr/include/time.h in NetBSD, causing multiple headaches. /usr/include/time.h in NetBSD, causing multiple headaches.
If this isn't the right way of fixing it.... ;) If this isn't the right way of fixing it.... ;)
Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org> Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gscanner.c: new functions to make a scanner scope sensitive wrt * gscanner.c: new functions to make a scanner scope sensitive wrt
symbol lookups. symbol lookups.
g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol, g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol,
@@ -273,7 +303,7 @@ Tue Jul 14 09:05:18 1998 Tim Janik <timj@gtk.org>
Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org> Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gutils.h: added a bunch of utility/wrapper functions: * gutils.h: added a bunch of utility/wrapper functions:
g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(), g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(),
g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname(). g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname().
@@ -396,7 +426,7 @@ Thu Jun 11 04:15:31 1998 Tim Janik <timj@gtk.org>
Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org> Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org>
* Makefile.am glib.m4 configure.in: * Makefile.am glib.m4 configure.in:
Moved out from GTK+; added AM_PATH_GLIB macro. Moved out from GTK+; added AM_PATH_GLIB macro.
Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org> Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org>
@@ -411,7 +441,7 @@ Sat May 23 19:00:01 1998 Owen Taylor <otaylor@gtk.org>
[ Combination of: [ Combination of:
gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>) gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>)
gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ] gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ]
* glib.h ghash.c gstring.c gdataset.c gutils.c: * glib.h ghash.c gstring.c gdataset.c gutils.c:
- Added new typedef g_const_pointer; expunged all incorrect - Added new typedef g_const_pointer; expunged all incorrect
uses of 'const gpointer'. uses of 'const gpointer'.
@@ -433,7 +463,7 @@ Sat Jun 6 14:09:22 PDT 1998 Manish Singh <yosh@gimp.org>
Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org> Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org>
* glib.h (g_chunk_new0): convenience macro, for allocating small chunks * glib.h (g_chunk_new0): convenience macro, for allocating small chunks
like g_chunk_new() with additional 0 initialization. like g_chunk_new() with additional 0 initialization.
Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org> Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org>
@@ -451,7 +481,7 @@ Tue May 26 18:30:06 1998 Tim Janik <timj@gtk.org>
Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org> Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org>
(Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch) (Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch)
* gutils.c: Restored a missing prototype for g_vsprintf. * gutils.c: Restored a missing prototype for g_vsprintf.
Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org> Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org>
@@ -506,15 +536,15 @@ Tue May 12 19:22:58 1998 Owen Taylor <otaylor@gtk.org>
* glib/glib.h: Added macros G[U]INT_TO_POINTER() and * glib/glib.h: Added macros G[U]INT_TO_POINTER() and
GPOINTER_TO_[U]INT for storing small integers integers GPOINTER_TO_[U]INT for storing small integers integers
inside pointers. inside pointers.
* glib/testglib.c: Print sizeof() results * glib/testglib.c: Print sizeof() results
as g_print("%ld", (glong)sizeof(foo)), to deal with as g_print("%ld", (glong)sizeof(foo)), to deal with
size_t being long on Alpha's. size_t being long on Alpha's.
Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org> Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org>
(James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch) (James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch)
* glib.h gstring.c gmessages.c: Added some missing * glib.h gstring.c gmessages.c: Added some missing
const to arguments. const to arguments.
@@ -611,8 +641,8 @@ Fri May 1 16:36:08 1998 Owen Taylor <otaylor@gtk.org>
Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org> Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org>
* gstring.c : Check arguments more carefully, * gstring.c : Check arguments more carefully,
(gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de) (gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de)
Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu> Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu>
@@ -638,7 +668,7 @@ Fri Apr 3 18:05:45 1998 Owen Taylor <owt1@cornell.edu>
* testglib.c: Removed literal german from strings * testglib.c: Removed literal german from strings
to appease SGI compiler. to appease SGI compiler.
Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu> Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu>
* configure.in glib glibconfig.h.in: Add test for atexit/on_exit - * configure.in glib glibconfig.h.in: Add test for atexit/on_exit -
@@ -689,7 +719,7 @@ Mon Mar 2 17:51:18 1998 Owen Taylor <owt1@cornell.edu>
to take gchar* not guchar* to take gchar* not guchar*
* testglib.c: Remove trailing ; after functions * testglib.c: Remove trailing ; after functions
Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu> Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu>
* glib.h gstring.c: Added g_string_insert[_c]() * glib.h gstring.c: Added g_string_insert[_c]()
@@ -761,7 +791,7 @@ Sat Jan 17 23:52:40 1998 Owen Taylor <owt1@cornell.edu>
renamed g_string_equal => g_str_equal renamed g_string_equal => g_str_equal
renamed g_string_hash => g_str_hash renamed g_string_hash => g_str_hash
And const corrected. Old functions left in for now. And const corrected. Old functions left in for now.
Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net> Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net>
* gutils.c (g_strerror): changed message for EAGAIN from * gutils.c (g_strerror): changed message for EAGAIN from
@@ -789,8 +819,8 @@ Sat Jan 3 20:23:25 1998 Owen Taylor <owt1@cornell.edu>
Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net> Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net>
* glib_pre1.h: * glib_pre1.h:
* glib_pre2.h: * glib_pre2.h:
* glib.h: reverted glibconfig.h and glib.h files back to the * glib.h: reverted glibconfig.h and glib.h files back to the
way they were before my ugly hack. way they were before my ugly hack.
@@ -822,8 +852,8 @@ Mon Dec 15 19:33:58 1997 Tim Janik <timj@psynet.net>
Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net> Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
* glib_pre1.h: * glib_pre1.h:
* glib_pre2.h: * glib_pre2.h:
* glib.h: this file now gets concatenated by makeglib_h from * glib.h: this file now gets concatenated by makeglib_h from
glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got
created by configure (done by Jay Painter). created by configure (done by Jay Painter).
@@ -831,7 +861,7 @@ Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
* glib_pre2.h: the g_assert*() and g_return_*_fail() macros * glib_pre2.h: the g_assert*() and g_return_*_fail() macros
are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts
when used within if (...) g_macro(); else ... conditionals. when used within if (...) g_macro(); else ... conditionals.
Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU> Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU>
* glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to * glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to

View File

@@ -1,3 +1,33 @@
Tue Sep 1 23:46:31 1998 Josh MacDonald <jmacd@axis.hip.berkeley.edu>
* testglib.c (main): Update the array tests. Reduce the number of
iterations for the prepend test from 10000 to 100 since it is
O(n^2) and was taking longer than I would like to wait.
* garray.c: I've worked on the GArray interface, mostly. It was
seriously broken before and I hate to do it, but this is going to
break some code. It is important to do this now, because more and
more people are starting to use glib and the interface was both
broken and inconsistent. First, rename the _truncate functions of
both the GArray and GPtrArray classes to _set_size, since this
function can also be used to extend the arrays. GArray now
accepts two more initialization arguments: clear and element_size.
Instead of providing the type to each access function, the array
now stores the element size. Clear, if set, causes the library to
zero element's memory as the array expands. The major broken-ness
here was that array->len was in bytes, not elements. Now, since
the array knows its element size, array->len is correct and I have
removed the g_array_length macro. The only macro which now
accepts the type as an argument is g_array_index, which casts the
element to the right type--this interface does not change. The
append and prepend functions simply need the types removed.
g_ptr_array_remove_index now returns the removed element.
* gprimes.c (g_spaced_primes_closest): Move this function out of
ghash.c and rename it from g_hash_closest_prime. Fix the primes
so that they are actually prime (they weren't all -- isn't that
nice?).
Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org> Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
@@ -26,8 +56,8 @@ Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h: provide a definition for G_VA_COPY. * glib.h: provide a definition for G_VA_COPY.
* glib.h: * glib.h:
* gmessages.c: * gmessages.c:
(g_logv): (g_logv):
(g_vsnprintf): (g_vsnprintf):
pass va_lists by value, not by reference, since this causes problems pass va_lists by value, not by reference, since this causes problems
on platforms that implement va_list as as arrays. internaly, use on platforms that implement va_list as as arrays. internaly, use
@@ -109,7 +139,7 @@ Sun Aug 16 20:28:27 1998 Tim Janik <timj@gtk.org>
gint64 itself, packages that need gint64 should test for this gint64 itself, packages that need gint64 should test for this
themselves. themselves.
* glib.h: * glib.h:
* gutils.c: added a new function g_vsnprintf(). * gutils.c: added a new function g_vsnprintf().
Sun Aug 16 Elliot Lee Sun Aug 16 Elliot Lee
@@ -148,13 +178,13 @@ Fri Aug 13 14:23:37 1998 Tim Janik <timj@gtk.org>
in other required places. in other required places.
* gnode.c: * gnode.c:
(g_node_prepend): (g_node_prepend):
(g_node_insert_before): (g_node_insert_before):
(g_node_insert): (g_node_insert):
(g_node_append_data): (g_node_append_data):
(g_node_prepend_data): (g_node_prepend_data):
(g_node_insert_data_before): (g_node_insert_data_before):
(g_node_insert_data): (g_node_insert_data):
(g_node_append): (g_node_append):
return (node), so these macros/functions can be usefully chained with return (node), so these macros/functions can be usefully chained with
g_node_new(). g_node_new().
@@ -211,7 +241,7 @@ Tue Aug 4 15:17:54 1998 Tim Janik <timj@gtk.org>
Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org> Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gnode.c: change order of gpointer data; field in struct _GNode to * gnode.c: change order of gpointer data; field in struct _GNode to
be partly binary compatible with GList and GSList. be partly binary compatible with GList and GSList.
@@ -228,7 +258,7 @@ Fri Jul 31 09:08:16 1998 Tim Janik <timj@gtk.org>
* Makefile.am: compile gnode.c. * Makefile.am: compile gnode.c.
* glib.h: * glib.h:
* gnode.c: added implementation of n-way trees. * gnode.c: added implementation of n-way trees.
* gtree.c (g_tree_traverse): added a warning to the switch() statement * gtree.c (g_tree_traverse): added a warning to the switch() statement
@@ -245,14 +275,14 @@ Mon Jul 27 01:02:27 1998 Tim Janik <timj@gtk.org>
implementation. implementation.
Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu> Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu>
* glib.h: gtime changed to g_time. gtime is used in * glib.h: gtime changed to g_time. gtime is used in
/usr/include/time.h in NetBSD, causing multiple headaches. /usr/include/time.h in NetBSD, causing multiple headaches.
If this isn't the right way of fixing it.... ;) If this isn't the right way of fixing it.... ;)
Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org> Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gscanner.c: new functions to make a scanner scope sensitive wrt * gscanner.c: new functions to make a scanner scope sensitive wrt
symbol lookups. symbol lookups.
g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol, g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol,
@@ -273,7 +303,7 @@ Tue Jul 14 09:05:18 1998 Tim Janik <timj@gtk.org>
Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org> Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gutils.h: added a bunch of utility/wrapper functions: * gutils.h: added a bunch of utility/wrapper functions:
g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(), g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(),
g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname(). g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname().
@@ -396,7 +426,7 @@ Thu Jun 11 04:15:31 1998 Tim Janik <timj@gtk.org>
Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org> Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org>
* Makefile.am glib.m4 configure.in: * Makefile.am glib.m4 configure.in:
Moved out from GTK+; added AM_PATH_GLIB macro. Moved out from GTK+; added AM_PATH_GLIB macro.
Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org> Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org>
@@ -411,7 +441,7 @@ Sat May 23 19:00:01 1998 Owen Taylor <otaylor@gtk.org>
[ Combination of: [ Combination of:
gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>) gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>)
gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ] gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ]
* glib.h ghash.c gstring.c gdataset.c gutils.c: * glib.h ghash.c gstring.c gdataset.c gutils.c:
- Added new typedef g_const_pointer; expunged all incorrect - Added new typedef g_const_pointer; expunged all incorrect
uses of 'const gpointer'. uses of 'const gpointer'.
@@ -433,7 +463,7 @@ Sat Jun 6 14:09:22 PDT 1998 Manish Singh <yosh@gimp.org>
Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org> Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org>
* glib.h (g_chunk_new0): convenience macro, for allocating small chunks * glib.h (g_chunk_new0): convenience macro, for allocating small chunks
like g_chunk_new() with additional 0 initialization. like g_chunk_new() with additional 0 initialization.
Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org> Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org>
@@ -451,7 +481,7 @@ Tue May 26 18:30:06 1998 Tim Janik <timj@gtk.org>
Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org> Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org>
(Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch) (Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch)
* gutils.c: Restored a missing prototype for g_vsprintf. * gutils.c: Restored a missing prototype for g_vsprintf.
Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org> Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org>
@@ -506,15 +536,15 @@ Tue May 12 19:22:58 1998 Owen Taylor <otaylor@gtk.org>
* glib/glib.h: Added macros G[U]INT_TO_POINTER() and * glib/glib.h: Added macros G[U]INT_TO_POINTER() and
GPOINTER_TO_[U]INT for storing small integers integers GPOINTER_TO_[U]INT for storing small integers integers
inside pointers. inside pointers.
* glib/testglib.c: Print sizeof() results * glib/testglib.c: Print sizeof() results
as g_print("%ld", (glong)sizeof(foo)), to deal with as g_print("%ld", (glong)sizeof(foo)), to deal with
size_t being long on Alpha's. size_t being long on Alpha's.
Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org> Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org>
(James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch) (James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch)
* glib.h gstring.c gmessages.c: Added some missing * glib.h gstring.c gmessages.c: Added some missing
const to arguments. const to arguments.
@@ -611,8 +641,8 @@ Fri May 1 16:36:08 1998 Owen Taylor <otaylor@gtk.org>
Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org> Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org>
* gstring.c : Check arguments more carefully, * gstring.c : Check arguments more carefully,
(gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de) (gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de)
Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu> Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu>
@@ -638,7 +668,7 @@ Fri Apr 3 18:05:45 1998 Owen Taylor <owt1@cornell.edu>
* testglib.c: Removed literal german from strings * testglib.c: Removed literal german from strings
to appease SGI compiler. to appease SGI compiler.
Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu> Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu>
* configure.in glib glibconfig.h.in: Add test for atexit/on_exit - * configure.in glib glibconfig.h.in: Add test for atexit/on_exit -
@@ -689,7 +719,7 @@ Mon Mar 2 17:51:18 1998 Owen Taylor <owt1@cornell.edu>
to take gchar* not guchar* to take gchar* not guchar*
* testglib.c: Remove trailing ; after functions * testglib.c: Remove trailing ; after functions
Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu> Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu>
* glib.h gstring.c: Added g_string_insert[_c]() * glib.h gstring.c: Added g_string_insert[_c]()
@@ -761,7 +791,7 @@ Sat Jan 17 23:52:40 1998 Owen Taylor <owt1@cornell.edu>
renamed g_string_equal => g_str_equal renamed g_string_equal => g_str_equal
renamed g_string_hash => g_str_hash renamed g_string_hash => g_str_hash
And const corrected. Old functions left in for now. And const corrected. Old functions left in for now.
Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net> Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net>
* gutils.c (g_strerror): changed message for EAGAIN from * gutils.c (g_strerror): changed message for EAGAIN from
@@ -789,8 +819,8 @@ Sat Jan 3 20:23:25 1998 Owen Taylor <owt1@cornell.edu>
Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net> Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net>
* glib_pre1.h: * glib_pre1.h:
* glib_pre2.h: * glib_pre2.h:
* glib.h: reverted glibconfig.h and glib.h files back to the * glib.h: reverted glibconfig.h and glib.h files back to the
way they were before my ugly hack. way they were before my ugly hack.
@@ -822,8 +852,8 @@ Mon Dec 15 19:33:58 1997 Tim Janik <timj@psynet.net>
Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net> Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
* glib_pre1.h: * glib_pre1.h:
* glib_pre2.h: * glib_pre2.h:
* glib.h: this file now gets concatenated by makeglib_h from * glib.h: this file now gets concatenated by makeglib_h from
glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got
created by configure (done by Jay Painter). created by configure (done by Jay Painter).
@@ -831,7 +861,7 @@ Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
* glib_pre2.h: the g_assert*() and g_return_*_fail() macros * glib_pre2.h: the g_assert*() and g_return_*_fail() macros
are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts
when used within if (...) g_macro(); else ... conditionals. when used within if (...) g_macro(); else ... conditionals.
Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU> Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU>
* glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to * glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to

View File

@@ -1,3 +1,33 @@
Tue Sep 1 23:46:31 1998 Josh MacDonald <jmacd@axis.hip.berkeley.edu>
* testglib.c (main): Update the array tests. Reduce the number of
iterations for the prepend test from 10000 to 100 since it is
O(n^2) and was taking longer than I would like to wait.
* garray.c: I've worked on the GArray interface, mostly. It was
seriously broken before and I hate to do it, but this is going to
break some code. It is important to do this now, because more and
more people are starting to use glib and the interface was both
broken and inconsistent. First, rename the _truncate functions of
both the GArray and GPtrArray classes to _set_size, since this
function can also be used to extend the arrays. GArray now
accepts two more initialization arguments: clear and element_size.
Instead of providing the type to each access function, the array
now stores the element size. Clear, if set, causes the library to
zero element's memory as the array expands. The major broken-ness
here was that array->len was in bytes, not elements. Now, since
the array knows its element size, array->len is correct and I have
removed the g_array_length macro. The only macro which now
accepts the type as an argument is g_array_index, which casts the
element to the right type--this interface does not change. The
append and prepend functions simply need the types removed.
g_ptr_array_remove_index now returns the removed element.
* gprimes.c (g_spaced_primes_closest): Move this function out of
ghash.c and rename it from g_hash_closest_prime. Fix the primes
so that they are actually prime (they weren't all -- isn't that
nice?).
Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org> Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
@@ -26,8 +56,8 @@ Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h: provide a definition for G_VA_COPY. * glib.h: provide a definition for G_VA_COPY.
* glib.h: * glib.h:
* gmessages.c: * gmessages.c:
(g_logv): (g_logv):
(g_vsnprintf): (g_vsnprintf):
pass va_lists by value, not by reference, since this causes problems pass va_lists by value, not by reference, since this causes problems
on platforms that implement va_list as as arrays. internaly, use on platforms that implement va_list as as arrays. internaly, use
@@ -109,7 +139,7 @@ Sun Aug 16 20:28:27 1998 Tim Janik <timj@gtk.org>
gint64 itself, packages that need gint64 should test for this gint64 itself, packages that need gint64 should test for this
themselves. themselves.
* glib.h: * glib.h:
* gutils.c: added a new function g_vsnprintf(). * gutils.c: added a new function g_vsnprintf().
Sun Aug 16 Elliot Lee Sun Aug 16 Elliot Lee
@@ -148,13 +178,13 @@ Fri Aug 13 14:23:37 1998 Tim Janik <timj@gtk.org>
in other required places. in other required places.
* gnode.c: * gnode.c:
(g_node_prepend): (g_node_prepend):
(g_node_insert_before): (g_node_insert_before):
(g_node_insert): (g_node_insert):
(g_node_append_data): (g_node_append_data):
(g_node_prepend_data): (g_node_prepend_data):
(g_node_insert_data_before): (g_node_insert_data_before):
(g_node_insert_data): (g_node_insert_data):
(g_node_append): (g_node_append):
return (node), so these macros/functions can be usefully chained with return (node), so these macros/functions can be usefully chained with
g_node_new(). g_node_new().
@@ -211,7 +241,7 @@ Tue Aug 4 15:17:54 1998 Tim Janik <timj@gtk.org>
Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org> Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gnode.c: change order of gpointer data; field in struct _GNode to * gnode.c: change order of gpointer data; field in struct _GNode to
be partly binary compatible with GList and GSList. be partly binary compatible with GList and GSList.
@@ -228,7 +258,7 @@ Fri Jul 31 09:08:16 1998 Tim Janik <timj@gtk.org>
* Makefile.am: compile gnode.c. * Makefile.am: compile gnode.c.
* glib.h: * glib.h:
* gnode.c: added implementation of n-way trees. * gnode.c: added implementation of n-way trees.
* gtree.c (g_tree_traverse): added a warning to the switch() statement * gtree.c (g_tree_traverse): added a warning to the switch() statement
@@ -245,14 +275,14 @@ Mon Jul 27 01:02:27 1998 Tim Janik <timj@gtk.org>
implementation. implementation.
Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu> Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu>
* glib.h: gtime changed to g_time. gtime is used in * glib.h: gtime changed to g_time. gtime is used in
/usr/include/time.h in NetBSD, causing multiple headaches. /usr/include/time.h in NetBSD, causing multiple headaches.
If this isn't the right way of fixing it.... ;) If this isn't the right way of fixing it.... ;)
Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org> Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gscanner.c: new functions to make a scanner scope sensitive wrt * gscanner.c: new functions to make a scanner scope sensitive wrt
symbol lookups. symbol lookups.
g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol, g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol,
@@ -273,7 +303,7 @@ Tue Jul 14 09:05:18 1998 Tim Janik <timj@gtk.org>
Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org> Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org>
* glib.h: * glib.h:
* gutils.h: added a bunch of utility/wrapper functions: * gutils.h: added a bunch of utility/wrapper functions:
g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(), g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(),
g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname(). g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname().
@@ -396,7 +426,7 @@ Thu Jun 11 04:15:31 1998 Tim Janik <timj@gtk.org>
Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org> Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org>
* Makefile.am glib.m4 configure.in: * Makefile.am glib.m4 configure.in:
Moved out from GTK+; added AM_PATH_GLIB macro. Moved out from GTK+; added AM_PATH_GLIB macro.
Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org> Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org>
@@ -411,7 +441,7 @@ Sat May 23 19:00:01 1998 Owen Taylor <otaylor@gtk.org>
[ Combination of: [ Combination of:
gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>) gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>)
gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ] gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ]
* glib.h ghash.c gstring.c gdataset.c gutils.c: * glib.h ghash.c gstring.c gdataset.c gutils.c:
- Added new typedef g_const_pointer; expunged all incorrect - Added new typedef g_const_pointer; expunged all incorrect
uses of 'const gpointer'. uses of 'const gpointer'.
@@ -433,7 +463,7 @@ Sat Jun 6 14:09:22 PDT 1998 Manish Singh <yosh@gimp.org>
Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org> Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org>
* glib.h (g_chunk_new0): convenience macro, for allocating small chunks * glib.h (g_chunk_new0): convenience macro, for allocating small chunks
like g_chunk_new() with additional 0 initialization. like g_chunk_new() with additional 0 initialization.
Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org> Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org>
@@ -451,7 +481,7 @@ Tue May 26 18:30:06 1998 Tim Janik <timj@gtk.org>
Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org> Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org>
(Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch) (Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch)
* gutils.c: Restored a missing prototype for g_vsprintf. * gutils.c: Restored a missing prototype for g_vsprintf.
Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org> Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org>
@@ -506,15 +536,15 @@ Tue May 12 19:22:58 1998 Owen Taylor <otaylor@gtk.org>
* glib/glib.h: Added macros G[U]INT_TO_POINTER() and * glib/glib.h: Added macros G[U]INT_TO_POINTER() and
GPOINTER_TO_[U]INT for storing small integers integers GPOINTER_TO_[U]INT for storing small integers integers
inside pointers. inside pointers.
* glib/testglib.c: Print sizeof() results * glib/testglib.c: Print sizeof() results
as g_print("%ld", (glong)sizeof(foo)), to deal with as g_print("%ld", (glong)sizeof(foo)), to deal with
size_t being long on Alpha's. size_t being long on Alpha's.
Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org> Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org>
(James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch) (James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch)
* glib.h gstring.c gmessages.c: Added some missing * glib.h gstring.c gmessages.c: Added some missing
const to arguments. const to arguments.
@@ -611,8 +641,8 @@ Fri May 1 16:36:08 1998 Owen Taylor <otaylor@gtk.org>
Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org> Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org>
* gstring.c : Check arguments more carefully, * gstring.c : Check arguments more carefully,
(gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de) (gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de)
Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu> Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu>
@@ -638,7 +668,7 @@ Fri Apr 3 18:05:45 1998 Owen Taylor <owt1@cornell.edu>
* testglib.c: Removed literal german from strings * testglib.c: Removed literal german from strings
to appease SGI compiler. to appease SGI compiler.
Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu> Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu>
* configure.in glib glibconfig.h.in: Add test for atexit/on_exit - * configure.in glib glibconfig.h.in: Add test for atexit/on_exit -
@@ -689,7 +719,7 @@ Mon Mar 2 17:51:18 1998 Owen Taylor <owt1@cornell.edu>
to take gchar* not guchar* to take gchar* not guchar*
* testglib.c: Remove trailing ; after functions * testglib.c: Remove trailing ; after functions
Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu> Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu>
* glib.h gstring.c: Added g_string_insert[_c]() * glib.h gstring.c: Added g_string_insert[_c]()
@@ -761,7 +791,7 @@ Sat Jan 17 23:52:40 1998 Owen Taylor <owt1@cornell.edu>
renamed g_string_equal => g_str_equal renamed g_string_equal => g_str_equal
renamed g_string_hash => g_str_hash renamed g_string_hash => g_str_hash
And const corrected. Old functions left in for now. And const corrected. Old functions left in for now.
Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net> Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net>
* gutils.c (g_strerror): changed message for EAGAIN from * gutils.c (g_strerror): changed message for EAGAIN from
@@ -789,8 +819,8 @@ Sat Jan 3 20:23:25 1998 Owen Taylor <owt1@cornell.edu>
Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net> Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net>
* glib_pre1.h: * glib_pre1.h:
* glib_pre2.h: * glib_pre2.h:
* glib.h: reverted glibconfig.h and glib.h files back to the * glib.h: reverted glibconfig.h and glib.h files back to the
way they were before my ugly hack. way they were before my ugly hack.
@@ -822,8 +852,8 @@ Mon Dec 15 19:33:58 1997 Tim Janik <timj@psynet.net>
Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net> Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
* glib_pre1.h: * glib_pre1.h:
* glib_pre2.h: * glib_pre2.h:
* glib.h: this file now gets concatenated by makeglib_h from * glib.h: this file now gets concatenated by makeglib_h from
glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got
created by configure (done by Jay Painter). created by configure (done by Jay Painter).
@@ -831,7 +861,7 @@ Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
* glib_pre2.h: the g_assert*() and g_return_*_fail() macros * glib_pre2.h: the g_assert*() and g_return_*_fail() macros
are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts
when used within if (...) g_macro(); else ... conditionals. when used within if (...) g_macro(); else ... conditionals.
Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU> Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU>
* glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to * glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to

106
garray.c
View File

@@ -30,7 +30,9 @@ struct _GRealArray
guint8 *data; guint8 *data;
guint len; guint len;
guint alloc; guint alloc;
guint zero_terminated; guint elt_size;
guint zero_terminated : 1;
guint clear : 1;
}; };
@@ -43,7 +45,9 @@ static GMemChunk *array_mem_chunk = NULL;
GArray* GArray*
g_array_new (gboolean zero_terminated) g_array_new (gboolean zero_terminated,
gboolean clear,
guint elt_size)
{ {
GRealArray *array; GRealArray *array;
@@ -54,10 +58,12 @@ g_array_new (gboolean zero_terminated)
array = g_chunk_new (GRealArray, array_mem_chunk); array = g_chunk_new (GRealArray, array_mem_chunk);
array->data = NULL; array->data = NULL;
array->len = 0; array->len = 0;
array->alloc = 0; array->alloc = 0;
array->zero_terminated = (zero_terminated ? 1 : 0); array->zero_terminated = (zero_terminated ? 1 : 0);
array->clear = (clear ? 1 : 0);
array->elt_size = elt_size;
return (GArray*) array; return (GArray*) array;
} }
@@ -73,45 +79,52 @@ g_array_free (GArray *array,
} }
GArray* GArray*
g_rarray_append (GArray *array, g_array_append_vals (GArray *farray,
gpointer data, gpointer data,
gint size) guint len)
{ {
g_array_maybe_expand ((GRealArray*) array, size); GRealArray *array = (GRealArray*) farray;
memcpy (array->data + array->len, data, size); g_array_maybe_expand (array, len);
array->len += size; memcpy (array->data + array->elt_size * array->len, data, array->elt_size * len);
return array; array->len += len;
return farray;
} }
GArray* GArray*
g_rarray_prepend (GArray *array, g_array_prepend_vals (GArray *farray,
gpointer data, gpointer data,
gint size) guint len)
{ {
g_array_maybe_expand ((GRealArray*) array, size); GRealArray *array = (GRealArray*) farray;
g_memmove (array->data + size, array->data, array->len); g_array_maybe_expand (array, len);
memcpy (array->data, data, size);
array->len += size; g_memmove (array->data + array->elt_size * len, array->data, array->elt_size * array->len);
return array; memcpy (array->data, data, len * array->elt_size);
array->len += len;
return farray;
} }
GArray* GArray*
g_rarray_truncate (GArray *array, g_array_set_size (GArray *farray,
gint length, guint length)
gint size)
{ {
if (array->data) GRealArray *array = (GRealArray*) farray;
memset (array->data + length * size, 0, size);
array->len = length * size;
return array;
}
if (array->len < length)
g_array_maybe_expand (array, length - array->len);
array->len = length;
return farray;
}
static gint static gint
g_nearest_pow (gint num) g_nearest_pow (gint num)
@@ -128,17 +141,19 @@ static void
g_array_maybe_expand (GRealArray *array, g_array_maybe_expand (GRealArray *array,
gint len) gint len)
{ {
guint old_alloc; guint want_alloc = (array->len + len + array->zero_terminated) * array->elt_size;
if ((array->len + len) > array->alloc) if (want_alloc > array->alloc)
{ {
old_alloc = array->alloc; guint old_alloc = array->alloc;
array->alloc = g_nearest_pow (array->len + array->zero_terminated + len); array->alloc = g_nearest_pow (want_alloc);
array->alloc = MAX (array->alloc, MIN_ARRAY_SIZE); array->alloc = MAX (array->alloc, MIN_ARRAY_SIZE);
array->data = g_realloc (array->data, array->alloc); array->data = g_realloc (array->data, array->alloc);
memset (array->data + old_alloc, 0, array->alloc - old_alloc); if (array->clear || array->zero_terminated)
memset (array->data + old_alloc, 0, array->alloc - old_alloc);
} }
} }
@@ -228,21 +243,26 @@ g_ptr_array_set_size (GPtrArray *farray,
array->len = length; array->len = length;
} }
void gpointer
g_ptr_array_remove_index (GPtrArray* farray, g_ptr_array_remove_index (GPtrArray* farray,
gint index) gint index)
{ {
GRealPtrArray* array = (GRealPtrArray*) farray; GRealPtrArray* array = (GRealPtrArray*) farray;
gpointer result;
g_return_if_fail (array); g_return_val_if_fail (array, NULL);
g_return_if_fail (index < array->len); g_return_val_if_fail (index >= 0 && index < array->len, NULL);
result = array->pdata[index];
array->pdata[index] = array->pdata[array->len - 1]; array->pdata[index] = array->pdata[array->len - 1];
array->pdata[array->len - 1] = NULL; array->pdata[array->len - 1] = NULL;
array->len -= 1; array->len -= 1;
return result;
} }
gboolean gboolean
@@ -284,11 +304,11 @@ g_ptr_array_add (GPtrArray* farray,
GByteArray* g_byte_array_new (void) GByteArray* g_byte_array_new (void)
{ {
return (GByteArray*) g_array_new (FALSE); return (GByteArray*) g_array_new (FALSE, FALSE, 1);
} }
void g_byte_array_free (GByteArray *array, void g_byte_array_free (GByteArray *array,
gint free_segment) gboolean free_segment)
{ {
g_array_free ((GArray*) array, free_segment); g_array_free ((GArray*) array, free_segment);
} }
@@ -297,7 +317,7 @@ GByteArray* g_byte_array_append (GByteArray *array,
const guint8 *data, const guint8 *data,
guint len) guint len)
{ {
g_rarray_append ((GArray*) array, (guint8*)data, len); g_array_append_vals ((GArray*) array, (guint8*)data, len);
return array; return array;
} }
@@ -306,15 +326,15 @@ GByteArray* g_byte_array_prepend (GByteArray *array,
const guint8 *data, const guint8 *data,
guint len) guint len)
{ {
g_rarray_prepend ((GArray*) array, (guint8*)data, len); g_array_prepend_vals ((GArray*) array, (guint8*)data, len);
return array; return array;
} }
GByteArray* g_byte_array_truncate (GByteArray *array, GByteArray* g_byte_array_set_size (GByteArray *array,
gint length) guint length)
{ {
g_rarray_truncate ((GArray*) array, length, 1); g_array_set_size ((GArray*) array, length);
return array; return array;
} }

43
ghash.c
View File

@@ -46,7 +46,6 @@ struct _GHashTable
static void g_hash_table_resize (GHashTable *hash_table); static void g_hash_table_resize (GHashTable *hash_table);
static GHashNode** g_hash_table_lookup_node(GHashTable *hash_table, static GHashNode** g_hash_table_lookup_node(GHashTable *hash_table,
gconstpointer key); gconstpointer key);
static gint g_hash_closest_prime (gint num);
static GHashNode* g_hash_node_new (gpointer key, static GHashNode* g_hash_node_new (gpointer key,
gpointer value); gpointer value);
static void g_hash_node_destroy (GHashNode *hash_node); static void g_hash_node_destroy (GHashNode *hash_node);
@@ -63,7 +62,7 @@ g_hash_table_new (GHashFunc hash_func,
{ {
GHashTable *hash_table; GHashTable *hash_table;
gint i; gint i;
hash_table = g_new (GHashTable, 1); hash_table = g_new (GHashTable, 1);
hash_table->size = HASH_TABLE_MIN_SIZE; hash_table->size = HASH_TABLE_MIN_SIZE;
hash_table->nnodes = 0; hash_table->nnodes = 0;
@@ -71,7 +70,7 @@ g_hash_table_new (GHashFunc hash_func,
hash_table->hash_func = hash_func ? hash_func : g_direct_hash; hash_table->hash_func = hash_func ? hash_func : g_direct_hash;
hash_table->key_compare_func = key_compare_func; hash_table->key_compare_func = key_compare_func;
hash_table->nodes = g_new (GHashNode*, hash_table->size); hash_table->nodes = g_new (GHashNode*, hash_table->size);
for (i = 0; i < hash_table->size; i++) for (i = 0; i < hash_table->size; i++)
hash_table->nodes[i] = NULL; hash_table->nodes[i] = NULL;
@@ -84,10 +83,10 @@ g_hash_table_destroy (GHashTable *hash_table)
gint i; gint i;
g_return_if_fail (hash_table); g_return_if_fail (hash_table);
for (i = 0; i < hash_table->size; i++) for (i = 0; i < hash_table->size; i++)
g_hash_nodes_destroy (hash_table->nodes[i]); g_hash_nodes_destroy (hash_table->nodes[i]);
g_free (hash_table->nodes); g_free (hash_table->nodes);
g_free (hash_table); g_free (hash_table);
} }
@@ -100,7 +99,7 @@ g_hash_table_insert (GHashTable *hash_table,
GHashNode **node; GHashNode **node;
g_return_if_fail (hash_table); g_return_if_fail (hash_table);
node = g_hash_table_lookup_node (hash_table, key); node = g_hash_table_lookup_node (hash_table, key);
if (*node) if (*node)
@@ -146,7 +145,7 @@ g_hash_table_lookup (GHashTable *hash_table,
gconstpointer key) gconstpointer key)
{ {
GHashNode *node; GHashNode *node;
g_return_val_if_fail (hash_table, NULL); g_return_val_if_fail (hash_table, NULL);
node = *g_hash_table_lookup_node (hash_table, key); node = *g_hash_table_lookup_node (hash_table, key);
@@ -160,7 +159,7 @@ g_hash_table_lookup_extended (GHashTable *hash_table,
gpointer *value) gpointer *value)
{ {
GHashNode *node; GHashNode *node;
g_return_val_if_fail (hash_table, FALSE); g_return_val_if_fail (hash_table, FALSE);
node = *g_hash_table_lookup_node (hash_table, lookup_key); node = *g_hash_table_lookup_node (hash_table, lookup_key);
@@ -232,19 +231,19 @@ g_hash_table_resize (GHashTable *hash_table)
g_return_if_fail (hash_table); g_return_if_fail (hash_table);
nodes_per_list = (gfloat) hash_table->nnodes / (gfloat) hash_table->size; nodes_per_list = (gfloat) hash_table->nnodes / (gfloat) hash_table->size;
if ((nodes_per_list > 0.3 || hash_table->size <= HASH_TABLE_MIN_SIZE) && if ((nodes_per_list > 0.3 || hash_table->size <= HASH_TABLE_MIN_SIZE) &&
(nodes_per_list < 3.0 || hash_table->size >= HASH_TABLE_MAX_SIZE)) (nodes_per_list < 3.0 || hash_table->size >= HASH_TABLE_MAX_SIZE))
return; return;
new_size = CLAMP(g_hash_closest_prime (hash_table->nnodes), new_size = CLAMP(g_spaced_primes_closest (hash_table->nnodes),
HASH_TABLE_MIN_SIZE, HASH_TABLE_MIN_SIZE,
HASH_TABLE_MAX_SIZE); HASH_TABLE_MAX_SIZE);
new_nodes = g_new (GHashNode*, new_size); new_nodes = g_new (GHashNode*, new_size);
for (i = 0; i < new_size; i++) for (i = 0; i < new_size; i++)
new_nodes[i] = NULL; new_nodes[i] = NULL;
for (i = 0; i < hash_table->size; i++) for (i = 0; i < hash_table->size; i++)
for (node = hash_table->nodes[i]; node; node = next) for (node = hash_table->nodes[i]; node; node = next)
{ {
@@ -253,7 +252,7 @@ g_hash_table_resize (GHashTable *hash_table)
node->next = new_nodes[hash_val]; node->next = new_nodes[hash_val];
new_nodes[hash_val] = node; new_nodes[hash_val] = node;
} }
g_free (hash_table->nodes); g_free (hash_table->nodes);
hash_table->nodes = new_nodes; hash_table->nodes = new_nodes;
hash_table->size = new_size; hash_table->size = new_size;
@@ -264,7 +263,7 @@ g_hash_table_lookup_node (GHashTable *hash_table,
gconstpointer key) gconstpointer key)
{ {
GHashNode **node; GHashNode **node;
g_return_val_if_fail (hash_table, NULL); g_return_val_if_fail (hash_table, NULL);
node = &hash_table->nodes node = &hash_table->nodes
@@ -281,24 +280,10 @@ g_hash_table_lookup_node (GHashTable *hash_table,
else else
while (*node && (*node)->key != key) while (*node && (*node)->key != key)
node = &(*node)->next; node = &(*node)->next;
return node; return node;
} }
static gint
g_hash_closest_prime (gint num)
{
extern gint g_primes[];
extern gint g_nprimes;
gint i;
for (i = 0; i < g_nprimes; i++)
if ((g_primes[i] - num) > 0)
return g_primes[i];
return g_primes[g_nprimes - 1];
}
static GHashNode* static GHashNode*
g_hash_node_new (gpointer key, g_hash_node_new (gpointer key,
gpointer value) gpointer value)

171
glib.h
View File

@@ -241,7 +241,7 @@
# define ATEXIT(proc) (atexit (proc)) # define ATEXIT(proc) (atexit (proc))
# elif defined (HAVE_ON_EXIT) # elif defined (HAVE_ON_EXIT)
# define ATEXIT(proc) (on_exit ((void (*)(int, void *))(proc), NULL)) # define ATEXIT(proc) (on_exit ((void (*)(int, void *))(proc), NULL))
# endif # endif
#endif /* ATEXIT */ #endif /* ATEXIT */
@@ -438,9 +438,9 @@ typedef unsigned int guint;
typedef float gfloat; typedef float gfloat;
typedef double gdouble; typedef double gdouble;
/* HAVE_LONG_DOUBLE doesn't work correctly on all platforms. /* HAVE_LONG_DOUBLE doesn't work correctly on all platforms.
* Since gldouble isn't used anywhere, just disable it for now * Since gldouble isn't used anywhere, just disable it for now */
*/
#if 0 #if 0
#ifdef HAVE_LONG_DOUBLE #ifdef HAVE_LONG_DOUBLE
typedef long double gldouble; typedef long double gldouble;
@@ -575,7 +575,7 @@ typedef enum
/* log flags */ /* log flags */
G_LOG_FLAG_RECURSION = 1 << 0, G_LOG_FLAG_RECURSION = 1 << 0,
G_LOG_FLAG_FATAL = 1 << 1, G_LOG_FLAG_FATAL = 1 << 1,
/* GLib log levels */ /* GLib log levels */
G_LOG_LEVEL_ERROR = 1 << 2, /* always fatal */ G_LOG_LEVEL_ERROR = 1 << 2, /* always fatal */
G_LOG_LEVEL_CRITICAL = 1 << 3, G_LOG_LEVEL_CRITICAL = 1 << 3,
@@ -583,7 +583,7 @@ typedef enum
G_LOG_LEVEL_MESSAGE = 1 << 5, G_LOG_LEVEL_MESSAGE = 1 << 5,
G_LOG_LEVEL_INFO = 1 << 6, G_LOG_LEVEL_INFO = 1 << 6,
G_LOG_LEVEL_DEBUG = 1 << 7, G_LOG_LEVEL_DEBUG = 1 << 7,
G_LOG_LEVEL_MASK = ~(G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL) G_LOG_LEVEL_MASK = ~(G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL)
} GLogLevelFlags; } GLogLevelFlags;
@@ -692,8 +692,8 @@ GList* g_list_insert (GList *list,
gint position); gint position);
GList* g_list_insert_sorted (GList *list, GList* g_list_insert_sorted (GList *list,
gpointer data, gpointer data,
GCompareFunc func); GCompareFunc func);
GList* g_list_concat (GList *list1, GList* g_list_concat (GList *list1,
GList *list2); GList *list2);
GList* g_list_remove (GList *list, GList* g_list_remove (GList *list,
gpointer data); gpointer data);
@@ -737,8 +737,8 @@ GSList* g_slist_insert (GSList *list,
gint position); gint position);
GSList* g_slist_insert_sorted (GSList *list, GSList* g_slist_insert_sorted (GSList *list,
gpointer data, gpointer data,
GCompareFunc func); GCompareFunc func);
GSList* g_slist_concat (GSList *list1, GSList* g_slist_concat (GSList *list1,
GSList *list2); GSList *list2);
GSList* g_slist_remove (GSList *list, GSList* g_slist_remove (GSList *list,
gpointer data); gpointer data);
@@ -1159,8 +1159,8 @@ void g_set_prgname (const gchar *prgname);
/* Miscellaneous utility functions /* Miscellaneous utility functions
*/ */
guint g_parse_debug_string (const gchar *string, guint g_parse_debug_string (const gchar *string,
GDebugKey *keys, GDebugKey *keys,
guint nkeys); guint nkeys);
gint g_snprintf (gchar *string, gint g_snprintf (gchar *string,
gulong n, gulong n,
@@ -1185,7 +1185,7 @@ gchar* g_get_current_dir (void);
#define g_memmove(dest, src, size) G_STMT_START { \ #define g_memmove(dest, src, size) G_STMT_START { \
memmove ((dest), (src), (size)); \ memmove ((dest), (src), (size)); \
} G_STMT_END } G_STMT_END
#else #else
#define g_memmove(dest, src, size) G_STMT_START { \ #define g_memmove(dest, src, size) G_STMT_START { \
bcopy ((src), (dest), (size)); \ bcopy ((src), (dest), (size)); \
} G_STMT_END } G_STMT_END
@@ -1226,7 +1226,7 @@ static inline guint
g_bit_storage (guint number) g_bit_storage (guint number)
{ {
register guint n_bits = 0; register guint n_bits = 0;
do do
{ {
n_bits++; n_bits++;
@@ -1264,14 +1264,14 @@ GString* g_string_prepend (GString *string,
const gchar *val); const gchar *val);
GString* g_string_prepend_c (GString *string, GString* g_string_prepend_c (GString *string,
gchar c); gchar c);
GString* g_string_insert (GString *string, GString* g_string_insert (GString *string,
gint pos, gint pos,
const gchar *val); const gchar *val);
GString* g_string_insert_c (GString *string, GString* g_string_insert_c (GString *string,
gint pos, gint pos,
gchar c); gchar c);
GString* g_string_erase (GString *string, GString* g_string_erase (GString *string,
gint pos, gint pos,
gint len); gint len);
GString* g_string_down (GString *string); GString* g_string_down (GString *string);
GString* g_string_up (GString *string); GString* g_string_up (GString *string);
@@ -1285,34 +1285,24 @@ void g_string_sprintfa (GString *string,
/* Resizable arrays /* Resizable arrays
*/ */
#define g_array_length(array,type) \
(((array)->len)/sizeof(type))
#define g_array_append_val(array,type,val) \
g_rarray_append (array, (gpointer) &val, sizeof (type))
#define g_array_append_vals(array,type,vals,nvals) \
g_rarray_append (array, (gpointer) vals, sizeof (type) * nvals)
#define g_array_prepend_val(array,type,val) \
g_rarray_prepend (array, (gpointer) &val, sizeof (type))
#define g_array_prepend_vals(array,type,vals,nvals) \
g_rarray_prepend (array, (gpointer) vals, sizeof (type) * nvals)
#define g_array_truncate(array,type,length) \
g_rarray_truncate (array, length, sizeof (type))
#define g_array_index(array,type,index) \
((type*) array->data)[index]
GArray* g_array_new (gboolean zero_terminated); #define g_array_append_val(a,v) g_array_append_vals(a,&v,1)
void g_array_free (GArray *array, #define g_array_prepend_val(a,v) g_array_prepend_vals(a,&v,1)
gboolean free_segment); #define g_array_index(a,t,i) (((t*)a->data)[i])
GArray* g_rarray_append (GArray *array,
gpointer data,
gint size);
GArray* g_rarray_prepend (GArray *array,
gpointer data,
gint size);
GArray* g_rarray_truncate (GArray *array,
gint length,
gint size);
GArray* g_array_new (gboolean zero_terminated,
gboolean clear,
guint element_size);
void g_array_free (GArray *array,
gboolean free_segment);
GArray* g_array_append_vals (GArray *array,
gpointer data,
guint len);
GArray* g_array_prepend_vals (GArray *array,
gpointer data,
guint len);
GArray* g_array_set_size (GArray *array,
guint length);
/* Resizable pointer array. This interface is much less complicated /* Resizable pointer array. This interface is much less complicated
* than the above. Add appends appends a pointer. Remove fills any * than the above. Add appends appends a pointer. Remove fills any
@@ -1324,30 +1314,28 @@ void g_ptr_array_free (GPtrArray *array,
gboolean free_seg); gboolean free_seg);
void g_ptr_array_set_size (GPtrArray *array, void g_ptr_array_set_size (GPtrArray *array,
gint length); gint length);
void g_ptr_array_remove_index (GPtrArray *array, gpointer g_ptr_array_remove_index (GPtrArray *array,
gint index); gint index);
gboolean g_ptr_array_remove (GPtrArray *array, gboolean g_ptr_array_remove (GPtrArray *array,
gpointer data); gpointer data);
void g_ptr_array_add (GPtrArray *array, void g_ptr_array_add (GPtrArray *array,
gpointer data); gpointer data);
/* Byte arrays, an array of guint8. Implemented as a GArray, /* Byte arrays, an array of guint8. Implemented as a GArray,
* but type-safe. * but type-safe.
*/ */
GByteArray* g_byte_array_new (void);
void g_byte_array_free (GByteArray *array,
gint free_segment);
GByteArray* g_byte_array_append (GByteArray *array,
const guint8 *data,
guint len);
GByteArray* g_byte_array_prepend (GByteArray *array, GByteArray* g_byte_array_new (void);
void g_byte_array_free (GByteArray *array,
gboolean free_segment);
GByteArray* g_byte_array_append (GByteArray *array,
const guint8 *data, const guint8 *data,
guint len); guint len);
GByteArray* g_byte_array_prepend (GByteArray *array,
GByteArray* g_byte_array_truncate (GByteArray *array, const guint8 *data,
gint length); guint len);
GByteArray* g_byte_array_set_size (GByteArray *array,
guint length);
/* Hash Functions /* Hash Functions
@@ -1437,7 +1425,7 @@ typedef enum
typedef enum typedef enum
{ {
G_TOKEN_EOF = 0, G_TOKEN_EOF = 0,
G_TOKEN_LEFT_PAREN = '(', G_TOKEN_LEFT_PAREN = '(',
G_TOKEN_RIGHT_PAREN = ')', G_TOKEN_RIGHT_PAREN = ')',
G_TOKEN_LEFT_CURLY = '{', G_TOKEN_LEFT_CURLY = '{',
@@ -1446,11 +1434,11 @@ typedef enum
G_TOKEN_RIGHT_BRACE = ']', G_TOKEN_RIGHT_BRACE = ']',
G_TOKEN_EQUAL_SIGN = '=', G_TOKEN_EQUAL_SIGN = '=',
G_TOKEN_COMMA = ',', G_TOKEN_COMMA = ',',
G_TOKEN_NONE = 256, G_TOKEN_NONE = 256,
G_TOKEN_ERROR, G_TOKEN_ERROR,
G_TOKEN_CHAR, G_TOKEN_CHAR,
G_TOKEN_BINARY, G_TOKEN_BINARY,
G_TOKEN_OCTAL, G_TOKEN_OCTAL,
@@ -1458,11 +1446,11 @@ typedef enum
G_TOKEN_HEX, G_TOKEN_HEX,
G_TOKEN_FLOAT, G_TOKEN_FLOAT,
G_TOKEN_STRING, G_TOKEN_STRING,
G_TOKEN_SYMBOL, G_TOKEN_SYMBOL,
G_TOKEN_IDENTIFIER, G_TOKEN_IDENTIFIER,
G_TOKEN_IDENTIFIER_NULL, G_TOKEN_IDENTIFIER_NULL,
G_TOKEN_COMMENT_SINGLE, G_TOKEN_COMMENT_SINGLE,
G_TOKEN_COMMENT_MULTI, G_TOKEN_COMMENT_MULTI,
G_TOKEN_LAST G_TOKEN_LAST
@@ -1491,11 +1479,11 @@ struct _GScannerConfig
gchar *cset_identifier_first; gchar *cset_identifier_first;
gchar *cset_identifier_nth; gchar *cset_identifier_nth;
gchar *cpair_comment_single; /* default: "#\n" */ gchar *cpair_comment_single; /* default: "#\n" */
/* Should symbol lookup work case sensitive? /* Should symbol lookup work case sensitive?
*/ */
guint case_sensitive : 1; guint case_sensitive : 1;
/* Boolean values to be adjusted "on the fly" /* Boolean values to be adjusted "on the fly"
* to configure scanning behaviour. * to configure scanning behaviour.
*/ */
@@ -1526,31 +1514,31 @@ struct _GScanner
/* unused fields */ /* unused fields */
gpointer user_data; gpointer user_data;
guint max_parse_errors; guint max_parse_errors;
/* g_scanner_error() increments this field */ /* g_scanner_error() increments this field */
guint parse_errors; guint parse_errors;
/* name of input stream, featured by the default message handler */ /* name of input stream, featured by the default message handler */
const gchar *input_name; const gchar *input_name;
/* data pointer for derived structures */ /* data pointer for derived structures */
gpointer derived_data; gpointer derived_data;
/* link into the scanner configuration */ /* link into the scanner configuration */
GScannerConfig *config; GScannerConfig *config;
/* fields filled in after g_scanner_get_next_token() */ /* fields filled in after g_scanner_get_next_token() */
GTokenType token; GTokenType token;
GValue value; GValue value;
guint line; guint line;
guint position; guint position;
/* fields filled in after g_scanner_peek_next_token() */ /* fields filled in after g_scanner_peek_next_token() */
GTokenType next_token; GTokenType next_token;
GValue next_value; GValue next_value;
guint next_line; guint next_line;
guint next_position; guint next_position;
/* to be considered private */ /* to be considered private */
GHashTable *symbol_table; GHashTable *symbol_table;
const gchar *text; const gchar *text;
@@ -1558,7 +1546,7 @@ struct _GScanner
gint input_fd; gint input_fd;
gint peeked_char; gint peeked_char;
guint scope_id; guint scope_id;
/* handler function for _warn and _error */ /* handler function for _warn and _error */
GScannerMsgFunc msg_handler; GScannerMsgFunc msg_handler;
}; };
@@ -1629,18 +1617,18 @@ struct _GCompletion
{ {
GList* items; GList* items;
GCompletionFunc func; GCompletionFunc func;
gchar* prefix; gchar* prefix;
GList* cache; GList* cache;
}; };
GCompletion* g_completion_new (GCompletionFunc func); GCompletion* g_completion_new (GCompletionFunc func);
void g_completion_add_items (GCompletion* cmp, void g_completion_add_items (GCompletion* cmp,
GList* items); GList* items);
void g_completion_remove_items (GCompletion* cmp, void g_completion_remove_items (GCompletion* cmp,
GList* items); GList* items);
void g_completion_clear_items (GCompletion* cmp); void g_completion_clear_items (GCompletion* cmp);
GList* g_completion_complete (GCompletion* cmp, GList* g_completion_complete (GCompletion* cmp,
gchar* prefix, gchar* prefix,
gchar** new_prefix); gchar** new_prefix);
void g_completion_free (GCompletion* cmp); void g_completion_free (GCompletion* cmp);
@@ -1694,8 +1682,23 @@ gpointer g_tuples_index (GTuples *tuples,
gint field); gint field);
/* Prime numbers.
*/
/* This function returns prime numbers spaced by approximately 1.5-2.0
* and is for use in resizing data structures which prefer
* prime-valued sizes. The closest spaced prime function returns the
* next largest prime, or the highest it knows about which is about
* MAXINT/4.
*/
guint g_spaced_primes_closest (guint num);
/* Glib version.
*/
extern const guint glib_major_version;
extern const guint glib_minor_version;
extern const guint glib_micro_version;
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@@ -30,7 +30,9 @@ struct _GRealArray
guint8 *data; guint8 *data;
guint len; guint len;
guint alloc; guint alloc;
guint zero_terminated; guint elt_size;
guint zero_terminated : 1;
guint clear : 1;
}; };
@@ -43,7 +45,9 @@ static GMemChunk *array_mem_chunk = NULL;
GArray* GArray*
g_array_new (gboolean zero_terminated) g_array_new (gboolean zero_terminated,
gboolean clear,
guint elt_size)
{ {
GRealArray *array; GRealArray *array;
@@ -54,10 +58,12 @@ g_array_new (gboolean zero_terminated)
array = g_chunk_new (GRealArray, array_mem_chunk); array = g_chunk_new (GRealArray, array_mem_chunk);
array->data = NULL; array->data = NULL;
array->len = 0; array->len = 0;
array->alloc = 0; array->alloc = 0;
array->zero_terminated = (zero_terminated ? 1 : 0); array->zero_terminated = (zero_terminated ? 1 : 0);
array->clear = (clear ? 1 : 0);
array->elt_size = elt_size;
return (GArray*) array; return (GArray*) array;
} }
@@ -73,45 +79,52 @@ g_array_free (GArray *array,
} }
GArray* GArray*
g_rarray_append (GArray *array, g_array_append_vals (GArray *farray,
gpointer data, gpointer data,
gint size) guint len)
{ {
g_array_maybe_expand ((GRealArray*) array, size); GRealArray *array = (GRealArray*) farray;
memcpy (array->data + array->len, data, size); g_array_maybe_expand (array, len);
array->len += size; memcpy (array->data + array->elt_size * array->len, data, array->elt_size * len);
return array; array->len += len;
return farray;
} }
GArray* GArray*
g_rarray_prepend (GArray *array, g_array_prepend_vals (GArray *farray,
gpointer data, gpointer data,
gint size) guint len)
{ {
g_array_maybe_expand ((GRealArray*) array, size); GRealArray *array = (GRealArray*) farray;
g_memmove (array->data + size, array->data, array->len); g_array_maybe_expand (array, len);
memcpy (array->data, data, size);
array->len += size; g_memmove (array->data + array->elt_size * len, array->data, array->elt_size * array->len);
return array; memcpy (array->data, data, len * array->elt_size);
array->len += len;
return farray;
} }
GArray* GArray*
g_rarray_truncate (GArray *array, g_array_set_size (GArray *farray,
gint length, guint length)
gint size)
{ {
if (array->data) GRealArray *array = (GRealArray*) farray;
memset (array->data + length * size, 0, size);
array->len = length * size;
return array;
}
if (array->len < length)
g_array_maybe_expand (array, length - array->len);
array->len = length;
return farray;
}
static gint static gint
g_nearest_pow (gint num) g_nearest_pow (gint num)
@@ -128,17 +141,19 @@ static void
g_array_maybe_expand (GRealArray *array, g_array_maybe_expand (GRealArray *array,
gint len) gint len)
{ {
guint old_alloc; guint want_alloc = (array->len + len + array->zero_terminated) * array->elt_size;
if ((array->len + len) > array->alloc) if (want_alloc > array->alloc)
{ {
old_alloc = array->alloc; guint old_alloc = array->alloc;
array->alloc = g_nearest_pow (array->len + array->zero_terminated + len); array->alloc = g_nearest_pow (want_alloc);
array->alloc = MAX (array->alloc, MIN_ARRAY_SIZE); array->alloc = MAX (array->alloc, MIN_ARRAY_SIZE);
array->data = g_realloc (array->data, array->alloc); array->data = g_realloc (array->data, array->alloc);
memset (array->data + old_alloc, 0, array->alloc - old_alloc); if (array->clear || array->zero_terminated)
memset (array->data + old_alloc, 0, array->alloc - old_alloc);
} }
} }
@@ -228,21 +243,26 @@ g_ptr_array_set_size (GPtrArray *farray,
array->len = length; array->len = length;
} }
void gpointer
g_ptr_array_remove_index (GPtrArray* farray, g_ptr_array_remove_index (GPtrArray* farray,
gint index) gint index)
{ {
GRealPtrArray* array = (GRealPtrArray*) farray; GRealPtrArray* array = (GRealPtrArray*) farray;
gpointer result;
g_return_if_fail (array); g_return_val_if_fail (array, NULL);
g_return_if_fail (index < array->len); g_return_val_if_fail (index >= 0 && index < array->len, NULL);
result = array->pdata[index];
array->pdata[index] = array->pdata[array->len - 1]; array->pdata[index] = array->pdata[array->len - 1];
array->pdata[array->len - 1] = NULL; array->pdata[array->len - 1] = NULL;
array->len -= 1; array->len -= 1;
return result;
} }
gboolean gboolean
@@ -284,11 +304,11 @@ g_ptr_array_add (GPtrArray* farray,
GByteArray* g_byte_array_new (void) GByteArray* g_byte_array_new (void)
{ {
return (GByteArray*) g_array_new (FALSE); return (GByteArray*) g_array_new (FALSE, FALSE, 1);
} }
void g_byte_array_free (GByteArray *array, void g_byte_array_free (GByteArray *array,
gint free_segment) gboolean free_segment)
{ {
g_array_free ((GArray*) array, free_segment); g_array_free ((GArray*) array, free_segment);
} }
@@ -297,7 +317,7 @@ GByteArray* g_byte_array_append (GByteArray *array,
const guint8 *data, const guint8 *data,
guint len) guint len)
{ {
g_rarray_append ((GArray*) array, (guint8*)data, len); g_array_append_vals ((GArray*) array, (guint8*)data, len);
return array; return array;
} }
@@ -306,15 +326,15 @@ GByteArray* g_byte_array_prepend (GByteArray *array,
const guint8 *data, const guint8 *data,
guint len) guint len)
{ {
g_rarray_prepend ((GArray*) array, (guint8*)data, len); g_array_prepend_vals ((GArray*) array, (guint8*)data, len);
return array; return array;
} }
GByteArray* g_byte_array_truncate (GByteArray *array, GByteArray* g_byte_array_set_size (GByteArray *array,
gint length) guint length)
{ {
g_rarray_truncate ((GArray*) array, length, 1); g_array_set_size ((GArray*) array, length);
return array; return array;
} }

View File

@@ -46,7 +46,6 @@ struct _GHashTable
static void g_hash_table_resize (GHashTable *hash_table); static void g_hash_table_resize (GHashTable *hash_table);
static GHashNode** g_hash_table_lookup_node(GHashTable *hash_table, static GHashNode** g_hash_table_lookup_node(GHashTable *hash_table,
gconstpointer key); gconstpointer key);
static gint g_hash_closest_prime (gint num);
static GHashNode* g_hash_node_new (gpointer key, static GHashNode* g_hash_node_new (gpointer key,
gpointer value); gpointer value);
static void g_hash_node_destroy (GHashNode *hash_node); static void g_hash_node_destroy (GHashNode *hash_node);
@@ -63,7 +62,7 @@ g_hash_table_new (GHashFunc hash_func,
{ {
GHashTable *hash_table; GHashTable *hash_table;
gint i; gint i;
hash_table = g_new (GHashTable, 1); hash_table = g_new (GHashTable, 1);
hash_table->size = HASH_TABLE_MIN_SIZE; hash_table->size = HASH_TABLE_MIN_SIZE;
hash_table->nnodes = 0; hash_table->nnodes = 0;
@@ -71,7 +70,7 @@ g_hash_table_new (GHashFunc hash_func,
hash_table->hash_func = hash_func ? hash_func : g_direct_hash; hash_table->hash_func = hash_func ? hash_func : g_direct_hash;
hash_table->key_compare_func = key_compare_func; hash_table->key_compare_func = key_compare_func;
hash_table->nodes = g_new (GHashNode*, hash_table->size); hash_table->nodes = g_new (GHashNode*, hash_table->size);
for (i = 0; i < hash_table->size; i++) for (i = 0; i < hash_table->size; i++)
hash_table->nodes[i] = NULL; hash_table->nodes[i] = NULL;
@@ -84,10 +83,10 @@ g_hash_table_destroy (GHashTable *hash_table)
gint i; gint i;
g_return_if_fail (hash_table); g_return_if_fail (hash_table);
for (i = 0; i < hash_table->size; i++) for (i = 0; i < hash_table->size; i++)
g_hash_nodes_destroy (hash_table->nodes[i]); g_hash_nodes_destroy (hash_table->nodes[i]);
g_free (hash_table->nodes); g_free (hash_table->nodes);
g_free (hash_table); g_free (hash_table);
} }
@@ -100,7 +99,7 @@ g_hash_table_insert (GHashTable *hash_table,
GHashNode **node; GHashNode **node;
g_return_if_fail (hash_table); g_return_if_fail (hash_table);
node = g_hash_table_lookup_node (hash_table, key); node = g_hash_table_lookup_node (hash_table, key);
if (*node) if (*node)
@@ -146,7 +145,7 @@ g_hash_table_lookup (GHashTable *hash_table,
gconstpointer key) gconstpointer key)
{ {
GHashNode *node; GHashNode *node;
g_return_val_if_fail (hash_table, NULL); g_return_val_if_fail (hash_table, NULL);
node = *g_hash_table_lookup_node (hash_table, key); node = *g_hash_table_lookup_node (hash_table, key);
@@ -160,7 +159,7 @@ g_hash_table_lookup_extended (GHashTable *hash_table,
gpointer *value) gpointer *value)
{ {
GHashNode *node; GHashNode *node;
g_return_val_if_fail (hash_table, FALSE); g_return_val_if_fail (hash_table, FALSE);
node = *g_hash_table_lookup_node (hash_table, lookup_key); node = *g_hash_table_lookup_node (hash_table, lookup_key);
@@ -232,19 +231,19 @@ g_hash_table_resize (GHashTable *hash_table)
g_return_if_fail (hash_table); g_return_if_fail (hash_table);
nodes_per_list = (gfloat) hash_table->nnodes / (gfloat) hash_table->size; nodes_per_list = (gfloat) hash_table->nnodes / (gfloat) hash_table->size;
if ((nodes_per_list > 0.3 || hash_table->size <= HASH_TABLE_MIN_SIZE) && if ((nodes_per_list > 0.3 || hash_table->size <= HASH_TABLE_MIN_SIZE) &&
(nodes_per_list < 3.0 || hash_table->size >= HASH_TABLE_MAX_SIZE)) (nodes_per_list < 3.0 || hash_table->size >= HASH_TABLE_MAX_SIZE))
return; return;
new_size = CLAMP(g_hash_closest_prime (hash_table->nnodes), new_size = CLAMP(g_spaced_primes_closest (hash_table->nnodes),
HASH_TABLE_MIN_SIZE, HASH_TABLE_MIN_SIZE,
HASH_TABLE_MAX_SIZE); HASH_TABLE_MAX_SIZE);
new_nodes = g_new (GHashNode*, new_size); new_nodes = g_new (GHashNode*, new_size);
for (i = 0; i < new_size; i++) for (i = 0; i < new_size; i++)
new_nodes[i] = NULL; new_nodes[i] = NULL;
for (i = 0; i < hash_table->size; i++) for (i = 0; i < hash_table->size; i++)
for (node = hash_table->nodes[i]; node; node = next) for (node = hash_table->nodes[i]; node; node = next)
{ {
@@ -253,7 +252,7 @@ g_hash_table_resize (GHashTable *hash_table)
node->next = new_nodes[hash_val]; node->next = new_nodes[hash_val];
new_nodes[hash_val] = node; new_nodes[hash_val] = node;
} }
g_free (hash_table->nodes); g_free (hash_table->nodes);
hash_table->nodes = new_nodes; hash_table->nodes = new_nodes;
hash_table->size = new_size; hash_table->size = new_size;
@@ -264,7 +263,7 @@ g_hash_table_lookup_node (GHashTable *hash_table,
gconstpointer key) gconstpointer key)
{ {
GHashNode **node; GHashNode **node;
g_return_val_if_fail (hash_table, NULL); g_return_val_if_fail (hash_table, NULL);
node = &hash_table->nodes node = &hash_table->nodes
@@ -281,24 +280,10 @@ g_hash_table_lookup_node (GHashTable *hash_table,
else else
while (*node && (*node)->key != key) while (*node && (*node)->key != key)
node = &(*node)->next; node = &(*node)->next;
return node; return node;
} }
static gint
g_hash_closest_prime (gint num)
{
extern gint g_primes[];
extern gint g_nprimes;
gint i;
for (i = 0; i < g_nprimes; i++)
if ((g_primes[i] - num) > 0)
return g_primes[i];
return g_primes[g_nprimes - 1];
}
static GHashNode* static GHashNode*
g_hash_node_new (gpointer key, g_hash_node_new (gpointer key,
gpointer value) gpointer value)

View File

@@ -241,7 +241,7 @@
# define ATEXIT(proc) (atexit (proc)) # define ATEXIT(proc) (atexit (proc))
# elif defined (HAVE_ON_EXIT) # elif defined (HAVE_ON_EXIT)
# define ATEXIT(proc) (on_exit ((void (*)(int, void *))(proc), NULL)) # define ATEXIT(proc) (on_exit ((void (*)(int, void *))(proc), NULL))
# endif # endif
#endif /* ATEXIT */ #endif /* ATEXIT */
@@ -438,9 +438,9 @@ typedef unsigned int guint;
typedef float gfloat; typedef float gfloat;
typedef double gdouble; typedef double gdouble;
/* HAVE_LONG_DOUBLE doesn't work correctly on all platforms. /* HAVE_LONG_DOUBLE doesn't work correctly on all platforms.
* Since gldouble isn't used anywhere, just disable it for now * Since gldouble isn't used anywhere, just disable it for now */
*/
#if 0 #if 0
#ifdef HAVE_LONG_DOUBLE #ifdef HAVE_LONG_DOUBLE
typedef long double gldouble; typedef long double gldouble;
@@ -575,7 +575,7 @@ typedef enum
/* log flags */ /* log flags */
G_LOG_FLAG_RECURSION = 1 << 0, G_LOG_FLAG_RECURSION = 1 << 0,
G_LOG_FLAG_FATAL = 1 << 1, G_LOG_FLAG_FATAL = 1 << 1,
/* GLib log levels */ /* GLib log levels */
G_LOG_LEVEL_ERROR = 1 << 2, /* always fatal */ G_LOG_LEVEL_ERROR = 1 << 2, /* always fatal */
G_LOG_LEVEL_CRITICAL = 1 << 3, G_LOG_LEVEL_CRITICAL = 1 << 3,
@@ -583,7 +583,7 @@ typedef enum
G_LOG_LEVEL_MESSAGE = 1 << 5, G_LOG_LEVEL_MESSAGE = 1 << 5,
G_LOG_LEVEL_INFO = 1 << 6, G_LOG_LEVEL_INFO = 1 << 6,
G_LOG_LEVEL_DEBUG = 1 << 7, G_LOG_LEVEL_DEBUG = 1 << 7,
G_LOG_LEVEL_MASK = ~(G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL) G_LOG_LEVEL_MASK = ~(G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL)
} GLogLevelFlags; } GLogLevelFlags;
@@ -692,8 +692,8 @@ GList* g_list_insert (GList *list,
gint position); gint position);
GList* g_list_insert_sorted (GList *list, GList* g_list_insert_sorted (GList *list,
gpointer data, gpointer data,
GCompareFunc func); GCompareFunc func);
GList* g_list_concat (GList *list1, GList* g_list_concat (GList *list1,
GList *list2); GList *list2);
GList* g_list_remove (GList *list, GList* g_list_remove (GList *list,
gpointer data); gpointer data);
@@ -737,8 +737,8 @@ GSList* g_slist_insert (GSList *list,
gint position); gint position);
GSList* g_slist_insert_sorted (GSList *list, GSList* g_slist_insert_sorted (GSList *list,
gpointer data, gpointer data,
GCompareFunc func); GCompareFunc func);
GSList* g_slist_concat (GSList *list1, GSList* g_slist_concat (GSList *list1,
GSList *list2); GSList *list2);
GSList* g_slist_remove (GSList *list, GSList* g_slist_remove (GSList *list,
gpointer data); gpointer data);
@@ -1159,8 +1159,8 @@ void g_set_prgname (const gchar *prgname);
/* Miscellaneous utility functions /* Miscellaneous utility functions
*/ */
guint g_parse_debug_string (const gchar *string, guint g_parse_debug_string (const gchar *string,
GDebugKey *keys, GDebugKey *keys,
guint nkeys); guint nkeys);
gint g_snprintf (gchar *string, gint g_snprintf (gchar *string,
gulong n, gulong n,
@@ -1185,7 +1185,7 @@ gchar* g_get_current_dir (void);
#define g_memmove(dest, src, size) G_STMT_START { \ #define g_memmove(dest, src, size) G_STMT_START { \
memmove ((dest), (src), (size)); \ memmove ((dest), (src), (size)); \
} G_STMT_END } G_STMT_END
#else #else
#define g_memmove(dest, src, size) G_STMT_START { \ #define g_memmove(dest, src, size) G_STMT_START { \
bcopy ((src), (dest), (size)); \ bcopy ((src), (dest), (size)); \
} G_STMT_END } G_STMT_END
@@ -1226,7 +1226,7 @@ static inline guint
g_bit_storage (guint number) g_bit_storage (guint number)
{ {
register guint n_bits = 0; register guint n_bits = 0;
do do
{ {
n_bits++; n_bits++;
@@ -1264,14 +1264,14 @@ GString* g_string_prepend (GString *string,
const gchar *val); const gchar *val);
GString* g_string_prepend_c (GString *string, GString* g_string_prepend_c (GString *string,
gchar c); gchar c);
GString* g_string_insert (GString *string, GString* g_string_insert (GString *string,
gint pos, gint pos,
const gchar *val); const gchar *val);
GString* g_string_insert_c (GString *string, GString* g_string_insert_c (GString *string,
gint pos, gint pos,
gchar c); gchar c);
GString* g_string_erase (GString *string, GString* g_string_erase (GString *string,
gint pos, gint pos,
gint len); gint len);
GString* g_string_down (GString *string); GString* g_string_down (GString *string);
GString* g_string_up (GString *string); GString* g_string_up (GString *string);
@@ -1285,34 +1285,24 @@ void g_string_sprintfa (GString *string,
/* Resizable arrays /* Resizable arrays
*/ */
#define g_array_length(array,type) \
(((array)->len)/sizeof(type))
#define g_array_append_val(array,type,val) \
g_rarray_append (array, (gpointer) &val, sizeof (type))
#define g_array_append_vals(array,type,vals,nvals) \
g_rarray_append (array, (gpointer) vals, sizeof (type) * nvals)
#define g_array_prepend_val(array,type,val) \
g_rarray_prepend (array, (gpointer) &val, sizeof (type))
#define g_array_prepend_vals(array,type,vals,nvals) \
g_rarray_prepend (array, (gpointer) vals, sizeof (type) * nvals)
#define g_array_truncate(array,type,length) \
g_rarray_truncate (array, length, sizeof (type))
#define g_array_index(array,type,index) \
((type*) array->data)[index]
GArray* g_array_new (gboolean zero_terminated); #define g_array_append_val(a,v) g_array_append_vals(a,&v,1)
void g_array_free (GArray *array, #define g_array_prepend_val(a,v) g_array_prepend_vals(a,&v,1)
gboolean free_segment); #define g_array_index(a,t,i) (((t*)a->data)[i])
GArray* g_rarray_append (GArray *array,
gpointer data,
gint size);
GArray* g_rarray_prepend (GArray *array,
gpointer data,
gint size);
GArray* g_rarray_truncate (GArray *array,
gint length,
gint size);
GArray* g_array_new (gboolean zero_terminated,
gboolean clear,
guint element_size);
void g_array_free (GArray *array,
gboolean free_segment);
GArray* g_array_append_vals (GArray *array,
gpointer data,
guint len);
GArray* g_array_prepend_vals (GArray *array,
gpointer data,
guint len);
GArray* g_array_set_size (GArray *array,
guint length);
/* Resizable pointer array. This interface is much less complicated /* Resizable pointer array. This interface is much less complicated
* than the above. Add appends appends a pointer. Remove fills any * than the above. Add appends appends a pointer. Remove fills any
@@ -1324,30 +1314,28 @@ void g_ptr_array_free (GPtrArray *array,
gboolean free_seg); gboolean free_seg);
void g_ptr_array_set_size (GPtrArray *array, void g_ptr_array_set_size (GPtrArray *array,
gint length); gint length);
void g_ptr_array_remove_index (GPtrArray *array, gpointer g_ptr_array_remove_index (GPtrArray *array,
gint index); gint index);
gboolean g_ptr_array_remove (GPtrArray *array, gboolean g_ptr_array_remove (GPtrArray *array,
gpointer data); gpointer data);
void g_ptr_array_add (GPtrArray *array, void g_ptr_array_add (GPtrArray *array,
gpointer data); gpointer data);
/* Byte arrays, an array of guint8. Implemented as a GArray, /* Byte arrays, an array of guint8. Implemented as a GArray,
* but type-safe. * but type-safe.
*/ */
GByteArray* g_byte_array_new (void);
void g_byte_array_free (GByteArray *array,
gint free_segment);
GByteArray* g_byte_array_append (GByteArray *array,
const guint8 *data,
guint len);
GByteArray* g_byte_array_prepend (GByteArray *array, GByteArray* g_byte_array_new (void);
void g_byte_array_free (GByteArray *array,
gboolean free_segment);
GByteArray* g_byte_array_append (GByteArray *array,
const guint8 *data, const guint8 *data,
guint len); guint len);
GByteArray* g_byte_array_prepend (GByteArray *array,
GByteArray* g_byte_array_truncate (GByteArray *array, const guint8 *data,
gint length); guint len);
GByteArray* g_byte_array_set_size (GByteArray *array,
guint length);
/* Hash Functions /* Hash Functions
@@ -1437,7 +1425,7 @@ typedef enum
typedef enum typedef enum
{ {
G_TOKEN_EOF = 0, G_TOKEN_EOF = 0,
G_TOKEN_LEFT_PAREN = '(', G_TOKEN_LEFT_PAREN = '(',
G_TOKEN_RIGHT_PAREN = ')', G_TOKEN_RIGHT_PAREN = ')',
G_TOKEN_LEFT_CURLY = '{', G_TOKEN_LEFT_CURLY = '{',
@@ -1446,11 +1434,11 @@ typedef enum
G_TOKEN_RIGHT_BRACE = ']', G_TOKEN_RIGHT_BRACE = ']',
G_TOKEN_EQUAL_SIGN = '=', G_TOKEN_EQUAL_SIGN = '=',
G_TOKEN_COMMA = ',', G_TOKEN_COMMA = ',',
G_TOKEN_NONE = 256, G_TOKEN_NONE = 256,
G_TOKEN_ERROR, G_TOKEN_ERROR,
G_TOKEN_CHAR, G_TOKEN_CHAR,
G_TOKEN_BINARY, G_TOKEN_BINARY,
G_TOKEN_OCTAL, G_TOKEN_OCTAL,
@@ -1458,11 +1446,11 @@ typedef enum
G_TOKEN_HEX, G_TOKEN_HEX,
G_TOKEN_FLOAT, G_TOKEN_FLOAT,
G_TOKEN_STRING, G_TOKEN_STRING,
G_TOKEN_SYMBOL, G_TOKEN_SYMBOL,
G_TOKEN_IDENTIFIER, G_TOKEN_IDENTIFIER,
G_TOKEN_IDENTIFIER_NULL, G_TOKEN_IDENTIFIER_NULL,
G_TOKEN_COMMENT_SINGLE, G_TOKEN_COMMENT_SINGLE,
G_TOKEN_COMMENT_MULTI, G_TOKEN_COMMENT_MULTI,
G_TOKEN_LAST G_TOKEN_LAST
@@ -1491,11 +1479,11 @@ struct _GScannerConfig
gchar *cset_identifier_first; gchar *cset_identifier_first;
gchar *cset_identifier_nth; gchar *cset_identifier_nth;
gchar *cpair_comment_single; /* default: "#\n" */ gchar *cpair_comment_single; /* default: "#\n" */
/* Should symbol lookup work case sensitive? /* Should symbol lookup work case sensitive?
*/ */
guint case_sensitive : 1; guint case_sensitive : 1;
/* Boolean values to be adjusted "on the fly" /* Boolean values to be adjusted "on the fly"
* to configure scanning behaviour. * to configure scanning behaviour.
*/ */
@@ -1526,31 +1514,31 @@ struct _GScanner
/* unused fields */ /* unused fields */
gpointer user_data; gpointer user_data;
guint max_parse_errors; guint max_parse_errors;
/* g_scanner_error() increments this field */ /* g_scanner_error() increments this field */
guint parse_errors; guint parse_errors;
/* name of input stream, featured by the default message handler */ /* name of input stream, featured by the default message handler */
const gchar *input_name; const gchar *input_name;
/* data pointer for derived structures */ /* data pointer for derived structures */
gpointer derived_data; gpointer derived_data;
/* link into the scanner configuration */ /* link into the scanner configuration */
GScannerConfig *config; GScannerConfig *config;
/* fields filled in after g_scanner_get_next_token() */ /* fields filled in after g_scanner_get_next_token() */
GTokenType token; GTokenType token;
GValue value; GValue value;
guint line; guint line;
guint position; guint position;
/* fields filled in after g_scanner_peek_next_token() */ /* fields filled in after g_scanner_peek_next_token() */
GTokenType next_token; GTokenType next_token;
GValue next_value; GValue next_value;
guint next_line; guint next_line;
guint next_position; guint next_position;
/* to be considered private */ /* to be considered private */
GHashTable *symbol_table; GHashTable *symbol_table;
const gchar *text; const gchar *text;
@@ -1558,7 +1546,7 @@ struct _GScanner
gint input_fd; gint input_fd;
gint peeked_char; gint peeked_char;
guint scope_id; guint scope_id;
/* handler function for _warn and _error */ /* handler function for _warn and _error */
GScannerMsgFunc msg_handler; GScannerMsgFunc msg_handler;
}; };
@@ -1629,18 +1617,18 @@ struct _GCompletion
{ {
GList* items; GList* items;
GCompletionFunc func; GCompletionFunc func;
gchar* prefix; gchar* prefix;
GList* cache; GList* cache;
}; };
GCompletion* g_completion_new (GCompletionFunc func); GCompletion* g_completion_new (GCompletionFunc func);
void g_completion_add_items (GCompletion* cmp, void g_completion_add_items (GCompletion* cmp,
GList* items); GList* items);
void g_completion_remove_items (GCompletion* cmp, void g_completion_remove_items (GCompletion* cmp,
GList* items); GList* items);
void g_completion_clear_items (GCompletion* cmp); void g_completion_clear_items (GCompletion* cmp);
GList* g_completion_complete (GCompletion* cmp, GList* g_completion_complete (GCompletion* cmp,
gchar* prefix, gchar* prefix,
gchar** new_prefix); gchar** new_prefix);
void g_completion_free (GCompletion* cmp); void g_completion_free (GCompletion* cmp);
@@ -1694,8 +1682,23 @@ gpointer g_tuples_index (GTuples *tuples,
gint field); gint field);
/* Prime numbers.
*/
/* This function returns prime numbers spaced by approximately 1.5-2.0
* and is for use in resizing data structures which prefer
* prime-valued sizes. The closest spaced prime function returns the
* next largest prime, or the highest it knows about which is about
* MAXINT/4.
*/
guint g_spaced_primes_closest (guint num);
/* Glib version.
*/
extern const guint glib_major_version;
extern const guint glib_minor_version;
extern const guint glib_micro_version;
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@@ -18,14 +18,11 @@
*/ */
#include "glib.h" #include "glib.h"
static const guint g_primes[] =
gint g_primes[] =
{ {
11, 11,
15, 19,
23, 37,
35,
49,
73, 73,
109, 109,
163, 163,
@@ -59,4 +56,16 @@ gint g_primes[] =
13845163, 13845163,
}; };
gint g_nprimes = sizeof (g_primes) / sizeof (g_primes[0]); static const guint g_nprimes = sizeof (g_primes) / sizeof (g_primes[0]);
guint
g_spaced_primes_closest (guint num)
{
gint i;
for (i = 0; i < g_nprimes; i++)
if (g_primes[i] > num)
return g_primes[i];
return g_primes[g_nprimes - 1];
}

View File

@@ -18,14 +18,11 @@
*/ */
#include "glib.h" #include "glib.h"
static const guint g_primes[] =
gint g_primes[] =
{ {
11, 11,
15, 19,
23, 37,
35,
49,
73, 73,
109, 109,
163, 163,
@@ -59,4 +56,16 @@ gint g_primes[] =
13845163, 13845163,
}; };
gint g_nprimes = sizeof (g_primes) / sizeof (g_primes[0]); static const guint g_nprimes = sizeof (g_primes) / sizeof (g_primes[0]);
guint
g_spaced_primes_closest (guint num)
{
gint i;
for (i = 0; i < g_nprimes; i++)
if (g_primes[i] > num)
return g_primes[i];
return g_primes[g_nprimes - 1];
}

View File

@@ -199,7 +199,7 @@ my_hash_compare (gconstpointer a,
return *((const gint*) a) == *((const gint*) b); return *((const gint*) a) == *((const gint*) b);
} }
gint gint
my_list_compare_one (gconstpointer a, gconstpointer b) my_list_compare_one (gconstpointer a, gconstpointer b)
{ {
gint one = *((const gint*)a); gint one = *((const gint*)a);
@@ -207,7 +207,7 @@ my_list_compare_one (gconstpointer a, gconstpointer b)
return one-two; return one-two;
} }
gint gint
my_list_compare_two (gconstpointer a, gconstpointer b) my_list_compare_two (gconstpointer a, gconstpointer b)
{ {
gint one = *((const gint*)a); gint one = *((const gint*)a);
@@ -348,7 +348,7 @@ main (int argc,
g_list_free (list); g_list_free (list);
list = NULL; list = NULL;
for (i = 0; i < 10; i++) for (i = 0; i < 10; i++)
list = g_list_insert_sorted (list, &morenums[i], my_list_compare_one); list = g_list_insert_sorted (list, &morenums[i], my_list_compare_one);
@@ -363,10 +363,10 @@ main (int argc,
if (*((gint*) t->data) != i) if (*((gint*) t->data) != i)
g_error ("Sorted insert failed"); g_error ("Sorted insert failed");
} }
g_list_free (list); g_list_free (list);
list = NULL; list = NULL;
for (i = 0; i < 10; i++) for (i = 0; i < 10; i++)
list = g_list_insert_sorted (list, &morenums[i], my_list_compare_two); list = g_list_insert_sorted (list, &morenums[i], my_list_compare_two);
@@ -381,7 +381,7 @@ main (int argc,
if (*((gint*) t->data) != (9 - i)) if (*((gint*) t->data) != (9 - i))
g_error ("Sorted insert failed"); g_error ("Sorted insert failed");
} }
g_list_free (list); g_list_free (list);
g_print ("ok\n"); g_print ("ok\n");
@@ -418,10 +418,10 @@ main (int argc,
if (*((gint*) st->data) != i) if (*((gint*) st->data) != i)
g_error ("Sorted insert failed"); g_error ("Sorted insert failed");
} }
g_slist_free(slist); g_slist_free(slist);
slist = NULL; slist = NULL;
for (i = 0; i < 10; i++) for (i = 0; i < 10; i++)
slist = g_slist_insert_sorted (slist, &morenums[i], my_list_compare_two); slist = g_slist_insert_sorted (slist, &morenums[i], my_list_compare_two);
@@ -436,7 +436,7 @@ main (int argc,
if (*((gint*) st->data) != (9 - i)) if (*((gint*) st->data) != (9 - i))
g_error("Sorted insert failed"); g_error("Sorted insert failed");
} }
g_slist_free(slist); g_slist_free(slist);
g_print ("ok\n"); g_print ("ok\n");
@@ -555,9 +555,9 @@ main (int argc,
g_print ("checking arrays..."); g_print ("checking arrays...");
garray = g_array_new (FALSE); garray = g_array_new (FALSE, FALSE, sizeof (gint));
for (i = 0; i < 10000; i++) for (i = 0; i < 10000; i++)
g_array_append_val (garray, gint, i); g_array_append_val (garray, i);
for (i = 0; i < 10000; i++) for (i = 0; i < 10000; i++)
if (g_array_index (garray, gint, i) != i) if (g_array_index (garray, gint, i) != i)
@@ -565,13 +565,13 @@ main (int argc,
g_array_free (garray, TRUE); g_array_free (garray, TRUE);
garray = g_array_new (FALSE); garray = g_array_new (FALSE, FALSE, sizeof (gint));
for (i = 0; i < 10000; i++) for (i = 0; i < 100; i++)
g_array_prepend_val (garray, gint, i); g_array_prepend_val (garray, i);
for (i = 0; i < 10000; i++) for (i = 0; i < 100; i++)
if (g_array_index (garray, gint, i) != (10000 - i - 1)) if (g_array_index (garray, gint, i) != (100 - i - 1))
g_print ("uh oh: %d ( %d )\n", g_array_index (garray, gint, i), 10000 - i - 1); g_print ("uh oh: %d ( %d )\n", g_array_index (garray, gint, i), 100 - i - 1);
g_array_free (garray, TRUE); g_array_free (garray, TRUE);

View File

@@ -199,7 +199,7 @@ my_hash_compare (gconstpointer a,
return *((const gint*) a) == *((const gint*) b); return *((const gint*) a) == *((const gint*) b);
} }
gint gint
my_list_compare_one (gconstpointer a, gconstpointer b) my_list_compare_one (gconstpointer a, gconstpointer b)
{ {
gint one = *((const gint*)a); gint one = *((const gint*)a);
@@ -207,7 +207,7 @@ my_list_compare_one (gconstpointer a, gconstpointer b)
return one-two; return one-two;
} }
gint gint
my_list_compare_two (gconstpointer a, gconstpointer b) my_list_compare_two (gconstpointer a, gconstpointer b)
{ {
gint one = *((const gint*)a); gint one = *((const gint*)a);
@@ -348,7 +348,7 @@ main (int argc,
g_list_free (list); g_list_free (list);
list = NULL; list = NULL;
for (i = 0; i < 10; i++) for (i = 0; i < 10; i++)
list = g_list_insert_sorted (list, &morenums[i], my_list_compare_one); list = g_list_insert_sorted (list, &morenums[i], my_list_compare_one);
@@ -363,10 +363,10 @@ main (int argc,
if (*((gint*) t->data) != i) if (*((gint*) t->data) != i)
g_error ("Sorted insert failed"); g_error ("Sorted insert failed");
} }
g_list_free (list); g_list_free (list);
list = NULL; list = NULL;
for (i = 0; i < 10; i++) for (i = 0; i < 10; i++)
list = g_list_insert_sorted (list, &morenums[i], my_list_compare_two); list = g_list_insert_sorted (list, &morenums[i], my_list_compare_two);
@@ -381,7 +381,7 @@ main (int argc,
if (*((gint*) t->data) != (9 - i)) if (*((gint*) t->data) != (9 - i))
g_error ("Sorted insert failed"); g_error ("Sorted insert failed");
} }
g_list_free (list); g_list_free (list);
g_print ("ok\n"); g_print ("ok\n");
@@ -418,10 +418,10 @@ main (int argc,
if (*((gint*) st->data) != i) if (*((gint*) st->data) != i)
g_error ("Sorted insert failed"); g_error ("Sorted insert failed");
} }
g_slist_free(slist); g_slist_free(slist);
slist = NULL; slist = NULL;
for (i = 0; i < 10; i++) for (i = 0; i < 10; i++)
slist = g_slist_insert_sorted (slist, &morenums[i], my_list_compare_two); slist = g_slist_insert_sorted (slist, &morenums[i], my_list_compare_two);
@@ -436,7 +436,7 @@ main (int argc,
if (*((gint*) st->data) != (9 - i)) if (*((gint*) st->data) != (9 - i))
g_error("Sorted insert failed"); g_error("Sorted insert failed");
} }
g_slist_free(slist); g_slist_free(slist);
g_print ("ok\n"); g_print ("ok\n");
@@ -555,9 +555,9 @@ main (int argc,
g_print ("checking arrays..."); g_print ("checking arrays...");
garray = g_array_new (FALSE); garray = g_array_new (FALSE, FALSE, sizeof (gint));
for (i = 0; i < 10000; i++) for (i = 0; i < 10000; i++)
g_array_append_val (garray, gint, i); g_array_append_val (garray, i);
for (i = 0; i < 10000; i++) for (i = 0; i < 10000; i++)
if (g_array_index (garray, gint, i) != i) if (g_array_index (garray, gint, i) != i)
@@ -565,13 +565,13 @@ main (int argc,
g_array_free (garray, TRUE); g_array_free (garray, TRUE);
garray = g_array_new (FALSE); garray = g_array_new (FALSE, FALSE, sizeof (gint));
for (i = 0; i < 10000; i++) for (i = 0; i < 100; i++)
g_array_prepend_val (garray, gint, i); g_array_prepend_val (garray, i);
for (i = 0; i < 10000; i++) for (i = 0; i < 100; i++)
if (g_array_index (garray, gint, i) != (10000 - i - 1)) if (g_array_index (garray, gint, i) != (100 - i - 1))
g_print ("uh oh: %d ( %d )\n", g_array_index (garray, gint, i), 10000 - i - 1); g_print ("uh oh: %d ( %d )\n", g_array_index (garray, gint, i), 100 - i - 1);
g_array_free (garray, TRUE); g_array_free (garray, TRUE);