|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r51662 - in trunk: doc libs/signals2/doc libs/signals2/doc/snippets
From: fmhess_at_[hidden]
Date: 2009-03-09 15:24:32
Author: fmhess
Date: 2009-03-09 15:24:31 EDT (Mon, 09 Mar 2009)
New Revision: 51662
URL: http://svn.boost.org/trac/boost/changeset/51662
Log:
Tweaked generation of Signals2 code snippets a bit.
Added:
trunk/libs/signals2/doc/snippet-extractor.jam (contents, props changed)
- copied, changed from r51658, /trunk/libs/signals2/doc/snippets/snippet-extractor.jam
trunk/libs/signals2/doc/snippet_extractor.cpp (contents, props changed)
- copied, changed from r51658, /trunk/libs/signals2/doc/snippets/snippet_extractor.cpp
Removed:
trunk/libs/signals2/doc/snippets/
Text files modified:
trunk/doc/Jamfile.v2 | 3
trunk/libs/signals2/doc/Jamfile.v2 | 14 ++++
trunk/libs/signals2/doc/snippet-extractor.jam | 4
trunk/libs/signals2/doc/snippet_extractor.cpp | 118 ++++++++++++++++++++-------------------
trunk/libs/signals2/doc/tutorial.xml | 108 ++++++++++++++++++------------------
5 files changed, 132 insertions(+), 115 deletions(-)
Modified: trunk/doc/Jamfile.v2
==============================================================================
--- trunk/doc/Jamfile.v2 (original)
+++ trunk/doc/Jamfile.v2 2009-03-09 15:24:31 EDT (Mon, 09 Mar 2009)
@@ -46,7 +46,7 @@
<dependency>../libs/units/doc//units
<dependency>../libs/unordered/doc//unordered
<dependency>../libs/thread/doc//thread
- <dependency>../libs/signals2/doc/snippets//
+ <dependency>../libs/signals2/doc//hello_world_def_code_snippet.xml
## Add path references to the QuickBook generated docs...
@@ -67,6 +67,7 @@
<implicit-dependency>../libs/units/doc//units
<implicit-dependency>../libs/unordered/doc//unordered
<implicit-dependency>../libs/thread/doc//thread
+ <implicit-dependency>../libs/signals2/doc//hello_world_def_code_snippet.xml
<xsl:param>boost.libraries=../../libs/libraries.htm
Modified: trunk/libs/signals2/doc/Jamfile.v2
==============================================================================
--- trunk/libs/signals2/doc/Jamfile.v2 (original)
+++ trunk/libs/signals2/doc/Jamfile.v2 2009-03-09 15:24:31 EDT (Mon, 09 Mar 2009)
@@ -5,7 +5,9 @@
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
boostbook standalone : signals.xml :
- <dependency>./snippets//
+ <dependency>hello_world_def_code_snippet.xml
+ <implicit-dependency>hello_world_def_code_snippet.xml
+
<xsl:param>html.stylesheet=../../../../doc/html/boostbook.css
<xsl:param>boost.root=../../../..
<xsl:param>boost.libraries=../../../libraries.htm
@@ -21,3 +23,13 @@
# <xsl:param>boost.compact.function=0
# <xsl:param>boost.compact.enum=0
;
+
+import snippet-extractor ;
+
+exe snippet_extractor : snippet_extractor.cpp ;
+
+make hello_world_def_code_snippet.xml
+ : [ glob ../example/*.cpp ]
+ : snippet-extractor.extract-snippets
+ : <extractor-command>.//snippet_extractor
+ ;
Copied: trunk/libs/signals2/doc/snippet-extractor.jam (from r51658, /trunk/libs/signals2/doc/snippets/snippet-extractor.jam)
==============================================================================
--- /trunk/libs/signals2/doc/snippets/snippet-extractor.jam (original)
+++ trunk/libs/signals2/doc/snippet-extractor.jam 2009-03-09 15:24:31 EDT (Mon, 09 Mar 2009)
@@ -1,4 +1,4 @@
-# Boost.Signals2 Library
+# Boost.Signals2 Library
# Copyright Frank Mori Hess 2009.
@@ -17,7 +17,7 @@
rule extract-snippets ( target : sources * : properties * )
{
- DEPENDS $(target) : [ on $(target) return $(EXTRACTOR_COMMAND) ] ;
+ DEPENDS $(target) : [ on $(target) return $(EXTRACTOR-COMMAND) ] ;
}
actions extract-snippets bind EXTRACTOR-COMMAND
{
Copied: trunk/libs/signals2/doc/snippet_extractor.cpp (from r51658, /trunk/libs/signals2/doc/snippets/snippet_extractor.cpp)
==============================================================================
--- /trunk/libs/signals2/doc/snippets/snippet_extractor.cpp (original)
+++ trunk/libs/signals2/doc/snippet_extractor.cpp 2009-03-09 15:24:31 EDT (Mon, 09 Mar 2009)
@@ -15,61 +15,65 @@
int main(int argc, const char *argv[])
{
- if(argc < 3)
- {
- std::cerr << "Too few arguments: need output directory and input file name(s).\n";
- return -1;
- }
- static const std::string output_directory = argv[1];
- static const int num_files = argc - 2;
- int i;
- for(i = 0; i < num_files; ++i)
- {
- const std::string file_name = argv[2 + i];
- std::cout << "opening file: " << file_name << std::endl;
- std::ifstream infile(file_name.c_str());
- bool inside_snippet = false;
- std::ofstream snippet_out_file;
- while(infile.good())
- {
- std::string line;
- getline(infile, line);
- if(infile.bad()) break;
- if(inside_snippet)
- {
- size_t snippet_end_pos = line.find("//]");
- if(snippet_end_pos == std::string::npos)
- {
- snippet_out_file << line << "\n";
- }else
- {
- inside_snippet = false;
- std::cout << "done.\n";
- continue;
- }
- }else
- {
- size_t snippet_start_pos = line.find("//[");
- if(snippet_start_pos == std::string::npos)
- {
- continue;
- }else
- {
- inside_snippet = true;
- std::string snippet_name = line.substr(snippet_start_pos + 3);
- std::istringstream snippet_stream(snippet_name);
- snippet_stream >> snippet_name;
- if(snippet_name == "")
- {
- throw std::runtime_error("failed to obtain snippet name");
- }
- snippet_out_file.close();
- snippet_out_file.open(std::string(output_directory + "/" + snippet_name + ".txt").c_str());
- std::cout << "processing snippet \"" << snippet_name << "\"... ";
- continue;
- }
- }
- }
- }
- return 0;
+ if(argc < 3)
+ {
+ std::cerr << "Too few arguments: need output directory and input file name(s).\n";
+ return -1;
+ }
+ static const std::string output_directory = argv[1];
+ static const int num_files = argc - 2;
+ int i;
+ for(i = 0; i < num_files; ++i)
+ {
+ const std::string file_name = argv[2 + i];
+ std::cout << "opening file: " << file_name << std::endl;
+ std::ifstream infile(file_name.c_str());
+ bool inside_snippet = false;
+ std::ofstream snippet_out_file;
+ while(infile.good())
+ {
+ std::string line;
+ getline(infile, line);
+ if(infile.bad()) break;
+ if(inside_snippet)
+ {
+ size_t snippet_end_pos = line.find("//]");
+ if(snippet_end_pos == std::string::npos)
+ {
+ snippet_out_file << line << "\n";
+ }else
+ {
+ snippet_out_file << "]]></code>";
+ inside_snippet = false;
+ std::cout << "done.\n";
+ continue;
+ }
+ }else
+ {
+ size_t snippet_start_pos = line.find("//[");
+ if(snippet_start_pos == std::string::npos)
+ {
+ continue;
+ }else
+ {
+ inside_snippet = true;
+ std::string snippet_name = line.substr(snippet_start_pos + 3);
+ std::istringstream snippet_stream(snippet_name);
+ snippet_stream >> snippet_name;
+ if(snippet_name == "")
+ {
+ throw std::runtime_error("failed to obtain snippet name");
+ }
+ snippet_out_file.close();
+ snippet_out_file.open(std::string(output_directory + "/" + snippet_name + ".xml").c_str());
+ snippet_out_file << "<!-- Code snippet \"" << snippet_name <<
+ "\" extracted from \"" << file_name << "\" by snippet_extractor.\n" <<
+ "--><code><![CDATA[";
+ std::cout << "processing snippet \"" << snippet_name << "\"... ";
+ continue;
+ }
+ }
+ }
+ }
+ return 0;
}
Modified: trunk/libs/signals2/doc/tutorial.xml
==============================================================================
--- trunk/libs/signals2/doc/tutorial.xml (original)
+++ trunk/libs/signals2/doc/tutorial.xml 2009-03-09 15:24:31 EDT (Mon, 09 Mar 2009)
@@ -58,8 +58,8 @@
<code>sig</code> like a function to call the slots, which in turns
invokes <code>HelloWorld::operator()</code> to print "Hello,
World!".</para>
-<programlisting><xi:include href="./snippets/hello_world_def_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="hello_world_def_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<informaltable>
<tgroup cols="2" align="left">
<thead>
@@ -71,8 +71,8 @@
<tbody>
<row>
<entry>
-<programlisting><xi:include href="./snippets/hello_world_single_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="hello_world_single_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
</entry>
<entry>
<programlisting> // Signal with no arguments and a void return value
@@ -99,12 +99,12 @@
the work of printing "Hello, World!" into two completely separate
slots. The first slot will print "Hello" and may look like
this:</para>
-<programlisting><xi:include href="./snippets/hello_def_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="hello_def_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<para>The second slot will print ", World!" and a newline, to complete
the program. The second slot may look like this:</para>
-<programlisting><xi:include href="./snippets/world_def_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="world_def_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<para>Like in our previous example, we can create a signal
<code>sig</code> that takes no arguments and has a
<code>void</code> return value. This time, we connect both a
@@ -121,8 +121,8 @@
<tbody>
<row>
<entry>
-<programlisting><xi:include href="./snippets/hello_world_multi_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="hello_world_multi_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
</entry>
<entry>
<programlisting> boost::signals2::signal0<void> sig;
@@ -166,8 +166,8 @@
<tbody>
<row>
<entry>
-<programlisting><xi:include href="./snippets/hello_world_ordered_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="hello_world_ordered_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
</entry>
<entry>
<programlisting> boost::signals2::signal0<void> sig;
@@ -203,10 +203,10 @@
<para>
If we add a new slot to our example like this:
</para>
-<programlisting><xi:include href="./snippets/good_morning_def_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
-<programlisting><xi:include href="./snippets/hello_world_ordered_invoke_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="good_morning_def_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
+<programlisting><xi:include href="hello_world_ordered_invoke_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<para>... we will get the result we wanted:</para>
<programlisting>
Hello, World!
@@ -225,8 +225,8 @@
<code>float</code> arguments to its slots. Then we'll create a few
slots that print the results of various arithmetic operations on
these values.</para>
-<programlisting><xi:include href="./snippets/slot_arguments_slot_defs_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="slot_arguments_slot_defs_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<informaltable>
<tgroup cols="2" align="left">
<thead>
@@ -238,8 +238,8 @@
<tbody>
<row>
<entry>
-<programlisting><xi:include href="./snippets/slot_arguments_main_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="slot_arguments_main_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
</entry>
<entry>
<programlisting> boost::signals2::signal2<void, float, float> sig;
@@ -288,8 +288,8 @@
slightly so that the slots all return the results of computing the
product, quotient, sum, or difference. Then the signal itself can
return a value based on these results to be printed:</para>
-<programlisting><xi:include href="./snippets/signal_return_value_slot_defs_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="signal_return_value_slot_defs_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<informaltable>
<tgroup cols="2" align="left">
<thead>
@@ -310,8 +310,8 @@
</tbody>
</tgroup>
</informaltable>
-<programlisting><xi:include href="./snippets/signal_return_value_main_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="signal_return_value_main_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<para>This example program will output <code>2</code>. This is because the
default behavior of a signal that has a return type
@@ -324,8 +324,8 @@
<para>A more interesting signal result would be the maximum of the
values returned by any slot. To do this, we create a custom
combiner that looks like this:</para>
-<programlisting><xi:include href="./snippets/custom_combiners_maximum_def_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="custom_combiners_maximum_def_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<para>The <code>maximum</code> class template acts as a function
object. Its result type is given by its template parameter, and
this is the type it expects to be computing the maximum based on
@@ -368,8 +368,8 @@
<para>Now we can connect slots that perform arithmetic functions and
use the signal:</para>
-<programlisting><xi:include href="./snippets/custom_combiners_maximum_usage_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="custom_combiners_maximum_usage_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<para>The output of this program will be <code>15</code>, because
regardless of the order in which the slots are connected, the product
of 5 and 3 will be larger than the quotient, sum, or
@@ -377,8 +377,8 @@
<para>In other cases we might want to return all of the values
computed by the slots together, in one large data structure. This
is easily done with a different combiner:</para>
-<programlisting><xi:include href="./snippets/custom_combiners_aggregate_values_def_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="custom_combiners_aggregate_values_def_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<para>
Again, we can create a signal with this new combiner:
</para>
@@ -406,8 +406,8 @@
</tbody>
</tgroup>
</informaltable>
-<programlisting><xi:include href="./snippets/custom_combiners_aggregate_values_usage_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="custom_combiners_aggregate_values_usage_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<para>The output of this program will contain 15, 8, 1.6667, and 2. It
is interesting here that
the first template argument for the <code>signal</code> class,
@@ -465,8 +465,8 @@
called. Each call to the signal's <code>connect()</code> method
returns a connection object, which can be used to determine if the
connection still exists or to disconnect the signal and slot.</para>
-<programlisting><xi:include href="./snippets/disconnect_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="disconnect_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
</section>
<section><title>Blocking Slots (Beginner)</title>
@@ -485,8 +485,8 @@
Here is an example of
blocking/unblocking slots:</para>
-<programlisting><xi:include href="./snippets/block_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="block_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
</section>
@@ -496,8 +496,8 @@
the <code>scoped_connection</code> class goes out of scope. This
ability is useful when a connection need only be temporary,
e.g.,</para>
-<programlisting><xi:include href="./snippets/scoped_connection_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="scoped_connection_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<para>
Note, attempts to initialize a scoped_connection with the assignment syntax
@@ -526,8 +526,8 @@
operator. For instance:
</para>
-<programlisting><xi:include href="./snippets/disconnect_by_slot_def_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="disconnect_by_slot_def_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<informaltable>
<tgroup cols="2" align="left">
<thead>
@@ -550,8 +550,8 @@
</informaltable>
</section>
-<programlisting><xi:include href="./snippets/disconnect_by_slot_usage_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="disconnect_by_slot_usage_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<section id="signals2.tutorial.connection-management"><title>Automatic Connection Management (Intermediate)</title>
<para>Boost.Signals2 can automatically track the lifetime of objects
@@ -734,11 +734,11 @@
<code>slot_type</code> for each particular signal type and any
function object compatible with the signature of the signal can be
passed to a <code>slot_type</code> parameter. For instance:</para>
-<programlisting><xi:include href="./snippets/passing_slots_defs_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<programlisting><xi:include href="passing_slots_defs_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<programlisting>
-<xi:include href="./snippets/passing_slots_usage_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+<xi:include href="passing_slots_usage_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<para>The <code>doOnClick</code> method is now functionally equivalent
to the <code>connect</code> method of the <code>onClick</code>
@@ -757,8 +757,8 @@
that it stores a single signal to which all of the views will be
connected.</para>
- <programlisting><xi:include href="./snippets/document_def_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+ <programlisting><xi:include href="document_def_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<para>
Next, we can begin to define views. The
@@ -766,15 +766,15 @@
document text.
</para>
- <programlisting><xi:include href="./snippets/text_view_def_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+ <programlisting><xi:include href="text_view_def_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<para>Alternatively, we can provide a view of the document
translated into hex values using the <code>HexView</code>
view:</para>
- <programlisting><xi:include href="./snippets/hex_view_def_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+ <programlisting><xi:include href="hex_view_def_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<para>
To tie the example together, here is a
@@ -782,8 +782,8 @@
modifies the document:
</para>
- <programlisting><xi:include href="./snippets/document_view_main_code_snippet.txt"
- xmlns:xi="http://www.w3.org/2001/XInclude" parse="text"/></programlisting>
+ <programlisting><xi:include href="document_view_main_code_snippet.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml"/></programlisting>
<para>The complete example source, contributed by Keith MacDonald,
is available in the <link linkend="signals2.examples.document-view">examples</link> section.
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk