Geoff Chappell - Software Analyst
Among the libraries that Microsoft supplies with Visual C++ is one that can be used productively just from its header files, without linking a library file. A notable feature of these header files is their heavy use of the C++ language element known as a template. The templated classes and functions defined in the ATL headers arrange that various concepts have their general characteristics standardised in terms of black boxes that represent whatever is specific to the programmer’s own work.
Much of the (typically substantial) boilerplate for an ATL project can be generated as if by the compiler in response to concise specifications given as blocks of C++ attributes delineated by square brackets and attached to programming elements such as classes and interface methods. The compiler supports various built-in attributes, but these have no particular knowledge of the ATL. Support for ATL Programming is arranged both by extending the functionality of some built-in attributes and by defining ATL-specific attributes. This work is done externally to the compiler, by the ATL Attribute Provider (ATLPROV.DLL).
Please beware that much of this work is rough and incomplete. I publish it even so, since it seems better that it be available to all, even to be used with more than ordinary caution, than to be left hidden and wasting in a virtual drawer awaiting my next opportunity to work at it again.