Commit graph

1871 commits

Author SHA1 Message Date
dfd70c6069 replace GThreads by the Lumiera thread wrapper 2010-02-11 03:06:42 +01:00
Christian Thaeter
80e2db4800 hook the resourcecollector into safeclib on backend startup 2010-02-08 17:47:26 +01:00
Christian Thaeter
d103346482 hook mpool into the resourcecollector and using safeclib allocations 2010-02-08 14:28:54 +01:00
Christian Thaeter
9feb01e4fe add hooks for malloc/free to mpool, add (no-op) purge function
We will need this to hook the resourcecollector in
2010-02-07 20:53:51 +01:00
Christian Thaeter
b60d8aa907 FIX: error.c memory leak when destroying threads
the error context is dynamically allocated and must be freed, forgotten
this as errors originated from static strings initially.
2010-02-07 20:25:09 +01:00
Christian Thaeter
33a0591689 Make resourcecollector initialization explicit
instead automatic initialization, the resourcecollector is pulled up as
backend service.
2010-02-05 09:20:52 +01:00
Christian Thaeter
d350a250fa Move the resourcecollector to the backend, closes #521 2010-02-05 08:58:19 +01:00
Christian Thaeter
d45b2eef91 factor the filedescriptorregistry out, closes #395
also introduces a new mutex for lookup/creating files to prevent races
2010-02-04 22:52:21 +01:00
Christian Thaeter
40d1bb50bb fix double-free bug in mmap.c 2010-02-04 21:56:49 +01:00
Christian Thaeter
97d5b1c727 remove the 'once' hack from mmap_init() 2010-02-04 20:43:27 +01:00
Christian Thaeter
c1c97228a5 Set error condition when chunksize for a non mmaped file is queried 2010-02-04 20:41:49 +01:00
Christian Thaeter
4821e7eb3f add file_delete_unlink() which removes a file from disk when closed
For temporary file, only removes the name under which it was opened
2010-02-04 20:40:54 +01:00
Christian Thaeter
31a2f454d8 remove lumiera_fhcache as parameter, closes #396 2010-02-04 10:21:20 +01:00
Christian Thaeter
711af29605 Merge remote branch 'plouj/second-tp-attempt' into backend_devel
* plouj/second-tp-attempt:
  added two sync tests
  show the state name string
  it is more proper to use cond_sync flags for *CONDITION_SECTIONs
  add a threads/threadpool NOBUG flag hierarchy
  replace an old test with a compile-only one which spawns way too many threads
  increase the delay in threads to 10ms
  wrap prime test in usleep() to make the thread likely to be re-scheduled
2010-02-03 10:51:03 +01:00
Christian Thaeter
01839d4e48 update for nobug-201002.1 2010-02-03 10:38:12 +01:00
Michael Ploujnikov
6d053d3f84 show the state name string 2010-02-01 16:51:27 -05:00
Michael Ploujnikov
8588fa2b9c it is more proper to use cond_sync flags for *CONDITION_SECTIONs 2010-02-01 07:25:49 -05:00
Michael Ploujnikov
b799321dff add a threads/threadpool NOBUG flag hierarchy
and remove redundant/errorneous flag initializations as a result
also use the test flag from logging.h
2010-02-01 07:25:06 -05:00
Christian Thaeter
014c83ff5a PTHREAD_ONCE_INIT can be a macro, fast init trick doesn't work then 2010-01-30 08:40:38 +01:00
Christian Thaeter
32d9a9f9ad FIX: thread-wrapper proxy the catched error up to the joiner 2010-01-30 07:20:09 +01:00
Christian Thaeter
87465ff69b little test-helper cosmetics 2010-01-30 07:20:09 +01:00
Christian Thaeter
dc5ae73626 Log the error passing when joining threads 2010-01-30 07:20:09 +01:00
Christian Thaeter
812f7112af FIX: small race in acquire_thread, catching threads out of the void 2010-01-30 02:56:50 +01:00
Christian Thaeter
f57d637b59 Merge commit 'dc87e78590ea86615d3ebe90d23af4548445b941' into backend_devel
* commit 'dc87e78590ea86615d3ebe90d23af4548445b941':
  add a two-thread acquire test
  show the state of the thread in question
  minor fixes: remove an old comment and change another
  fix the prime test algorithm
  use unsigned long for even more digits!
2010-01-30 00:48:04 +01:00
ede06e63d5 automatically start the threadpool on demand, similar to NoBug
but the difference is: threadpool comes up application init i.e. at the begin of main(),
while NoBug comes up in static init already.
2010-01-24 15:48:48 +01:00
93af4ed017 refactor the C++ thread-wrapper, remove JoinHandle 2010-01-24 14:05:32 +01:00
82967191b3 PlacementIndexQueryResolver passes unit test 2010-01-23 15:50:46 +01:00
a9a6bb3951 better store the scope-ID within a query 2010-01-23 15:50:46 +01:00
018801895b Add some test-dummy MObjects *temporarily* to core tree (Ticket #532) 2010-01-23 15:50:46 +01:00
f6cf3195cf * MObjectRef_test pass *
This is the integration of some months of work
2010-01-23 15:50:46 +01:00
0f9fc7e3dd PlacementRef works! that's a milestone. Closes #78 2010-01-23 15:50:46 +01:00
9a6f9b2ba5 PlacementIndex: possibly retaining type information on insert 2010-01-23 15:50:46 +01:00
26972376de MobjectRef_test passes compiler as a whole 2010-01-23 15:50:45 +01:00
71428ccf6f activating an MObject ref implemented, passes compiler 2010-01-23 15:50:45 +01:00
e9d641babd nail down all the MObjectRef equality comparison cases 2010-01-23 15:50:45 +01:00
e04672936a getting MObjectRef_test partially through the compiler 2010-01-23 15:50:45 +01:00
b32a48f410 Finish definition/documentation of PlacementRef and PlacementIndex 2010-01-23 15:50:45 +01:00
Christian Thaeter
8607a4006a update the thread-wrapper to use the new threading API
This removes the explicit Sync things from the thread wraper since
the functionality is almost exactly provided by the backend.

Thread encapsulates a lumiera thread handle now, but this is strictly
optional and might be dropped on the floor (using a temporary as thread).

Thread has a sync() function which allows user controlled syncronous
startup:

 Thread("foo", myoperation).sync();

will startup myoperation and only return from the ctor after myoperation
called a matching lumiera_thread_sync().

The related tests need to initialize/destroy the threadpool accordingly
2010-01-23 06:57:14 +01:00
Christian Thaeter
9fc68c9d32 Merge remote branch 'public/nobug201001.2' into backend_devel
* public/nobug201001.2:
  integrating nobug context passing
  updates for nobug 201001.2

Conflicts:
	configure.ac
	src/lib/condition.h
	src/lib/reccondition.h
	tests/backend/test-threads.c
2010-01-23 06:56:39 +01:00
Christian Thaeter
c15f2247d7 integrating nobug context passing
Somewhat more intrusive than the previous patch,
adds contexts everywhere except for sync.hpp where only default ctors
are used.
2010-01-23 01:40:27 +01:00
Christian Thaeter
8254b3fbda updates for nobug 201001.2
dumping got a new api, surprisingly everything else works...
2010-01-22 23:21:48 +01:00
Michael Ploujnikov
fc15a2ac2c Merge commit '6f07e4eedc6b624b1f9ae1004ad3e6a77027e028' into second-tp-attempt
Conflicts:
	src/backend/threads.c
2010-01-20 21:41:14 -05:00
Michael Ploujnikov
a22bb5e54f show the state of the thread in question 2010-01-20 17:09:37 -05:00
Michael Ploujnikov
571c265ccd minor fixes: remove an old comment and change another 2010-01-20 07:58:22 -05:00
Christian Thaeter
751a8b415c few trace points 2010-01-20 01:04:35 +01:00
Christian Thaeter
6f07e4eedc one more signal/wait for syncing 2010-01-20 01:04:12 +01:00
Christian Thaeter
95fed7fd0e remove thread counters (for now)
counting the threads had a race when creating threads, with moving
threads only between idle and working list we don't need the counters for
operation anyways. Maybe later when we find out that we need them we can
re-add them in a sane way
2010-01-20 01:03:41 +01:00
Christian Thaeter
12968bb784 thread kind and flag handling
* 256 states are enough for anyone (else fix the source)
 * add proper masking and handling of flags
2010-01-20 00:43:11 +01:00
Christian Thaeter
32217debe8 Fix threadloop
* joining must be done inside the loop, doh
 * a thread must release itself first in the loop, new threads
   have to go idle when created
2010-01-20 00:33:08 +01:00
Christian Thaeter
995d813709 add threadpool init/destroy to the global backend init/destroy 2010-01-19 18:46:02 +01:00
Christian Thaeter
66a0e6e0ca Experiment: remove custom states, syncs are 2-thread barriers 2010-01-18 19:58:31 +01:00
Christian Thaeter
e2c5aceec4 FIX: off by one error in time normalization
"The value of the nanoseconds field must be in the range 0 to 999999999."
2010-01-18 18:45:02 +01:00
Christian Thaeter
020908d623 Make threadpool_destroy wait until all threads are finished
adds a state to each threadpool which can be only offline or online.
One can not acquire new threads when the pool is offline.

no need for waits in the teststuite anymore.
2010-01-18 17:53:33 +01:00
Christian Thaeter
7371db8a2c thread deadlines, first implementation 2010-01-18 16:24:45 +01:00
Christian Thaeter
cc4dc25f4a while loop is little more solid than do..while 2010-01-18 16:23:28 +01:00
Christian Thaeter
87918c657c check wait condition before loop body 2010-01-18 14:23:23 +01:00
Christian Thaeter
e55e648f29 Thread syncronization and joining
add a custom defined range for states
provide functions for barrier like syncing between 2 threads
provide joinable threads and a thread_join() function
2010-01-18 00:34:53 +01:00
Christian Thaeter
72d9cbe91c Merge remote branch 'plouj/second-tp-attempt' into backend_devel
* plouj/second-tp-attempt: (68 commits)
  partially fix a pkg-config problem with scons on Fedora12
  fix comilation by using an existing TEST macro
  more formatting fixes to put spaces before function/macro call opening brackets
  add a stronger REQUIRE check
  ignore RESOURCE_ANNOUNCE in tests
  fix the code by re-merging some of cehteh's changes
  remove redundant info from TRACE
  match the filename in the header comment
  add a thread state check and remove an old comment
  python-2.6 fix: loading the icon_rener.py script (Ticket #222)
  Use a fully qualified name for PlacementMO in PlacementIndex
  fix compilation errors
  die regardless of what type of failure pthread_create() encounters
  mark thread as worker
  remote unnecessary calls to llist_unlink() insert is enough
  continuation of working_list introduction
  begin adding a second list to store working threads
  merge ECHO with TRACE
  don't expect any more output from the basic test
  fix compilation
  ...

Conflicts:
	src/tool/Makefile.am
	tests/Makefile.am
2010-01-17 17:32:43 +01:00
Christian Thaeter
b8336879f7 autoconf/automake cleanup
* refactor configure.ac to have distinct sections to configure each
   subsystem.
 * Dedicated LUMIERA_<subsys>_CFLAGS|_LIBS vars
 * Fix Makefile.am's to use them, remove unnecessary dependencies

Stray dependencies to be refacored:
 * tests/Makefile.am has dependencies on proc and backend
  - should be moved to tests/library/Makefile.am etc anyways
 * tests/lib/Makefile.am has dependency on GUI left


 * src/tool/Makefile.am links GUI stuff generally, thats ok

 * one threading test is broken, we don't care, merging new threadpool in
   next.
2010-01-17 15:48:30 +01:00
Michael Ploujnikov
c78571be55 more formatting fixes to put spaces before function/macro call opening brackets 2010-01-16 13:53:42 -05:00
Michael Ploujnikov
fa85a01818 add a stronger REQUIRE check 2010-01-16 13:13:02 -05:00
Michael Ploujnikov
02c9ee33c7 fix the code by re-merging some of cehteh's changes
test still fails
2010-01-16 11:48:48 -05:00
Michael Ploujnikov
217d17107d Use a fully qualified name for PlacementMO in PlacementIndex
This seems to satisfy g++ 4.4.2, which otherwise complains like this:

In file included from ../src/proc/mobject/session/session-impl.hpp:53,
                from ../src/proc/mobject/session/sess-manager-impl.hpp:28,
                from ../src/proc/mobject/session/sess-manager-impl.cpp:41:
../src/proc/mobject/session/placement-index.hpp:163: error:
declaration of ‘typedef class mobject::Placement<mobject::MObject,
mobject::MObject> mobject::session::PlacementIndex::PlacementMO’
../src/proc/mobject/placement.hpp:244: error: changes meaning of
‘PlacementMO’ from ‘typedef class mobject::Placement<mobject::MObject,
mobject::MObject> mobject::PlacementMO’
2010-01-16 17:04:13 +01:00
Michael Ploujnikov
e60c10a01d remove redundant info from TRACE
and add spaces for formatting
2010-01-16 10:39:45 -05:00
Michael Ploujnikov
e9ae8c8601 add a thread state check and remove an old comment 2010-01-15 07:35:28 -05:00
Michael Ploujnikov
e0d6f1ce66 Merge branch 'master' into second-tp-attempt
Conflicts:
	src/proc/mobject/session/placement-index.cpp
	src/proc/mobject/session/placement-index.hpp
2010-01-14 21:06:14 -05:00
Michael Ploujnikov
2f27c7d71b Use a fully qualified name for PlacementMO in PlacementIndex
This seems to satisfy g++ 4.4.2, which otherwise complains like this:

In file included from ../src/proc/mobject/session/session-impl.hpp:53,
                from ../src/proc/mobject/session/sess-manager-impl.hpp:28,
                from ../src/proc/mobject/session/sess-manager-impl.cpp:41:
../src/proc/mobject/session/placement-index.hpp:163: error:
declaration of ‘typedef class mobject::Placement<mobject::MObject,
mobject::MObject> mobject::session::PlacementIndex::PlacementMO’
../src/proc/mobject/placement.hpp:244: error: changes meaning of
‘PlacementMO’ from ‘typedef class mobject::Placement<mobject::MObject,
mobject::MObject> mobject::PlacementMO’
2010-01-14 20:57:45 -05:00
Michael Ploujnikov
9d4494aa90 Merge branch 'master' into second-tp-attempt 2010-01-14 19:32:07 -05:00
Michael Ploujnikov
151b0793ab Merge remote branch 'origin/master' 2010-01-14 19:31:42 -05:00
Michael Ploujnikov
f62513dea8 fix compilation errors 2010-01-14 16:46:27 -05:00
Christian Thaeter
aea546554b reworked sync.hpp using libraries locking functions 2010-01-14 21:15:13 +01:00
Christian Thaeter
dbb3b2e2e7 FIX: uhm .. forgotten to fix some stuff 2010-01-14 13:22:19 +01:00
Michael Ploujnikov
523e898fbe Merge branch 'master' into second-tp-attempt
Conflicts:
	src/lib/condition.h
	src/lib/reccondition.h
2010-01-13 19:17:24 -05:00
Michael Ploujnikov
a045479c63 Merge branch 'master' of git://git.lumiera.org/LUMIERA 2010-01-13 19:12:15 -05:00
Christian Thaeter
3e8d8590e9 C lumiera_error to C++ exception bridge
* error::Runtime exception class which transports the C error code
 * lumiera::throwOnError() which throws when there is a pending
   lumiera error, otherwise it does nothing
2010-01-13 20:30:10 +01:00
Christian Thaeter
c29ea07138 lumiera_error_expect() lets one easily handle expected errors
This is a convenience function which clears the error state when some
expected error occurred and lets one branch on this.
2010-01-13 17:41:26 +01:00
Christian Thaeter
f0483b1d8b FIX: few glitches using nobug flags 2010-01-13 14:22:08 +01:00
Christian Thaeter
a287b13481 remove the LUMIERA_RESTRICT macro
all functions using restrict are inline and can be properly optimized by
the compiler, no restrcit necessary
2010-01-13 13:00:13 +01:00
Christian Thaeter
63346c7dff Fix remaining test, forgot to link tests in 2010-01-13 10:25:33 +01:00
Christian Thaeter
f78ec3b0ef undo -Werror which slipped into the CXXFLAGS for the lib 2010-01-13 09:23:19 +01:00
Christian Thaeter
9c9161ef65 reccondition refactoring 2010-01-13 00:19:20 +01:00
Christian Thaeter
f1cf5aee60 condition var refactoring 2010-01-13 00:19:00 +01:00
Christian Thaeter
6816766182 rwlock refactoring 2010-01-13 00:18:48 +01:00
Christian Thaeter
059f086b4f recmutex refactoring 2010-01-13 00:18:32 +01:00
Christian Thaeter
e7e9394f9b refactor locking macros to functions, simpler macros 2010-01-13 00:16:43 +01:00
Christian Thaeter
b232a4f9f0 errors for locking
* add a 'unknown' error to the error system as fallback
 * lockerror.c|h define all errors which can happen due locking
 * lumiera_lockerror_set() translates posix errors to lumiera errors
 * remove stale errors from sectionlock.h
2010-01-13 00:10:33 +01:00
Michael Ploujnikov
564e6c94a0 Merge remote branch 'origin/master'
Conflicts:
	tests/test.sh
2010-01-12 08:05:12 -05:00
Michael Ploujnikov
09fd15d5f8 die regardless of what type of failure pthread_create() encounters 2010-01-12 08:01:54 -05:00
Michael Ploujnikov
b49a5abff2 mark thread as worker 2010-01-12 07:47:28 -05:00
Michael Ploujnikov
ecbcfdefd7 remote unnecessary calls to llist_unlink() insert is enough 2010-01-12 07:39:12 -05:00
Michael Ploujnikov
49da609e80 Merge branch 'master' of git://git.lumiera.org/LUMIERA into second-tp-attempt
Conflicts:
	src/lib/condition.h
	src/lib/mutex.h
	src/lib/reccondition.h
	src/lib/rwlock.h
	tests/test.sh
2010-01-11 16:47:45 -05:00
Michael Ploujnikov
f890b35a03 continuation of working_list introduction 2010-01-11 15:04:52 -05:00
Christian Thaeter
7b014012e8 WIP: refactor locks once again, new nobug, little simpler 2010-01-10 10:36:24 +01:00
Christian Thaeter
7fea4f79be Sectionlock needs a 'user' handle with new nobug 2010-01-10 10:36:24 +01:00
Christian Thaeter
799fe34980 Fix: race conditions with the nobug resource tracker
* requires new nobug version
* 40components.test "Type-based contexts" TypedCounter_test hangs
  for unknown reason, temporary disabled
2010-01-10 10:36:24 +01:00
Michael Ploujnikov
925442b3d9 begin adding a second list to store working threads 2010-01-09 21:36:20 -05:00
81c920c0ed Fix: static initialisation problem (due to placeholder code) #518 2010-01-10 00:04:58 +01:00
Christian Thaeter
4e7d656b71 WIP: autotools fixup for ichthyo 2010-01-09 22:17:34 +01:00
14c7f7fc62 PlacementIndex implemented, unit test pass 2010-01-09 05:10:32 +01:00
96f19c656d add call for placement equivalence check
actual functionality to be added later
2010-01-09 04:46:17 +01:00
Michael Ploujnikov
fd4504c9de merge ECHO with TRACE 2010-01-08 16:38:35 -05:00
36cd34e9b1 Placement: correct handling of ID generation on copy construction 2010-01-08 04:00:14 +01:00
92ad5d1994 change to lib::BoolCheckable for the self-valididty check 2010-01-08 03:59:30 +01:00
836f533a2f add equality comparison and identity handling 2010-01-08 03:59:01 +01:00
8c7894943c add equality comparison to the HashIndexed (mixin base) 2010-01-08 03:56:21 +01:00
Michael Ploujnikov
56cf53adb3 fix compilation 2010-01-07 18:36:51 -05:00
Michael Ploujnikov
4708326b77 Merge branch 'minor-fixes' into second-tp-attempt
Conflicts:
	src/backend/threadpool.c
	src/backend/threads.c
2010-01-07 18:27:09 -05:00
Michael Ploujnikov
30a46a6255 Merge remote branch 'public/minor-fixes' into minor-fixes
Conflicts:
	src/backend/threadpool.c
	src/backend/threadpool.h
	src/backend/threads.c
2010-01-07 18:24:25 -05:00
Michael Ploujnikov
d78a826d39 Merge branch 'minor-fixes' into second-tp-attempt 2010-01-07 07:18:59 -05:00
Michael Ploujnikov
d989babc8a Merge remote branch 'ct/for_plouj2' into second-tp-attempt
Conflicts:
	src/backend/thread-wrapper.hpp
	src/backend/threadpool.c
	src/backend/threadpool.h
	src/backend/threads.c
2010-01-07 07:18:23 -05:00
a56e107fe0 PlacementIndex self-verification implemented and passes compiler 2010-01-07 08:29:27 +01:00
2fd7a2f6f9 patch temporary re-entrance problems on session creation (maybe #495) 2010-01-07 08:28:54 +01:00
5cc3af3009 document the changed/new behaviour by unit test 2010-01-07 04:40:10 +01:00
3525b77126 somewhat tricky modification of for-each, allowing inline calls 2010-01-07 03:10:02 +01:00
Michael Ploujnikov
0b961b9784 Merge remote branch 'ct/for_plouj' into second-tp-attempt 2010-01-06 17:30:16 -05:00
Michael Ploujnikov
d8234db7b3 Merge remote branch 'ct/for_plouj2' into second-tp-attempt 2010-01-06 07:48:36 -05:00
Michael Ploujnikov
c707f94929 update c++ wrapper to match the C API 2010-01-06 07:42:42 -05:00
226ed37e30 now able to compile PlacementIndex self-check code! 2010-01-06 07:49:25 +01:00
665bd19f8a use this to get the distinct keys of a multimap 2010-01-06 06:53:29 +01:00
ff2113e61f implement an duplicate-value filtering iterator 2010-01-06 06:19:30 +01:00
0081b36793 Itertools: add caching to FilterIter
filter predicate is now evaluated at most once
2010-01-06 06:16:30 +01:00
2ad85dbb07 bugfix and test coverage 2010-01-06 04:14:16 +01:00
2a5b080dd7 implement IterSource adapter for STL map and hashmap 2010-01-06 03:38:02 +01:00
030a7d3813 basic IterSource implementation passes unit test (#490) 2010-01-05 05:21:13 +01:00
16962ae714 IterSource implementation draft 2010-01-05 04:10:23 +01:00
ea5668c5e3 WIP define expected usage of IterSouce 2010-01-05 02:53:20 +01:00
73613c1e7d WIP: draft better arrangement of the PlacementIndex validation code
but still need yet another iterator related lib module
2010-01-05 01:31:22 +01:00
Michael Ploujnikov
223e79cc4a replace mutex with condition variable in threadpool
use TRACE instead of ECHO
(based on cehteh's suggested code)
2010-01-04 17:03:47 -05:00
330eb2c243 extended for-each looping helpers. Closes #479 2010-01-04 14:48:00 +01:00
cd3a77649e use the (new) iterable classification to mask for_each overloads 2010-01-04 11:19:01 +01:00
7d913dc558 start moving some metaprogramming helpers to lib::meta 2010-01-04 10:08:14 +01:00
64cedb6345 implemented compile-time detection of STL or Lumiera iterator
closes #482
2010-01-03 05:43:33 +01:00
e838d46336 Fix: operator++ needs to return the actual target type
see Ticket #486
2010-01-03 05:42:35 +01:00
e27d03c501 simple duck detecor components pass unit test 2010-01-02 09:07:10 +01:00
8777aa585a duck detector (lib helpers): initial implementation draft 2010-01-02 08:09:40 +01:00
f517cfb19a Yess we can! Invented a statical duck-detector! 2010-01-02 06:26:56 +01:00
Michael Ploujnikov
7a507a0cee don't put threads in a detached state 2009-12-31 15:09:22 -05:00
Michael Ploujnikov
03fe6dd658 properly initialize and de-initialize the thread condition variable 2009-12-31 07:37:28 -05:00
Michael Ploujnikov
c4e1fdaf9a document lumiera_thread_destroy() and lumiera_thread_delete() 2009-12-31 07:32:55 -05:00
Michael Ploujnikov
ad404bd41a remove unused old code 2009-12-31 07:30:46 -05:00
Michael Ploujnikov
d63a6066a0 insert a space between the function name and the ( in each function call 2009-12-31 07:27:45 -05:00
Michael Ploujnikov
9c60d88c56 remove thread limiting logic from the threadpool 2009-12-31 07:24:07 -05:00
Michael Ploujnikov
69277b6770 remove unused function pool_thread_loop() 2009-12-31 07:18:29 -05:00
e94927d5a3 standard case (using STL container) solved, incl. binding arguments and member functions 2009-12-31 03:25:25 +01:00
e7fcfaca8d problem was: compiler couldn't figure out the return type
thus let's give a hint...
2009-12-31 02:51:58 +01:00
9730ff4183 trying to track down a strange compiler warning 2009-12-31 01:21:45 +01:00
2b46574da3 move the for_each helpers into a separate header
(because util.hpp is used pervasively, and I don't want
<tr1/functional> in such a widely used header...
2009-12-29 04:39:27 +01:00
0dca7cbb4d not-yet-implemented.... 2009-12-29 04:30:11 +01:00
6e956f24ab WIP: drafted PlacementIndex validity self-check 2009-12-28 03:32:42 +01:00
c49d8321f6 fill in documentation and missing test cases 2009-12-27 06:36:52 +01:00