Friday, August 1, 2008

Translation Bar

At least 50% of the visitors to this web site do not speak English as a first language. I have placed a Google Translation box on the left. Hopefully this will help make it easier to understand.

However, I realize that the translations it gives aren't very good - especially when it tries to translate source code. Don't misunderstand me - the Google software is quite impressive, but this is the type of text where a native speaker (who is also a programmer) is needed for a good translation.

If you would like to provide translations of any of the documentation content, I will post it here. The most important parts are the first two tutorials.

Download Options

There are a few different ways to install Boost.Extension and Boost.Reflection.

I've provided a download, to the left here, that includes both Boost.Extension, Boost.Reflection, and all Boost libraries needed for the examples and tests.

But, if you have Boost installed, you don't need all the other libraries, so feel free to just copy the boost/extension or boost/reflection directories to your Boost tree instead.

If you want to always stay up to date with the latest changes, you can also get the libraries directly from the Boost Sandbox using Subversion:

svn co
svn co

Let me know if you have problems installing or compiling on any system.

Also, as a note, the libraries themselves are header-only.

Saturday, July 26, 2008

Final Changes Before Review

Since I presented these libraries at BoostCon in May, I've been working to address a few of the feature requests mentioned there, and clean up the library for review for inclusion in Boost.

I could use your feedback on the following:

1 - What do you think is missing in the libraries?
2 - Have you had any problems getting them to work? Which OS? Compiler?
3 - I've updated the first three tutorials quite recently. Are they clear enough?
4 - I've updated the header references recently (with Doxygen). Are those docs clear enough?
5 - Anything else you can think of.

Feel free to post a comment to this blog, or to send me an e-mail at rostovpack [at] gmail [dot] com.

Just as a heads up, here are the things I plan to finish before review:

The library headers themselves:

1 - Add an optimization for the case where factories or reflected functions with unknown parameters are called.
2 - Move the entirety of the Boost.Reflection library to the boost::extensions namespace and the boost/extension directory (because of how much the libraries overlap, I'd like to have them together for review).

The documentation:

1 - About 10 total tutorials - 3 are up to date, and one more is just about finished. The remaining tutorials will cover calling functions without knowing their signatures, compiling and loading new shared libraries at run-time (ie, c++ interpretation), reference-counting within shared libraries, storing version information etc. with factories, and some related topics.
2 - Rewrite performance analysis section to take into account recent changes.
3 - Expand FAQ and appendices.
4 - Add installation instructions.

The examples:

1 - Examples for each of the tutorials listed.
2 - An example plugin-based image processing system.
3 - An example using GCCXML to automatically generate factory or reflection declarations.

The build files:

1 - I need to clean up and simplify the Jamfiles. I need to use some of the less well-documented features of Boost.Build to do it.

Once the above are done, I plan to submit the library for review.

While reading the docs, the main page lists at the bottom all of the parts that have been updated recently. Those are the most useful parts to read.

If there's anything else that you want to see, please let me know.

The redistributable is on the left in tar.gz format.

Tuesday, July 15, 2008

Latest Release - Downloadable

I've packaged together the latest stable release:


It contains the tests, examples, documentation and headers. It also contains the other Boost libraries that these depend on. Most of the other libraries are used by the examples, but not required for using the headers.

To use the library in your project, just add the root of the extracted directory to your include path (ie, /home/me/downloads/extension-reflection).

If you want to make sure that the tests pass on your system, you will need bjam - see Then run the script. If bjam is not in your path, you'll need to set the variable BOOST_BJAM_PATH. You can also set BOOST_BJAM_OPTIONS if needed.

I'll provide a Windows .bat file in the next release.

For the documentation, I've only updated the Extension reference section. The docs are at extension-reflection/libs/extension/doc/html/index.html in the redistributable. I'll post the latest docs up on this site once I've fixed some of the tutorials.

Feel free to let me know if you have trouble getting the redistributable to work on a given system - it is a work in progress.

Also, it can take a little bit of setup to use Extension without Bjam. If you've worked it out for your compiler/OS, feel free to send me your instructions and I'll try to post them with the documentation.

Wednesday, April 9, 2008

Back Up!

All data is back up. URLs should be the same as they were previously.

Sorry for any inconvenience!

Edit: Oops, some of my links were bad. This is fixed now.

Wednesday, March 26, 2008

Temporary Server Outage

I'm moving the documentation to a different server. As such, you'll need to get it by downloading the library directories from SVN (see earlier posts). It should all be there.

Sorry for the inconvenience!

Tuesday, February 12, 2008

Downloading the Libraries

As I've mentioned before, the easiest way to get these libraries and stay up to date, is to get them from the Boost Sandbox. However, the latest version of the libraries is also available here:

Extension/Reflection tar.gz file

This archive also contains each of the Boost libraries used by the Extension or Reflection library, or by the examples.

Saturday, February 9, 2008

Reflection/Extension interoperability

I've posted one single page of the Reflection docs - an example of reflecting classes that are located in shared libraries, using the Extension library. Since this is perhaps the most common use case for the library, I figured I'd post it even before the rest of the docs were done:

Boost.Extension/Boost.Reflection interoperability

Friday, February 8, 2008

Docs Posted for Boost.Extension

I've posted the docs for Boost.Extension at:

Boost.Extension Documentation

Almost half of the doc material was written by Mariano, the rest by myself.

Boost.Reflection docs will be posted as soon as they are completed.

Back at Work

My apologies for the long hiatus!

Currently, both libraries compile with:

MSVC 2005
GCC 4 (Ubuntu)
GCC 4 (OS X)

If you have any questions about compilation or installation, please let me know (just in the comments of this post is fine, or e-mail me at rostovpack - at -

The Reflection documentation is incorrect - my next project. For examples of using reflection, I recommend looking the libs/reflection/test/ directory. The latest test is parameter_info_test.cpp, which allows you to store information about the arguments in a reflected function (for instance, names of the parameters). I haven't yet written in the code to actually retrieve this information, but it should be finished soon.

If you see any compilation errors or warnings, please let me know.

Current work:

1 - Integrate the new Boost.Function/Factory functionality into Boost.Extension.
2 - Update Reflection documentation and examples.
3 - Uses for the parameter_info.

Any feature requests?