So far, quickbook has just pretended that it's dealing with a single
byte encoding. For the most part this works quite well due to the
design of UTF-8, but the syntax highlighter needs to pick out individual
characters correctly, so implement just enough to do that. Does odd
things with invalid UTF-8.
[SVN r76790]
Plus a little bit of a cleanup. There's a little bit of duplication
caused by this, but I think the clarity is worth it. Really do need a
better way of handling actions.
[SVN r75265]
Symbol tables are really expensive to create, so share between all
instances of `cpp_highlight` and `python_highlight`. It would be better
to create all the grammars just once, but that's trickier as they're quite
stateful and they're not nearly as expensive as the symbol tables.
[SVN r75254]
Files are now permanently loaded. Quickbook substrings are stored as
references into the file. Now positions are stored as iterators into
the original file, the line and column is calculated when messages are
output.
This doesn't have much effect on efficiency but it simplifies a few
things.
[SVN r75253]