In sourceforge git ------------------ Minor code simplification in AsyncChannel::pop() (async_channel.h). Update documentation (application.h, shared_handle.h). Version 1.2.45 (27 January 2020) -------------- Use autoconf's TAP support for running tests (Makefile.am, configure-gtk2.ac, configure-gtk3.ac; c++-gtk-utils/Makefile.am; docs/Makefile.am; tests/Makefile.am, tests/extension/Makefile.am, tests/extra/Makefile.am; removed - Makefile.decl; added - glib-tap.mk, tap-driver.sh, tap-test, m4/glibtests.m4) Cater for guile-3.0 declarative modules (acinclude.m4; extension.h). Suppress GStaticRecMutex deprecation warnings (acinclude.m4, configure-gtk2.ac, configure-gtk3.ac; cgu_config.h.in, mutex.h). Update documentation (doxygen.main.in; async_queue.h, gerror_handle.h). Version 1.2.44 (24 October 2018) -------------- Set FD_CLOEXEC on pipe file descriptors for Notifier objects (notifier.cpp). Add support for guile-3.0 (acinclude.m4; extension.h). Correct documentation (extension.h). Provide a configuration file suitable for doxygen-1.8.14 and include generated .js files in the distribution tarball (docs/Doxyfile.in, docs/Makefile.am). Version 1.2.43 (24 December 2017) -------------- Update documentation (README; doxygen.main.in, async_channel.h, fdstream.h, gstream.h, task_manager.h, task_manager.cpp). Version 1.2.42.1 (23 November 2016) ---------------- Explicitly qualify malloc() as being within the std namespace (async_channel.h). Update documentation (async_channel.h). Version 1.2.42 (9 November 2016) -------------- Provide Cgu::AsyncChannel class (c++-gtk-utils/Makefile.am; doxygen.main.in; async_channel.h, async_queue.h; tests/Makefile.am, tests/test_async_channel.cpp). Provide TaskManager::get_max_tasks() method with documentation on rate limiting (task_manager.h, task_manager.cpp). Zero initialise the character buffer in Reassembler class (reassembler.h). Adjust configuration macros to enable use of Cgu::Extension with guile-2.2 (acinclude.m4; cgu_config.h.in, extension.h). Increase coverage of io_watch tests (tests/test_iowatch.cpp). Update documentation (task_manager.h, thread.h). Version 1.2.41 (9 May 2016) -------------- Use glib's unix fd implementation for io_watch where glib >= 2.36 is installed, unless otherwise chosen during configuration (acinclude.m4, configure-gtk2.ac, configure-gtk-3.ac; io_watch.cpp). Update documentation (extension.h, future.h). Version 1.2.40 (18 October 2015) -------------- Simplify Cgu::Application::add() method (application.cpp). Update libtool to version 2.4.6. Documentation fix for doxygen-1.8.9 (docs/Doxyfile.in). Update documentation (doxygen.main.in, application.h, emitter.h, future.h, extension.h, task_manager.h, thread.h). Version 1.2.39 (6 April 2015) -------------- Provide a mutex for calls to make-fresh-user-modules to deal with guile thread safety issues (c++-gtk-utils/Makefile.am; extension.h, extension_helper.cpp). Improve efficiency of scheme to C++ list translators for long lists (extension.h). Preallocate vectors in translator functions which return std::vector (extension.h). Update libtool to version 2.4.4. Update documentation (README; application.h, async_queue.h). Version 1.2.38 (6 October 2014) -------------- Prevent new GTK+-3.14 deprecation warnings interfering with tests (test/test_application.cpp). Update build system to automake-1.14.1 (bootstrap-gtk2.sh, bootstrap-gtk3.sh, compile, Makefile.am). Update build system to gettext-0.18.2 (config.rpath; m4/*.m4; po/Makefile.in.in, po/Rules.quot, po/Makevars; c++-gtk-utils/Makefile.am, tests/Makefile.am, tests/extension/Makefile.am). Update tests (tests/test_callback.cpp). Add comments about strict aliasing with character set conversion functions (convert.cpp). Update documentation (README; extension.h, fdstream.h, gstream.h, thread.h, window.h). Version 1.2.37 (16 July 2014) -------------- Correct testing of minimum values in Extension::real_to_double() and Extension::list_to_vector_double() (extension.h). Deal properly with unexpected out-of-memory conditions in executing Extension::exec() and Extension::exec_shared() (extension.h). Minor code refactoring in SafeEmitterArg::connect() (emitter.h, emitter.cpp). Update documentation (emitter.h, extension.h, task_manager.h). Version 1.2.36 (1 June 2014) -------------- Provide a new Extension::exec_shared() function (doxygen.main.in, extension.h; tests/extension/test_extension.cpp). Throw a C++ exception if a translator throws a native guile exception, simplify exception handling code and make the translation of guile exceptions to text more meaningful (extension.h). Block asyncs when executing a scheme to C++ translator where guile supports it (acinclude.m4; cgu_config.h.in, extension.h). Avoid constructing a SafeEmitterArg object with untracked io_watches (io_watch.cpp; tests/test_iowatch.cpp). Deal internally with any exceptions in cgu_winbase_delete_event() (window.cpp). Update documentation (application.h, callback.h, extension.h, io_watch.h, notifier.h, timeout.h). Version 1.2.35 (16 April 2014) -------------- Make minor adjustments to handling of C++ exceptions in Cgu::Extension::exec() (extension.h). Fix Cgu::Application tests for API breakage in GTK+-3.12.0 (test_application.cpp). Update tests (test_callback.cpp). Update documentation (doxygen.main.in, extension.h). Version 1.2.34.1 (28 January 2014) ---------------- Deal correctly with a thrown guile exception which has a key but no other arguments, and a scheme extension file which does not throw but evaluates to a null list (extension.h). Adjust timing of TaskManager releaser tests (tests/test_task_manager.cpp). Update documentation (doxygen.main.in). Version 1.2.34 (24 January 2014) -------------- Provide support for guile extensions (acinclude.m4, configure-gtk2.ac, configure-gtk3.ac, README; c++-gtk-utils/Makefile.am; doxygen-main.in, cgu_config.in, extension.h; tests/extension/Makefile.am, tests/extension/README, tests/extension/test_extension.cpp, tests/extension/guile-test.scm, tests/extension/guile-test-exception.scm). Minor code refactoring and test improvements (task_manager.tpp; tests/test_task_manager.cpp). Update code comments (async_queue.h, task_manager.tpp). Update documentation (task_manager.h). Version 1.2.33 (29 November 2013) -------------- Provide the expected result where TaskManager::add_task() is called concurrently with TaskManager::stop_all() in wait_for_running stop mode (task_manager.cpp). Stop deprecation warnings with GTK+-3.10 in tests (tests/test_application.cpp). Version 1.2.32 (16 September 2013) -------------- Provide a specialization of AsyncQueue and AsyncQueueDispatch for std::list containers which has push() and emplace() members which do not allocate within the mutex (async_queue.h, cgu_config.h.in; acinclude.m4, configure-gtk2.ac, configure-gtk3.ac). Reduce contention in TaskManager objects by starting new threads and adding to the task queue outside the mutex (task_manager.h, task_manager.cpp). Add documentation on using the library with Qt (doxygen.main.in). Update documentation (application.h, callback.h, gobj_handle.h, gvar_handle.h, fdstream.h, gstream.h, intrusive_ptr.h, mutex.h, notifier.h, rw_lock.h, shared_handle.h, shared_ptr.h, task_manager.h, window.h). Version 1.2.31 (2 July 2013) -------------- Provide a Thread::TaskManager::IncHandle class, and deprecate the use of TaskManager::set_max_threads (task_manager.h; tests/test_task_manager.cpp). Issue a g_critical warning if a Thread::TaskManger task expires with an exception, there is no 'fail' callback and the thrown object is not Thread::Exit (task_manager.cpp). Replace AC_CONFIG_HEADER macro with AC_CONFIG_HEADERS when configuring (configure-gtk2.ac, configure-gtk3.ac). Update build system to automake-1.13.3 (config.guess, config.sub, depcomp, INSTALL). Upgrade doxygen configuration files to doxygen-1.8.4 (docs/Doxyfile.in, docs/Doxyfile). Update documentation (README; doxygen.main.in; callback.h, future.h, task_manager.h). Version 1.2.30 (1 June 2013) -------------- Update git links following sourceforge repository changes (doxygen.main.in). Update build system to automake-1.13.1 (configure-gtk2.ac, configure-gtk3.ac, config.guess, config.sub, depcomp, INSTALL, install-sh, missing). Minor efficiency improvement in creating Thread::TaskManager task callbacks (task_manager.tpp). Cause bootstrap scripts to build translation files (bootstrap-gtk2.sh, bootstrap-gtk3.sh). Update documentation (callback.h, convert.h, future, reassembler.h, task_manager.h). Version 1.2.29 (9 March 2013) -------------- Deal with document format breakage from doxygen markup changes (doxygen.main.in; application.h, async_queue.h, callback.h, convert.h, do_if.h, emitter.h, fdstream.h, file_print_manager.h, future.h, gstream.h, gobj_handle.h, gvar_handlle.h, intrusive_ptr.h, io_watch.h, shared_handle.h, shared_ptr.h, text_print_manager.h, thread.h, widget.h, window.h). Update documentation (callback.h, task_manager.h). Version 1.2.28 (14 February 2013) -------------- Make global static Notifier objects safe (notifier.h, notifier.cpp). Avoid use of GObject-style casts in inline functions and function templates to enable user code defining G_DISABLE_CAST_CHECKS to be more easily compliant with the one-definition rule (application.h, gobj_handle.h, gstream.tpp, window.h). Remove some other unnecessary GObject-style casts, where the object concerned is created in the function where the cast is carried out (application.cpp, file_print_manager.cpp, text_print_manager.cpp, window.cpp). Avoid deprecation warning for g_type_init() with glib>=2.36 (tests/test_gstream.cpp). Provide a --without-gtk configuration option, to enable the library to be compiled without classes which require GTK+ support (acinclude.m4, configure-gtk2.ac, configure-gtk3.ac, c++-gtk-utils-1.2.pc.in, c++-gtk-utils-1.3.pc.in; README, doxygen.main.in, cgu_config.h.in; application.h, application.cpp, file_print_manager.h, file_print_manager.cpp, text_print_manager.h, text_print_manager.cpp, widget.h, widget.cpp, window.h, window.cpp). Update documentation (doxygen.main.in, fdstream.h, gstream.h, intrusive_ptr.h, mutex.h, rw_lock.h, shared_handle.h, shared_ptr.h, task_manager.h, thread.h). Version 1.2.27 (1 January 2013) -------------- Add a Cgu::Thread::Taskmanager::change_max_threads() method (task_manager.h, task_manager.cpp; tests/test_task_manager.cpp). Add test to Cgu::Thread::TaskManager unit tests (tests/test_task_manager.cpp). Update documentation (doxygen.main.in; callback.h, task_manager.h). Version 1.2.26 (28 November 2012) -------------- Provide TaskManager::make_task_result(), TaskManager::make_task_when() and TaskManager::make_task_when_full() convenience wrapper methods for target functions which return a value, for easier task composition (doxygen.main.in; task_manager.h, task_manager.tpp; tests/test_task_manager.cpp; c++-gtk-utils/Makefile.am). Don't use static member function of local struct for callback function (task_manager.cpp). Update unit tests (tests/test_task_manager.cpp). Update documentation (callback.h, future.h, timeout.h). Version 1.2.25 (5 October 2012) -------------- Provide a Cgu::Thread::TaskManager thread pool class for multiple task to thread mapping (c++-gtk-utils/Makefile.am; task_manager.h and task_manager.cpp; doxygen.main.in; tests/Makefile.am, tests/test_task_manager.cpp). Suppress deprecated warnings for g_thread_init(), GStaticRecMutex and GtkTable with glib-2.34/gtk+-3.6 (mutex.h, mutex.cpp, text_print_manager.cpp; test_future.cpp, test_gstream.cpp, test_notifier.cpp, test_task_manager.cpp, test_thread.cpp; tests/extra/test_file_print_manager.cpp, tests/extra/test_text_print_manager.cpp). Replace the sourceforge SVN repository with a sourceforge git respository (doxygen.main.in). Update documentation (async_result.h, callback.h, fdstream.h, future.h, mutex.h, shared_handle.h, shared_ptr.h, thread.h). Version 1.2.24 (2 August 2012) -------------- Make AsyncResult::get() truly cancellation safe (async_result.h). Carry out locking in the AsyncResult destructor (async_result.h). Make Thread::Future::get() cancellation safe (future.h, future.tpp). Make sure Thread::Future::get() does not hang if a call to Thread::Future::run() by another thread threw (future.tpp). Branch trunk in SVN to v1_2 branch, for future updates to the 1.2 series of c++-gtk-utils (doxygen.main.in). Update documentation (async_result.h, callback.h, future.h, thread.h). Version 1.2.23 (1 July 2012) -------------- Update build system to libtool-2.4.2, automake-1.12.1 and autoconf-2.69. Update doxygen configuration file for doxygen-1.8.1.1 (docs/Doxygen.in). Update unit tests (test/test_callback.cpp, test/test_notifier.cpp). Update documentation (doxygen.main.in; async_queue.h, async_result.h, callback.h, convert.h, do_if.h, emitter.h, future.h, gstream.h, thread.h, window.h). Version 1.2.22 (20 May 2012) -------------- Provide new Cgu::AsyncResult class (tests/Makefile.am, tests/test_async_result.cpp; c++-gtk-utils/Makefile.am, configure-gtk2.ac, configure-gtk3.ac, doxygen.main.in, async_queue.h, async_result.h, future.h). Provide copy constructors, assignment operators and swap methods for Cgu::AsyncQueue and Cgu::AsyncQueueDispatch classes (async_queue.h; tests/test_async_queue.cpp). Provide size() method for Cgu::AsyncQueue and Cgu::AsyncQueueDispatch classes (async_queue.h; tests/test_async_queue.cpp). Add default constructor for Cgu::Thread::JoinableHandle class (thread.h; tests/test_thread.cpp). Update documentation (async_queue.h, callback.h, emitter.h, fdstream.h, future.h, gstream.h, mutex.h, reasembler.h, shared_handle.h, shared_ptr, thread.h). Version 1.2.21 (11 April 2012) -------------- Fix compilation with gcc-4.7 (fdstream.h, fdstream.tpp, gstream.h, gstream.tpp) (thanks to Malcolm Lewis for reporting this). Provide unit test for Future asynchronous functions (tests/test_future.cpp). Avoid types deprecated in gtk+-3.4 in the Application unit test, when compiled against gtk+-3.4 (tests/test_application.cpp). Update FSF address in relevant copyright notices (thanks to Malcolm Lewis for reporting this). Update documentation (doxygen.main.in; async_queue.h, callback.h, future.h, io_watch.h, mutex.h, notifier.h, rw_lock.h, thread.h, timeout.h, window.h). Version 1.2.20 (27 January 2012) -------------- Fix a race condition when executing the Future::when() callback introduced in version 1.2.19 (future.tpp). Version 1.2.19 (24 January 2012) -------------- Provide methods to obtain gio read and write errors on gstream objects (gstream.h, gstream.tpp). Deprecate GobjWeakHandle::expired(), which has the wrong semantics, and provide GobjWeakHandle::valid() method (gobj_handle.h). Provide unit tests based on glib's test framework (Makefile.am, Makefile.decl, acinclude.m4, configure-gtk2.ac, configure-gtk-3.ac; c++-gtk-utils/Makefile.am; docs/Makefile.am; 'tests' sub-directory and contents). Use automake silent rules (configure-gtk2.ac, configure-gtk3.ac). Remove unnecessary increment and decrement of reference count in Future::post_done() and Future::post_done_rel() (future.tpp). Update documentation (doxygen.main.in; async_queue.h, callback.h). Version 1.2.18 (28 November 2011) -------------- Access 'val' member variable directly in execute_done() and execute_done_rel() methods of Thread::Future to avoid unnecessary mutex lock/unlock (future.tpp). Make the test for whether Thread::FutureWhenError is thrown entirely race free, if the when() method is called after the run() method (future.h). Adjust linker ordering and build system (acinclude.m4, c++-gtk-utils-2-2.0.pc.in, c++-gtk-utils-3-2.0.pc.in, c++-gtk-utils/Makefile.am) Update documentation (application.h, emitter.h, future.h, reassembler.h). Version 1.2.17 (16 October 2011) -------------- Correct the reference counting so that a Thread::Future object stays in existence until any 'when' callback has executed as stated in the documentation (this is only relevant in the unlikely case of a user having a pointer to the Future object as a bound argument of the 'when' callback, but the change also permits a more efficient implementation of the execution of the 'when' callback and removes the possibility of the copy constructor of the return value throwing) (future.h, future.tpp). Version 1.2.16 (13 October 2011) -------------- Add Thread::Future::when() and associated Thread::Future::fail() methods so that the result provided by a future object can be asynchronously passed to a glib main loop, and a new Thread::Future::is_emitter_done() method (future.h, future.tpp). Eliminate possible race between Future::run() and Future::cancel() (future.tpp). Update documentation (README, doxygen.main.in; callback.h, emitter.h, io_watch.h, mutex.h, thread.h, timeout.h). Version 1.2.15 (12 September 2011) -------------- Do not reset input stream pointers if the call to g_seekable_seek() in basic_gstreambuf<>::seekoff() fails (gstream.tpp). Fix a bug in Cgu::DoIf::assert_same_type() which prevented a const type being specified as the specific template parameter type (do_if.h). Provide new Cgu::DoIf::assert_not_const() static assertion (doxygen.main.in, do_if.h). Replace deprecated Callback::make_val() with Callback::make_ref() (emitter.h, emitter.cpp). Update and correct documentation (doxygen.main.in; application.h, async_queue.h, callback.h, convert.h, do_if.h, emitter.h, fdstream.h, future.h, gstream.h, intrusive_ptr.h, param.h, shared_handle.h, shared_ptr.h). Version 1.2.14 (18 May 2011) -------------- !!! NOTE !!!: './configure' will now prepare the library for compilation against GTK+3. To compile the library against GTK+2, use './configure-gtk2'. Adopt a swapping implementation for the reset() and operator=() methods of SharedPtr/SharedLockPtr/SharedHandle/ScopedHandle/ SharedLockHandle/InstrusivePtr: this will cater for a throwing destructor of a managed object, and with r-value references the additional overhead is minimal (intrusive_ptr.h, shared_handle.h, shared_ptr.h). Explicitly deprecate Callback::make_val() in favour of Callback::make_ref() (callback.h). Change default compile so that it compiles against GTK+3 (README, NEWS; doxygen.main.in). Update copyright notices (future.h, future.tpp) Upgrade gettext to version 0.18 (po/Makefile.in.in, po/Rules-quot). Update libtool to version 2.4. Update documentation, including providing new documentation on use with GtkBuilder (application.h, callback.h, doxygen.main.in, gobj_handle.h, widget.h, window.h). Version 1.2.13 (8 April 2011) -------------- Provide new Callback::make_ref() functions so that callback objects will store arguments for functions taking const reference arguments (callback.h, param.h). Improve efficiency of Thread::Future implementation and permit const reference arguments to bind to Thread::Future objects (future.h, future.tpp). As a safety feature, have the Cgu::Application destructor remove any remaining WinBase objects associated with the Application object (this would only be relevant if the user constructs the Application object on free store, and then deletes it while the run() method is still blocking, but does not call the remove() method on all WinBase objects still associated before doing so) (application.h). Permit Cgu::Application to compile with the library configured with the --without-type-tuple-args option (but the 'command_line' and 'open' emitters will not be available) (application.h, application.cpp, window.h, window.cpp). Do better error handling in conversion functions where sizeof(wchar_t) is not 2 or 4 (convert.cpp). Improve error checking and so suppress gcc-4.6 warning (text_print_manager.cpp). Update build system (configure-gtk2.ac, configure-gtk-3.ac). Update documentation (README; doxygen.main.in, application.h, emitter.h, io_watch.h, mem_fun.h, window.h). Version 1.2.12 (9 March 2011) -------------- Provide a new Cgu::Application class, to enable Cgu::WinBase objects to be used with GtkApplication/GApplication (application.h, application.cpp, window.h, window.cpp). Provide versions of the start_iowatch() function where the relevant callback function is passed a GIOCondition value representing the events which caused the call (io_watch.h and io_watch.cpp). Provide operator==(), operator!=() and operator<() for GobjHandle, GvarHandle, IntrusivePtr, SharedHandle, SharedLockHandle, SharedPtr and SharedLockPtr (acinclude.m4, configure-gtk2.ac, configure-gtk3.ac, NEWS; config.h.in, gobj_handle.h, gvar_handle.h, intrusive_ptr, shared_handle.h, shared_ptr.h) Omit use of #warning directive in convert.cpp. Update documentation (doxygen.main.in, gstream.h, io_watch.h, pipes.h, shared_handle.h, shared_ptr.h, thread.h). Version 1.2.11 (6 February 2011) -------------- Use Cgu::Param structs to pass unbound arguments with CallbackArg, FunctorArg, SafeFunctorArg, EmitterArg and SafeEmitterArg (and so improve efficiency if objects of class type are passed by value) (callback.h and emitter.h). Correct error in constructing a ConversionError object, and add additional checks for case where the char type is not an octet (convert.h and convert.cpp). Change documentation directory from $prefix/share/doc/c++-gtk-utils to $prefix/share/doc/c++-gtk-utils/1.2 in preparation for the 2.0 series for C++0x (Makefile.am and docs/Makefile.am; README; doxygen.main.in). Update documentation (callback.h, do_if.h, doxygen.main.in, emitter.h, fdstream.h, gobj_handle.h, gstream.h, gvar_handle.h, intrusive_ptr.h, shared_handle.h, shared_ptr.h, text_print_manager.h, thread.h). Version 1.2.10 (8 January 2011) -------------- Enable CallbackArg, FunctorArg and EmitterArg objects to take more than one unbound argument (acinclude.m4, configure-gtk2.ac, configure-gtk3.ac; callback.h, cgu_config.h.in, doxygen.main.in, emitter.h, param.h). Provide new Param struct for automatic typing of parameter arguments for template functions (param.h). Provide Cgu::DoIf::mem_fun() and Cgu::DoIf::fun() templated conditional compilation functions, and the Cgu::DoIf::assert_related_to_type(), Cgu::DoIf::assert_related_types() and Cgu::DoIf::assert_same_type() static assertions (do_if.h). Simplify argument passing on construction of callback objects by using Param structs where relevant and make other minor adjustments (callback.h). Minor adjustments to FilePrintManager and TextPrintManager implementation (file_print_manager.cpp and text_print_manager.cpp). Add -Wno-deprecated flag to compilation flags in order to suppress warnings about std::auto_ptr when compiling under C++0x (acinclude.m4). Update documentation (callback.h, cgu_config.h.in, doxygen.main.in, file_print_manager.h, future.h, gobj_handle.h, mutex.h, pipes.h, rw_lock.h, text_print_manager.h, thread.h, widget.h, window.h, README). Version 1.2.9 (8 December 2010) ------------- Fix breakage where a callback with a bound reference argument is compiled in strict C++-98/03 mode (callback.h). Documentation updates (README, callback.h, gstream.h, prog_present.h). Put the html documentation directory directly in docs (and remove the 'reference' sub-directory) (Makefile.am, docs/Makefile.am, configure-gtk2.ac, configure-gtk3.ac). Version 1.2.8 (5 December 2010) ------------- Provide new Callback::make_val() factory functions for the more efficient passing of bound class-type value arguments (callback.h, emitter.h, emitter.cpp). Optimise argument passing with Cgu::Thread::Future objects (future.h, future.tpp). Move CVS sourceforge repository to SVN (doxygen.main.in). Documentation updates (callback.h, future.h, gstream.h, widget.h). Version 1.2.7 (2 November 2010) ------------- Implement prog_presenter using gio's dbus implementation instead of dbus-glib where glib >= 2.26.0 is installed (acinclude.m4, configure-gtk2.ac, configure-gtk3.ac, prog_present.h, prog_present.cpp). Provide a new GvarHandle class for managing GVariant reference counts (gvar_handle.h, doxygen.main.in). Fix additional breakage in gtk+-2.91 (file_print_manager.cpp, window.cpp). Fix compilation error where library is compiled against gtk+-2.10 or 2.12 (file_print_manager.h). Emit warning rather than compile error if gstream.h is included by a user file by mistake and glib < 2.16.0 is installed (gstream.h). Documentation improvements and corrections (fdstream.h, future.h, gstream.h, shared_handle.h, window.h). Version 1.2.6 (1 October 2010) ------------- Provide C++ streams and streambuffer for GIO streams (gstream.h, gstream.tpp, acinclude.m4, configure-gtk2.ac, configure-gtk3.ac, c++-gtk-utils-1.2.pc.in, c++-gtk-utils-1.3.pc.in). Provide random access on seekable files with fdostream and fdistream classes (fdstream.h and fdstream.tpp). Provide optional output buffering with fdostream class (fdstream.h and fdstream.tpp). Clear stream state flags of fdstreams when attach() method called, and set failbit if there is an error in closing a stream (fdstream.h and fdstream.tpp). Use full buffer space if available when calling xsputn() (so mimicking repeated calls to sputc()) (fdstream.tpp). Use gtk_widget_destroy() rather than gtk_object_destroy() (it looks as if GtkObject is on the way out) (window.cpp). Standardize on tpp instead of tcc as the suffix for template implementation files (fdstream.h, fdstream.tcc/fdstream.tpp, future.h, future.tcc/future.tpp). Update documentation (doxygen.main.in, fdstream.h, gerror_handle.h, gobj_handle.h, intrusive_ptr.h, shared_handle.h, shared_ptr.h, thread.h and NEWS). Version 1.2.5 (1 September 2010) ------------- Provide a new set_byteswap() function for wide stream input streams and input streambuffers so as to provide conversion of incoming text to native endian format where required (fdstream.h, fdstream.tcc). Provide a convenience Cgu::WinBase::show_all() method (window.h). Hide all relevant GObject callbacks in friend helper classes, and provide documentation on this technique for library users (doxygen.main.in, file_print_manager.h, file_print_manager.cpp, text_print_manager.h, text_print_manager.cpp, window.h and window.cpp). Add local m4 search path for aclocal in bootstrap scripts (bootstrap-gtk2.sh, bootstrap-gtk3.sh). Provide convenience operator!=() functions for Functor and SafeFunctor objects to match the operator==() functions (callback.h). Documentation improvements (convert.h, emitter.h, mem_fun.h, window.h). Version 1.2.4 (19 July 2010) ------------- Fix compilation error where a Cgu::Thread::Future object is created for a non-member function (or static member function) taking no argument (future.tcc). Remove redundant anonymous namespace for internal functions with C linkage and revise function names (callback.cpp, file_print_manager.h, file_print_manager.cpp, io_watch.cpp, text_print_manager.h, text_print_manager.cpp, thread.cpp, timeout.cpp, window.h, window.cpp). Documentation additions, including providing additional examples (fdstream.h, gobj_handle.h, reassembler.h, window.h). Version 1.2.3 (2 June 2010) ------------- Make a library configuration check for _POSIX_CLOCK_SELECTION as well as _POSIX_MONOTONIC_CLOCK when checking the availability of monotonic clocks for condition variables (corrects BSD builds) (acinclude.m4). Correct autoconf configuration test for runtime recursive mutexes (acinclude.m4) Provide compile option for GTK+-3 (new files configure-gtk2.ac, configure-gtk3.ac, configure-gtk2, configure-gtk3, bootstrap-gtk2.sh, bootstrap-gtk3.sh and c++-gtk-utils-1.3.pc.in; changed files README, acinclude.me, c++-gtk-utils-1.2.pc.in, Makefile.am, c++-gtk-utils/Makefile.am, file_print_manager.h and file_print_manager.cpp). Standardise on using gboolean rather than int when dealing with PresentFunc return value (internal only, doesn't affect API/ABI even if they weren't the same, which they are) (prog_present.cpp). Change prog_present example so as not to use GSEAL'ed window member (prog_present.h). Go to automake 1.11.1, autoconf 2.65 and libtool 2.2.6b. Documentation corrections (async_queue.h and doxygen.main.in). Version 1.2.2 (5 May 2010) ------------- Compilation fixes for gcc-4.5.0 (future.h, future.tcc, thread.h and thread.cpp). Improve the information provided by Cgu::present_instance() so that 2 is returned instead of 1 where the ProgPresent callback returns FALSE (1 is only now returned by present_instance() in a case where there has been a dbus error) (prog_present.cpp). Put ProgPresenter GObject class in Cgu namespace as CguProgPresenter, move CguProgPresenter dbus objects to /org/cgu namespace, explicitly declare CguProgPresenter GObject methods as extern C and further "C++-ify" the implementation (note, as CguProgPresenter is entirely internal with methods with only internal linkage this does not affect API/ABI, but it reduces the risk of GType name clashes with any user-defined GObjects) (prog_present.cpp; make_bindings.sh, prog-presenter.xml, prog-presenter-bindings.h and prog-presenter-glue.h). Documentation corrections and improvements (async_queue.h, gobj_handle.h, emitter.h, io_watch.h, mutex.h, prog_presenter.h, rw_lock.h and timeout.h). Version 1.2.1 (16 April 2010) ------------- Provide GobjWeakHandle class (gobj_handle.h). Provide start_timeout_seconds() functions (timeout.h and timeout.cpp). Provide Thread::RWLock class and associated locking classes (rw_lock.h). Provide Thread::Mutex::TrackLock and Thread::RecMutex::TrackLock locking classes which track locked status (mutex.h). Correct the implementation of Cgu::RecMutex::test_support(), and provide a new symbol CGU_HAVE_RECURSIVE_MUTEX which user programs can use at compile time (acinclude.m4, cgu_config.h.in, mutex.h and mutex.cpp). Correct documentation on Utf8 namespace and improve documentation on other matters (convert.h, fdstream.h, future.h, mutex.h, pipes.h, shared_handle.h, shared_ptr.h and window.h). Version 1.2.0 (20 March 2010) ------------- Put the library in namespace Cgu. This requires the binary version number to be bumped, and the pkg-config file is now c++-gtk-utils-1.2.pc rather than c++-gtk-utils.pc, but a --with-cgu-using-directive configuration option is available to maintain source compatibility, which will cause each of the library headers to have a 'using namespace Cgu' using directive. (acinclude.m4, configure.ac, README, doxygen.main.in, namespace.h.in, async_queue.h, callback.h, callback.cpp, convert.h, convert.cpp, emitter.h, emitter.cpp, fdstream.h, fdstream.tcc, file_print_manager.h, file_print_manager.cpp, future.h, future.tcc, gerror_handle.h, gobj_handle.h, intrusive_ptr.h, io_watch.h, io_watch.cpp, mem_fun.h, mutex.h, mutex.cpp, notifier.h, notifier.cpp, pipes.h, pipes.cpp, prog_present.h, prog_present.cpp, reassembler.h, reassembler.cpp, shared_handle.h, shared_ptr.h, text_print_manager.h, text_print_manager.cpp, thread.h, thread.cpp, timeout.h, timeout.cpp, widget.h, widget.cpp, window.h, window.cpp, src/Makefile.am and src/Makefile.in.) Fix memory leak in FilePrintManager::show_dialog() (file_print_manager.cpp). Make detection of monotonic clocks for condition variable timed waits an automatic configuration matter rather than a separate user option (acinclude.m4, configure.ac, async_queue.h, mutex.h and mutex.cpp). Make detection of whether sched_yield() is available an automatic configuration matter rather than a separate user option (acinclude.m4, configure.ac, emitter.h and emitter.cpp). Make detection of whether headers include provision for recursive mutexes an automatic configuration matter, and provide a new GrecmutexLock class for cases where they are not available and GStaticRecMutex is used (acinclude.m4, configure.ac, mutex.h and mutex.cpp). Provide user-definable symbol which a library user can define so as to cause mutexes rather than glib atomic functions to protect reference counts (intrusve_ptr.h, shared_handle.h and shared_ptr.h). Correct error in the operator<() functions for FunctorArg and SafeFunctorArg objects (callback.h). Provide a new Thread::JoinableHandle::is_managing() method (thread.h and thread.cpp). Make Thread::JoinableHandle constructors strongly exception safe and correct documentation (thread.h). Improve error detection in Thread::Thread::start() (thread.cpp). Correction of documentation (callback.h). Version 1.0.3 (2 March 2010) ------------- Provide new --with-glib-memory-slices-compat and --with-glib-memory-slices-no-compat compilation configuration options so that library classes uses glib memory slices when constructed on free store (acinclude.m4, configure.in, README, doxygen.main.in, memory.h.in, async_queue.h, callback.h, convert.h, emitter.h, fdstream.h, file_print_manager.h, future.h, mutex.h, notifier.h, pipes.h, reassembler.h, shared_handle.h, shared_ptr.h, text_print_manager.h, thread.h, widget.h and window.h). Provide new GSliceFree, GSliceFreeSize and GSliceDestroy deleter functors to enable the SharedHandle, SharedLockHandle and ScopedHandle classes to manage glib memory slices (shared_handle.h). Guard against a case where, in relation to a GtkDialog object, both a response signal handler and WinBase::on_delete_event() call WinBase::close() when a delete-event happens (window.h and window.cpp). Add documentation about the use of GtkDialog objects with the WinBase class, and about the modal and parent arguments of the WinBase constructor (window.h). Improve the FilePrintManager implementation (file_print_manager.cpp). Other documentation improvements (gerror_handle.h, notifier.h and shared_handle.h) Version 1.0.2 (27 January 2010) ------------- Provide new Thread::Future class (future.h and future.tcc). Provide new Thread::JoinableHandle class (thread.h and thread.cpp). Enable SharedHandle/ScopedHandle/SharedLockHandle classes to manage pointers to const objects (shared_handle.h and gerror_handle.h). Add release() method to ScopedHandle class (shared_handle.h). Documentation improvements (callback.h and mutex.h). Version 1.0.1 (29 December 2009) ------------- Disconnect the timeout from the main loop where a Releaser object has given rise to an empty EmitterArg object for the timeout (timeout.cpp). Provide Utf8::Iterator and Utf8::ReverseIterator classes for iterating through a std::string object by UTF-8 character rather than by bytes (convert.h). Amend the exception in applying the LGPL to templates so as to include also inline functions and macros of any length (async_queue.h, callback.h, callback.cpp, convert.h, emitter.h, emitter.cpp, fdstream.h, fdstream.tcc, gobj_handle.h, intrusive_ptr.h, mem_fun.h, mutex.h, shared_handle.h and shared_ptr.h). Document the StandardArrayDelete<>, CFree, GFree and GerrorFree functors (shared_handle.h and gerror_handle.h). Provide further comments in the documentation on use of wfdostream and wfdistream (fdstream.h). Version 1.0.0 (6 November 2009) ------------- If start_iowatch(), start_timeout, or Callback::post() throw, delete the CallbackArg argument passed to them, and document this (callback.h, callback.cpp, io_watch.h, io_watch.cpp, timeout.h, timeout.cpp). Make PipeFifo::connect_to_stdin(), PipeFifo::connect_to_stdout() and PipeFifo::connect_to_stderr() return better error information (this means they may now return -2 as well as -1 in the case of error) (pipes.h and pipes.cpp). Make FilePrintManager implementation exception-safe if std::bad_alloc thrown (configure.ac, file_print_manager.cpp). Remove unnecessary header (gobj_handle.h). Improve implementation of 'make uninstall' with respect to html documentation (docs/reference/Makefile.am, docs/reference/Makefile.in). Documentation improvements, including stating version number at which new interfaces after version 0.9.0 available (callback.h, convert.h, emitter.h, file_print_manager.h, gobj_handle.h, intrusive_ptr.h, io_watch.h, notifier.h, pipes.h, shared_handle.h, shared_ptr.h, text_print_manager.h, thread.h, timeout.h, window.h). Version 0.9.2 (6 October 2009) ------------- Provide a new start_timeout() function to start timeouts in a glib main loop with Callback objects with automatic disconnection (timeout.h, timeout.cpp). Provide functions for converting between codesets (convert.h, convert.cpp). Permit Callback::post() to post to any thread with a main loop and start_iowatch() to have other than default priority (these keep API compatibility but require bumping of the libtool interface number because of binary interface incompatibility) (callback.h, callback.cpp, io_watch.h, io_watch.cpp). Implement Releaser, EmitterArg and SafeEmitterArg so they are compiled into the library rather than as inline (emitter.h, emitter.cpp). Take the incorporated libtool version to libtool-2.2.6. Make minor documentation improvements (callback.h, io_watch.h, mutex.h, shared_handle.h, shared_ptr.h, thread.h, window.h, doxygen.main, doxygen.main.in). Version 0.9.1 (22 September 2009) ------------- Provide version of SharedPtr, SharedLockPtr, SharedHandle and SharedLockHandle with an additional reset() method and constructor taking a pointer which do not delete the contained object if allocation fails (shared_handle.h, shared_ptr.h). Make the constructors of SharedPtr, SharedLockPtr, SharedHandle and SharedLockHandle which take a pointer no-throw if they are passed a NULL argument (shared_handle.h, shared_ptr.h). Provide a reset() method for the ScopedHandle class (shared_handle.h). Provide a restore() method for the CancelBlock class and make the destructor of that class restore cancellation state to the state it was in prior to it being constructed, rather than automatically make the thread cancellable (thread.h, thread.cpp). Make throwing/catching NPTL cancellation friendly (file_print_manager.cpp, io_watch.cpp, shared_handle.h, shared_ptr.h). Make blocking methods of AsyncQueueDispatch cancellation safe (async_queue.h). Standardise on glib error reporting system (callback.cpp, file_print_manager.cpp, io_watch.cpp, lib_defs.h, notifier.cpp, prog_present.cpp, text_print_manager.cpp). Add to permissible single-instance program names for delimiting (prog_present.cpp). Improve documentation (async_queue.h, gobj_handle.h, io_watch.h, pipes.h, notifier.h, reassembler.h, thread.h). Version 0.9.0 (15 September 2009) ------------- First public release.