Cross-posted at CodeGuru forums.