%%% -*-BibTeX-*- %%% ==================================================================== %%% BibTeX-file{ %%% author = "Nelson H. F. Beebe", %%% version = "1.02", %%% date = "22 October 2005", %%% time = "05:18:44 MDT", %%% filename = "cccuj2000.bib", %%% address = "University of Utah %%% Department of Mathematics, 110 LCB %%% 155 S 1400 E RM 233 %%% Salt Lake City, UT 84112-0090 %%% USA", %%% telephone = "+1 801 581 5254", %%% FAX = "+1 801 581 4148", %%% URL = "http://www.math.utah.edu/~beebe", %%% checksum = "22974 7120 26493 241708", %%% email = "beebe at math.utah.edu, beebe at acm.org, %%% beebe at computer.org (Internet)", %%% codetable = "ISO/ASCII", %%% keywords = "BibTeX; bibliography; C/C++ Users Journal", %%% supported = "yes", %%% docstring = "This is a COMPLETE bibliography of the %%% C/C++ Users Journal (2000--2009), ISSN %%% 1075-2838, CODEN CCUJEX. %%% %%% Earlier years are covered in the companion %%% bibliography, cccuj.bib, which also includes %%% coverage of the journal's predecessor, the %%% C Users Journal. %%% %%% The C Users Journal began with volume 6, %%% number 1, January 1988, from the merger of %%% the C Users' Group newsletter (1983--1987, %%% 8 issues yearly, no ISSN) with the C %%% journal (1985--1987, 4 issues yearly, ISSN %%% 8756-9736). %%% %%% The journal maintains a World-Wide Web site %%% at http://www.cuj.com/, and sells a %%% DOS/Windows CD ROM with the complete text, %%% figures, and code from 1990--date. %%% %%% These journals include numerous book %%% review articles, so as a convenience to the %%% reader, bibliographic entries are provided %%% for all of the reviewed books, with %%% cross-references between book and review %%% entries. Newer editions of the reviewed %%% books are also included. %%% %%% At version 1.01, the year coverage looked %%% like this: %%% %%% 2000 ( 151) 2001 ( 141) 2002 ( 94) %%% %%% Article: 386 %%% %%% Total entries: 386 %%% %%% This bibliography has been collected from %%% bibliographies in the author's personal %%% files, from the journal's Web site contents %%% file, http://www.cuj.com/cbklist.htm, and %%% from the U.S. Library of Congress, the %%% University of California MELVYL, and the %%% OCLC catalogs. %%% %%% The journal article citations are not in %%% the Compendex or OCLC databases, but the %%% UnCover database has some coverage for it. %%% Almost all entries below are derived from %%% the cbklist.htm file, which regrettably, %%% lacks complete page number ranges, so most %%% page numbers below are of the form 27--??. %%% %%% Numerous errors in the sources noted above %%% have been corrected. Spelling has been %%% verified with the UNIX spell and GNU ispell %%% programs using the exception dictionary %%% stored in the companion file with extension %%% .sok. %%% %%% BibTeX citation tags are uniformly chosen %%% as name:year:abbrev, where name is the %%% family name of the first author or editor, %%% year is a 4-digit number, and abbrev is a %%% 3-letter condensation of important title %%% words. Citation tags were automatically %%% generated by software developed for the %%% BibNet Project. %%% %%% In this bibliography, entries are sorted in %%% publication order, using bibsort -byvolume. %%% %%% The checksum field above contains a CRC-16 %%% checksum as the first value, followed by the %%% equivalent of the standard UNIX wc (word %%% count) utility output of lines, words, and %%% characters. This is produced by Robert %%% Solovay's checksum utility.", %%% } %%% ==================================================================== @Preamble{"\input path.sty" # "\hyphenation{ Call-eens Dasch-bach Thor-sten }"} %%% ==================================================================== %%% Acknowledgement abbreviations: @String{ack-nhfb = "Nelson H. F. Beebe, University of Utah, Department of Mathematics, 110 LCB, 155 S 1400 E RM 233, Salt Lake City, UT 84112-0090, USA, Tel: +1 801 581 5254, FAX: +1 801 581 4148, e-mail: \path|beebe@math.utah.edu|, \path|beebe@acm.org|, \path|beebe@computer.org| (Internet), URL: \path|http://www.math.utah.edu/~beebe/|"} %%% ==================================================================== %%% Journal abbreviations: @String{j-CCCUJ = "C/C++ Users Journal"} %%% ==================================================================== %%% Bibliography entries: @Article{Briand:2000:EFa, author = "Marc Briand", title = "{Editor}'s Forum", journal = j-CCCUJ, volume = "18", number = "1", pages = "6--6", month = jan, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:24 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0001/0001toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Allison:2000:IJI, author = "Chuck Allison", title = "{\tt import java.*}: Interfaces and Inner Classes", journal = j-CCCUJ, volume = "18", number = "1", pages = "??--??", month = jan, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:24 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0001/0001toc.htm?topic=articles", abstract = "A Java interface is a weak substitute for multiple inheritance in C++, but it still manages to do a lot of what needs doing.", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:NPa, author = "Anonymous", title = "New Products", journal = j-CCCUJ, volume = "18", number = "1", pages = "??--??", month = jan, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:24 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0001/0001toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:WMa, author = "Anonymous", title = "We Have Mail", journal = j-CCCUJ, volume = "18", number = "1", pages = "??--??", month = jan, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:24 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0001/0001toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Becker:2000:JSCa, author = "Pete Becker", title = "The Journeyman's Shop: Common Design Mistakes, Part 1", journal = j-CCCUJ, volume = "18", number = "1", pages = "??--??", month = jan, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:24 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0001/0001toc.htm?topic=articles", abstract = "Pete provides several cautionary tales from the volatile world of Java libraries. Rapid development is not always compatible with good design.", acknowledgement = ack-nhfb, } @Article{Dandass:2000:IT, author = "Yogi Dandass", title = "Interval Trees", journal = j-CCCUJ, volume = "18", number = "1", pages = "??--??", month = jan, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:24 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0001/0001toc.htm?topic=articles", abstract = "We know that a tree is often a good way to represent an ordered set of values. It can also be a good way to order a set of ranges as well.", acknowledgement = ack-nhfb, } @Article{Gontmakher:2000:EDL, author = "Sasha Gontmakher", title = "Easy Dynamic Loading in {C++}", journal = j-CCCUJ, volume = "18", number = "1", pages = "??--??", month = jan, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:24 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0001/0001toc.htm?topic=articles", abstract = "Many programs today configure themselves on the fly. Dynamic loading can really benefit from encapsulation, to hide tedious details and system dependencies.", acknowledgement = ack-nhfb, } @Article{Guisado:2000:DCB, author = "Ernesto Guisado", title = "Debugging Component-Based Memory Leaks", journal = j-CCCUJ, volume = "18", number = "1", pages = "??--??", month = jan, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:24 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0001/0001toc.htm?topic=articles", abstract = "The best place to catch memory leaks is as close to the source as possible.", acknowledgement = ack-nhfb, } @Article{Plauger:2000:JAV, author = "P. J. Plauger", title = "Just Another Version of {Algol}", journal = j-CCCUJ, volume = "18", number = "1", pages = "??--??", month = jan, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:24 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0001/0001toc.htm?topic=articles", abstract = "As Ecclesiastes loved to remind us, there is nothing new under the sun.", acknowledgement = ack-nhfb, } @Article{Plauger:2000:SCCa, author = "P. J. Plauger", title = "{Standard C/C++}: {Java} Standard Time", journal = j-CCCUJ, volume = "18", number = "1", pages = "??--??", month = jan, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:24 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0001/0001toc.htm?topic=articles", abstract = "If standardization was good for C and for C++, then it should be good for Java too. Shouldn't it?", acknowledgement = ack-nhfb, } @Article{Saks:2000:CTPa, author = "Dan Saks", title = "{C++} Theory and Practice: Replacing Character Arrays with Strings, Part 1", journal = j-CCCUJ, volume = "18", number = "1", pages = "??--??", month = jan, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:24 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0001/0001toc.htm?topic=articles", abstract = "It is a truism that well-designed library objects are superior to the more primitive C data structures. But it still helps to know the costs of converting to them.", acknowledgement = ack-nhfb, } @Article{Schmidt:2000:UET, author = "Bobby Schmidt", title = "Uncaught Exceptions: Tempus Fugit", journal = j-CCCUJ, volume = "18", number = "1", pages = "??--??", month = jan, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:24 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0001/0001toc.htm?topic=articles", abstract = "Bobby deals this month with various kinds of passages, including a very difficult personal one.", acknowledgement = ack-nhfb, } @Article{Briand:2000:EFb, author = "Marc Briand", title = "{Editor}'s Forum", journal = j-CCCUJ, volume = "18", number = "2", pages = "6--6", month = feb, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0002/0002toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Plauger:2000:SCCb, author = "P. J. Plauger", title = "{Standard C/C++}: {A} Singly Linked List", journal = j-CCCUJ, volume = "18", number = "2", pages = "8--??", month = feb, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0002/0002toc.htm?topic=articles", abstract = "Every design involves tradeoffs. The trick is to tradeoff using much the same principles as for related designs.", acknowledgement = ack-nhfb, } @Article{Loudon:2000:II, author = "Kyle Loudon", title = "An Introduction to Interpolation", journal = j-CCCUJ, volume = "18", number = "2", pages = "20--??", month = feb, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0002/0002toc.htm?topic=articles", abstract = "There's more to mathematical interpolation than just drawing lines between dots.", acknowledgement = ack-nhfb, } @Article{Gareau:2000:TML, author = "Jean L. Gareau", title = "Tracking Memory Leaks under {Windows CE}", journal = j-CCCUJ, volume = "18", number = "2", pages = "36--??", month = feb, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0002/0002toc.htm?topic=articles", abstract = "Visual C++ omits the darndest things in its support for Windows/CE. Too bad memory tracking is one of those things.", acknowledgement = ack-nhfb, } @Article{Meyers:2000:HNM, author = "Scott Meyers", title = "How Non-Member Functions Improve Encapsulation", journal = j-CCCUJ, volume = "18", number = "2", pages = "44--??", month = feb, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0002/0002toc.htm?topic=articles", abstract = "When it comes to encapsulation, sometimes less is more.", acknowledgement = ack-nhfb, } @Article{Reichard:2000:SC, author = "Douglas Reichard", title = "Shim Classes", journal = j-CCCUJ, volume = "18", number = "2", pages = "53--??", month = feb, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0002/0002toc.htm?topic=articles", abstract = "You don't always have to rewrite ordinary classes as templates to get the benefits of templatization.", acknowledgement = ack-nhfb, } @Article{Labbe:2000:SCP, author = "Roger Labbe", title = "Solving Combinatorial Problems with {STL} and Backtracking", journal = j-CCCUJ, volume = "18", number = "2", pages = "56--??", month = feb, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0002/0002toc.htm?topic=articles", abstract = "The STL approach extends nicely to problems of all sorts, and helps make for more generic solutions.", acknowledgement = ack-nhfb, } @Article{Saks:2000:CTPb, author = "Dan Saks", title = "{C++} Theory and Practice: Replacing Character Arrays with Strings, Part 2", journal = j-CCCUJ, volume = "18", number = "2", pages = "65--??", month = feb, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0002/0002toc.htm?topic=articles", abstract = "Higher-level constructs have their overheads, but they are generally worth the cost.", acknowledgement = ack-nhfb, } @Article{Briand:2000:BRE, author = "Marc Briand", title = "Book Review: {{\em Exceptional C++}}", journal = j-CCCUJ, volume = "18", number = "2", pages = "73--??", month = feb, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0002/0002toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Becker:2000:JSCb, author = "Pete Becker", title = "The Journeyman's Shop: Common Design Mistakes, Part 2", journal = j-CCCUJ, volume = "18", number = "2", pages = "77--??", month = feb, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0002/0002toc.htm?topic=articles", abstract = "Pete offers more examples of how not to rush code to market, from the wonderful world of Java Standard Libraries.", acknowledgement = ack-nhfb, } @Article{Schmidt:2000:UED, author = "Bobby Schmidt", title = "Uncaught Exceptions: Dies Irae", journal = j-CCCUJ, volume = "18", number = "2", pages = "85--??", month = feb, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0002/0002toc.htm?topic=articles", abstract = "Bobby rings out the old with some traditional bugs and a new C Standard, then rings in the new with fingers crossed.", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:NPb, author = "Anonymous", title = "New Products", journal = j-CCCUJ, volume = "18", number = "2", pages = "94--??", month = feb, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0002/0002toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:WMb, author = "Anonymous", title = "We Have Mail", journal = j-CCCUJ, volume = "18", number = "2", pages = "98--??", month = feb, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0002/0002toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Kelly-Bootle:2000:PMDa, author = "Stan Kelly-Bootle", title = "Post-Mortem Debunker: Pure vs. Applied", journal = j-CCCUJ, volume = "18", number = "2", pages = "104--104", month = feb, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0002/0002toc.htm?topic=articles", abstract = "In theory, there's no difference between theory and practice, but in practice there is.", acknowledgement = ack-nhfb, } @Article{Briand:2000:EFc, author = "Marc Briand", title = "{Editor}'s Forum", journal = j-CCCUJ, volume = "18", number = "3", pages = "6--6", month = mar, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0003/0003toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Plauger:2000:SCCc, author = "P. J. Plauger", title = "{Standard C/C++}:Testing Conformance", journal = j-CCCUJ, volume = "18", number = "3", pages = "10--??", month = mar, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0003/0003toc.htm?topic=articles", abstract = "It's impossible to prove conclusively that an implementation conforms to a standard, but you can at least build some level of confidence.", acknowledgement = ack-nhfb, } @Article{Guinan:2000:CPD, author = "Jamie Guinan", title = "Cross-Platform Development Using {GCC}", journal = j-CCCUJ, volume = "18", number = "3", pages = "18--??", month = mar, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0003/0003toc.htm?topic=articles", abstract = "You can build any number of native and cross compilers from GCC, if you know how.", acknowledgement = ack-nhfb, } @Article{Getov:2000:OUM, author = "Radoslav Getov", title = "Not-So-Obvious Utility Macros", journal = j-CCCUJ, volume = "18", number = "3", pages = "27--??", month = mar, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0003/0003toc.htm?topic=articles", abstract = "We all know the preprocessor is primitive and ugly. Nevertheless, a clever macro or two can still come in handy more often than we care to admit.", acknowledgement = ack-nhfb, } @Article{Bas:2000:FNS, author = "Antonio G{\'o}miz Bas", title = "Finding Neat Scales for Plotting", journal = j-CCCUJ, volume = "18", number = "3", pages = "42--??", month = mar, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0003/0003toc.htm?topic=articles", abstract = "Labeling axes is easy for people. For a computer, it's rather less obvious.", acknowledgement = ack-nhfb, } @Article{Allison:2000:IJA, author = "Chuck Allison", title = "{\tt import java.*}: Arrays", journal = j-CCCUJ, volume = "18", number = "3", pages = "46--??", month = mar, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0003/0003toc.htm?topic=articles", abstract = "Java arrays are very much like those in C/C++, except where they're not.", acknowledgement = ack-nhfb, } @Article{Telford:2000:TDP, author = "Alex Telford", title = "Taming the {$3$-D} Perspective Transform", journal = j-CCCUJ, volume = "18", number = "3", pages = "57--??", month = mar, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0003/0003toc.htm?topic=articles", abstract = "Showing objects in perspective requires only simple math, but a little not-so-simple strategy makes for a friendlier display.", acknowledgement = ack-nhfb, } @Article{Faul:2000:EMB, author = "Ben Faul", title = "An Embedded Memory-Based {SQL} Class for {C++}", journal = j-CCCUJ, volume = "18", number = "3", pages = "64--??", month = mar, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0003/0003toc.htm?topic=articles", abstract = "SQL and C++ make a powerful combination, particularly if you don't have to do the combining yourself.", acknowledgement = ack-nhfb, } @Article{Smith:2000:SBW, author = "Mark L. Smith", title = "An {STL}-Based {$N$}-Way Set", journal = j-CCCUJ, volume = "18", number = "3", pages = "76--??", month = mar, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0003/0003toc.htm?topic=articles", abstract = "Databases support access with multiple keys. Why not allow the same latitude with an STL-style container?", acknowledgement = ack-nhfb, } @Article{Lowy:2000:MPO, author = "Juval Lowy", title = "Making Primitive Objects Thread Safe", journal = j-CCCUJ, volume = "18", number = "3", pages = "85--??", month = mar, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0003/0003toc.htm?topic=articles", abstract = "All sorts of things need thread locks. A fairly simple template or two can do the job.", acknowledgement = ack-nhfb, } @Article{Schmidt:2000:UEC, author = "Bobby Schmidt", title = "Uncaught Exceptions: {\tt comp.cuj.qa.moderated}", journal = j-CCCUJ, volume = "18", number = "3", pages = "89--??", month = mar, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0003/0003toc.htm?topic=articles", abstract = "Never one to let his uncertainty show, Bobby nevertheless falls prey to Heisenberg.", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:NPc, author = "Anonymous", title = "New Products", journal = j-CCCUJ, volume = "18", number = "3", pages = "95--??", month = mar, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0003/0003toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:WMc, author = "Anonymous", title = "We Have Mail", journal = j-CCCUJ, volume = "18", number = "3", pages = "99--??", month = mar, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0003/0003toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Briand:2000:EFd, author = "Marc Briand", title = "{Editor}'s Forum", journal = j-CCCUJ, volume = "18", number = "4", pages = "6--6", month = apr, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0004/0004toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Plauger:2000:SCCd, author = "P. J. Plauger", title = "{Standard C/C++}: Testing {C++} Library Conformance", journal = j-CCCUJ, volume = "18", number = "4", pages = "10--??", month = apr, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0004/0004toc.htm?topic=articles", abstract = "Now that we have a standard for C++ libraries, we need to know how to determine which libraries conform to the standard.", acknowledgement = ack-nhfb, } @Article{Lacoude:2000:PEC, author = "Philippe Lacoude and Grum Ketema", title = "Programming {Excel COM} Objects in {C++}", journal = j-CCCUJ, volume = "18", number = "4", pages = "22--??", month = apr, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0004/0004toc.htm?topic=articles", abstract = "Excel is a powerful tool that you can use from a C++ program, once you get the protocol right.", acknowledgement = ack-nhfb, } @Article{Kougiouris:2000:SYC, author = "Panos Kougiouris", title = "Stressing Your {COM} Objects", journal = j-CCCUJ, volume = "18", number = "4", pages = "30--??", month = apr, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0004/0004toc.htm?topic=articles", abstract = "The best known way to detect synchronization errors in code is simply to pound on it to see if it breaks.", acknowledgement = ack-nhfb, } @Article{Powell:2000:VNF, author = "Gary Powell and Martin Weiser", title = "{Views}, {A} New Form of Container Adaptors", journal = j-CCCUJ, volume = "18", number = "4", pages = "40--??", month = apr, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0004/0004toc.htm?topic=articles", abstract = "There's more than one way to slice a container. Views provide a particularly sharp knife.", acknowledgement = ack-nhfb, } @Article{Offer:2000:ELI, author = "Brad Offer", title = "Error Logging with {Iostreams}", journal = j-CCCUJ, volume = "18", number = "4", pages = "52--??", month = apr, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0004/0004toc.htm?topic=articles", abstract = "You don't have to sacrifice the convenience of Iostreams while debugging, at least not if they're packaged properly.", acknowledgement = ack-nhfb, } @Article{Niklas:2000:CSD, author = "Michal Niklas", title = "A Class for Scanning Directories", journal = j-CCCUJ, volume = "18", number = "4", pages = "60--??", month = apr, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0004/0004toc.htm?topic=articles", abstract = "Expanding wildcard filenames is something you want to do uniformly across many utilities and different operating systems.", acknowledgement = ack-nhfb, } @Article{Bavestrelli:2000:BHD, author = "Giovanni Bavestrelli", title = "Building {HTML} Documents with {C++}", journal = j-CCCUJ, volume = "18", number = "4", pages = "67--??", month = apr, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0004/0004toc.htm?topic=articles", abstract = "The block structure of C++ can really help you get the block structure of HTML right.", acknowledgement = ack-nhfb, } @Article{Becker:2000:JSCc, author = "Pete Becker", title = "The Journeyman's Shop: Casts and Conversions", journal = j-CCCUJ, volume = "18", number = "4", pages = "73--??", month = apr, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0004/0004toc.htm?topic=articles", abstract = "Type casting is a blunt instrument in C. The four different casts in C++ are safer, but still require care when used.", acknowledgement = ack-nhfb, } @Article{Schmidt:2000:UESa, author = "Bobby Schmidt", title = "Uncaught Exceptions: Standard Deviation", journal = j-CCCUJ, volume = "18", number = "4", pages = "81--??", month = apr, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0004/0004toc.htm?topic=articles", abstract = "The Microsoft support desk continues under Bobby's stewardship, even as he aspires to discuss Standard C++.", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:NPd, author = "Anonymous", title = "New Products", journal = j-CCCUJ, volume = "18", number = "4", pages = "86--??", month = apr, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0004/0004toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:WMd, author = "Anonymous", title = "We Have Mail", journal = j-CCCUJ, volume = "18", number = "4", pages = "90--??", month = apr, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0004/0004toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Kelly-Bootle:2000:PMDb, author = "Stan Kelly-Bootle", title = "Post-Mortem Debunker: Shall {I} Compare Thee \ldots{} Why Not?", journal = j-CCCUJ, volume = "18", number = "4", pages = "96--96", month = apr, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:25 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0004/0004toc.htm?topic=articles", abstract = "Stan mitigates the odium in comparison by being, as usual, marginally scrutable.", acknowledgement = ack-nhfb, } @Article{Briand:2000:EFe, author = "Marc Briand", title = "{Editor}'s Forum", journal = j-CCCUJ, volume = "18", number = "5", pages = "6--6", month = may, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0005/0005toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Plauger:2000:SCCe, author = "P. J. Plauger", title = "{Standard C/C++}: {\tt exit(0)}", journal = j-CCCUJ, volume = "18", number = "5", pages = "10, 14, 16", month = may, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0005/0005toc.htm?topic=articles", abstract = "All good things must come to an end.", annote = "P. J. Plauger announces his retirement from C/C++ Users Journal column writing.", acknowledgement = ack-nhfb, } @Article{Howard:2000:UPW, author = "David M. Howard", title = "Using Predicate Waits with {Win32} Threads", journal = j-CCCUJ, volume = "18", number = "5", pages = "18--??", month = may, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0005/0005toc.htm?topic=articles", abstract = "Most Win32 synchronization primitives are just that --- primitive. But you can use them to build queues that are safe and easy to use.", acknowledgement = ack-nhfb, } @Article{Calkins:2000:ITT, author = "Charles Calkins", title = "Integrating Threads with Template Classes", journal = j-CCCUJ, volume = "18", number = "5", pages = "32--??", month = may, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0005/0005toc.htm?topic=articles", abstract = "It's obviously a good idea to encapsulate a thread as an object. It is less obvious how to get all the interfaces right.", acknowledgement = ack-nhfb, } @Article{Kleber:2000:TSA, author = "Jeff Kleber", title = "Thread-Safe Access to Collections", journal = j-CCCUJ, volume = "18", number = "5", pages = "36--??", month = may, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0005/0005toc.htm?topic=articles", abstract = "The best place to store a thread lock for a shared container is somewhere inside the container --- deep inside.", acknowledgement = ack-nhfb, } @Article{Phillips:2000:VDI, author = "Dwayne Phillips", title = "Visualizing Depth Images via Rendering", journal = j-CCCUJ, volume = "18", number = "5", pages = "40--??", month = may, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0005/0005toc.htm?topic=articles", abstract = "In case you thought that Dwayne Phillips had exhausted the topic of imaging in these pages, here's another interesting installment.", acknowledgement = ack-nhfb, } @Article{Guillemot:2000:CUR, author = "Marc Guillemot", title = "Catching Untested Return Codes", journal = j-CCCUJ, volume = "18", number = "5", pages = "54--??", month = may, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0005/0005toc.htm?topic=articles", abstract = "Who watches the watchers, at least to make sure they're watching? This class does.", acknowledgement = ack-nhfb, } @Article{Lafreniere:2000:SMD, author = "David Lafreniere", title = "State Machine Design in {C++}", journal = j-CCCUJ, volume = "18", number = "5", pages = "58--??", month = may, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0005/0005toc.htm?topic=articles", abstract = "It's not all that hard to implement a finite-state machine, unless it's very large, and you have to worry about multithreading, and \ldots{}.", acknowledgement = ack-nhfb, } @Article{Becker:2000:JSWa, author = "Pete Becker", title = "The Journeyman's Shop: When ``Retro'' Is Better", journal = j-CCCUJ, volume = "18", number = "5", pages = "67--??", month = may, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0005/0005toc.htm?topic=articles", abstract = "The old ways aren't always the best ways, but they often are pretty darned good.", acknowledgement = ack-nhfb, } @Article{Schmidt:2000:UER, author = "Bobby Schmidt", title = "Uncaught Exceptions: Remembrance", journal = j-CCCUJ, volume = "18", number = "5", pages = "75--??", month = may, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0005/0005toc.htm?topic=articles", abstract = "Bobby finds still more to warn about when playing fast and loose with pointers, smart pointers, and arrays.", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:NPe, author = "Anonymous", title = "New Products", journal = j-CCCUJ, volume = "18", number = "5", pages = "80--??", month = may, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0005/0005toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:WMe, author = "Anonymous", title = "We Have Mail", journal = j-CCCUJ, volume = "18", number = "5", pages = "84--??", month = may, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0005/0005toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Briand:2000:EFf, author = "Marc Briand", title = "{Editor}'s Forum", journal = j-CCCUJ, volume = "18", number = "6", pages = "6--6", month = jun, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0006/0006toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Allison:2000:IJS, author = "Chuck Allison", title = "{\tt import java.*}: Strings", journal = j-CCCUJ, volume = "18", number = "6", pages = "??--??", month = jun, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0006/0006toc.htm?topic=articles", abstract = "Every language lets you manipulate text to some degree. Java is stronger in this regard than most.", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:NPf, author = "Anonymous", title = "New Products", journal = j-CCCUJ, volume = "18", number = "6", pages = "??--??", month = jun, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0006/0006toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:WMf, author = "Anonymous", title = "We Have Mail", journal = j-CCCUJ, volume = "18", number = "6", pages = "??--??", month = jun, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0006/0006toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Batov:2000:SER, author = "Vladimir Batov", title = "Safe and Economical Reference-Counting in {C++}", journal = j-CCCUJ, volume = "18", number = "6", pages = "??--??", month = jun, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0006/0006toc.htm?topic=articles", abstract = "Smart pointers keep getting smarter.", acknowledgement = ack-nhfb, } @Article{Becker:2000:GES, author = "Thomas Becker", title = "Generic Extensions to the {STL}", journal = j-CCCUJ, volume = "18", number = "6", pages = "??--??", month = jun, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0006/0006toc.htm?topic=articles", abstract = "STL is a pretty complete set of tinker toys, but you can always find a few more good ones to add.", acknowledgement = ack-nhfb, } @Article{Becker:2000:JSF, author = "Pete Becker", title = "The Journeyman's Shop: Floating-Point Basics", journal = j-CCCUJ, volume = "18", number = "6", pages = "??--??", month = jun, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0006/0006toc.htm?topic=articles", abstract = "You can't overcome a fear of floating-point arithmetic --- or complacency about it --- until you understand what's going on.", acknowledgement = ack-nhfb, } @Article{Berry:2000:CBM, author = "David Berry", title = "Combining {Boyer-Moore} String Search with Regular Expressions", journal = j-CCCUJ, volume = "18", number = "6", pages = "??--??", month = jun, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0006/0006toc.htm?topic=articles", abstract = "Some text searches are fast and some are flexible. This one is both.", acknowledgement = ack-nhfb, } @Article{Kelly-Bootle:2000:PMDc, author = "Stan Kelly-Bootle", title = "Post-Mortem Debunker: From {MAW} to {MAM}, More?", journal = j-CCCUJ, volume = "18", number = "6", pages = "??--??", month = jun, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0006/0006toc.htm?topic=articles", abstract = "What's in a name? Kelly-Bootle gets the last word even when talking to roses.", acknowledgement = ack-nhfb, } @Article{Perry:2000:RNSa, author = "Michael L. Perry", title = "A Reusable Nonlinear System Solver, Part 1", journal = j-CCCUJ, volume = "18", number = "6", pages = "??--??", month = jun, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0006/0006toc.htm?topic=articles", abstract = "C++ lets you encapsulate the Newton-Raphson method for solving equations without obscuring the underlying physical problem to be solved.", acknowledgement = ack-nhfb, } @Article{Philips:2000:DMS, author = "Lawrence Philips", title = "The Double Metaphone Search Algorithm", journal = j-CCCUJ, volume = "18", number = "6", pages = "??--??", month = jun, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0006/0006toc.htm?topic=articles", abstract = "Computer vision is a broad and deep topic, but computer hearing is no breeze either, particularly when trying to recognize surnames.", acknowledgement = ack-nhfb, } @Article{Rogers:2000:SON, author = "Joey Rogers", title = "The Self-Organizing Neural Network", journal = j-CCCUJ, volume = "18", number = "6", pages = "??--??", month = jun, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0006/0006toc.htm?topic=articles", abstract = "People can learn even when they don't know what they're being taught. So can neural nets.", acknowledgement = ack-nhfb, } @Article{Schmidt:2000:UESb, author = "Bobby Schmidt", title = "Uncaught Exceptions: Semper Fi", journal = j-CCCUJ, volume = "18", number = "6", pages = "??--??", month = jun, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:26 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0006/0006toc.htm?topic=articles", abstract = "Bobby reassures us that the dark side of the force need not be all that dark.", acknowledgement = ack-nhfb, } @Article{Briand:2000:EFg, author = "Marc Briand", title = "{Editor}'s Forum", journal = j-CCCUJ, volume = "18", number = "7", pages = "6--6", month = jul, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0007/0007toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Briand:2000:SUT, author = "Marc Briand", title = "Simple Unit Tests in {C++}", journal = j-CCCUJ, volume = "18", number = "7", pages = "10--??", month = jul, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0007/0007toc.htm?topic=articles", abstract = "Unit testing is a tedious, but often necessary, adjunct to writing code. A few template classes can eliminate much of the tedium and improve encapsulation in the bargain.", acknowledgement = ack-nhfb, } @Article{Bramley:2000:DBA, author = "Michael Bramley", title = "Data-Based Axis Determination", journal = j-CCCUJ, volume = "18", number = "7", pages = "20--??", month = jul, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0007/0007toc.htm?topic=articles", abstract = "Labeling the axes of a graph is not as easy as you might think.", acknowledgement = ack-nhfb, } @Article{Rogers:2000:CFC, author = "Joey Rogers", title = "Copying Files from the Clipboard to a Command Prompt", journal = j-CCCUJ, volume = "18", number = "7", pages = "28--??", month = jul, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0007/0007toc.htm?topic=articles", abstract = "You can make DOS more of a first-class Windows citizen with this handy little clipboard utility.", acknowledgement = ack-nhfb, } @Article{Morana:2000:BBD, author = "Marco Morana", title = "Browser-Based Directory Access through {LDAP} and {COM}", journal = j-CCCUJ, volume = "18", number = "7", pages = "34--??", month = jul, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0007/0007toc.htm?topic=articles", abstract = "You can do a lot with LDAP --- once you get all the glue right.", acknowledgement = ack-nhfb, } @Article{Barnes:2000:IOP, author = "Paul Barnes", title = "Implementation of Observer Pattern", journal = j-CCCUJ, volume = "18", number = "7", pages = "50--??", month = jul, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0007/0007toc.htm?topic=articles", abstract = "Many applications involve observers waiting for notification. Getting the logic right for both publishers and subscribers is something you don't want to have to do repeatedly.", acknowledgement = ack-nhfb, } @Article{Creux:2000:TTC, author = "Valery Creux", title = "Tree Traversal in {C} without Recursion", journal = j-CCCUJ, volume = "18", number = "7", pages = "56--??", month = jul, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0007/0007toc.htm?topic=articles", abstract = "If you can spare one bit of storage in each node, you can traverse a tree without recursive function calls.", acknowledgement = ack-nhfb, } @Article{Allison:2000:IJF, author = "Chuck Allison", title = "{\tt import java.*}: Formatted Text and Locales", journal = j-CCCUJ, volume = "18", number = "7", pages = "60--??", month = jul, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0007/0007toc.htm?topic=articles", abstract = "Java offers more formatting power than C, but not necessarily in a more convenient package.", acknowledgement = ack-nhfb, } @Article{Becker:2000:JSE, author = "Pete Becker", title = "The Journeyman's Shop: Error in Floating-Point Calculations", journal = j-CCCUJ, volume = "18", number = "7", pages = "73--??", month = jul, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0007/0007toc.htm?topic=articles", abstract = "And you thought error, accuracy, precision, and significance were pretty synonymous.", acknowledgement = ack-nhfb, } @Article{Schmidt:2000:UEA, author = "Bobby Schmidt", title = "Uncaught Exceptions: Adventures of {Aquaman}", journal = j-CCCUJ, volume = "18", number = "7", pages = "85--??", month = jul, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0007/0007toc.htm?topic=articles", abstract = "Bobby shows how to outsmart the compiler several different ways, even if he can't outsmart the stock market.", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:NPg, author = "Anonymous", title = "New Products", journal = j-CCCUJ, volume = "18", number = "7", pages = "95--??", month = jul, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0007/0007toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:WMg, author = "Anonymous", title = "We Have Mail", journal = j-CCCUJ, volume = "18", number = "7", pages = "99--??", month = jul, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0007/0007toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Briand:2000:EFh, author = "Marc Briand", title = "{Editor}'s Forum", journal = j-CCCUJ, volume = "18", number = "8", pages = "6--6", month = aug, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0008/0008toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Bianchi:2000:CVC, author = "Luigi Bianchi", title = "Converting {VCL} Components to {Windows} Resources", journal = j-CCCUJ, volume = "18", number = "8", pages = "10--??", month = aug, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0008/0008toc.htm?topic=articles", abstract = "Borland C++Builder has its own version of resource files, but they can be translated to more conventional {\tt .RC} files.", acknowledgement = ack-nhfb, } @Article{Hanov:2000:LWW, author = "Steve Hanov", title = "A Lightweight Window Wrapper", journal = j-CCCUJ, volume = "18", number = "8", pages = "26--??", month = aug, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0008/0008toc.htm?topic=articles", abstract = "Even the simplest aspects of window management can benefit from a bit of encapsulation.", acknowledgement = ack-nhfb, } @Article{Perry:2000:RNSb, author = "Michael L. Perry", title = "A Reusable Nonlinear System Solver, Part 2", journal = j-CCCUJ, volume = "18", number = "8", pages = "32--??", month = aug, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0008/0008toc.htm?topic=articles", abstract = "It's not enough to have a general equation solver --- you have to know how to talk to it.", acknowledgement = ack-nhfb, } @Article{Hsiao:2000:SPF, author = "Gary Hsiao", title = "A Simple Persistence Framework", journal = j-CCCUJ, volume = "18", number = "8", pages = "46--??", month = aug, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0008/0008toc.htm?topic=articles", abstract = "Think of a persistent object broker as a poor man's database. Then think of all the ways you might use it.", acknowledgement = ack-nhfb, } @Article{Hicks:2000:CCT, author = "Craig Hicks", title = "{C/C++} Tips: Tip \#1: Creating an Index Table in {STL}", journal = j-CCCUJ, volume = "18", number = "8", pages = "61--??", month = aug, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0008/0008toc.htm?topic=articles", abstract = "STL doesn't do everything, but often a missing bit of functionality can be assembled from available parts.", acknowledgement = ack-nhfb, } @Article{Swaim:2000:SLR, author = "David C. {Swaim II}", title = "A Simple Linear Regression Class", journal = j-CCCUJ, volume = "18", number = "8", pages = "62--??", month = aug, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0008/0008toc.htm?topic=articles", abstract = "Even an operation as simple as linear least squares can benefit from encapsulation in a class.", acknowledgement = ack-nhfb, } @Article{Becker:2000:JSU, author = "Pete Becker", title = "The Journeyman's Shop: Unraveling Multithreading", journal = j-CCCUJ, volume = "18", number = "8", pages = "71--??", month = aug, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0008/0008toc.htm?topic=articles", abstract = "Sometimes you have to spend a lot of time on just a little bit of code, to avoid spending much more time not knowing where to begin debugging.", acknowledgement = ack-nhfb, } @Article{Schmidt:2000:UESc, author = "Bobby Schmidt", title = "Uncaught Exceptions: Soft Geek Cafe", journal = j-CCCUJ, volume = "18", number = "8", pages = "83--??", month = aug, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0008/0008toc.htm?topic=articles", abstract = "Outsmarting the compiler, and/or the Standard C and C++ libraries, can sometimes take a remarkable amount of trickery.", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:NPh, author = "Anonymous", title = "New Products", journal = j-CCCUJ, volume = "18", number = "8", pages = "87--??", month = aug, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0008/0008toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:WMh, author = "Anonymous", title = "We Have Mail", journal = j-CCCUJ, volume = "18", number = "8", pages = "91--??", month = aug, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0008/0008toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Kelly-Bootle:2000:PMDd, author = "Stan Kelly-Bootle", title = "Post-Mortem Debunker: Whichever Comes First", journal = j-CCCUJ, volume = "18", number = "8", pages = "96--96", month = aug, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:27 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0008/0008toc.htm?topic=articles", abstract = "Stan takes an intelligently artificial look at the artificially intelligent artificers.", acknowledgement = ack-nhfb, } @Article{Briand:2000:EFi, author = "Marc Briand", title = "{Editor}'s Forum", journal = j-CCCUJ, volume = "18", number = "9", pages = "6--6", month = sep, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0009/0009toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Moreno:2000:HDT, author = "Carlos Moreno", title = "{HTML} Document Templates for {CGI} Applications", journal = j-CCCUJ, volume = "18", number = "9", pages = "10--??", month = sep, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0009/0009toc.htm?topic=articles", abstract = "Get the power of C/C++ programming with the flexibility of HTML by keeping the two at arms length.", acknowledgement = ack-nhfb, } @Article{Nelson:2000:NPL, author = "Erik Nelson", title = "Network Programming with {Linux}", journal = j-CCCUJ, volume = "18", number = "9", pages = "26--??", month = sep, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0009/0009toc.htm?topic=articles", abstract = "TCP isn't the only protocol for swapping data packets, nor is it always the most effective.", acknowledgement = ack-nhfb, } @Article{Smereka:2000:TIS, author = "Richard Smereka", title = "A {TCP\slash IP} Socket Location Server", journal = j-CCCUJ, volume = "18", number = "9", pages = "34--??", month = sep, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0009/0009toc.htm?topic=articles", abstract = "You can write remarkably portable network-aware code, if you are careful how you isolate the dependencies.", acknowledgement = ack-nhfb, } @Article{Allison:2000:SAU, author = "Chuck Allison", title = "The Simplest Automated Unit Test Framework That Could Possibly Work", journal = j-CCCUJ, volume = "18", number = "9", pages = "48--??", month = sep, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0009/0009toc.htm?topic=articles", abstract = "Testing is a necessary evil to many programmers, but it doesn't have to be all that evil.", acknowledgement = ack-nhfb, } @Article{Bromberg:2000:TAR, author = "Boris Bromberg", title = "Tracing an Application in Release Configuration", journal = j-CCCUJ, volume = "18", number = "9", pages = "62--??", month = sep, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0009/0009toc.htm?topic=articles", abstract = "A lightweight trace facility is less likely to distort performance in the final stress of debugging.", acknowledgement = ack-nhfb, } @Article{Cacciola:2000:CCT, author = "Fernando Cacciola", title = "{C/C++} Tips: Tip \#2: Generic Constants for Generic Programming", journal = j-CCCUJ, volume = "18", number = "9", pages = "65--??", month = sep, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0009/0009toc.htm?topic=articles", abstract = "If you're going to write generic code, make sure it's completely generic.", acknowledgement = ack-nhfb, } @Article{Phillips:2000:BRP, author = "Dwayne Phillips", title = "Book Review: {{\em The Pragmatic Programmer}}", journal = j-CCCUJ, volume = "18", number = "9", pages = "66--??", month = sep, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0009/0009toc.htm?topic=articles", abstract = "There's more to programming than algorithms and programming languages --- much more.", acknowledgement = ack-nhfb, } @Article{Becker:2000:SGPa, author = "Thomas Becker", title = "{STL} \& Generic Programming: Welcome to {STL} and Generic Programming", journal = j-CCCUJ, volume = "18", number = "9", pages = "70--??", month = sep, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0009/0009toc.htm?topic=articles", abstract = "Another Becker joins CUJ's editorial team to cover one of the most important areas of C++ programming.", acknowledgement = ack-nhfb, } @Article{Allison:2000:IJC, author = "Chuck Allison", title = "{\tt import java.*}: Collections and Algorithms", journal = j-CCCUJ, volume = "18", number = "9", pages = "76--??", month = sep, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0009/0009toc.htm?topic=articles", abstract = "Java lacks both a standard and templates, but it nevertheless offers something resembling the C++ Standard Template Library.", acknowledgement = ack-nhfb, } @Article{Schmidt:2000:UEB, author = "Bobby Schmidt", title = "Uncaught Exceptions: The Ballad of {Ned Kelly}", journal = j-CCCUJ, volume = "18", number = "9", pages = "94--??", month = sep, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0009/0009toc.htm?topic=articles", abstract = "Bobby gets hitched, pines for Oz, and deals with several common confusions in C/C++, all in one action-packed episode.", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:NPi, author = "Anonymous", title = "New Products", journal = j-CCCUJ, volume = "18", number = "9", pages = "103--??", month = sep, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0009/0009toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:WMi, author = "Anonymous", title = "We Have Mail", journal = j-CCCUJ, volume = "18", number = "9", pages = "107--??", month = sep, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0009/0009toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Briand:2000:EFj, author = "Marc Briand", title = "{Editor}'s Forum", journal = j-CCCUJ, volume = "18", number = "10", pages = "6--6", month = oct, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0010/0010toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Cacciola:2000:IVT, author = "Fernando Cacciola", title = "An Improved Variant Type Based on Member Templates", journal = j-CCCUJ, volume = "18", number = "10", pages = "10--??", month = oct, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0010/0010toc.htm?topic=articles", abstract = "C has generic pointers and varying length argument lists for flexibility. C++ has templates for even more flexibility, and better type safety in the bargain.", acknowledgement = ack-nhfb, } @Article{Queisser:2000:CRW, author = "Andrew Queisser", title = "Classes for Reading and Writing Parameter Blocks", journal = j-CCCUJ, volume = "18", number = "10", pages = "22--??", month = oct, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0010/0010toc.htm?topic=articles", abstract = "Fortran IV let you read and write variables by name since the 1960s. It still makes sense to do so in C++.", acknowledgement = ack-nhfb, } @Article{Nash:2000:IFT, author = "Alan Nash", title = "Introduction to Function {\tt try} Blocks", journal = j-CCCUJ, volume = "18", number = "10", pages = "32--??", month = oct, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0010/0010toc.htm?topic=articles", abstract = "Exceptions can occur in the darndest places. Fortunately, {\tt try} blocks can also be written in most of those places.", acknowledgement = ack-nhfb, } @Article{Niec:2000:OSO, author = "Todd Niec", title = "Optimizing Substring Operations in String Classes", journal = j-CCCUJ, volume = "18", number = "10", pages = "40--??", month = oct, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0010/0010toc.htm?topic=articles", abstract = "If reference counting is good for operations on whole strings, it should be good for operations on substrings too.", acknowledgement = ack-nhfb, } @Article{Meyers:2000:NCIa, author = "Randy Meyers", title = "The New {C}: Introducing {C99}", journal = j-CCCUJ, volume = "18", number = "10", pages = "49--??", month = oct, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0010/0010toc.htm?topic=articles", abstract = "C99 is much like C89, but with more of the same --- lots more of the same.", acknowledgement = ack-nhfb, } @Article{Becker:2000:JSWb, author = "Pete Becker", title = "The Journeyman's Shop: When Bad Things Happen to Good Numbers", journal = j-CCCUJ, volume = "18", number = "10", pages = "54--??", month = oct, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0010/0010toc.htm?topic=articles", abstract = "It takes a lot of preparation to write really robust floating-point code.", acknowledgement = ack-nhfb, } @Article{Becker:2000:SGPb, author = "Thomas Becker", title = "{STL} \& Generic Programming: The Template Compilation Model", journal = j-CCCUJ, volume = "18", number = "10", pages = "65--??", month = oct, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0010/0010toc.htm?topic=articles", abstract = "Templates change the way compilers and linkers interact, often in ways that are hard to fathom.", acknowledgement = ack-nhfb, } @Article{Schmidt:2000:UESd, author = "Bobby Schmidt", title = "Uncaught Exceptions: Sunshine Superman", journal = j-CCCUJ, volume = "18", number = "10", pages = "73--??", month = oct, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0010/0010toc.htm?topic=articles", abstract = "Bobby answers several questions from the fringes of valid C++.", acknowledgement = ack-nhfb, } @Article{Kelly-Bootle:2000:PMDe, author = "Stan Kelly-Bootle", title = "Post-Mortem Debunker: Angelology", journal = j-CCCUJ, volume = "18", number = "10", pages = "88--88", month = oct, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0010/0010toc.htm?topic=articles", abstract = "Stan muses on pinheads who get rich and heads of pins that are angel poor.", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:NPj, author = "Anonymous", title = "New Products", journal = j-CCCUJ, volume = "18", number = "10", pages = "103--??", month = oct, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0010/0010toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:WMj, author = "Anonymous", title = "We Have Mail", journal = j-CCCUJ, volume = "18", number = "10", pages = "107--??", month = oct, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0010/0010toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Briand:2000:EFk, author = "Marc Briand", title = "{Editor}'s Forum", journal = j-CCCUJ, volume = "18", number = "11", pages = "6--6", month = nov, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0011/0011toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Thierauf:2000:EDP, author = "Rainer Thierauf", title = "Extracting Data from {$X$-$Y$} Plots", journal = j-CCCUJ, volume = "18", number = "11", pages = "10--??", month = nov, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0011/0011toc.htm?topic=articles", abstract = "Scanners now input text with reasonable accuracy --- why not graphical data as well?", acknowledgement = ack-nhfb, } @Article{Ehlinger:2000:CTM, author = "Early Ehlinger", title = "Creating Truly Maintainable Class Factories", journal = j-CCCUJ, volume = "18", number = "11", pages = "22--??", month = nov, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0011/0011toc.htm?topic=articles", abstract = "It is usually best to recycle code already written, particularly if it's easy to get wrong.", acknowledgement = ack-nhfb, } @Article{Gibbons:2000:PTO, author = "Bill Gibbons", title = "A Portable ``{\tt typeof}'' Operator", journal = j-CCCUJ, volume = "18", number = "11", pages = "34--??", month = nov, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0011/0011toc.htm?topic=articles", abstract = "Here's a not-so-stupid template trick that mostly meets the need for a {\tt typeof} operator.", acknowledgement = ack-nhfb, } @Article{Foster:2000:CCT, author = "Sol Foster", title = "{C/C++} Tips: Tip \#3: Creating an Index Table in {STL}, Take 2", journal = j-CCCUJ, volume = "18", number = "11", pages = "41--??", month = nov, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0011/0011toc.htm?topic=articles", abstract = "Pointers seldom sort the way you intend, but STL offers a handy way to say what you really mean.", acknowledgement = ack-nhfb, } @Article{Scanlon:2000:SWB, author = "Mike Scanlon", title = "Secure {Web}-Based Licensing", journal = j-CCCUJ, volume = "18", number = "11", pages = "42--??", month = nov, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0011/0011toc.htm?topic=articles", abstract = "If you want to protect your software from misuse, you have to outsmart potential thieves and still not annoy your legitimate customers. This is not as easy as you might at first think.", acknowledgement = ack-nhfb, } @Article{Button:2000:BRS, author = "Brian Button", title = "Book Review: {{\em Standard C++ IOStreams and Locales}}", journal = j-CCCUJ, volume = "18", number = "11", pages = "51--??", month = nov, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0011/0011toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Austern:2000:SLI, author = "Matt Austern", title = "The {Standard Librarian}: {IOStreams} and {Stdio}", journal = j-CCCUJ, volume = "18", number = "11", pages = "55--??", month = nov, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0011/0011toc.htm?topic=articles", abstract = "You can mix C and C++ I/O operations, but you have to be careful if you don't want garbled streams.", acknowledgement = ack-nhfb, } @Article{Allison:2000:IJB, author = "Chuck Allison", title = "{\tt import java.*}: Basic Stream {I/O}", journal = j-CCCUJ, volume = "18", number = "11", pages = "58--??", month = nov, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0011/0011toc.htm?topic=articles", abstract = "Java supports input/output of streams with a gazillion combinations of options.", acknowledgement = ack-nhfb, } @Article{Sutter:2000:SMC, author = "Herb Sutter", title = "{Sutter's Mill}: Constructor Failures (or, The Objects That Never Were)", journal = j-CCCUJ, volume = "18", number = "11", pages = "72--??", month = nov, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0011/0011toc.htm?topic=articles", abstract = "Exceptions thrown during object construction must be handled with extreme care.", acknowledgement = ack-nhfb, } @Article{Meyers:2000:NCIb, author = "Randy Meyers", title = "The New {C}: It All Began with {FORTRAN}", journal = j-CCCUJ, volume = "18", number = "11", pages = "80--??", month = nov, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0011/0011toc.htm?topic=articles", abstract = "Sometimes the best way to improve a language is to make it look more like the one it set out to obsolete 30 years earlier.", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:NPk, author = "Anonymous", title = "New Products", journal = j-CCCUJ, volume = "18", number = "11", pages = "88--??", month = nov, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0011/0011toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:WMk, author = "Anonymous", title = "We Have Mail", journal = j-CCCUJ, volume = "18", number = "11", pages = "92--??", month = nov, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:28 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0011/0011toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Briand:2000:EFl, author = "Marc Briand", title = "{Editor}'s Forum", journal = j-CCCUJ, volume = "18", number = "12", pages = "6--6", month = dec, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0012/0012toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Phillips:2000:RIN, author = "Dwayne Phillips", title = "Removing Image Noise with Adaptive Filters", journal = j-CCCUJ, volume = "18", number = "12", pages = "10--??", month = dec, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0012/0012toc.htm?topic=articles", abstract = "There is no such thing as a universal filter, but we can get close by building one that adapts to the local noise. Dwayne Phillips walks us through the math to make a filter look a little bit smart.", acknowledgement = ack-nhfb, } @Article{Wu:2000:ECC, author = "Wenfei Wu", title = "Effective Contour Creation with {OpenGL} Texture Mapping", journal = j-CCCUJ, volume = "18", number = "12", pages = "24--??", month = dec, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0012/0012toc.htm?topic=articles", abstract = "In graphics applications, ``let the hardware do it'' is generally good advice. Today's graphics hardware keeps getting better and better, and OpenGL knows how to exploit its capabilities. Even producing contour plots can be a fairly painless operation.", acknowledgement = ack-nhfb, } @Article{Bavestrelli:2000:CTD, author = "Giovanni Bavestrelli", title = "A Class Template for {$N$}-Dimensional Generic Resizable Arrays", journal = j-CCCUJ, volume = "18", number = "12", pages = "32--??", month = dec, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0012/0012toc.htm?topic=articles", abstract = "Need dynamic arrays that are efficient and intuitive? Try a little template recursion and specialization.", acknowledgement = ack-nhfb, } @Article{Peterson:2000:CCT, author = "Mark Peterson", title = "{C/C++} Tips: Tip \#4: Self Destructing Threads", journal = j-CCCUJ, volume = "18", number = "12", pages = "44--??", month = dec, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0012/0012toc.htm?topic=articles", abstract = "A way to make threads easier to manage.", acknowledgement = ack-nhfb, } @Article{Dewhurst:2000:CKF, author = "Steve Dewhurst", title = "Common Knowledge: Fungible Control Structures", journal = j-CCCUJ, volume = "18", number = "12", pages = "46--??", month = dec, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0012/0012toc.htm?topic=articles", abstract = "Steve presents some effective but unorthodox methods for controlling flow of execution --- including one that looks downright weird.", acknowledgement = ack-nhfb, } @Article{Becker:2000:JST, author = "Pete Becker", title = "The Journeyman's Shop: Trap Handlers, Sticky Bits, and Floating-Point Comparisons", journal = j-CCCUJ, volume = "18", number = "12", pages = "54--??", month = dec, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0012/0012toc.htm?topic=articles", abstract = "Pete wraps up his series on practical floating-point math.", acknowledgement = ack-nhfb, } @Article{Meyers:2000:NCIc, author = "Randy Meyers", title = "The New {C}: Integers in {C99}, Part 1", journal = j-CCCUJ, volume = "18", number = "12", pages = "65--??", month = dec, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0012/0012toc.htm?topic=articles", abstract = "C has its roots in typeless languages, but it has come a long long way from its humble beginnings.", acknowledgement = ack-nhfb, } @Article{Becker:2000:SGPc, author = "Thomas Becker", title = "{STL} \& Generic Programming: Introduction to the {STL}", journal = j-CCCUJ, volume = "18", number = "12", pages = "68--??", month = dec, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0012/0012toc.htm?topic=articles", abstract = "Here's a very brief history of the C++ Standard library, and a call to abandon the naive view that the STL is ``just a bunch of containers.''", acknowledgement = ack-nhfb, } @Article{Schmidt:2000:UEN, author = "Bobby Schmidt", title = "Uncaught Exceptions: No No {.NET}", journal = j-CCCUJ, volume = "18", number = "12", pages = "73--??", month = dec, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0012/0012toc.htm?topic=articles", abstract = "Bobby does a little moonlighting at the VC++ help desk, and battles some phantom foos in his spare time.", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:NPl, author = "Anonymous", title = "New Products", journal = j-CCCUJ, volume = "18", number = "12", pages = "80--??", month = dec, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0012/0012toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2000:WMl, author = "Anonymous", title = "We Have Mail", journal = j-CCCUJ, volume = "18", number = "12", pages = "84--??", month = dec, year = "2000", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2000/0012/0012toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Briand:2001:EFW, author = "Marc Briand", title = "{Editor}'s Forum: The Woods of Complexity", journal = j-CCCUJ, volume = "19", number = "1", pages = "6--6", month = jan, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0101/0101toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Gabrilovich:2001:JCI, author = "Evgeniy Gabrilovich and Lev Finkelstein", title = "{JNI--C++} Integration Made Easy", journal = j-CCCUJ, volume = "19", number = "1", pages = "10--??", month = jan, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0101/0101toc.htm?topic=articles", abstract = "Extremely versatile interfaces like the Java JNI also tend to be extremely cumbersome, as a rule. The authors have found a way to break that rule.", acknowledgement = ack-nhfb, } @Article{Dix:2001:WSS, author = "Chris Dix", title = "Working with {SOAP}, the {Simple Object Access Protocol}", journal = j-CCCUJ, volume = "19", number = "1", pages = "22--??", month = jan, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0101/0101toc.htm?topic=articles", abstract = "SOAP makes distributed computing possible in a multiplicity of forms, with XML as a communication medium. Little wonder it's generating so much excitement.", acknowledgement = ack-nhfb, } @Article{Lingsong:2001:EDB, author = "He Lingsong", title = "Exchanging Data between {Java} and {C/C++ Windows} Programs", journal = j-CCCUJ, volume = "19", number = "1", pages = "34--??", month = jan, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0101/0101toc.htm?topic=articles", abstract = "The notorious ``endian'' problem shows up in all sorts of places --- in this case, between different programming languages.", acknowledgement = ack-nhfb, } @Article{Timperley:2001:CCT, author = "Mark Timperley", title = "{C/C++} Tips: Tip \#5: {A} {C/C++} Comment Macro", journal = j-CCCUJ, volume = "19", number = "1", pages = "41--??", month = jan, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0101/0101toc.htm?topic=articles", abstract = "For a non-intrusive debugging macro, this one-liner is hard to beat.", acknowledgement = ack-nhfb, } @Article{Koenig:2001:CMEa, author = "Andrew Koenig", title = "{C++} Made Easier: Using Library Algorithms", journal = j-CCCUJ, volume = "19", number = "1", pages = "42--??", month = jan, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0101/0101toc.htm?topic=articles", abstract = "If you're struggling with complicated loops and off-by-one errors, you might be doing things the hard way. Andy shows us how easy it can be, with a little help from the standard library.", acknowledgement = ack-nhfb, } @Article{Meyers:2001:NCIa, author = "Randy Meyers", title = "The New {C}: Integers, Part 2", journal = j-CCCUJ, volume = "19", number = "1", pages = "52--??", month = jan, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0101/0101toc.htm?topic=articles", abstract = "The new C Standard has a novel idea: just accept that machine-word sizes will grow. Randy explains C's proactive strategy for accommodating the inevitable.", acknowledgement = ack-nhfb, } @Article{Sutter:2001:SMC, author = "Herb Sutter", title = "{Sutter's Mill}: Containers in Memory: How Big Is Big?", journal = j-CCCUJ, volume = "19", number = "1", pages = "58--??", month = jan, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0101/0101toc.htm?topic=articles", abstract = "If you are basing your selection of standard containers on memory requirements, then Herb has some bad news and some good news.", acknowledgement = ack-nhfb, } @Article{Becker:2001:JSS, author = "Pete Becker", title = "The Journeyman's Shop: Sorting through {Quicksort}, Part 1", journal = j-CCCUJ, volume = "19", number = "1", pages = "66--??", month = jan, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0101/0101toc.htm?topic=articles", abstract = "Pete uses the popular Quicksort algorithm as a mini-laboratory for exploring algorithm design and analyzing algorithm performance problems.", acknowledgement = ack-nhfb, } @Article{Austern:2001:SLD, author = "Matt Austern", title = "The {Standard Librarian}: Defining Iterators and Const Iterators", journal = j-CCCUJ, volume = "19", number = "1", pages = "74--??", month = jan, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0101/0101toc.htm?topic=articles", abstract = "Writing an iterator isn't hard, and it's a natural way to extend the C++ Standard library. But if you want to do it right, there are a few wrinkles you ought to know about.", acknowledgement = ack-nhfb, } @Article{Schmidt:2001:UEC, author = "Bobby Schmidt", title = "Uncaught Exceptions: {21st Century Man}", journal = j-CCCUJ, volume = "19", number = "1", pages = "80--??", month = jan, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0101/0101toc.htm?topic=articles", abstract = "It may be the new millennium, but we still have trouble understanding switch statements, templates, access modifiers, and (in some folks' view) how to keep things simple.", acknowledgement = ack-nhfb, } @Article{Anonymous:2001:NPa, author = "Anonymous", title = "New Products", journal = j-CCCUJ, volume = "19", number = "1", pages = "88--??", month = jan, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0101/0101toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2001:WMa, author = "Anonymous", title = "We Have Mail", journal = j-CCCUJ, volume = "19", number = "1", pages = "92--??", month = jan, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0101/0101toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Kelly-Bootle:2001:PMDa, author = "Stan Kelly-Bootle", title = "Post-Mortem Debunker: Time Flies", journal = j-CCCUJ, volume = "19", number = "1", pages = "96--??", month = jan, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:29 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0101/0101toc.htm?topic=articles", abstract = "Having discredited doomsayers of the past, Stan makes a few of his own predictions to chill the hearts of his favorite editors.", acknowledgement = ack-nhfb, } @Article{Briand:2001:EFb, author = "Marc Briand", title = "{Editor}'s Forum", journal = j-CCCUJ, volume = "19", number = "2", pages = "6--6", month = feb, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0102/0102toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2001:NPb, author = "Anonymous", title = "New Products", journal = j-CCCUJ, volume = "19", number = "2", pages = "88--??", month = feb, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0102/0102toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2001:WMb, author = "Anonymous", title = "We Have Mail", journal = j-CCCUJ, volume = "19", number = "2", pages = "92--??", month = feb, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0102/0102toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2001:EHE, author = "Anonymous", title = "Exception Handling in {Embedded C} Programs", journal = j-CCCUJ, volume = "19", number = "2", pages = "??--??", month = feb, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0102/0102toc.htm?topic=articles", abstract = "The most common way to emulate exceptions in C is through its {\tt setjmp}/{\tt longjmp} facility. The approach presented here is less complicated, but with some surprisingly useful features, including a simple form of stack unwinding.", acknowledgement = ack-nhfb, } @Article{Batov:2001:CME, author = "Vladimir Batov", title = "Callbacks Made Easy with the Observer\slash Mediator Design Patterns", journal = j-CCCUJ, volume = "19", number = "2", pages = "??--??", month = feb, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0102/0102toc.htm?topic=articles", abstract = "Good software works; great software evolves. Here's a variation on the Observer pattern that lets you update your code base with ease.", acknowledgement = ack-nhfb, } @Article{Becker:2001:SGPa, author = "Thomas Becker", title = "{STL} \& Generic Programming: {STL} Containers", journal = j-CCCUJ, volume = "19", number = "2", pages = "??--??", month = feb, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0102/0102toc.htm?topic=articles", abstract = "Why does the Standard C++ library provide so many kinds of containers? To enable tradeoffs in efficiency in their infinite variety of uses.", acknowledgement = ack-nhfb, } @Article{Dewhurst:2001:CKP, author = "Steve Dewhurst", title = "Common Knowledge: Polymorphic Function Objects", journal = j-CCCUJ, volume = "19", number = "2", pages = "??--??", month = feb, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0102/0102toc.htm?topic=articles", abstract = "It takes lots of skill, and maybe a design pattern or two, to turn a function pointer into a thing of beauty.", acknowledgement = ack-nhfb, } @Article{Koenig:2001:CMEb, author = "Andrew Koenig and Barbara E. Moo", title = "{C++} Made Easier: Programs That Work by Accident", journal = j-CCCUJ, volume = "19", number = "2", pages = "??--??", month = feb, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0102/0102toc.htm?topic=articles", abstract = "Avoiding undefined behavior is critically important in C++ programming. The authors show us some ways that don't require memorizing the entire C++ Standard.", acknowledgement = ack-nhfb, } @Article{May:2001:ECC, author = "Patrick May", title = "Encapsulating {CORBA} Components with the Adapter and Bridge Patterns", journal = j-CCCUJ, volume = "19", number = "2", pages = "??--??", month = feb, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0102/0102toc.htm?topic=articles", abstract = "CORBA hides the details of invoking objects on remote machines. With a little more refactoring, we can hide the details of CORBA as well.", acknowledgement = ack-nhfb, } @Article{Meyers:2001:NCIb, author = "Randy Meyers", title = "The New {C}: Integers, Part 3", journal = j-CCCUJ, volume = "19", number = "2", pages = "??--??", month = feb, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0102/0102toc.htm?topic=articles", abstract = "At first glance, C99's new integral types seem to threaten its portability. But a few added headers and typedefs improve the outlook dramatically.", acknowledgement = ack-nhfb, } @Article{Schmidt:2001:UEF, author = "Bobby Schmidt", title = "Uncaught Exceptions: Fuzzy Math", journal = j-CCCUJ, volume = "19", number = "2", pages = "??--??", month = feb, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0102/0102toc.htm?topic=articles", abstract = "Compared to certain flawed political processes, computing processes yield the same answers with remarkable consistency. Now we just need to figure out why they're wrong.", acknowledgement = ack-nhfb, } @Article{Zack:2001:DUG, author = "Randy Zack", title = "Debugging under {GNU\slash Linux}", journal = j-CCCUJ, volume = "19", number = "2", pages = "??--??", month = feb, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0102/0102toc.htm?topic=articles", abstract = "Programmers from fields as diverse as enterprise computing to embedded systems are venturing into Linux. If you are one of them, here's a tool that should be at the top of your download list.", acknowledgement = ack-nhfb, } @Article{Briand:2001:EFDa, author = "Marc Briand", title = "{Editor}'s Forum: Drowning Big Brother", journal = j-CCCUJ, volume = "19", number = "3", pages = "6--6", month = mar, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0103/0103toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Sorfa:2001:OSI, author = "Petr Sorfa", title = "Open Source {IDEs} for {Linux\slash Unix}", journal = j-CCCUJ, volume = "19", number = "3", pages = "8--??", month = mar, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0103/0103toc.htm?topic=articles", abstract = "You don't have to give up a graphical environment to develop software under Linux. There are as many IDEs freely available on the Internet as there are definitions of the word ``free.''", acknowledgement = ack-nhfb, } @Article{Bonang:2001:NLS, author = "James Bonang", title = "Navigating {Linux} Source Code", journal = j-CCCUJ, volume = "19", number = "3", pages = "18--??", month = mar, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0103/0103toc.htm?topic=articles", abstract = "With legacy code or large projects, navigation is a serious concern. Here are some tools that can help you find your way.", acknowledgement = ack-nhfb, } @Article{Pehrson:2001:DGI, author = "Bret S. Pehrson", title = "Documenting the Graphic Import Filter Interface", journal = j-CCCUJ, volume = "19", number = "3", pages = "26--??", month = mar, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0103/0103toc.htm?topic=articles", abstract = "There is a fairly ``standard'' interface for importing diverse graphics formats into Windows applications. Only problem is, nobody bothered to document it --- until now.", acknowledgement = ack-nhfb, } @Article{Forshaw:2001:BRC, author = "Ben Forshaw", title = "Book Review: {{\em The C++ Standard Library: A Tutorial and Reference}}", journal = j-CCCUJ, volume = "19", number = "3", pages = "40--??", month = mar, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0103/0103toc.htm?topic=articles", abstract = "At first glance, C99's new integral types seem to threaten its portability. But a few added headers and typedefs improve the outlook dramatically.", acknowledgement = ack-nhfb, } @Article{Yoder:2001:UTF, author = "Michael B. Yoder", title = "Using Template Functions to Customize Library Behavior", journal = j-CCCUJ, volume = "19", number = "3", pages = "42--??", month = mar, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0103/0103toc.htm?topic=articles", abstract = "If you're writing code to be used by other programmers, you'll want to make it customizable, and you'll want to do it well. This article presents an approach that is both efficient and easy to manage.", acknowledgement = ack-nhfb, } @Article{Kamper:2001:BRC, author = "Stephan K{\"a}mper", title = "Book Review: {{\em Core C++ --- A Software Engineering Approach}}", journal = j-CCCUJ, volume = "19", number = "3", pages = "55--??", month = mar, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0103/0103toc.htm?topic=articles", abstract = "A book that teaches C++ in the context of Software Engineering.", acknowledgement = ack-nhfb, } @Article{Griffiths:2001:HD, author = "Alan Griffiths", title = "Here Be Dragons", journal = j-CCCUJ, volume = "19", number = "3", pages = "58--??", month = mar, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0103/0103toc.htm?topic=articles", abstract = "If learning exception safety may be likened to a journey, then Alan Griffiths is an excellent tour guide. He shows us several alternate routes, and he always keeps the trip interesting.", acknowledgement = ack-nhfb, } @Article{Anonymous:2001:SMN, author = "Anonymous", title = "{Sutter's Mill}: To New, Perchance To Throw (Part 1 of 2)", journal = j-CCCUJ, volume = "19", number = "3", pages = "67--??", month = mar, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0103/0103toc.htm?topic=articles", abstract = "If you're going to overload operator new, make sure you get the right one, and that the compiler picks the right ones as well.", acknowledgement = ack-nhfb, } @Article{Austern:2001:TSL, author = "Matt Austern", title = "Teh {Standard Librarian}: {Streambufs} and {Streambuf} Iterators", journal = j-CCCUJ, volume = "19", number = "3", pages = "72--??", month = mar, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0103/0103toc.htm?topic=articles", abstract = "If you've ever used getc and putc, you need the C++ equivalents that reside in streambufs.", acknowledgement = ack-nhfb, } @Article{Schmidt:2001:UEAa, author = "Bobby Schmidt", title = "Uncaught Exceptions: An {Alan Smithee} Film", journal = j-CCCUJ, volume = "19", number = "3", pages = "80--??", month = mar, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0103/0103toc.htm?topic=articles", abstract = "Of mutability, volatility, portability, and other things that go bump in the night\ldots{}.", acknowledgement = ack-nhfb, } @Article{Anonymous:2001:NPc, author = "Anonymous", title = "New Products", journal = j-CCCUJ, volume = "19", number = "3", pages = "88--??", month = mar, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0103/0103toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2001:WMc, author = "Anonymous", title = "We Have Mail", journal = j-CCCUJ, volume = "19", number = "3", pages = "92--??", month = mar, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0103/0103toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Kelly-Bootle:2001:PMDb, author = "Stan Kelly-Bootle", title = "Post-Mortem Debunker: Reply {ALL}", journal = j-CCCUJ, volume = "19", number = "3", pages = "96--??", month = mar, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:30 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0103/0103toc.htm?topic=articles", abstract = "Somebody let Stan off the plane in New Orleans, ostensibly to cover a Unix conference. Here is his report, complete with a bit of (ahem) cultural commentary.", acknowledgement = ack-nhfb, } @Article{Briand:2001:EFd, author = "Marc Briand", title = "{Editor}'s Forum", journal = j-CCCUJ, volume = "19", number = "4", pages = "6--6", month = apr, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:31 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0104/0104toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2001:NPd, author = "Anonymous", title = "New Products", journal = j-CCCUJ, volume = "19", number = "4", pages = "??--??", month = apr, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:31 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0104/0104toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Anonymous:2001:WMd, author = "Anonymous", title = "We Have Mail", journal = j-CCCUJ, volume = "19", number = "4", pages = "??--??", month = apr, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:31 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0104/0104toc.htm?topic=articles", acknowledgement = ack-nhfb, } @Article{Becker:2001:SGPb, author = "Thomas Becker", title = "{STL} \& Generic Programming: {STL} Container Iterators", journal = j-CCCUJ, volume = "19", number = "4", pages = "??--??", month = apr, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:31 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0104/0104toc.htm?topic=articles", abstract = "We've all heard we can use iterators ``just like pointers,'' but that isn't the whole story. Some iterators are important for what they won't let you do --- especially when protecting the integrity of a container", acknowledgement = ack-nhfb, } @Article{Dewhurst:2001:CKQ, author = "Steve Dewhurst", title = "Common Knowledge: {A} Question of Respect", journal = j-CCCUJ, volume = "19", number = "4", pages = "??--??", month = apr, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:31 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0104/0104toc.htm?topic=articles", abstract = "There are a few small items in C++ that should be marked ``not for casual use.'' Casting is one of them; Steve makes it clear as to why", acknowledgement = ack-nhfb, } @Article{Fox:2001:HDC, author = "Maurice Fox", title = "A Handy Debugging Class", journal = j-CCCUJ, volume = "19", number = "4", pages = "??--??", month = apr, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:31 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0104/0104toc.htm?topic=articles", abstract = "Tracing, debugging, and timing --- all in one package and dynamically controllable with simple, intuitive control strings.", acknowledgement = ack-nhfb, } @Article{Koenig:2001:CMEc, author = "Andrew Koenig and Barbara E. Moo", title = "{C++} Made Easier: {w} Vectors Grow", journal = j-CCCUJ, volume = "19", number = "4", pages = "??--??", month = apr, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:31 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0104/0104toc.htm?topic=articles", abstract = "The Standard C++ library delivers reasonable performance by default. If you've ever wondered how, or what is implied in the word ``reasonable,'' read on", acknowledgement = ack-nhfb, xxnote = "Check title: w == Watching??", } @Article{Meyers:2001:NCD, author = "Randy Meyers", title = "The New {C}: Declarations and Initializations", journal = j-CCCUJ, volume = "19", number = "4", pages = "??--??", month = apr, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:31 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0104/0104toc.htm?topic=articles", abstract = "C99 provides many new options for when and how a variable begins its life. The benefit is code that is less buggy and more readable.", acknowledgement = ack-nhfb, } @Article{Schmidt:2001:UEE, author = "Bobby Schmidt", title = "Uncaught Exceptions: {eWriter}", journal = j-CCCUJ, volume = "19", number = "4", pages = "??--??", month = apr, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:31 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0104/0104toc.htm?topic=articles", abstract = "Just when we're fixin' to swear at VC++ again, it turns around and does something right.", acknowledgement = ack-nhfb, } @Article{Stanley:2001:AET, author = "Ben Stanley", title = "Adding Exception Testing to Unit Tests", journal = j-CCCUJ, volume = "19", number = "4", pages = "??--??", month = apr, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:31 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0104/0104toc.htm?topic=articles", abstract = "Exceptions can add a bewildering number of potential execution paths to otherwise simple code. Here is a way to test those extra paths without writing a bazillion test cases.", acknowledgement = ack-nhfb, } @Article{Sutter:2001:CCR, author = "Herb Sutter", title = "{C++} Conformance Roundup", journal = j-CCCUJ, volume = "19", number = "4", pages = "??--??", month = apr, year = "2001", CODEN = "CCUJEX", ISSN = "1075-2838", bibdate = "Tue May 14 18:09:31 MDT 2002", bibsource = "http://www.cuj.com/articles/2001/0104/0104toc.htm?topic=articles", abstract = "There is no C++ compiler or library today that implements the Standard perfectly, but some are getting close. Here, finally, is a first attempt to quantify just how close.", acknowledgement = ack-nhfb, } @Article{Briand:2001:EFE, author = "Marc Briand", title = "{Editor}'s Forum: The {Emperor}'s New Shoes", journal = j-CCCUJ, volume = "19", number = "5", pages = "6--6", month = may, y