Socket: Add additional policy-dependency documentation to ClientSocketHandle
g0dil [Fri, 20 Jul 2007 10:50:02 +0000 (10:50 +0000)]
Correcly handle documentation in subdirectories

git-svn-id: https://svn.berlios.de/svnroot/repos/senf/trunk@328 270642c3-0616-0410-b53a-bc976706d245

Packets/DefaultBundle/Doxyfile
Packets/Doxyfile
Packets/MPEGDVBBundle/Doxyfile
Socket/ClientSocketHandle.hh
doclib/SConscript
doclib/senf.css

index 2e8aec2..c221a91 100644 (file)
@@ -1,6 +1,6 @@
 @INCLUDE         = "$(TOPDIR)/doclib/Doxyfile.global"
 
-PROJECT_NAME     = libPackets/DefaultBundle
+PROJECT_NAME     = DefaultBundle
 TAGFILES         = "$(TOPDIR)/Utils/doc/Utils.tag" "$(TOPDIR)/Packets/doc/Packets.tag"
 GENERATE_TAGFILE = doc/DefaultBundle.tag
 INPUT            = .
index 931a153..b9e5c08 100644 (file)
@@ -3,7 +3,6 @@
 PROJECT_NAME     = libPackets
 TAGFILES         = "$(TOPDIR)/Utils/doc/Utils.tag"
 GENERATE_TAGFILE = doc/Packets.tag
-#INPUT            = . DefaultBundle MPEG_DVBBundle
 INPUT            = .
 
-#EXAMPLE_PATH     = . DefaultBundle
+EXAMPLE_PATH     = . DefaultBundle
index 9e3a960..db2a469 100644 (file)
@@ -1,6 +1,6 @@
 @INCLUDE         = "$(TOPDIR)/doclib/Doxyfile.global"
 
-PROJECT_NAME     = libPackets/MPEGDVBBundle
+PROJECT_NAME     = MPEGDVBBundle
 TAGFILES         = "$(TOPDIR)/Utils/doc/Utils.tag" "$(TOPDIR)/Packets/doc/Packets.tag"
 GENERATE_TAGFILE = doc/MPEGDVBBundle.tag
 INPUT            = .
index 2b6f425..07f2069 100644 (file)
@@ -46,20 +46,23 @@ namespace senf {
 
         This class provides the client side policy interface of the socket
         abstraction. ClientSocketHandle defines the complete policy interface. It does not implement
-        any functionality itself however. All calls are forward to the following policy classes:
+        any functionality itself however. The following table shows, to which policy members each
+        group of ClientSocketHandle members is forwardd. The last collumn shows, on which other
+        policies this member-group depends <em>in the default policy classes</em>. If you define
+        your own policy classes, the dependencies are up to you.
 
         <table class="senf">
-        <tr><th>ClientSocketHandle member</th> <th>Policy member</th></tr>
-        <tr><td>read()</td>       <td>ReadPolicy::read (\ref senf::ReadPolicyBase)</td></tr>
-        <tr><td>readfrom()</td>   <td>ReadPolicy::readfrom (\ref senf::ReadPolicyBase)</td></tr>
-        <tr><td>write()</td>      <td>WritePolicy::write (\ref senf::WritePolicyBase)</td></tr>
-        <tr><td>writeto()</td>    <td>WritePolicy::writeto (\ref senf::WritePolicyBase)</td></tr>
-        <tr><td>connect()</td>    <td>AddressingPolicy::connect (\ref senf::AddressingPolicyBase)</td></tr>
-        <tr><td>bind()</td>       <td>AddressingPolicy::bind (\ref senf::AddressingPolicyBase)</td></tr>
-        <tr><td>peer()</td>       <td>AddressingPolicy::peer (\ref senf::AddressingPolicyBase)</td></tr>
-        <tr><td>local()</td>      <td>AddressingPolicy::local (\ref senf::AddressingPolicyBase)</td></tr>
-        <tr><td>rcvbuf()</td>     <td>BufferingPolicy::sndbuf (\ref senf::BufferingPolicyBase)</td></tr>
-        <tr><td>sndbuf()</td>     <td>BufferingPolicy::rcvbuf (\ref senf::BufferingPolicyBase)</td></tr>
+        <tr><th>ClientSocketHandle member</th> <th>Policy member</th> <th>Other policies</th></tr>
+        <tr><td>read()</td>       <td>ReadPolicy::read (\ref senf::ReadPolicyBase)</td>                  <td></td></tr>
+        <tr><td>readfrom()</td>   <td>ReadPolicy::readfrom (\ref senf::ReadPolicyBase)</td>              <td>UnconnectedCommunicationPolicy</td></tr>
+        <tr><td>write()</td>      <td>WritePolicy::write (\ref senf::WritePolicyBase)</td>               <td>ConnectedCommunicationPolicy</td></tr>
+        <tr><td>writeto()</td>    <td>WritePolicy::writeto (\ref senf::WritePolicyBase)</td>             <td>UnconnectedCommunicationPolicy</td></tr>
+        <tr><td>connect()</td>    <td>AddressingPolicy::connect (\ref senf::AddressingPolicyBase)</td>   <td></td></tr>
+        <tr><td>bind()</td>       <td>AddressingPolicy::bind (\ref senf::AddressingPolicyBase)</td>      <td></td></tr>
+        <tr><td>peer()</td>       <td>AddressingPolicy::peer (\ref senf::AddressingPolicyBase)</td>      <td></td></tr>
+        <tr><td>local()</td>      <td>AddressingPolicy::local (\ref senf::AddressingPolicyBase)</td>     <td></td></tr>
+        <tr><td>rcvbuf()</td>     <td>BufferingPolicy::sndbuf (\ref senf::BufferingPolicyBase)</td>      <td></td></tr>
+        <tr><td>sndbuf()</td>     <td>BufferingPolicy::rcvbuf (\ref senf::BufferingPolicyBase)</td>      <td></td></tr>
         </table>
 
         It is important to note, that not all members are always accessible. Which are depends on
index 61b7eba..e72656b 100644 (file)
@@ -8,16 +8,37 @@ import SENFSCons
 import yaptu
 
 def modules():
+    # Naja ... etwas rumgehackt aber was solls ...
     global EXTRA_MODULES
-    rv = []
+    mods = {}
     ix = len(env.Dir('#').abspath)+1
     ex = dict((env.Dir(p).abspath,True) for n,p in EXTRA_MODULES)
     for module in env.Alias('all_docs')[0].sources:
         if module.name != 'html.stamp' : continue 
         if not ex.get(module.dir.abspath):
-            rv.append(('lib%s' % module.dir.dir.dir.name, module.dir.abspath[ix:]))
-    rv.sort()
-    return [ (name, env.Dir(path).abspath[ix:]) for name,path in EXTRA_MODULES ] + rv
+            mods[module.dir.dir.dir.abspath] = [ module.dir.dir.dir.name, module.dir.abspath[ix:], 0 ]
+    rv = []
+    keys = mods.keys()
+    keys.sort()
+    for mod in keys:
+        i = 0
+        while i < len(rv):
+            if mod.startswith(rv[i] + '/'):
+                level = mods[rv[i]][2] + 1
+                i += 1
+                while i < len(rv) and mods[rv[i]][2] >= level:
+                    i += 1
+                rv[i:i] = [ mod ]
+                mods[mod][2] = level
+                break
+            i += 1
+        if i == len(rv):
+            rv.append(mod)
+    return [ (name, env.Dir(path).abspath[ix:], 0) for name,path in EXTRA_MODULES
+             ] + [ ( (((not mods[mod][2]) and 'lib') or '') + mods[mod][0],
+                     mods[mod][1],
+                     mods[mod][2])
+                   for mod in rv ]
 
 def indices():
     ix = len(env.Dir('#').abspath)+1
@@ -79,8 +100,8 @@ div.tabs ul li.$projectname a { background-color: #EDE497; }
   <div id="content2">
     <div class="tabs menu">
       <ul>
-{{      for name, path in modules():
-          <li class="${name}"><a href="@TOPDIR@/${path}/index.html">${name}</a></li>
+{{      for name, path, level in modules():
+          <li class="${name} level${level}"><a href="@TOPDIR@/${path}/index.html">${name}</a></li>
 }}
       </ul>
     </div>"""
index 4263f8f..2df0ed6 100644 (file)
@@ -190,6 +190,11 @@ div.tabs ul li a:hover, div.tabs ul li.current a {
         background-color: #EDE497;
 }
 
+div.tabs ul li.level1 a {
+        padding-left: 2em;
+        font-size: 90%;
+}
+
 #footer {
         clear: both;
         padding: 4px 10px 4px 142px;