$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: daniel_james_at_[hidden]
Date: 2008-01-07 14:46:28
Author: danieljames
Date: 2008-01-07 14:46:27 EST (Mon, 07 Jan 2008)
New Revision: 42576
URL: http://svn.boost.org/trac/boost/changeset/42576
Log:
Add support for multiple copyrights in the library info.
Text files modified: 
   trunk/tools/quickbook/detail/actions.cpp       |    30 +++++++++++++++++++-----------          
   trunk/tools/quickbook/detail/actions.hpp       |    12 ++++++++++++                            
   trunk/tools/quickbook/detail/actions_class.cpp |     3 +--                                     
   trunk/tools/quickbook/detail/actions_class.hpp |     4 ++--                                    
   trunk/tools/quickbook/doc_info.hpp             |     9 +++++----                               
   5 files changed, 39 insertions(+), 19 deletions(-)
Modified: trunk/tools/quickbook/detail/actions.cpp
==============================================================================
--- trunk/tools/quickbook/detail/actions.cpp	(original)
+++ trunk/tools/quickbook/detail/actions.cpp	2008-01-07 14:46:27 EST (Mon, 07 Jan 2008)
@@ -1096,6 +1096,21 @@
             << "      </author>\n";
     }
 
+    void xml_copyright::operator()(std::pair<std::vector<std::string>, std::string> const& copyright) const
+    {
+        out << "\n" << "    <copyright>\n";
+
+        for_each(
+            copyright.first.begin()
+          , copyright.first.end()
+          , xml_year(out));
+
+        out << "      <holder>" << copyright.second << "</holder>\n"
+            << "    </copyright>\n"
+            << "\n"
+        ;
+    }
+
     void xml_year::operator()(std::string const &year) const
     {
         out << "      <year>" << year << "</year>\n";
@@ -1170,19 +1185,12 @@
             out << "    </authorgroup>\n";
         }
 
-        if (!actions.doc_copyright_holder.empty())
+        if (!actions.doc_copyrights.empty())
         {
-            out << "\n" << "    <copyright>\n";
-
             for_each(
-                actions.doc_copyright_years.begin()
-              , actions.doc_copyright_years.end()
-              , xml_year(out));
-
-            out << "      <holder>" << actions.doc_copyright_holder << "</holder>\n"
-                << "    </copyright>\n"
-                << "\n"
-            ;
+                actions.doc_copyrights.begin()
+              , actions.doc_copyrights.end()
+              , xml_copyright(out));
         }
 
         if (qbk_version_n < 103)
Modified: trunk/tools/quickbook/detail/actions.hpp
==============================================================================
--- trunk/tools/quickbook/detail/actions.hpp	(original)
+++ trunk/tools/quickbook/detail/actions.hpp	2008-01-07 14:46:27 EST (Mon, 07 Jan 2008)
@@ -743,6 +743,18 @@
         collector& out;
     };
 
+    struct xml_copyright
+    {
+        // Handles xml copyright
+
+        xml_copyright(collector& out)
+            : out(out) {}
+
+        void operator()(std::pair<std::vector<std::string>, std::string> const ©right) const;
+
+        collector& out;
+    };
+
     void pre(collector& out, quickbook::actions& actions, bool ignore_docinfo = false);
     void post(collector& out, quickbook::actions& actions, bool ignore_docinfo = false);
 
Modified: trunk/tools/quickbook/detail/actions_class.cpp
==============================================================================
--- trunk/tools/quickbook/detail/actions_class.cpp	(original)
+++ trunk/tools/quickbook/detail/actions_class.cpp	2008-01-07 14:46:27 EST (Mon, 07 Jan 2008)
@@ -24,8 +24,7 @@
         , doc_version()
         , doc_id()
         , doc_dirname()
-        , doc_copyright_years()
-        , doc_copyright_holder()
+        , doc_copyrights()
         , doc_purpose()
         , doc_category()
         , doc_authors()
Modified: trunk/tools/quickbook/detail/actions_class.hpp
==============================================================================
--- trunk/tools/quickbook/detail/actions_class.hpp	(original)
+++ trunk/tools/quickbook/detail/actions_class.hpp	2008-01-07 14:46:27 EST (Mon, 07 Jan 2008)
@@ -28,6 +28,7 @@
 
         typedef std::vector<std::string> string_list;
         typedef std::vector<std::pair<std::string, std::string> > author_list;
+        typedef std::vector<std::pair<string_list, std::string> > copyright_list;
         typedef std::pair<char, int> mark_type;
         static int const max_template_depth = 100;
 
@@ -37,8 +38,7 @@
         std::string             doc_version;
         std::string             doc_id;
         std::string             doc_dirname;
-        string_list             doc_copyright_years;
-        std::string             doc_copyright_holder;
+        copyright_list          doc_copyrights;
         std::string             doc_purpose;
         std::string             doc_category;
         author_list             doc_authors;
Modified: trunk/tools/quickbook/doc_info.hpp
==============================================================================
--- trunk/tools/quickbook/doc_info.hpp	(original)
+++ trunk/tools/quickbook/doc_info.hpp	2008-01-07 14:46:27 EST (Mon, 07 Jan 2008)
@@ -66,7 +66,7 @@
                               doc_version
                             | doc_id
                             | doc_dirname
-                            | doc_copyright
+                            | doc_copyright         [push_back_a(actions.doc_copyrights, copyright)]
                             | doc_purpose           [actions.extract_doc_purpose]
                             | doc_category
                             | doc_authors
@@ -103,12 +103,12 @@
                     ;
 
                 doc_copyright =
-                        "copyright" >> hard_space
-                    >> +( repeat_p(4)[digit_p]      [push_back_a(actions.doc_copyright_years)]
+                        "copyright" >> hard_space   [clear_a(copyright.first)]
+                    >> +( repeat_p(4)[digit_p]      [push_back_a(copyright.first)]
                           >> space
                         )
                     >> space
-                    >> (*(anychar_p - ']'))         [assign_a(actions.doc_copyright_holder)]
+                    >> (*(anychar_p - ']'))         [assign_a(copyright.second)]
                     ;
 
                 doc_purpose =
@@ -178,6 +178,7 @@
 
             bool unused;
             std::pair<std::string, std::string> name;
+            std::pair<std::vector<std::string>, std::string> copyright;
             rule<Scanner>   doc_info, doc_title, doc_version, doc_id, doc_dirname,
                             doc_copyright, doc_purpose,doc_category, doc_authors,
                             doc_author, comment, space, hard_space, doc_license,