$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r49920 - in website/public_html/beta: common/code doc style/css_0
From: daniel_james_at_[hidden]
Date: 2008-11-24 13:35:37
Author: danieljames
Date: 2008-11-24 13:35:36 EST (Mon, 24 Nov 2008)
New Revision: 49920
URL: http://svn.boost.org/trac/boost/changeset/49920
Log:
Add categorized and filtered views to the library list.
Text files modified: 
   website/public_html/beta/common/code/boost_libraries.php |    57 +++++++++++                             
   website/public_html/beta/doc/libraries.php               |   159 ++++++++++++++++++++++++++++-----       
   website/public_html/beta/doc/libraries.xml               |   188 ++++++++++++++++++++++++++++++++++++++++
   website/public_html/beta/style/css_0/section-doc.css     |    17 +++                                     
   4 files changed, 393 insertions(+), 28 deletions(-)
Modified: website/public_html/beta/common/code/boost_libraries.php
==============================================================================
--- website/public_html/beta/common/code/boost_libraries.php	(original)
+++ website/public_html/beta/common/code/boost_libraries.php	2008-11-24 13:35:36 EST (Mon, 24 Nov 2008)
@@ -8,6 +8,7 @@
 
 class boost_libraries
 {
+    var $categories = array();
     var $db = array();
     
     function boost_libraries($xml_file)
@@ -18,13 +19,28 @@
         xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
         xml_parse_into_struct($parser, $xml, $values);
         xml_parser_free($parser);
-        
+
         ##print '<!-- '; print_r($values); print ' -->';
         
         $lib = NULL;
+        $category = NULL;
         foreach ( $values as $key => $val )
         {
-            if ($val['tag'] == 'library' && $val['type'] == 'open')
+            if ($val['tag'] == 'category' && $val['type'] == 'open' && !$lib && !$category)
+            {
+                $category = isset($val['attributes']) ? $val['attributes'] : array();
+            }
+            else if($val['tag'] == 'title' && $category)
+            {
+                $category['title'] = isset($val['value']) ? trim($val['value']) : '';
+            }
+            else if ($val['tag'] == 'category' && $val['type'] == 'close' && $category)
+            {
+                $category['libraries'] = array();
+                $this->categories[$category['name']] = $category;
+                $category = NULL;
+            }
+            else if ($val['tag'] == 'library' && $val['type'] == 'open')
             {
                 $lib = array();
             }
@@ -47,6 +63,14 @@
                         else { $lib[$val['tag']] = ''; }
                     }
                     break;
+                    case 'category':
+                    {
+                        if(isset($val['value'])) {
+                            $name = trim($val['value']);
+                            $lib['category'][] = $name;
+                        }
+                    }
+                    break;
                 }
             }
             else if ($val['tag'] == 'library' && $val['type'] == 'close' && $lib)
@@ -60,7 +84,34 @@
     function sort_by($field)
     {
         $f = '_field_cmp_'.strtolower(str_replace('-','_',$field)).'_';
-        uasort($this->db,$f);
+        uasort($this->db, $f);
+    }
+
+    function get($sort = null, $filter = null) {
+        $libs = $filter ? array_filter($this->db, $filter) : $this->db;
+        if($sort) {
+            $f = '_field_cmp_'.strtolower(str_replace('-','_',$sort)).'_';
+            uasort($libs, $f);
+        }
+        return $libs;
+    }
+
+    function get_categorized($sort = null, $filter = null) {
+        $libs = $this->get($sort, $filter);
+        $categories = $this->categories;
+
+        foreach($libs as $key => &$library) {
+            foreach($library['category'] as $category) {
+                if(!isset($this->categories[$category])) {
+                    echo 'Unknown category: '.$category;
+                    exit(0);
+                }
+                $categories[$category]['libraries'][] = &$library;
+            }
+            unset($library);
+        }
+
+        return $categories;
     }
 }
 ?>
Modified: website/public_html/beta/doc/libraries.php
==============================================================================
--- website/public_html/beta/doc/libraries.php	(original)
+++ website/public_html/beta/doc/libraries.php	2008-11-24 13:35:36 EST (Mon, 24 Nov 2008)
@@ -1,16 +1,70 @@
 <?php
+
 require_once(dirname(__FILE__) . '/../common/code/boost_version.php');
 require_once(dirname(__FILE__) . '/../common/code/boost_libraries.php');
 
 $libs = new boost_libraries(dirname(__FILE__) . '/libraries.xml');
-if (isset($_REQUEST['sort']))
-{
-  $libs->sort_by($_REQUEST['sort']);
+
+// Display types:
+
+$view_fields = Array(
+    '' => 'All',
+    'categorized' => 'Categorized'
+);
+$filter_fields = Array(
+    'std-proposal' => 'Standard Proposals',
+    'std-tr1' => 'TR1 libraries',
+    'header-only' => 'Header Only Libraries',
+    'autolink' => 'Automatic Linking');
+$sort_fields =  Array(
+    '' => 'Name',
+    'boost-version' => 'First Release');
+
+// View
+
+$view_value = isset($_REQUEST['view']) ? $_REQUEST['view'] : '';
+
+$category_value = '';
+$filter_value = '';
+
+if(strpos($view_value, 'filtered_') === 0) {
+    $filter_value = substr($view_value, strlen('filtered_'));
+    if(!isset($filter_fields[$filter_value])) {
+        echo 'Invalid filter field.'; exit(0);
+    }
 }
-else
-{
-  $libs->sort_by('name');
+else if(strpos($view_value, 'category_') === 0) {
+    $category_value = substr($view_value, strlen('category_'));
+    if(!isset($libs->categories[$category_value])) {
+        echo 'Invalid category: '.htmlentities($category_value); exit(0);
+    }
 }
+else {
+    $filter_value = '';
+    if(!isset($view_fields[$view_value])) {
+        echo 'Invalid view value.'; exit(0);
+    }
+}
+
+// Sort
+
+$sort_value = isset($_REQUEST['sort']) ? $_REQUEST['sort'] : '';
+
+if(!isset($sort_fields[$sort_value])) {
+    echo 'Invalid sort field.'; exit(0);
+}
+
+function library_filter($lib) {
+  global $filter_value, $category_value;
+
+  return boost_version($libversion[0],$libversion[1],$libversion[2]) &&
+      (!$filter_value || ($lib[$filter_value] && $lib[$filter_value] != 'false')) &&
+      (!isset($_REQUEST['filter']) || $lib[$_REQUEST['filter']]) &&
+      (!$category_value || $category_value == 'all' ||
+        array_search($category_value, $lib['category']) !== FALSE);
+}
+
+// Library display functions:
 
 function libref($lib)
 {
@@ -53,6 +107,40 @@
   if ($lib['autolink'] == 'true') { $p[] = 'Automatic linking'; }
   print ($p ? implode(', ',$p) : ' ');
 }
+
+function option_link($description, $field, $value)
+{
+  $base_uri = preg_replace('![#?].*!', '', $_SERVER['REQUEST_URI']);
+  $current_value = isset($_REQUEST[$field]) ? $_REQUEST[$field] : '';
+
+  if($current_value == $value) {
+    echo '<span>';
+  }
+  else {
+    $params = $_REQUEST;
+    $params[$field] = $value;
+
+    $url_params = '';
+    foreach($params as $k => $v) {
+      if($v) {
+        $url_params .= $url_params ? '&' : '?';
+        $url_params .= urlencode($k) . '='. urlencode($v);
+      }
+    }
+
+    echo '<a href="'.htmlentities($base_uri.$url_params).'">';
+  }
+
+  echo htmlentities($description);
+
+  if($current_value == $value) {
+    echo '</span>';
+  }
+  else {
+    echo '</a>';
+  }
+}
+
 ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
@@ -81,29 +169,34 @@
             </div>
 
             <div class="section-body">
-              <ul class="menu">
-                <li>Sort By</li>
-
-                <li>Name</li>
-
-                <li>First Release</li>
-
-                <li>STD Proposal</li>
-
-                <li>STD::TR1</li>
+              <div id="options">
+                  <div id="view-options">
+                    <ul class="menu">
+                    <?php foreach($view_fields as $key => $description) : ?>
+                      <li><?php option_link($description, 'view', $key); ?></li><?php
+                    endforeach; ?>
+                    <?php foreach($filter_fields as $key => $description) : ?>
+                      <li><?php option_link($description, 'view', 'filtered_'.$key); ?></li>
+                    <?php endforeach; ?>
+                    </ul>
+                  </div>
+                  <div id="sort-options">
+                    <div class="label">Sort by:</div>
+                    <ul class="menu">
+                    <?php foreach($sort_fields as $key => $description) : ?>
+                      <li><?php option_link($description, 'sort', $key); ?></li>
+                    <?php endforeach; ?>
+                    </ul>
+                  </div>
+              </div>
 
-                <li>Header Only Use</li>
+              <?php if($view_value != 'categorized') { ?>
 
-                <li>Automatic Linking</li>
-
-                <li>Key</li>
-              </ul>
+              <?php if($category_value) echo '<h2>', htmlentities($libs->categories[$category_value]['title']), '</h2>'; ?>
 
               <dl>
                 <?php
-                foreach ($libs->db as $key => $lib) {
-                  $libversion = explode('.',$lib['boost-version']);
-                  if (boost_version($libversion[0],$libversion[1],$libversion[2])) { ?>
+                foreach ($libs->get($sort_value, 'library_filter') as $key => $lib) { ?>
 
                 <dt><?php libref($lib); ?></dt>
 
@@ -128,8 +221,24 @@
 
                     <dd><?php libbuildlink($lib); ?></dd>
                   </dl>
-                </dd><!-- --><?php } } ?>
+                </dd><!-- --><?php } ?>
               </dl>
+
+              <?php } else { ?>
+
+              <h2>By Category</h2>
+              <?php
+              foreach ($libs->get_categorized($sort_value, 'library_filter') as $name => $category) {
+                if(count($category['libraries'])) {?>
+                  <h3><?php option_link(isset($category['title']) ? $category['title'] : $name,
+                    'view', 'category_'.$name); ?></h3>
+                  <ul><?php foreach ($category['libraries'] as $lib) { ?>
+                    <li><?php libref($lib); ?>: <?php echo ($lib['description'] ? htmlentities($lib['description'],ENT_NOQUOTES,'UTF-8') : ' '); ?></li>
+                  <?php } ?></ul>
+                <?php } ?>
+              <?php } ?>
+
+              <?php } ?>
             </div>
           </div>
         </div>
Modified: website/public_html/beta/doc/libraries.xml
==============================================================================
--- website/public_html/beta/doc/libraries.xml	(original)
+++ website/public_html/beta/doc/libraries.xml	2008-11-24 13:35:36 EST (Mon, 24 Nov 2008)
@@ -1,4 +1,66 @@
 <boost xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <categories>
+    <category name="String">
+      <title>String and text processing</title>
+    </category>
+    <category name="Containers">
+      <title>Containers</title>
+    </category>
+    <category name="Iterators">
+      <title>Iterators</title>
+    </category>
+    <category name="Algorithms">
+      <title>Algorithms</title>
+    </category>
+    <category name="Function-objects">
+      <title>Function objects and higher-order programming</title>
+    </category>
+    <category name="Generic">
+      <title>Generic Programming</title>
+    </category>
+    <category name="Metaprogramming">
+      <title>Template  Metaprogramming</title>
+    </category>
+    <category name="Preprocessor">
+      <title>Preprocessor Metaprogramming</title>
+    </category>
+    <category name="Concurrent">
+      <title>Concurrent Programming</title>
+    </category>
+    <category name="Math">
+      <title>Math and numerics</title>
+    </category>
+    <category name="Correctness">
+      <title>Correctness and testing</title>
+    </category>
+    <category name="Data">
+      <title>Data structures</title>
+    </category>
+    <category name="Image-processing">
+      <title>Image processing</title>
+    </category>
+    <category name="IO">
+      <title>Input/Output</title>
+    </category>
+    <category name="Inter-language">
+      <title>Inter-language support</title>
+    </category>
+    <category name="Memory">
+      <title>Memory</title>
+    </category>
+    <category name="Parsing">
+      <title>Parsing</title>
+    </category>
+    <category name="Programming">
+      <title>Programming Interfaces</title>
+    </category>
+    <category name="Miscellaneous">
+      <title>Miscellaneous</title>
+    </category>
+    <category name="workarounds">
+      <title>Broken compiler workarounds</title>
+    </category>
+  </categories>
   <library>
     <key>accumulators</key>
     <boost-version>1.36.0</boost-version>
@@ -10,6 +72,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Math</category>
   </library>
   <library>
     <key>algorithm/minmax</key>
@@ -23,6 +86,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Algorithms</category>
   </library>
   <library>
     <key>algorithm/string</key>
@@ -35,6 +99,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>String</category>
+    <category>Algorithms</category>
   </library>
   <library>
     <key>any</key>
@@ -48,6 +114,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Data</category>
   </library>
   <library>
     <key>array</key>
@@ -61,6 +128,7 @@
     <std-tr1>true</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Containers</category>
   </library>
   <library>
     <key>asio</key>
@@ -74,6 +142,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Concurrent</category>
+    <category>IO</category>
   </library>
   <library>
     <key>assign</key>
@@ -87,6 +157,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>IO</category>
   </library>
   <library>
     <key>bimap</key>
@@ -101,6 +172,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Containers</category>
+    <category>Data</category>
   </library>
   <library>
     <key>bind</key>
@@ -118,6 +191,7 @@
     <std-tr1>true</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Function-objects</category>
   </library>
   <library>
     <key>bind/mem_fn</key>
@@ -131,6 +205,7 @@
     <std-tr1>true</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Function-objects</category>
   </library>
   <library>
     <key>bind/ref</key>
@@ -145,6 +220,7 @@
     <std-tr1>true</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Function-objects</category>
   </library>
   <library>
     <key>circular_buffer</key>
@@ -158,6 +234,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Containers</category>
   </library>
   <library>
     <key>compatibility</key>
@@ -171,6 +248,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>workarounds</category>
   </library>
   <library>
     <key>concept_check</key>
@@ -184,6 +262,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Generic</category>
+    <category>Correctness</category>
   </library>
   <library>
     <key>config</key>
@@ -197,6 +277,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>workarounds</category>
   </library>
   <library>
     <key>conversion</key>
@@ -209,6 +290,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>String</category>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>crc</key>
@@ -224,6 +307,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>date_time</key>
@@ -237,6 +321,7 @@
     <std-tr1>false</std-tr1>
     <header-only>false</header-only>
     <autolink>true</autolink>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>disjoint_sets</key>
@@ -251,6 +336,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Containers</category>
   </library>
   <library>
     <key>dynamic_bitset</key>
@@ -270,6 +356,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Containers</category>
   </library>
   <library>
     <key>exception</key>
@@ -284,6 +371,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>filesystem</key>
@@ -298,6 +386,7 @@
     <std-tr1>false</std-tr1>
     <header-only>false</header-only>
     <autolink>true</autolink>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>foreach</key>
@@ -320,6 +409,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Algorithms</category>
   </library>
   <library>
     <key>format</key>
@@ -340,6 +430,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>String</category>
+    <category>IO</category>
   </library>
   <library>
     <key>function</key>
@@ -353,6 +445,8 @@
     <std-tr1>true</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Function-objects</category>
+    <category>Programming</category>
   </library>
   <library>
     <key>function_types</key>
@@ -367,6 +461,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Generic</category>
+    <category>Metaprogramming</category>
   </library>
   <library>
     <key>functional</key>
@@ -381,6 +477,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Function-objects</category>
   </library>
   <library>
     <key>functional/hash</key>
@@ -394,6 +491,7 @@
     <std-tr1>true</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Function-objects</category>
   </library>
   <library>
     <key>fusion</key>
@@ -407,6 +505,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Metaprogramming</category>
+    <category>Data</category>
   </library>
   <library>
     <key>gil</key>
@@ -419,6 +519,11 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Containers</category>
+    <category>Iterators</category>
+    <category>Algorithms</category>
+    <category>Generic</category>
+    <category>Image-processing</category>
   </library>
   <library>
     <key>graph</key>
@@ -435,6 +540,9 @@
     <std-tr1>false</std-tr1>
     <header-only>false</header-only>
     <autolink>true</autolink>
+    <category>Containers</category>
+    <category>Iterators</category>
+    <category>Algorithms</category>
   </library>
   <library>
     <key>integer</key>
@@ -453,6 +561,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Math</category>
   </library>
   <library>
     <key>interprocess</key>
@@ -466,6 +575,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Concurrent</category>
   </library>
   <library>
     <key>intrusive</key>
@@ -478,6 +588,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Containers</category>
   </library>
   <library>
     <key>io</key>
@@ -493,6 +604,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>IO</category>
   </library>
   <library>
     <key>iostreams</key>
@@ -506,6 +618,8 @@
     <std-tr1>false</std-tr1>
     <header-only>false</header-only>
     <autolink>true</autolink>
+    <category>String</category>
+    <category>IO</category>
   </library>
   <library>
     <key>iterator</key>
@@ -522,6 +636,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Iterators</category>
   </library>
   <library>
     <key>lambda</key>
@@ -535,6 +650,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Function-objects</category>
   </library>
   <library>
     <key>logic/tribool</key>
@@ -547,6 +663,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>math</key>
@@ -570,6 +687,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Math</category>
   </library>
   <library>
     <key>math/common_factor</key>
@@ -583,6 +701,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Math</category>
   </library>
   <library>
     <key>math/octonion</key>
@@ -595,6 +714,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Math</category>
   </library>
   <library>
     <key>math/quaternion</key>
@@ -607,6 +727,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Math</category>
   </library>
   <library>
     <key>math/special_functions</key>
@@ -619,6 +740,7 @@
     <std-tr1>false</std-tr1>
     <header-only>false</header-only>
     <autolink>true</autolink>
+    <category>Math</category>
   </library>
   <library>
     <key>math/statistical_distributions</key>
@@ -632,6 +754,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Math</category>
   </library>
   <library>
     <key>mpi</key>
@@ -645,6 +768,7 @@
     <std-tr1>false</std-tr1>
     <header-only>false</header-only>
     <autolink>true</autolink>
+    <category>Concurrent</category>
   </library>
   <library>
     <key>mpl</key>
@@ -663,6 +787,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Metaprogramming</category>
   </library>
   <library>
     <key>multi_array</key>
@@ -677,6 +802,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Containers</category>
+    <category>Math</category>
   </library>
   <library>
     <key>multi_index</key>
@@ -692,6 +819,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Containers</category>
+    <category>Data</category>
   </library>
   <library>
     <key>numeric/conversion</key>
@@ -706,6 +835,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Math</category>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>numeric/interval</key>
@@ -721,6 +852,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Math</category>
   </library>
   <library>
     <key>numeric/ublas</key>
@@ -735,6 +867,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Math</category>
   </library>
   <library>
     <key>optional</key>
@@ -748,6 +881,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>parameter</key>
@@ -762,6 +896,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Programming</category>
   </library>
   <library>
     <key>pool</key>
@@ -774,6 +909,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Memory</category>
   </library>
   <library>
     <key>preprocessor</key>
@@ -787,6 +923,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Preprocessor</category>
   </library>
   <library>
     <key>program_options</key>
@@ -802,6 +939,8 @@
     <std-tr1>false</std-tr1>
     <header-only>false</header-only>
     <autolink>true</autolink>
+    <category>IO</category>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>property_map</key>
@@ -816,6 +955,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Containers</category>
+    <category>Generic</category>
   </library>
   <library>
     <key>proto</key>
@@ -828,6 +969,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Metaprogramming</category>
   </library>
   <library>
     <key>ptr_container</key>
@@ -842,6 +984,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Containers</category>
+    <category>Data</category>
   </library>
   <library>
     <key>python</key>
@@ -858,6 +1002,7 @@
     <std-tr1>false</std-tr1>
     <header-only>false</header-only>
     <autolink>false</autolink>
+    <category>Inter-language</category>
   </library>
   <library>
     <key>random</key>
@@ -871,6 +1016,7 @@
     <std-tr1>true</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Math</category>
   </library>
   <library>
     <key>range</key>
@@ -884,6 +1030,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Algorithms</category>
   </library>
   <library>
     <key>rational</key>
@@ -896,6 +1043,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Math</category>
   </library>
   <library>
     <key>regex</key>
@@ -908,6 +1056,7 @@
     <std-tr1>true</std-tr1>
     <header-only>false</header-only>
     <autolink>true</autolink>
+    <category>String</category>
   </library>
   <library>
     <key>serialization</key>
@@ -922,6 +1071,7 @@
     <std-tr1>false</std-tr1>
     <header-only>false</header-only>
     <autolink>true</autolink>
+    <category>IO</category>
   </library>
   <library>
     <key>signals</key>
@@ -935,6 +1085,7 @@
     <std-tr1>false</std-tr1>
     <header-only>false</header-only>
     <autolink>true</autolink>
+    <category>Function-objects</category>
   </library>
   <library>
     <key>smart_ptr</key>
@@ -948,6 +1099,7 @@
     <std-tr1>true</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Memory</category>
   </library>
   <library>
     <key>static_assert</key>
@@ -961,6 +1113,9 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Generic</category>
+    <category>Metaprogramming</category>
+    <category>Correctness</category>
   </library>
   <library>
     <key>spirit</key>
@@ -974,6 +1129,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>String</category>
+    <category>Parsing</category>
   </library>
   <library>
     <key>statechart</key>
@@ -988,6 +1145,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>system</key>
@@ -1001,6 +1159,7 @@
     <std-tr1>false</std-tr1>
     <header-only>false</header-only>
     <autolink>true</autolink>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>test</key>
@@ -1014,6 +1173,7 @@
     <std-tr1>false</std-tr1>
     <header-only>false</header-only>
     <autolink>true</autolink>
+    <category>Correctness</category>
   </library>
   <library>
     <key>thread</key>
@@ -1026,6 +1186,7 @@
     <std-tr1>false</std-tr1>
     <header-only>false</header-only>
     <autolink>true</autolink>
+    <category>Concurrent</category>
   </library>
   <library>
     <key>timer</key>
@@ -1039,6 +1200,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>tokenizer</key>
@@ -1052,6 +1214,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>String</category>
+    <category>Iterators</category>
   </library>
   <library>
     <key>tr1</key>
@@ -1070,6 +1234,7 @@
     <std-tr1>true</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>tuple</key>
@@ -1084,6 +1249,7 @@
     <std-tr1>true</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Data</category>
   </library>
   <library>
     <key>type_traits</key>
@@ -1097,6 +1263,8 @@
     <std-tr1>true</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Generic</category>
+    <category>Metaprogramming</category>
   </library>
   <library>
     <key>typeof</key>
@@ -1109,6 +1277,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>units</key>
@@ -1121,6 +1290,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>unordered</key>
@@ -1133,6 +1303,7 @@
     <std-tr1>true</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Containers</category>
   </library>
   <library>
     <key>utility</key>
@@ -1147,6 +1318,10 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Algorithms</category>
+    <category>Function-objects</category>
+    <category>Memory</category>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>utility/call_traits</key>
@@ -1160,6 +1335,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Generic</category>
   </library>
   <library>
     <key>utility/compressed_pair</key>
@@ -1172,6 +1348,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Data</category>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>utility/enable_if</key>
@@ -1186,6 +1364,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Generic</category>
   </library>
   <library>
     <key>utility/in_place_factories</key>
@@ -1200,6 +1379,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Generic</category>
   </library>
   <library>
     <key>utility/operators</key>
@@ -1213,6 +1393,9 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Iterators</category>
+    <category>Generic</category>
+    <category>Math</category>
   </library>
   <library>
     <key>utility/value_initialized</key>
@@ -1226,6 +1409,7 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Miscellaneous</category>
   </library>
   <library>
     <key>variant</key>
@@ -1239,6 +1423,8 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>Containers</category>
+    <category>Data</category>
   </library>
   <library>
     <key>wave</key>
@@ -1254,6 +1440,7 @@
     <std-tr1>false</std-tr1>
     <header-only>false</header-only>
     <autolink>true</autolink>
+    <category>String</category>
   </library>
   <library>
     <key>xpressive</key>
@@ -1269,5 +1456,6 @@
     <std-tr1>false</std-tr1>
     <header-only>true</header-only>
     <autolink>false</autolink>
+    <category>String</category>
   </library>
 </boost>
Modified: website/public_html/beta/style/css_0/section-doc.css
==============================================================================
--- website/public_html/beta/style/css_0/section-doc.css	(original)
+++ website/public_html/beta/style/css_0/section-doc.css	2008-11-24 13:35:36 EST (Mon, 24 Nov 2008)
@@ -3,6 +3,23 @@
   Distributed under the Boost Software License, Version 1.0.
   (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
 */
+/* Library list options. */
+
+#content #options {
+    padding-left: 6em;
+}
+#content #options .label {
+    float: left;
+    display: inline;
+    margin-left: -6em;
+    width: 6em;
+    padding: 0.5em 0;
+    text-align: right;
+}
+#content #options ul.menu li span {
+    font-weight: bold;
+}
+
 /* Heading, title and logo. */
 li#doc-section-tab {
   background: #FFFFFF !important;