Actions

Boostcon 2008

From Just in Time

This page will contain the notes that I will make during Boostcon 2008. For a trip-report, see the Trip report boostcon 2008-page.

Boost.Extension & Boost.Reflection

Extension

Problems with shared libraries

  • performance
  • differences in semantics of open, close, getprocaddr
  • name mangling, extern "C" losing type safety
shared_library m("my_module_name");
m.open();
m.get<int(float)>(function_name")(5.0f);
m.close();

Reflection

as expected...

liaw Tuesday

quickbook

Joel

  • docs in boost head/tools

Installing it on windows:

  • quickbook uses boostbook uses docbook.
  • problem with latest xslt: do not download latest version (may have been fixed). Use 1.66.1 version. Not listed on sourceforge. Just change url while downloading from sf.
  • Eric's docs demonstrate how to use doxygen

Eric:

import doxygen
import quickbook;

doxygen autodoc
   :
     [ glob ../../../boost/xpresive/*.hpp]
   :
     <doxygen:param>X=Y
;

xml xpressive
  :
     xpressive.qbk
  ;

boostbook standalone
  :
        xpressive
  :
     
  • boostdocs mailinglist discusses how to get rid of boost-headers.
  • URLs to code can be svn urls.

concurrency

  • Intel TBB as a starting point [1]
  • TPL?

containers

range

[www.boost-consulting.com/vault/ file vault]

range_ex has versions of stl algorithms that accept ranges. return type can be customized (range, iterator, what range).

Explore, container printing

It took pretty much in the neighborhood of 90 minutes. Amazing, I thought it would be about 45. Good thing it was scheduled for 90 minutes.

Audience participation was great. Benign and very constructive.

boost serialization: A Hands on Tutorial

  • load_construct_data & save_construct_dat
    • for types that have no default constructor
  • serialize classes that are outputstreamable and inputstreamable (to C++ streams)
    • use load_construct_data etc
    • ...or use BOOST_SERIALIZATION_SPLIT_FREE om load/save te splitsen.
    • BOOST_SERIALIZATION_SPLIT_MEMBER() in de class scope
bjam --with-serialization --layout-system variant=debug link=shared stage

optionally append -jN+1 (N = number of processors)

Building a mini-fusion with C++0x

  • relation between run-time and compile-time: boost::fusion::xxx vs. boost::fusion::type_of<...>

LIAW Wednesday

edit distance/sequence alignment algos may be quite hot: dna sequencing.

Bjarne Stroustrup: A C++ library wish list

  • what do we want
  • What would I like
  • Teaching C++
  • What is "a system"
  • A system for c++ Libraries

C++ libraries are small. About 25 GUI libraries, no interoperability. We do not have a system of interoperating libraries

TBB going in the right direction.

Problem: Those 'novices' that "knew everything" telling those that have never seen a line of code what to do.

Teach in a way that encourages hard work.

  • fltk? (gui & graph)

Boost.function

  • SFINAE in 2002
  • use of preprocessor metaprogramming made implementation unreadable

Boost.Wave

  • macro expansion trace
  • interactive mode

Spirit v2

%= (auto rule operator)
just like the semantic action [_val = _0] (Joel wrote "[_val = _1]")

asio

Traversal

Boost.Lexer

  • Ben Hanson created it
  • In boost.spirit
  • Merged, minimized DFAs, parse large sets of alternatives very effectively.
  • multi_pass<> - iterator
  • In Spirit2: tokenize_and_parse(...)

Planning BoostCon 2009

Dataflow Library (and the arts)

examples of dataflow frameworks

  • Eyesweb
  • Maxim sp
  • jmax
  • labview
  • GNU radio

Concepts: Components, Ports.

consumer ports are boost.function, producer ports are boost.signal operator>>=() used to connect components, e.g.:

producer >>= filter >>= consumer
  • cppgui (Felipe Magno de Almeida)
  • pin-based approach (Tobias Schwinger).
  • flock of birds 6 dof 3d position
  • AMELiA now open source (GPL)