Update of /cvsroot/boost/boost/libs/asio/doc
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv11449

Modified Files:
        reference.qbk reference.xsl 
Log Message:
Ensure friend functions are included.


Index: reference.qbk
===================================================================
RCS file: /cvsroot/boost/boost/libs/asio/doc/reference.qbk,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- reference.qbk       16 May 2007 14:35:08 -0000      1.9
+++ reference.qbk       19 May 2007 06:19:01 -0000      1.10
@@ -20915,8 +20915,50 @@
   
 ]
 
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link boost_asio.reference.const_buffer.buffer_cast_helper 
[*buffer_cast_helper]]]
+    []
+  ]
+  
+  [
+    [[link boost_asio.reference.const_buffer.buffer_size_helper 
[*buffer_size_helper]]]
+    []
+  ]
+  
+]
+
 The const_buffer class provides a safe representation of a buffer that cannot 
be modified. It does not own the underlying data, and so is cheap to copy or 
assign. 
 
+
+[section:buffer_cast_helper const_buffer::buffer_cast_helper]
+
+
+
+  friend const void * buffer_cast_helper(
+      const const_buffer & b);
+
+
+
+[endsect]
+
+
+
+[section:buffer_size_helper const_buffer::buffer_size_helper]
+
+
+
+  friend std::size_t buffer_size_helper(
+      const const_buffer & b);
+
+
+
+[endsect]
+
+
 [section:const_buffer const_buffer::const_buffer]
 
 Construct an empty buffer. 
@@ -21092,6 +21134,22 @@
   
 ]
 
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link boost_asio.reference.const_buffer.buffer_cast_helper 
[*buffer_cast_helper]]]
+    []
+  ]
+  
+  [
+    [[link boost_asio.reference.const_buffer.buffer_size_helper 
[*buffer_size_helper]]]
+    []
+  ]
+  
+]
+
 
 
 [endsect]
@@ -23471,6 +23529,27 @@
   
 ]
 
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link boost_asio.reference.io_service.add_service [*add_service]]]
+    [Add a service object to the io_service. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.io_service.has_service [*has_service]]]
+    [Determine if an io_service contains a specified service type. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.io_service.use_service [*use_service]]]
+    [Obtain the service object corresponding to the given type. ]
+  ]
+  
+]
+
 The io_service class provides the core I/O functionality for users of the 
asynchronous I/O objects, including:
 
 
@@ -23493,6 +23572,53 @@
 
 
 
+[section:add_service io_service::add_service]
+
+Add a service object to the io_service. 
+
+  template<
+      typename Service>
+  friend void add_service(
+      io_service & ios,
+      Service * svc);
+
+
+This function is used to add a service to the io_service.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[ios][The io\_service object that owns the service.]]
+
+[[svc][The service object. On success, ownership of the service object is 
transferred to the io\_service. When the io\_service object is destroyed, it 
will destroy the service object by performing: 
+``
+   delete static_cast<io_service::service*>(svc) 
+
+``
+]]
+
+]
+
+[heading Exceptions]
+    
+
+[variablelist
+  
+[[boost::asio::service_already_exists][Thrown if a service of the given type 
is already present in the io\_service.]]
+
+[[boost::asio::invalid_service_owner][Thrown if the service's owning 
io\_service is not the io\_service object specified by the ios parameter. ]]
+
+]
+
+
+
+[endsect]
+
+
+
 [section:dispatch io_service::dispatch]
 
 Request the io_service to invoke the given handler. 
@@ -23527,6 +23653,38 @@
 [endsect]
 
 
+
+[section:has_service io_service::has_service]
+
+Determine if an io_service contains a specified service type. 
+
+  template<
+      typename Service>
+  friend bool has_service(
+      io_service & ios);
+
+
+This function is used to determine whether the io_service contains a service 
object corresponding to the given service type.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[ios][The io\_service object that owns the service.]]
+
+]
+
+[heading Return Value]
+      
+A boolean indicating whether the io_service contains the service. 
+
+
+
+[endsect]
+
+
 [section:io_service io_service::io_service]
 
 Constructor. 
@@ -23930,6 +24088,38 @@
 
 
 
+[section:use_service io_service::use_service]
+
+Obtain the service object corresponding to the given type. 
+
+  template<
+      typename Service>
+  friend Service & use_service(
+      io_service & ios);
+
+
+This function is used to locate a service object that corresponds to the given 
service type. If there is no existing implementation of the service, then the 
io_service will create a new instance of the service.
+
+
+[heading Parameters]
+    
+
+[variablelist
+  
+[[ios][The io\_service object that owns the service.]]
+
+]
+
+[heading Return Value]
+      
+The service interface implementing the specified service type. Ownership of 
the service interface is not transferred to the caller. 
+
+
+
+[endsect]
+
+
+
 [section:wrap io_service::wrap]
 
 Create a new handler that automatically dispatches the wrapped handler on the 
io_service. 
@@ -24470,6 +24660,27 @@
   
 ]
 
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link boost_asio.reference.ip__address.operator_not__eq_ [*operator!=]]]
+    [Compare two addresses for inequality. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__address.operator_lt_ [*operator<]]]
+    [Compare addresses for ordering. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__address.operator_eq__eq_ [*operator==]]]
+    [Compare two addresses for equality. ]
+  ]
+  
+]
+
 The 
 [link boost_asio.reference.ip__address ip::address] class provides the ability 
to use either IP version 4 or version 6 addresses.
 
@@ -24647,6 +24858,34 @@
 [endsect]
 
 
+
+[section:operator_not__eq_ ip::address::operator!=]
+
+Compare two addresses for inequality. 
+
+  friend bool operator!=(
+      const address & a1,
+      const address & a2);
+
+
+
+[endsect]
+
+
+
+[section:operator_lt_ ip::address::operator<]
+
+Compare addresses for ordering. 
+
+  friend bool operator<(
+      const address & a1,
+      const address & a2);
+
+
+
+[endsect]
+
+
 [section:operator_eq_ ip::address::operator=]
 
 Assign from another address. 
@@ -24701,6 +24940,20 @@
 
 [endsect]
 
+
+[section:operator_eq__eq_ ip::address::operator==]
+
+Compare two addresses for equality. 
+
+  friend bool operator==(
+      const address & a1,
+      const address & a2);
+
+
+
+[endsect]
+
+
 [section:to_string ip::address::to_string]
 
 Get the address as a string in dotted decimal format. 
@@ -24860,6 +25113,42 @@
   
 ]
 
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link boost_asio.reference.ip__address_v4.operator_not__eq_ 
[*operator!=]]]
+    [Compare two addresses for inequality. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__address_v4.operator_lt_ [*operator<]]]
+    [Compare addresses for ordering. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__address_v4.operator_lt__eq_ [*operator<=]]]
+    [Compare addresses for ordering. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__address_v4.operator_eq__eq_ [*operator==]]]
+    [Compare two addresses for equality. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__address_v4.operator_gt_ [*operator>]]]
+    [Compare addresses for ordering. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__address_v4.operator_gt__eq_ [*operator>=]]]
+    [Compare addresses for ordering. ]
+  ]
+  
+]
+
 The 
 [link boost_asio.reference.ip__address_v4 ip::address_v4] class provides the 
ability to use and manipulate IP version 4 addresses.
 
@@ -25150,6 +25439,48 @@
 
 
 
+[section:operator_not__eq_ ip::address_v4::operator!=]
+
+Compare two addresses for inequality. 
+
+  friend bool operator!=(
+      const address_v4 & a1,
+      const address_v4 & a2);
+
+
+
+[endsect]
+
+
+
+[section:operator_lt_ ip::address_v4::operator<]
+
+Compare addresses for ordering. 
+
+  friend bool operator<(
+      const address_v4 & a1,
+      const address_v4 & a2);
+
+
+
+[endsect]
+
+
+
+[section:operator_lt__eq_ ip::address_v4::operator<=]
+
+Compare addresses for ordering. 
+
+  friend bool operator<=(
+      const address_v4 & a1,
+      const address_v4 & a2);
+
+
+
+[endsect]
+
+
+
 [section:operator_eq_ ip::address_v4::operator=]
 
 Assign from another address. 
@@ -25163,6 +25494,48 @@
 
 
 
+[section:operator_eq__eq_ ip::address_v4::operator==]
+
+Compare two addresses for equality. 
+
+  friend bool operator==(
+      const address_v4 & a1,
+      const address_v4 & a2);
+
+
+
+[endsect]
+
+
+
+[section:operator_gt_ ip::address_v4::operator>]
+
+Compare addresses for ordering. 
+
+  friend bool operator>(
+      const address_v4 & a1,
+      const address_v4 & a2);
+
+
+
+[endsect]
+
+
+
+[section:operator_gt__eq_ ip::address_v4::operator>=]
+
+Compare addresses for ordering. 
+
+  friend bool operator>=(
+      const address_v4 & a1,
+      const address_v4 & a2);
+
+
+
+[endsect]
+
+
+
 [section:to_bytes ip::address_v4::to_bytes]
 
 Get the address in bytes. 
@@ -25366,6 +25739,42 @@
   
 ]
 
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link boost_asio.reference.ip__address_v6.operator_not__eq_ 
[*operator!=]]]
+    [Compare two addresses for inequality. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__address_v6.operator_lt_ [*operator<]]]
+    [Compare addresses for ordering. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__address_v6.operator_lt__eq_ [*operator<=]]]
+    [Compare addresses for ordering. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__address_v6.operator_eq__eq_ [*operator==]]]
+    [Compare two addresses for equality. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__address_v6.operator_gt_ [*operator>]]]
+    [Compare addresses for ordering. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__address_v6.operator_gt__eq_ [*operator>=]]]
+    [Compare addresses for ordering. ]
+  ]
+  
+]
+
 The 
 [link boost_asio.reference.ip__address_v6 ip::address_v6] class provides the 
ability to use and manipulate IP version 6 addresses.
 
@@ -25687,6 +26096,48 @@
 
 
 
+[section:operator_not__eq_ ip::address_v6::operator!=]
+
+Compare two addresses for inequality. 
+
+  friend bool operator!=(
+      const address_v6 & a1,
+      const address_v6 & a2);
+
+
+
+[endsect]
+
+
+
+[section:operator_lt_ ip::address_v6::operator<]
+
+Compare addresses for ordering. 
+
+  friend bool operator<(
+      const address_v6 & a1,
+      const address_v6 & a2);
+
+
+
+[endsect]
+
+
+
+[section:operator_lt__eq_ ip::address_v6::operator<=]
+
+Compare addresses for ordering. 
+
+  friend bool operator<=(
+      const address_v6 & a1,
+      const address_v6 & a2);
+
+
+
+[endsect]
+
+
+
 [section:operator_eq_ ip::address_v6::operator=]
 
 Assign from another address. 
@@ -25699,6 +26150,48 @@
 [endsect]
 
 
+
+[section:operator_eq__eq_ ip::address_v6::operator==]
+
+Compare two addresses for equality. 
+
+  friend bool operator==(
+      const address_v6 & a1,
+      const address_v6 & a2);
+
+
+
+[endsect]
+
+
+
+[section:operator_gt_ ip::address_v6::operator>]
+
+Compare addresses for ordering. 
+
+  friend bool operator>(
+      const address_v6 & a1,
+      const address_v6 & a2);
+
+
+
+[endsect]
+
+
+
+[section:operator_gt__eq_ ip::address_v6::operator>=]
+
+Compare addresses for ordering. 
+
+  friend bool operator>=(
+      const address_v6 & a1,
+      const address_v6 & a2);
+
+
+
+[endsect]
+
+
 [section:scope_id ip::address_v6::scope_id]
 
 The scope ID of the address. 
@@ -25915,6 +26408,27 @@
   
 ]
 
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link boost_asio.reference.ip__basic_endpoint.operator_not__eq_ 
[*operator!=]]]
+    [Compare two endpoints for inequality. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__basic_endpoint.operator_lt_ [*operator<]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__basic_endpoint.operator_eq__eq_ 
[*operator==]]]
+    [Compare two endpoints for equality. ]
+  ]
+  
+]
+
 The 
 [link boost_asio.reference.ip__basic_endpoint ip::basic_endpoint] class 
template describes an endpoint that may be associated with a particular socket.
 
@@ -26111,6 +26625,34 @@
 
 
 
+[section:operator_not__eq_ ip::basic_endpoint::operator!=]
+
+Compare two endpoints for inequality. 
+
+  friend bool operator!=(
+      const basic_endpoint< InternetProtocol > & e1,
+      const basic_endpoint< InternetProtocol > & e2);
+
+
+
+[endsect]
+
+
+
+[section:operator_lt_ ip::basic_endpoint::operator<]
+
+Compare endpoints for ordering. 
+
+  friend bool operator<(
+      const basic_endpoint< InternetProtocol > & e1,
+      const basic_endpoint< InternetProtocol > & e2);
+
+
+
+[endsect]
+
+
+
 [section:operator_eq_ ip::basic_endpoint::operator=]
 
 Assign from another endpoint. 
@@ -26123,6 +26665,20 @@
 [endsect]
 
 
+
+[section:operator_eq__eq_ ip::basic_endpoint::operator==]
+
+Compare two endpoints for equality. 
+
+  friend bool operator==(
+      const basic_endpoint< InternetProtocol > & e1,
+      const basic_endpoint< InternetProtocol > & e2);
+
+
+
+[endsect]
+
+
 [section:port ip::basic_endpoint::port]
 
 Get the port associated with the endpoint. The port number is always in the 
host's byte order. 
@@ -28216,6 +28772,22 @@
   
 ]
 
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link boost_asio.reference.ip__tcp.operator_not__eq_ [*operator!=]]]
+    [Compare two protocols for inequality. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__tcp.operator_eq__eq_ [*operator==]]]
+    [Compare two protocols for equality. ]
+  ]
+  
+]
+
 The 
 [link boost_asio.reference.ip__tcp ip::tcp] class contains flags necessary for 
TCP sockets.
 
@@ -28579,6 +29151,27 @@
   
 ]
 
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link boost_asio.reference.ip__basic_endpoint.operator_not__eq_ 
[*operator!=]]]
+    [Compare two endpoints for inequality. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__basic_endpoint.operator_lt_ [*operator<]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__basic_endpoint.operator_eq__eq_ 
[*operator==]]]
+    [Compare two endpoints for equality. ]
+  ]
+  
+]
+
 
 
 [endsect]
@@ -28676,6 +29269,34 @@
 
 
 
+[section:operator_not__eq_ ip::tcp::operator!=]
+
+Compare two protocols for inequality. 
+
+  friend bool operator!=(
+      const tcp & p1,
+      const tcp & p2);
+
+
+
+[endsect]
+
+
+
+[section:operator_eq__eq_ ip::tcp::operator==]
+
+Compare two protocols for equality. 
+
+  friend bool operator==(
+      const tcp & p1,
+      const tcp & p2);
+
+
+
+[endsect]
+
+
+
 [section:protocol ip::tcp::protocol]
 
 Obtain an identifier for the protocol. 
@@ -29357,6 +29978,22 @@
   
 ]
 
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link boost_asio.reference.ip__udp.operator_not__eq_ [*operator!=]]]
+    [Compare two protocols for inequality. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__udp.operator_eq__eq_ [*operator==]]]
+    [Compare two protocols for equality. ]
+  ]
+  
+]
+
 The 
 [link boost_asio.reference.ip__udp ip::udp] class contains flags necessary for 
UDP sockets.
 
@@ -29454,6 +30091,27 @@
   
 ]
 
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link boost_asio.reference.ip__basic_endpoint.operator_not__eq_ 
[*operator!=]]]
+    [Compare two endpoints for inequality. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__basic_endpoint.operator_lt_ [*operator<]]]
+    [Compare endpoints for ordering. ]
+  ]
+  
+  [
+    [[link boost_asio.reference.ip__basic_endpoint.operator_eq__eq_ 
[*operator==]]]
+    [Compare two endpoints for equality. ]
+  ]
+  
+]
+
 
 
 [endsect]
@@ -29472,6 +30130,34 @@
 
 
 
+[section:operator_not__eq_ ip::udp::operator!=]
+
+Compare two protocols for inequality. 
+
+  friend bool operator!=(
+      const udp & p1,
+      const udp & p2);
+
+
+
+[endsect]
+
+
+
+[section:operator_eq__eq_ ip::udp::operator==]
+
+Compare two protocols for equality. 
+
+  friend bool operator==(
+      const udp & p1,
+      const udp & p2);
+
+
+
+[endsect]
+
+
+
 [section:protocol ip::udp::protocol]
 
 Obtain an identifier for the protocol. 
@@ -30242,8 +30928,50 @@
   
 ]
 
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link boost_asio.reference.mutable_buffer.buffer_cast_helper 
[*buffer_cast_helper]]]
+    []
+  ]
+  
+  [
+    [[link boost_asio.reference.mutable_buffer.buffer_size_helper 
[*buffer_size_helper]]]
+    []
+  ]
+  
+]
+
 The mutable_buffer class provides a safe representation of a buffer that can 
be modified. It does not own the underlying data, and so is cheap to copy or 
assign. 
 
+
+[section:buffer_cast_helper mutable_buffer::buffer_cast_helper]
+
+
+
+  friend void * buffer_cast_helper(
+      const mutable_buffer & b);
+
+
+
+[endsect]
+
+
+
+[section:buffer_size_helper mutable_buffer::buffer_size_helper]
+
+
+
+  friend std::size_t buffer_size_helper(
+      const mutable_buffer & b);
+
+
+
+[endsect]
+
+
 [section:mutable_buffer mutable_buffer::mutable_buffer]
 
 Construct an empty buffer. 
@@ -30403,6 +31131,22 @@
   
 ]
 
+[heading Friends]
+[table
+  [[Name][Description]]
+
+  [
+    [[link boost_asio.reference.mutable_buffer.buffer_cast_helper 
[*buffer_cast_helper]]]
+    []
+  ]
+  
+  [
+    [[link boost_asio.reference.mutable_buffer.buffer_size_helper 
[*buffer_size_helper]]]
+    []
+  ]
+  
+]
+
 
 
 [endsect]
@@ -37182,7 +37926,7 @@
 [endsect]
 
 
-[section:time_traits__boost__posix_time__ptime__ time_traits< 
boost::posix_time::ptime >]
+[section:time_traits_lt__boost__posix_time__ptime__gt_ time_traits< 
boost::posix_time::ptime >]
 
 Time traits specialised for posix_time. 
 
@@ -37196,14 +37940,14 @@
 
   [
 
-    [[link 
boost_asio.reference.time_traits__boost__posix_time__ptime__.duration_type 
[*duration_type]]]
+    [[link 
boost_asio.reference.time_traits_lt__boost__posix_time__ptime__gt_.duration_type
 [*duration_type]]]
     [The duration type. ]
   
   ]
 
   [
 
-    [[link 
boost_asio.reference.time_traits__boost__posix_time__ptime__.time_type 
[*time_type]]]
+    [[link 
boost_asio.reference.time_traits_lt__boost__posix_time__ptime__gt_.time_type 
[*time_type]]]
     [The time type. ]
   
   ]
@@ -37215,27 +37959,27 @@
   [[Name][Description]]
 
   [
-    [[link boost_asio.reference.time_traits__boost__posix_time__ptime__.add 
[*add]]]
+    [[link 
boost_asio.reference.time_traits_lt__boost__posix_time__ptime__gt_.add [*add]]]
     [Add a duration to a time. ]
   ]
   
   [
-    [[link 
boost_asio.reference.time_traits__boost__posix_time__ptime__.less_than 
[*less_than]]]
+    [[link 
boost_asio.reference.time_traits_lt__boost__posix_time__ptime__gt_.less_than 
[*less_than]]]
     [Test whether one time is less than another. ]
   ]
   
   [
-    [[link boost_asio.reference.time_traits__boost__posix_time__ptime__.now 
[*now]]]
+    [[link 
boost_asio.reference.time_traits_lt__boost__posix_time__ptime__gt_.now [*now]]]
     [Get the current time. ]
   ]
   
   [
-    [[link 
boost_asio.reference.time_traits__boost__posix_time__ptime__.subtract 
[*subtract]]]
+    [[link 
boost_asio.reference.time_traits_lt__boost__posix_time__ptime__gt_.subtract 
[*subtract]]]
     [Subtract one time from another. ]
   ]
   
   [
-    [[link 
boost_asio.reference.time_traits__boost__posix_time__ptime__.to_posix_duration 
[*to_posix_duration]]]
+    [[link 
boost_asio.reference.time_traits_lt__boost__posix_time__ptime__gt_.to_posix_duration
 [*to_posix_duration]]]
     [Convert to POSIX duration type. ]
   ]
   

Index: reference.xsl
===================================================================
RCS file: /cvsroot/boost/boost/libs/asio/doc/reference.xsl,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- reference.xsl       16 May 2007 14:35:08 -0000      1.4
+++ reference.xsl       19 May 2007 06:19:01 -0000      1.5
@@ -149,18 +149,6 @@
          select="concat(substring-before($name, '::'), '__', 
substring-after($name, '::'))"/>
       </xsl:call-template>
     </xsl:when>
-    <xsl:when test="contains($name, '&lt;')">
-      <xsl:call-template name="make-id">
-        <xsl:with-param name="name"
-         select="concat(substring-before($name, '&lt;'), '_', 
substring-after($name, '&lt;'))"/>
-      </xsl:call-template>
-    </xsl:when>
-    <xsl:when test="contains($name, '&gt;')">
-      <xsl:call-template name="make-id">
-        <xsl:with-param name="name"
-         select="concat(substring-before($name, '&gt;'), '_', 
substring-after($name, '&gt;'))"/>
-      </xsl:call-template>
-    </xsl:when>
     <xsl:when test="contains($name, '=')">
       <xsl:call-template name="make-id">
         <xsl:with-param name="name"
@@ -604,6 +592,41 @@
 ]
 </xsl:if>
 
+<xsl:if test="count([EMAIL PROTECTED]'friend']/memberdef[not(type = 'friend 
class')]) &gt; 0">
+[heading Friends]
+[table
+  [[Name][Description]]
+<xsl:for-each select="[EMAIL PROTECTED]'friend']/memberdef[not(type = 'friend 
class')]" mode="class-table">
+  <xsl:sort select="name"/>
+  <xsl:variable name="name">
+    <xsl:value-of select="name"/>
+  </xsl:variable>
+  <xsl:variable name="id">
+    <xsl:call-template name="make-id">
+      <xsl:with-param name="name" select="$name"/>
+    </xsl:call-template>
+  </xsl:variable>
+  <xsl:variable name="doxygen-id">
+    <xsl:value-of select="@id"/>
+  </xsl:variable>
+  <xsl:variable name="overload-position">
+    <xsl:for-each select="../memberdef[name = $name]">
+      <xsl:if test="@id = $doxygen-id">
+        <xsl:value-of select="position()"/>
+      </xsl:if>
+    </xsl:for-each>
+  </xsl:variable>
+  <xsl:if test="$overload-position = 1">
+  [
+    [[link boost_asio.reference.<xsl:value-of 
select="$class-id"/>.<xsl:value-of select="$id"/>
+      <xsl:text> </xsl:text>[*<xsl:value-of select="$name"/>]]]
+    [<xsl:value-of select="briefdescription"/>]
+  ]
+  </xsl:if>
+</xsl:for-each>
+]
+</xsl:if>
+
 <xsl:if test="count([EMAIL PROTECTED]'public-attrib' or 
@kind='public-static-attrib']) > 0">
 [heading Data Members]
 [table
@@ -624,7 +647,7 @@
 <xsl:template name="class-members">
 <xsl:param name="class-name"/>
 <xsl:param name="class-id"/>
-<xsl:apply-templates select="[EMAIL PROTECTED]'public-type' or 
@kind='public-func' or @kind='public-static-func' or @kind='public-attrib' or 
@kind='public-static-attrib']/memberdef" mode="class-detail">
+<xsl:apply-templates select="[EMAIL PROTECTED]'public-type' or 
@kind='public-func' or @kind='public-static-func' or @kind='public-attrib' or 
@kind='public-static-attrib' or @kind='friend']/memberdef[not(type = 'friend 
class')]" mode="class-detail">
   <xsl:sort select="name"/>
   <xsl:with-param name="class-name" select="$class-name"/>
   <xsl:with-param name="class-id" select="$class-id"/>
@@ -711,6 +734,9 @@
     <xsl:when test="@kind='function'">
       <xsl:call-template name="function" mode="class-detail"/>
     </xsl:when>
+    <xsl:when test="@kind='friend'">
+      <xsl:call-template name="function" mode="class-detail"/>
+    </xsl:when>
   </xsl:choose>
 
 <xsl:text>


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs

Reply via email to