Tue Nov 28 01:20:57 2006  Tim Janik  <timj@gtk.org>

	* birnetthreadimpl.cc: do not provide chain/unchain functions after 
	thread system initialization, since calling them at this point is
	invalid.

Wed Nov 22 19:45:21 2006  Tim Janik  <timj@gtk.org>

	* birnetutils.cc (url_test_show): prefer configurable browser launchers
	over non-configurable browser launchers.

	* birnetcdefs.h: provide EXTERN_C and BIRNET_MAY_ALIAS.

Tue Nov 21 22:04:15 2006  Tim Janik  <timj@gtk.org>

	* birnetutils.cc: reworked browser launching logic to work around
	launcher scripts failing unnoticed by executing browser programs
	asyncronously and executing browser launch scripts syncronously
	to check the exit code.
	added "browser" debug key and messages.
	due to unreliable exit codes or foreground/background execution
	behaviour, support had to be removed for the launcher scripts
	xdg-open, htmlview, browser-config and sensible-browser,
	added support for exo-open, galeon, epiphany, amaya and dillo.

	* birnetmsg.hh, birnetmsg.cc: added Msg::CustomType class through
	which users can easily create new logging types. added printf-style
	Msg::display() variant for custom message types.

Mon Nov 20 23:39:43 2006  Tim Janik  <timj@gtk.org>

	* birnetmsg.hh, birnetmsg.cc: implemented C++ messaging API,
	mostly based on the former sfimsg.c.
	extended API to match most of the old sfi_msg_* API, including
	syslog logging, stdlog configuraiton and various new message types.

	* birnetthread.cc: fixed missing zero initialization of C structs.

	* tests/infotest.cc: added some message tests.

Wed Nov 15 01:00:21 2006  Tim Janik  <timj@gtk.org>

	* birnetmath.hh, birnetmath.cc: added dtoi32, dtoi64, iround, iceil, 
	ifloor definitions from Rapicorn. these are fast float->integer 
	conversion routines on i386.

	* tests/math.cc: test dtoi implementation and friends.

Thu Nov  2 22:28:49 2006  Tim Janik  <timj@gtk.org>

	* birnettests.h: added TABORT_HANDLER() to specify a custom callback
	for informative printouts to be executed upon failing assertions.
	such a handler setup is only active within a single TSTART/TDONE block.
	added TCHECK_CMP() and TASSERT_CMP() to print out mismatching
	values of failing comparisons.

Wed Nov  1 11:46:10 2006  Stefan Westerfeld  <stefan@space.twc.de>

	* birnetcdefs.h: Applied Patch from Tim to define BirnetInt64 and
	BirnetUInt64 as (signed) long long int, as otherwise %lld printf
	formats on AMD64 emit compiler warnings.
	
	* birnetthreadimpl.cc: Use BirnetUInt64 arguments for thread table
	function implementations of thread_awake_after and
	thread_emit_wakeups, to be consistent with the thread table function
	pointers defined in birnetcdefs.h.

Tue Oct 24 23:51:12 2006  Tim Janik  <timj@gtk.org>

	* birnettests.h: added cpu name to treport_*() output.

Mon Oct 23 17:56:19 2006  Stefan Westerfeld  <stefan@space.twc.de>

	* birnetthreads.hh: Fixed typos in AutoLocker documentation.

Wed Oct 11 02:11:29 2006  Tim Janik  <timj@gtk.org>

	* birnetutf8.hh: added utf8_align() and utf8_aligned() to step back
	from the middle of an UTF-8 char.

Sat Oct 21 19:02:47 2006  Tim Janik  <timj@gtk.org>

	* birnettests.h (treport_generic): allow fixed portion of numbers
	to occupy 9 characters. added more test units.

Sat Oct 21 17:14:54 2006  Tim Janik  <timj@gtk.org>

	* birnetutils.hh, birnetutils.cc: provide init_settings() function to 
	access initialization setting values. test should now use:
	init_settings().test_perf
	init_settings().test_slow or
	init_settings().test_quick.

	* birnettests.h: fixed float printing.

Sat Oct 21 03:46:05 2006  Tim Janik  <timj@gtk.org>

	* birnettests.h: added treport_maximized() and treport_minimized()
	benchmark reporting funcitons. added TUnitType to allow specification
	of units for benchmark results.

	* birnetcdefs.h:
	* birnetutils.cc: parse --g-fatal-warnings, --test-quick, --test-slow
	and --test-perf. allow special casing of tests via 
	birnet_init_settings->test_quick, birnet_init_settings->test_slow and
	birnet_init_settings->test_perf.

	* tests/sorting.cc:
	* tests/strings.cc:
	* tests/threads.cc:
	* tests/Makefile.am: split up TESTS into SLOWTESTS and PERFTESTS and
	report performance results properly.

Tue Oct 10 23:23:11 2006  Tim Janik  <timj@gtk.org>

	* birnetutf8.hh, birnetutf8.cc: added Unichar::isvalid().
	changed arguemnt order of utf8_find_prev() to match that of 
	g_utf8_find_prev_char(), adapted test case. added utf8_validate(),
	wrapping g_utf8_validate().

	* tests/strings.cc: adapt to utf8_find_prev(). added Unichar::isvalid()
	test and utf8_validate() test.

Tue Oct 10 01:34:05 2006  Tim Janik  <timj@gtk.org>

	* birnetcdefs.h: provide extra prototype for extern inline functions
	for newer gcc.

Mon Oct  9 23:58:21 2006  Tim Janik  <timj@gtk.org>

	* birnetutils.cc: fixed typo in condition.

	* birnet-zintern.cc: fixed debugging statement.

Mon Oct  9 23:47:30 2006  Tim Janik  <timj@gtk.org>

	* birnetcdefs.h: ensure we have FALSE, TRUE, ABS, MIN, MAX, CLAMP,
	ARRAY_SIZE and STRFUNC.

	* birnetutils.hh: don't publically include glib.h, adapted affected
	callers. pre-declare ThreadTable to use atomic functions in class
	ReferenceCountImpl.

	* birnetutils.hh, birnetutils.cc: added string utilities to convert
	strings to and from bool, int, uint, float, double and double vector.
	added utilities to convert strings tolower, toupper, totitle, to strip
	strings and to print into strings in printf style.
	added uuid string test and comparison and errno to string conversion.

	* birnet-zintern.cc: conveted somewhat more to C++.

	* tests/strings.cc: added uuid string functions tests.

Mon Oct  9 23:00:39 2006  Tim Janik  <timj@gtk.org>

	* birnetutf8.hh, birnetutf8.cc: wrap GLib isalnum() and friends to 
	classify unichar characters. provide inline functions to increment
	and decrement positions in UTF-8 strings.

	* tests/strings.cc: new test program to test birnetutf8.hh functions.

Sun Oct  8 16:20:18 2006  Tim Janik  <timj@gtk.org>

	* Makefile.am: ship birnetcdefs.h.

	* birnetthreadimpl.cc: added internal default constructors for gcc-3.3.

	* birnetmsg.hh: reordered function attributes on constructors for gcc-3.3.

Sat Oct  7 23:58:58 2006  Tim Janik  <timj@gtk.org>

	* birnetcdefs.h (BIRNET_ABORT_NORETURN): added noreturn call to macros 
	which can't return, to silence compiler in some cases.

Sat Oct  7 18:32:00 2006  Tim Janik  <timj@gtk.org>

	* birnetcdefs.h: moved non-symbol C API bits from birnetcore.h and
	birnethread.h bits here. extended threading table to also cover the
	normal threading API.

	* birnetcpu.hh, birnetcpu.cc: minor API changes.

	* birnetthread.hh, birnetthread.cc: use global threading table to
	access thread layer.

	* birnetthreadimpl.cc: main threading implementation moved here and 
	ported to C++. work around g_atomic_int_set and g_atomic_pointer_set
	missing from glib <= 2.10. reworked threading functions to use the
	global threading table.

	* birnetthread.h, birnetthread.c: removed. mostly merged into birnetthreadimpl.cc.

	* birnetutils.hh, birnetutils.cc: added birnet_runtime_problemv().

	* merged birnetutils.hh with birnetutilsxx.hh, and the same for the .cc files.

	* tests/threads.cc: added simple wrappers to keep the threading tests going.

Fri Oct  6 23:26:10 2006  Tim Janik  <timj@gtk.org>

	* birnetcdefs.h: new header file to contain (or include) all definitions
	and declarations that are useful for C only programs. while Birnet is not
	to support *any* C symbol at all, using common structure definitions 
	helps in wrapping certain features for C programs.

	* birnetcpu.hh, birnetcpu.cc: renamed and moved from .h and .c.

	* birnetutilsxx.hh, birnetutilsxx.cc: use birnetcdefs.h definitions.
	provided init functionality. added raise_sigtrap() and BREAKPOINT()
	implementations. 

	* birnetutilsxx.hh, birnetutilsxx.cc: merged everything from 
	birnetutils.hh and birnetutils.cc into these files.

	* birnet-zintern.cc:
	* birnettests.h: namespace fixups.

	* configure.inc: detect windows operating system.

Fri Oct  6 18:53:30 2006  Tim Janik  <timj@gtk.org>

	* birnet.hh: renamed from birnet.h.

	* tests/ring.cc:
	* birnetring.[hc]: removed, moved to sfi/ as SfiRing.

	* birnetutilsxx.hh, birnetutilsxx.cc: hide implementation of ref_diag().

	* birnetutils.hh, birnetutils.cc: renamed and ported to C++ from
	birnetutils.h and birnetutils.c. changed callers.

	* birnetthread.c: ported from BirnetRing to GSList.

	* birnet-zintern.cc: C++ fixes. changed callers.

	* birnettests.h: removed C function definitions.

	* birnetmsg.hh, birnetmsg.cc: implement messaging API akeleton for C++.

	* birnetmsg.[hc]: removed. (implementation moved to Sfi)

Sun Oct  1 13:31:47 2006  Tim Janik  <timj@gtk.org>

	* birnetutilsxx.hh: added Deletable docs.

Sat Sep 30 18:00:13 2006  Tim Janik  <timj@gtk.org>

	* birnetsignal.hh, birnetsignal.cc: moved virtual methods from .hh to
	.cc to emit fewer typeinfos.

	* birnetutilsxx.hh, birnetutilsxx.cc: moved DataList::NodeBase, 
	Deletable and ReferenceCountImpl destructors into .cc file to emit
	fewer typeinfos. 
	added class VirtualTypeid and moved cxx_demangle() into this class.
	let Deletable derive from VirtualTypeid to have typeid methods available
	for allmost all virtual classes. renamed Deletable::DestructionHook to
	Deletable::DeletionHook for consistency.

	* tests/infotest.cc (test_virtual_typeid): test VirtualTypeid methods.

Thu Sep 28 01:01:55 2006  Tim Janik  <timj@gtk.org>

	* birnetcore.h: introduce BIRNET_CONSTRUCTOR which wraps gcc's 
	"constructor" argument. as a work around for gcc-3.3, which tends
	to forget to emit code for static constructor functions if 
	-finline-functions is activated, also add attribute "used".

	* birnetthread.h:
	* birnetmsg.h: use BIRNET_CONSTRUCTOR to declare constructor functions.

	* tests/threads.cc: added a check for proper constructor function
	invokation before main().

Mon Sep 25 02:10:43 2006  Tim Janik  <timj@gtk.org>

	* birnetsignalslot.hh: fixed reference handling for Data slots, so
        reference types are supported as Data argument (they need to implement
        operator==() though).

	* tests/signal.cc: added data reference slot creation.

Thu Sep 21 00:16:05 2006  Tim Janik  <timj@gtk.org>

	* birnetutils.h, birnetutilsxx.cc: added birnet_cxx_demangle() and 
	cxx_demangle() to easily demangle C++ names.

Sat Sep 16 15:14:32 2006  Tim Janik  <timj@gtk.org>

	* birnetutils.c (birnet_malloc_aligned): fixed alginment adjustment so
	this function *really* returnes aligned memory. added check on whether
	malloc already aligned the memory the way we wanted it.

Sat Sep 16 09:20:49 2006  Stefan Westerfeld  <stefan@space.twc.de>

	* birnetutils.[hc]: Added birnet_malloc_aligned(), which allocates
	memory with an arbitary alignment. The caller is responsible for
	for keeping track of and freeing the unaligned memory.

Tue Sep 12 01:41:18 2006  Tim Janik  <timj@gtk.org>

	* birnetutilsxx.cc (rip_data): fix missing updates of 'last' pointer
	wich caused data loss.

Thu Aug 23 21:21:00 2006  Tim Janik  <timj@gtk.org>

	* birnetcore.h, birnetutilsxx.hh: always use global uint definition
	(either from types.h or from a fallback definition) to avoid
	ambiguities.

Mon Aug 21 01:03:24 2006  Tim Janik  <timj@gtk.org>

	* birnetutils.h, birnetutils.c: added birnet_memset4(), a function to
	fill large memory regions with data of 32bit integer width.

Tue Jul 18 01:14:22 2006  Tim Janik  <timj@gtk.org>

	* birnetthreadxx.cc: use birnet_*__chain4init() and 
	birnet_*__unchain() functions to construct initializer lists for
	mutexes and conditions. that way we don't require std::list to be
	constructed at static mutex construction time (which can be a
	problem).

	* birnetthread.h, birnetthread.c: provide chain4init and
	unchain variants for recursive mutexes and conditions. this required
	reordering of the BirnetRecMutex fields. provide static declaration
	macros for recursive mutexes and conditions in C.

	* birnetsignalslot.hh: hook trampolines into the destruction phase
	of a Deletable, if the instance of a method trampoline is a Deletable.
	as a side effect of this, slot-= only works for Deletable instance
	methods, *before* the instance is deleted.

	* birnetsignal.hh: provide VoidSlot and BoolSlot for convenience.

	* birnetutilsxx.hh, birnetutilsxx.cc: implemented class
	Deletable::DestructionHook which allowes hooking up (thread safe) of
	callbacks into the destruction phase of a Deletable.

	* tests/signal.cc: added tests for signal connections on temporary
	objects that trigger Deletable destruction hooks.

	* tests/threads.cc: test statically declared recursive mutextes and
	conditions in C.

Fri Jul  7 02:15:50 2006  Tim Janik  <timj@gtk.org>

	* tests/infotest.cc: implement file tests in terms of the C++ API
	which also checks the C implementation.

	* birnetutilsxx.[hc][hc]: added Path::chek() and Path::equals().

	* birnetutils.c: document birnet_file_equals().

Fri Jul  7 01:51:35 2006  Tim Janik  <timj@gtk.org>

	* birnetutils.[hc]: moved birnet_file_check() and birnet_file_equals() 
	from beast/sfi/ here. fixed socket file type test.

	* tests/infotest.cc: added test for file type checks.

	* tests/Makefile.am:
	* Makefile.am: removed bogus $LIBZ which should be part of $BIRNET_LIBS.

	* configure.inc: check for zlib.h and -lz and provide $LIBZ as part
	of $BIRNET_LIBS

Thu Jul  6 23:43:06 2006  Tim Janik  <timj@gtk.org>

	* birnet-zintern.c: gen_zfile(): add "+ 1" to the dumed data array size
	because g++ refuses to initialize non 0-terminated strings and murns
	about the array size.

Thu Jul  6 23:18:46 2006  Tim Janik  <timj@gtk.org>

	* birnetutils.[hc]: added birnet_zintern_decompress(), based on 
	gxk_zfile_uncompress(). 

	* tests/Makefile.am: link against $LIBZ.

	* tests/infotest.cc: added zintern test.

Thu Jul  6 22:40:58 2006  Tim Janik  <timj@gtk.org>

	* birnet-zintern.c: some fixups and renames.

	* Makefile.am: build birnet-zintern.

	* dummy.cc: dummy C++ file for linking C binaries.

Thu Jul  6 22:25:13 2006  Tim Janik  <timj@gtk.org>

	* birnet-zintern.c: CVS copied from beast/bse/zintern/zintern.c.

Thu Jul  6 22:07:54 2006  Tim Janik  <timj@gtk.org>

	* birnetutilsxx.[hc]*: moved dirname and basename into Path:: namespace.
	added isabs(), skip_root(), join().

	* tests/infotest.cc: test Path:: functions.

Wed Jul  5 01:54:59 2006  Tim Janik  <timj@gtk.org>

	* birnetutils.c (birnet_url_test_show): added logic to restart browser 
	executable checks if none was found to be working. added support for the
	"xdg-open" browser launching script.
	
	* birnetutils.[hc]: moved url opener code and cleanup handler code from
	GXK here. provide:
	birnet_url_show(): show an url, show an error if no browser is present.
	birnet_url_show_with_cookie(): same as birnet_url_show() albeit setting
	a cookie before hand and then redirecting automatically to the actual url.
	birnet_url_test_show(): show an url, return false if no browser is present.
	birnet_url_test_show_with_cookie(): same as birnet_url_show_with_cookie()
	with false return code instead of a warning.
	birnet_cleanup_add(): register a cleanup handler with the default main loop.
	birnet_cleanup_force_handlers(): force cleanup handler execution prematurely.

	* tests/threads.cc: test static C mutex.

	* birnetthread.[hc]: added support for static mutexes in C via:
	static BIRNET_MUTEX_DECLARE_INITIALIZED (mutexname);

	* birnetcore.h: provide BIRNET_CPP_PASTE[234]().

	* birnetmsg.h: use BIRNET_CPP_PASTE4().

Wed Jun 21 23:38:35 2006  Tim Janik  <timj@gtk.org>

	* Makefile.am: define _GNU_SOURCE for the birnet programming environment,
	to automatically get GNU extensions like dprintf(), large file, uint, ...

Wed Jun 21 02:13:38 2006  Tim Janik  <timj@gtk.org>

	* Makefile.am: provide versioning information and BIRNET_SIZEOF_SYS_TYPESH_UINT.

	* birnetcore.h: include <sys/types.h> for uint, ssize and other types.
	used gcc modes to define type width now. resolve clashes when defining
	uint by checking BIRNET_SIZEOF_SYS_TYPESH_UINT.

	* birnetthreadxx.cc: fixed missing ThreadDescendant() constructor which
	the gcc-4.2.0 snapshot 20060530 failed to catch.

	* tests/datalist.cc: make all data keys static, otherwise we get crashes
	due to mixed up destruction order. (data keys should always be static).

	* tests/infotest.cc: added a simple test for BIRNET_CHECK_VERSION().

	* configure.inc: provide birnet versioning information. check for uint
	in <sys/types.h>.

Sun Jun 18 03:11:35 2006  Tim Janik  <timj@gtk.org>

	* birnetthreadxx.hh, birnetthreadxx.cc: provide Thread::Self::exit().

	* birnetthread.h, birnetthread.c: provide birnet_thread_exit().

Fri Jun 16 01:28:35 2006  Tim Janik  <timj@gtk.org>

	* birnetutilsxx.cc: initialize GThread as early as possible.
	minor cleanups.

Tue Jun 13 01:51:18 2006  Tim Janik  <timj@gtk.org>

	* birnetsignal.hh: renamed SignalBase::Link to TrampolineLink.
	fixed SlotBase::~SlotBase() to not leak trampoline reference
	counts. renamed link accessor to SlotBase::get_trampoline_link() and
	fixed callers. 

	* birnetsignalslot.hh: added Slot*::get_trampoline() method to all
	Slot* classes to access the trampoline in a type safe manner.

	* tests/signal.cc: added a test for trampoline accesses on slots.

Mon Jun 12 01:06:47 2006  Tim Janik  <timj@gtk.org>

	* birnetutilsxx.hh: moved template declarations from bsecxxutils.hh
	here, to signal template usage errors.
	added function TEMPLATE_ERROR::invalid_type<>();
	added class TEMPLATE_ERROR::InvalidType<>;

Sun Jun 11 23:48:59 2006  Tim Janik  <timj@gtk.org>

	* birnetthread.c: destruction phase fixups.
	birnet_thread_unref(): ensure all callback related destruction has 
	already taken place when ref_count drops to 0.
	birnet_thread_handle_exit(): call C++ destruciton logic.

	* birnetthreadxx.cc: moved magic trhread implementation bits into 
	Thread::ThreadWrapperInternal. 

	* birnetthreadxx.hh: added OwnedMutex to Thread. cleaned up magic
	implementation bits. provide Thread::Self::owned_mutex(). 
	provide DataListContainer API by reimplementation for thread safety.

	* tests/datalist.cc: test Thread DataListContainer API.

	* tests/threads.cc: minor adjustments.

Sun Jun 11 19:47:27 2006  Tim Janik  <timj@gtk.org>

	* birnetutilsxx.hh, birnetutilsxx.cc: moved DataList implementation here
	from Rapicorn. this provides the API types DataKey and DataListContainer.

	* tests/datalist.cc: DataList test, adapted from Rapicorn.

	* birnettests.h: made TASSERT() more verbose if TEST_VERBOSE is defined.

Sun Jun 11 19:02:05 2006  Tim Janik  <timj@gtk.org>

	* birnetcore.h: provide STRFUNC if _BIRNET_SOURCE_EXTENSIONS is defined.

Fri Jun  9 19:54:52 2006  Tim Janik  <timj@gtk.org>

	* birnettests.h (birnet_init_test): check that NULL is defined to __null
	in C++ on 64bit.

Fri Jun  9 19:50:24 2006  Tim Janik  <timj@gtk.org>

	* birnetthreadxx.hh: allow multiple invocations of relock() without
	unlock() on an auto locker and have the auto locker clear up these
	locks in its destructor. i.e. added a lock counter to auto locker.

	* birnetthreadxx.cc (_birnet_init_threads_cxx): 
	avoid std::list::size() which is O(N).

	* test/threads.cc: moved former AutoLocker here as GenericAutoLocker,
	added it to auto locker benchmarks. added a test to check auto locker
	lock counting.

Thu Jun  8 00:00:10 2006  Tim Janik  <timj@gtk.org>

	* birnetthreadxx.hh, birnetthreadxx.cc: added initialization queues for
	mutexes and conditions to allow static mutexes and conditions. however,
	locking/unlocking of course still only works *after* threading 
	initialization.

	* birnetthread.h:
	* birnetthread.c: added birnet_threads_initialized() and a C++ threading
	initialization hook.

	* test/threads.cc: test static mutexes.

Wed Jun  7 20:14:14 2006  Tim Janik  <timj@gtk.org>

	* birnetthreadxx.hh: turned OwnedMutex into a recursive mutex.
	* birnetthreadxx.cc: turned OwnedMutex into a recursive mutex.
	* tests/threads.cc (test_thread_cxx): adapted tests.

Wed Jun  7 20:00:03 2006  Tim Janik  <timj@gtk.org>

	* birnetmsg.c: fixed up atomic accessors.

	* birnetthread.h: fixed up atomic accessors, introduced atomic_uint
	functions.

	* birnetthreadxx.cc:
	* birnetthread.c: fixed up C++ thread pointer implementation.

	* birnetthreadxx.cc, birnetthreadxx.hh: added OwnedMutex.

	* tests/threads.cc: test OwnedMutex.

Tue Jun  6 16:53:40 2006  Stefan Westerfeld  <stefan@space.twc.de>

	* tests/threads.cc: Check that C++ constructors and destructors and
	the AutoLocker constructor and destructor will be executed in the
	order we need, that is: an AutoLocker that is created before an object
	should protect its constructor and destructor, an AutoLocker created
	after an object should not affect its constructor and destructor.

Tue Jun  6 16:47:23 2006  Tim Janik  <timj@gtk.org>

	* birnetthreadxx.hh: got rid of the extra locker pointer by using a
	(void*) and static_cast(). added new assertions. const-optimized code.

	* birnettests.h (TEST_CALIBRATION): give a tiny bit more time for 
	calibration to increase accuracy somewhat.

	* threads.cc: adapted auto locker test counts to be more precise.
	added a new benchmark for the former birnet AutoLocker implementation
	which doesn't cast memory but stores an additional pointer.
	adapted AutoLocker assertion code which now uses a protected method.

Tue Jun  6 14:34:53 2006  Stefan Westerfeld  <stefan@space.twc.de>

	* tests/threads.cc: Fixed bug in auto locker benchmark. It is
	necessary to take into account that the different loops will run with
	a different number of dups; so the times need to be adjusted
	accordingly.

Tue Jun  6 02:03:07 2006  Tim Janik  <timj@gtk.org>

	* birnetthreadxx.hh: reimplemented the AutoLocker class with the help of
	an inlined template wrapper object. all types of lockable objects are
	now supported, and the new implementation is actually faster.

	* threads.cc: call assert_impl() on the new auto locker which assert
	crucial implementation assumptions. added auto locker benchamrks for
	the former birnet implementation, an early heap based prototype and
	the current implementation.

Mon Jun  5 18:04:19 2006  Tim Janik  <timj@gtk.org>

	* birnetthreadxx.hh: added support for atomic const pointer access.
	fixed missing return value cast in Atomic::ptr_get().

Mon Jun  5 17:51:42 2006  Tim Janik  <timj@gtk.org>

	* birnetthreadxx.hh: fixed up AutoLocker member names. 
	added support for initialization from mutex pointers.

	* tests/threads.cc: extended AutoLocker test to check constructors
	from mutex pointers.

Mon Jun  5 14:09:45 2006  Tim Janik  <timj@gtk.org>

	* birnetutilsxx.hh (binary_lookup_fuzzy): use unsigned types for offs
	and n_elements to extend the range of binary lookups from 2^31 to 2^32.

Mon Jun  5 13:55:59 2006  Tim Janik  <timj@gtk.org>

	* birnettests.h: added TCHECK() which can be used like TASSERT() but
	doesn't print a mark. (silent assertion, usefull for *many* tests).

	* birnetutilsxx.hh: moved templates binary_lookup_insertion_pos(),
	binary_lookup_sibling() and binary_lookup() from bsecxxutils.hh here.

	* tests/sorting.cc: new test which tests various binary lookups.

Wed May 31 18:19:30 2006  Tim Janik  <timj@gtk.org>

	* tests/threads.cc (test_recursive_auto_lock): minor extensions to the
	AutoLocker test case. fixed formatting.

Wed May 31 15:48:35 2006  Stefan Westerfeld  <stefan@space.twc.de>

	* tests/threads.cc: Add some AutoLocker test code.

	* birnetthreadxx.hh: Provide Birnet::AutoLocker class which locks a
	mutex on construction, and automatically unlocks it on destruction, so
	that putting an AutoLocker object on the stack conveniently ensures
	that the mutex will be properly unlocked for instance when the
	function returns or an exception gets thrown.

Fri May 26 17:38:00 2006  Tim Janik  <timj@gtk.org>

	* birnetcore.h: define BIRNET_*LIKELY() macros.

Fri May 26 14:01:45 2006  Tim Janik  <timj@gtk.org>

	* birnetutilsxx.[hc]*: added dirname() and basename().
	provide PRIVATE_CLASS_COPY() as birnet source extension.

	* birnetcore.h: provide BIRNET_DIR_SEPARATOR, BIRNET_SEARCHPATH_SEPARATOR
	and related macros.

Fri May 26 13:42:59 2006  Tim Janik  <timj@gtk.org>

	* birnetcore.h: provide ABS, MIN, MAX, CLAMP.

Sat May 20 15:34:05 2006  Tim Janik  <timj@gtk.org>

	* birnetutilsxx.cc (birnet_init_extended): added srand48() call to random 
	number initializations.

	* birnettests.h: expose birnet_test_setup(). initialize birnet
	with stand-alone=true for test programs to prevent rcfiles and the like
	to taint test results.

	* birnetutilsxx.cc:
	* birnetcore.[hc]: added BirnetInitValue and accessors to get values of
	different types. added birnet_init_extended() and birnet_init_settings.

Wed May 10 00:07:16 2006  Tim Janik  <timj@gtk.org>

	* birnetthread.c: minor protability fix for sched_yield().

	* birnetthreadxx.cc: use birnet_thread_yield().

Tue May  9 22:55:08 2006  Tim Janik  <timj@gtk.org>

	* birnettests.h (TEST_CALIBRATION): give up the current time slice 
	before calibrating, this can stabelize the loop on some OSes.

	* birnetthread.[hc]: implemented birnet_thread_yield().

Tue May  9 22:50:23 2006  Stefan Westerfeld  <stefan@space.twc.de>

	* birnetutilsxx.cc (birnet_init): Initialize rand()'s random generator
	seed via gettimeofday.

Mon Apr 24 21:38:55 2006  Stefan Westerfeld  <stefan@space.twc.de>

	* birnettests.h (TEST_CALIBRATION): Ensure that TEST_CALIBRATION
	returns at least 1. Before this change, a return value of 0 would be
	possible for very slow test code.

Mon Apr 24 19:26:04 2006  Tim Janik  <timj@gtk.org>

	* birnetthread.c (get_pth_thread_table): use fputs() to print messages 
	when starting up the thread system. g_message() and friends are not 
	yet usable.

Sat Apr 22 17:54:12 2006  Tim Janik  <timj@gtk.org>

	* birnettests.h (TEST_CALIBRATION): comment and whitespace fixups. 
	consolidated code bloat. tweaked timing bounds to speed up calibration
	runs. use g_printerr() for printouts.

Sat Apr 22 13:25:54 2006  Stefan Westerfeld  <stefan@space.twc.de>

	* birnettests.h: Added TEST_CALIBRATION macro, which allows benchmark
	tests to figure out how often to perform a test for a given CPU.
	Besides the actual benchmark code, it allows the programmer to specify
	how much time the bencharking should take, and a suitable number of
	repetitions for the test code is computed.

	* birnetutilsxx.cc: Use g_path_get_basename() to call g_set_progname()
	with the application name only (without the full path).

Sat Apr 15 03:36:21 2006  Tim Janik  <timj@gtk.org>

	* birnetcpu.c (birnet_cpu_info_string): added proper CPU prefixing.

Sat Apr 15 03:18:53 2006  Tim Janik  <timj@gtk.org>

	* birnetcpu.[hc]: do runtime detection of the CPU type and
	the CPU features. in particular, detect the available (SIMD)
	instruction sets at runtime. currently supports i368 and
	amd64 via CPUID.

	* birnetcore.h: provide wrapper macros for GCC attributes.

	* tests/infotest.cc: test the CPU info API.

Tue Apr 11 23:37:32 2006  Tim Janik  <timj@gtk.org>

	* Makefile.am: make dist fixes.

Wed Apr  5 02:11:07 2006  Tim Janik  <timj@gtk.org>

	* birnettests.h: removed unused TFAIL() macro. TERROR() is more
	elaborate anyway and can be used instead.

Tue Apr  4 21:58:49 2006  Tim Janik  <timj@gtk.org>

	* birnettests.h: allow printf-style arguments to TSTART().
	added TERROR() to forcefully abort.

Mon Apr  3 23:00:15 2006  Tim Janik  <timj@gtk.org>

	* birnettests.h: add macros and convenience functions useful for 
	test programs.

	* tests/signal.cc:
	* tests/threads.cc:
	* tests/ring.cc: use test macros.

	* tests/Makefile.am:
	* tests/testutils.h: removed entirely in favour of birnettests.h.

Sun Apr  2 03:28:04 2006  Tim Janik  <timj@gtk.org>

	* birnetcore.h: provide ISLIKELY() as alias for LIKELY().

	* birnetsignaltemplate.hh:
	* birnetsignal.hh:
	* tests/signal.cc: fixed assertions.

	* birnetutilsxx.hh: fixed primitive type ambiguities.

	* Makefile.am: -D_BIRNET_SOURCE_EXTENSIONS is provided by Makefile.decl.

	* tests/Makefile.am: DEFS is defined by Makefile.decl.

Thu Mar 30 19:34:07 2006  Tim Janik  <timj@gtk.org>

	* birnetcore.h: changed switch macro for birnet extensins
	to _BIRNET_SOURCE_EXTENSIONS.

	* birnetcore.h: added more return_if_fail and assertion macros
	plus shorthands. 

	* birnet.h:
	* mksignals.sh:
	* birnetsignal.hh: 
	* birnetsignalslot.hh: 
	* birnetsignaltemplate.hh: added C++ signal system.
	* ChangeLog: added old signal system change entries.

	* tests/signal.cc: test the C++ signal system.

	* configure.inc: added libtool workaround for missing -lpthread.

    Wed Dec 28 01:07:43 2005  Tim Janik  <timj@gtk.org>

	* birnetsignaltemplate.hh: added disconnect() and
	corrsponding -= operators.

	* birnetsignal.hh: added operator== to signal handler
	links, to allow disconnections. implemented disconnect_equal_link()
	for signal links.

	* mksignals.sh:
	* birnetsignalslot.hh: renamed handler to trampoline.
	added slot() constructor for signals + emit() method. with this,
	slot(sig_some_signal) can be connected and disconnected.

	* tests/signal.cc: signal handler data must implement operator== now.

    Wed Jul  6 20:06:05 2005  Tim Janik  <timj@gtk.org>

	* birnetsignal.hh: added struct CollectorUntil0 signal
	collector template. predefine SignalVoid for void(void) signals.

    Mon Apr 18 23:10:21 2005  Tim Janik  <timj@gtk.org>

	* mksignals.sh: /bin/sh is more protable than bash.

    Sun Apr 17 19:06:31 2005  Tim Janik  <timj@gtk.org>

	* birnetsignal.hh: introduce ScopeReference to keep an
	instance referenced within block scope. added SignalFinalize
	which does not need the emitter to be ref/unref-ed around emit(),
	but instead asserts its in finalization stage. cleanups.
	* birnetsignaltemplate.hh: use ScopeReference.

	* tests/signal.cc: removed cruft.


    Wed Mar 30 00:52:05 2005  Tim Janik  <timj@gtk.org>

	* birnetsignalslot.hh: moved signal handler and slot
	definitions here. there're no emitter handlers/slots anymore.
	support extra data argument for function and method handlers.

	* birnetsignaltemplate.hh: removed handlers/slots. moved
	knowledge about emitter obejct into Emission. let class Emission
	care about casting handlers correctly (with or without emitter arg),
	cleaned up signal methods some.

	* birnetsignal.hh: removed HandlerBase, ReferencableBase.
	added with_emitter flag to signal handlers. made SlotBase a regular
	class, rather than a template. 

	* mksignals.sh: fixed line numbers. allow 17 arguments.
	allow specification of maximum argument count. 

	* tests/signal.cc: test data handlers and emitter-less ahndlers.

	* Makefile.am: generate birnetsignalvariants.hh from
	birnetsignalslot.hh (we need 0..17 argument handlers) and
	birnetsignaltemplate.hh (for 0..16 argument signals).

    Tue Mar 29 17:00:08 2005  Tim Janik  <timj@gtk.org>

	* birnetsignal.hh, birnetsignal.cc: namespace change
	to namespace Signals. added EmissionBase, extended SignalBase to
	maintain a signal handler list as ring data structure. removed
	accumulators, added Collectors, added Signature template to extract the
	return type of a function type for functions with up to 16 arguments.
	include birnetsignalvariants.hh to define all signal variants. 

	* birnetsignaltemplate.hh: implement signal with emission and
	handlers etc, for exactly 3 signal arguments. 

	* mksignals.sh: generate signal variants for 0..16 signal 
	arguments from birnetsignaltemplate.hh.

	* Makefile.am: generate birnetsignalvariants.hh.

	* tests/signal.cc: test signal variants for 0..16 arguments with void
	and other return types. 

    Mon Mar 28 10:12:34 2005  Tim Janik  <timj@gtk.org>

	* birnetsignal.hh, birnetsignaldefs.hh:
	moved signals into an extra Signal namespace, renamed Signal::Closure
	to Signal::Handler. 

    Mon Mar 28 10:01:06 2005  Tim Janik  <timj@gtk.org>

	* birnetsignaldefs.hh: disabled signal generation.
	added test implementation of a 3 argument signal which supports passing
	the emitter object as first argument to signal handlers.

	* tests/signal.cc: disabled old signal tests.
	added test for 3 argument signal variant, currently implemented in
	birnetsignaldefs.hh.

    Sun Mar 27 19:52:12 2005  Tim Janik  <timj@gtk.org>

	* birnetsignal.hh, birnetsignalinc.hh:
	* birnetsignaldefs.hh:
	rudimentary signal (callback list) implementation for C++.

	* tests/signal.cc: test signals.

Thu Mar 30 19:12:29 2006  Tim Janik  <timj@gtk.org>

	* birnetcore.h: 
	* birnetutilsxx.cc: added argc/argv to birnet_init().
	propagated change and changed callers.

Sun Mar 19 22:26:02 2006  Tim Janik  <timj@gtk.org>

	* Makefile.am: compile with -DBIRNET_FEATURES.
	fixed up birnetconfig.h generation.

	* birnetthread.h:
	* birnetthread.c:
	moved BirnetThreads to a reference counted model, to
	execute a thread, birnet_thread_start() must be called now.
	birnet_thread_run() will now create a thread and automatically
	start it, the returned thread structure must be unrefed.
	always demand a well formed thread name. added C++ hooks. 
	use 64bit data types for time ranges. some atomic fixes.
	birnet_thread_get_aborted(): return whether a thread got aborted.
	birnet_thread_get_running(): return whether a thread is
	currently running.
	birnet_thread_wait_for_exit(): block until the thread has exited.

	* birnetthreadxx.hh:
	* birnetthreadxx.cc: provide a C++ API for threads. added classes
	Mutex, RecMutex, Cond, Atomic, Thread and Thread::Self.

	* birnetutils.h:
	* birnetutils.c: added for C utilities.

	* birnetutilsxx.hh:
	* birnetutilsxx.cc: define fundamental types in the Birnet:: namespace.
	moved birnet_init() hook logic here. added ReferenceCountImpl class,
	which implements atomic reference counting for objects.

	* birnetcore.h: define BIRNET_STATIC_ASSERT() and
	BIRNET_ASSERT(), removed C++ code. define standard types,
	such as uint64 and unichar.

	* birnetcore.c: removed birnet_init() implementation.

	* birnetcore.hh:
	* birnetcore.cc: removed entirely.

	* tests/threads.cc: extended tests, added C++ tests.

Fri Mar 17 19:41:50 2006  Tim Janik  <timj@gtk.org>

	* birnetcore.h: CVS copied from birnetcore.hh.

	* birnetcore.c: CVS copied from birnetcore.cc.

Thu Mar  9 18:06:55 2006  Tim Janik  <timj@gtk.org>

	* Makefile.am: install birnet.h.

Thu Mar  9 02:57:33 2006  Tim Janik  <timj@gtk.org>

	* birnetcore.cc (birnet_init): allow double initialization.

Thu Mar  9 01:50:07 2006  Tim Janik  <timj@gtk.org>

	* Makefile.am: generate partial library libbirnet.o.

	* birnet.h: combine include header.

	* birnetcore.hh:
	* birnetcore.cc: provide birnet_init() and provide initialization
	hook funcitonality for C++.

	* birnetthread.c: fixed thread start syncronization races.

Tue Mar  7 19:50:01 2006  Tim Janik  <timj@gtk.org>

	* Makefile.am: fix dependency.

Tue Mar  7 03:06:55 2006  Tim Janik  <timj@gtk.org>

	* configure.inc: define AC_BIRNET_REQUIREMENTS() to perform configure
	checks for libbirnet.la.

Tue Mar  7 02:56:25 2006  Tim Janik  <timj@gtk.org>

	* tests/threads.cc: added BirnetThread from sfi/testsfi.c.
	also added a test for atomic integer increments.

	* tests/testutils.h: utility functions for tests.

	* tests/ring.cc: added BirnetRing tests from sfi/testsfi.c.

	* tests/Makefile.am: build and check test programs.

Tue Mar  7 02:34:38 2006  Tim Janik  <timj@gtk.org>

        * Makefile.am: build rules for libbirnet.la.

        * birnetmsg.[hc]: slight atomicity fixes.

        * birnetring.[hc]: removed non ring related cruft.
        added docs to some ring functions.

        * birnetthread.[hc]: fixed atomic functions. fixed
        birnet_thread_run() race by letting newly created threads
        sleep until birnet_thread_run() completed its setup.
        allocate per-thread BirnetCond as part of the thread structure.
        fixed thread handle leaks in birnet_thread_run() by introducing
        birnet_thread_handle_free(). 
        fixed accounting accuracy in thread_info_from_stat_L() by reading
        out /proc/%u/task/%u/stat files which provide per-thread info,
        instead of using getrusage(). renamed mutex macros.
	support GSlice. cache getpid(). added birnet_init().

Tue Mar  7 02:45:06 2006  Tim Janik  <timj@gtk.org>

	* birnetmsg.[hc]:
	* birnetring.[hc]:
	* birnetthread.[hc]: Sfi -> Birnet rename.

Mon Mar  6 20:28:02 2006  Tim Janik  <timj@gtk.org>

	* birnetmsg.[hc]: CVS copied from beast/sfi/sfilog.[hc].

Mon Mar  6 20:24:04 2006  Tim Janik  <timj@gtk.org>

	* birnetthread.[hc]: CVS copied from beast/sfi/sfithreads.[hc].

	* birnetring.[hc]: CVS copied from beast/sfi/sfiprimitives.[hc].
