[Computing]Local projects:- editline - jQuery plugins - readline_cpp - parse0x - ptsigslot - shellish - sqlite3x/sq3 - Tech papers - yo5 - zfstream Remote projects: - s11n.net - SpiderApe - toc Stuff for...: - gcc - GNU make - JavaScript - jQuery - QEMU - sqlite3 | Technical PapersAs anyone familiar with my software might guess, based on the amount of documentation, i like to write. i admit it: i'm one of those rare programmers who gets a signicant amount of joy out of writing documentation (gasp!). This page hosts several papers i have written during the development of various projects. These papers are not specifically geared towards any given project, but cover topics which are generally applicable to many 21st-century C++ projects. This all really goes without saying, but i'll say it anyway:
Any and all constructive feedback on these papers is
very happily received.
Blatantly derogatory mails (i.e., "flames mails")
are not.
Useful feedback will be published in future, updated revisions of these papers, of
course with full credit going to those who provide suggestions.
Also, please send a mail
if you would like to be notified of updated or new papers.
If you happen to re-distribute any of these papers, or get any use whatsoever out of them, i would be absolutely flattered if you would tell me so. Fair warnings to potential readers:
Context SingletonsDoc last updated: 14 June 2004This is a paper discussing the use of what i call Context Singletons, written during the development of libs11n's first classloader layer. It also develops a non-intrusive, light-weight Phoenix Singleton class. Download: pdf html "Context Singleton" is a bit of a misnomer: this paper probably should have been called "Context Monostates", or something similar. The latest source code for the phoenix class developed in this paper is available here: libphoenix++-2004.08.17.tar.gz (3792 bytes, last modified 2007.Jun.25) It is worth noting that phoenix is used extensively in the libs11n source tree. More information about using phoenix can be found here. Context TypesDoc last updated: 14 June 2004Like the Context Singletons paper, this one discusses the idea of using types as contexts in C++. It is a gentler introduction to the topic as given in the Context Singletons paper, and is more generic. Download: pdf html SupermacrosDoc last updated: 22 August 2004"Supermacros" are a technique the s11n project uses to get at the code generation possibilities implied by traditional C++ macros, while eliminating some of their more notorious problems. This short paper gives an overview of what they are, how they can be used, and their advantages (and one tiny disadvantage) over classic macros. Download: pdf html Lexical castingDoc last updated: 14 Aug 2005This paper covers the topic of "lexical casting." That is, the conversion of non-string data to and from strings. Loosely-typed languages (e.g., Perl and PHP) inherently support this, but strongly-typed languages (e.g., C++) do not have such a feature built-in. This paper develops a class which generically adds this capability to C++ software. The source code for the lex_t class developed in this paper can be found here: libs11n_lex_t++-2004.12.31.tar.gz (17125 bytes, last modified 2007.Jun.25) Download: pdf html Classloading in C++: bringing it into the 21st centuryDoc last updated: 3 Jan 2005This paper addresses the topic of classloading in C++, and presents a generic back-end for adding such support to arbitrary classes and applications. It is modelled after the code in the s11n class_loader library, but is a more generic treatment of the topic. Download: pdf html Generic Cleanup in C++Doc last updated: 14 Aug 2005This paper develops an alternate approach to smart pointers for guaranteeing proper cleanup of unmanaged pointers in the face of errors. This approach is used in libs11n 1.1.3+ to provide leak-safety guarantees which it otherwise could not make. Download: pdf html Download the accompanyin source code, including Makefile, test program, and doxygen file for generating API docs: libcleanup-2005.08.04.tar.gz (15990 bytes, last modified 2007.Jun.25) |