From d52dae4cf529014045fb99ed4adf6854c7721bde Mon Sep 17 00:00:00 2001
From: g0dil <g0dil@wiback.org>
Date: Fri, 22 Dec 2006 08:59:56 +0000
Subject: [PATCH] Fix Doxygen builder file globbing Add MAXWIDTH support to
 Dia2Png builder Start Socket library documentation

---
 Packets/structure.dia            | Bin 3583 -> 3580 bytes
 Socket/FileHandle.hh             |   9 ----
 Socket/Mainpage.dox              |  90 +++++++++++++++++++++++++++++++
 Socket/SConscript                |   4 +-
 Socket/SocketLibrary-classes.dia | Bin 6244 -> 4339 bytes
 doclib/senf.css                  |  21 +++++++-
 senfscons/Dia2Png.py             |   6 ++-
 senfscons/Doxygen.py             |   6 +--
 8 files changed, 119 insertions(+), 17 deletions(-)
 create mode 100644 Socket/Mainpage.dox

diff --git a/Packets/structure.dia b/Packets/structure.dia
index d8685bf14473670647f7756005e68aeae59bea3a..f6ea11fe5968bc8b1d87ba7965db9210d7149a2f 100644
GIT binary patch
literal 3580
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

literal 3583
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

diff --git a/Socket/FileHandle.hh b/Socket/FileHandle.hh
index 963689d9b..d11f2eea4 100644
--- a/Socket/FileHandle.hh
+++ b/Socket/FileHandle.hh
@@ -20,15 +20,6 @@
 // Free Software Foundation, Inc.,
 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
-
-/** \mainpage The SENF Socket Library
-
-\section arch Overall Architecture
-
-\image html "../../SocketLibrary-classes.png" Class Diagram
-
- */
-
 #ifndef HH_FileHandle_
 #define HH_FileHandle_ 1
 
diff --git a/Socket/Mainpage.dox b/Socket/Mainpage.dox
new file mode 100644
index 000000000..09e881bbe
--- /dev/null
+++ b/Socket/Mainpage.dox
@@ -0,0 +1,90 @@
+/** \mainpage The SENF Socket Library
+
+    The Socket library provides a high level and object oriented
+    abstraction of the BSD socket API. The abstraction is based on
+    several concepts:
+
+    \li The basic visible interface is a handle object
+	(senf::FileHandle and it's derived classes)
+    \li The socket interface relies on a policy framework to configure
+	it's functionality
+    \li The rest of the socket API is accessible using a classic
+	inheritance hierarchy of protocol classes
+
+    The handle/body architecture provides automatic reference counted
+    management of socket instances, the policy framework provides
+    highly efficient access to the most important socket functions
+    (like reading and writing) and the inheritance hierarchy provides
+    convenient access to the multitude of special and protocol
+    dependent options.
+
+    \see \ref usage \n
+         \ref extend \n
+         \ref implementation
+ */
+
+/** \page usage Using the Socket Library
+
+    \section socket_handle The socket handle
+
+    Whenever you use the socket library, what you will be dealing with
+    are senf::FileHandle derived instances. The socket library relies
+    on reference counting to automatically manage the underlying
+    socket representation. This frees you of having to manage the
+    socket lifetime explicitly.
+    
+    \attention It is very important, to (almost) always pass the socket
+    handle <em>by value</em>. The socket handle is a very lightweight
+    class and designed to be used like an ordinary built-in type. This
+    is very important in combination with the policy interface.
+
+    \section policy_framework The policy framework
+
+    The policy framework conceptually implements a list of parallel
+    inheritance hierarchies each covering a specific interface aspect
+    of the socket handle. The socket handle itself only provides
+    minimal functionality. All further functionality is relayed to a
+    policy class, or more precisely, to a group of policy classes, one
+    for each policy axis. The policy axis are
+    
+    <dl>
+    <dt><em>addressingPolicy</em></dt>
+    <dd>configures, whether a socket is
+    addressable and if so, configures the address type</dd>
+    
+    <dt><em>framingPolicy</em></dt>
+    <dd>configures the type of framing the socket provides: either no
+    framing providing a simple i/o stream or packet framing</dd>
+    
+    <dt><em>communicationPolicy</em></dt>
+    <dd>configures,if and how the communication partner is
+    selected</dd> 
+    
+    <dt><em>readPolicy</em></dt>
+    <dd>configures the readability of the socket</dd>
+    
+    <dt><em>writePolicy</em></dt>
+    <dd>configures the writability of the socket</dd>
+    
+    <dt><em>bufferingPolicy</em></dt>
+    <dd>configures, if and how buffering is configured for a socket</dd>
+    </dl>
+
+ */
+
+/** \page extend Extending the Library
+ */
+
+/** \page implementation Implementation notes
+
+    \image html "../../SocketLibrary-classes.png" Class hierarchy
+ */
+
+
+
+// Local Variables:
+// mode: c++
+// mode: flyspell
+// mode: auto-fill
+// ispell-local-dictionary: "american"
+// End:
diff --git a/Socket/SConscript b/Socket/SConscript
index 8925f1fa5..ffd61cda4 100644
--- a/Socket/SConscript
+++ b/Socket/SConscript
@@ -15,5 +15,5 @@ SENFSCons.Lib(env,
              LIBS = [ 'Utils' ])
 
 SENFSCons.Doxygen(env, extra_sources = [
-    env.Dia2Png('SocketLibrary-classes.dia')
-    ])
+    env.Dia2Png('SocketLibrary-classes.dia'),
+])
diff --git a/Socket/SocketLibrary-classes.dia b/Socket/SocketLibrary-classes.dia
index 679f3d18e56b156f305ed731bca40678c83738f2..c0e9d1f5149240f8a28d73ba7b9c74a68fceb8cb 100644
GIT binary patch
literal 4339
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
WtqikZG8tuV7zbi49-{glVEq>hTUfXN

literal 6244
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
SzdyWx&??VPO4I%j<9`6T)C-sZ

diff --git a/doclib/senf.css b/doclib/senf.css
index 86b4cd270..51702a970 100644
--- a/doclib/senf.css
+++ b/doclib/senf.css
@@ -44,7 +44,7 @@ body {
 #content2 { 
         /* need non-zero top padding here to prevent margin propagation */
 	padding: 10px 0 0 142px;
-	max-width: 60em;
+	max-width: 62em;
 }
 
 a { 
@@ -131,7 +131,7 @@ div.qindex {
 	color: #726921;
 	white-space: nowrap;
 	text-align: right;
-	max-width: 60em;
+	max-width: 62em;
 }
 
 #footer span { 
@@ -148,3 +148,20 @@ div.qindex {
 	text-decoration: underline;
 }
 
+dl.attention { 
+	border: 1px solid #AADD88;
+	background-color: #EEFFDD;
+	padding: 4px;
+}
+
+dl.warning { 
+	border: 1px solid #DDAA88;
+	background-color: #FFEEDD;
+	padding: 4px;
+}
+
+dl.note { 
+	border: 1px solid A0C2C2;
+	background-color: #F0F8F8;
+	padding: 4px;
+}
\ No newline at end of file
diff --git a/senfscons/Dia2Png.py b/senfscons/Dia2Png.py
index d536ebfdd..a51846426 100644
--- a/senfscons/Dia2Png.py
+++ b/senfscons/Dia2Png.py
@@ -17,11 +17,14 @@ def dia_getSize(env,source):
 
 def dia2png_generator(source, target, env, for_signature):
     if for_signature:
-        return "$DIACOM -t png -s $DIA2PNGDPI $TARGET $SOURCE"
+        return "$DIACOM -t png -s $DIA2PNGDPI,$DIA2PNGMAXWIDTH $TARGET $SOURCE"
     size = dia_getSize(env,source)
     if not size: return None;
     size[0] = size[0]*int(env['DIA2PNGDPI'])/72
     size[1] = size[1]*int(env['DIA2PNGDPI'])/72
+    if size[0] > env['DIA2PNGMAXWIDTH']:
+        size[1] = size[1]*env['DIA2PNGMAXWIDTH']/size[0]
+        size[0] = env['DIA2PNGMAXWIDTH']
     return env.Action("$DIACOM -t png -s %dx%d -e $TARGET $SOURCE" % tuple(size))
 
 Dia2Png = SCons.Builder.Builder(suffix = ".png",
@@ -33,6 +36,7 @@ def generate(env):
     env['BUILDERS']['Dia2Png'] = Dia2Png
     env['DIACOM'] = "dia"
     env['DIA2PNGDPI'] = 115
+    env['DIA2PNGMAXWIDTH'] = 800
 
 def exists(env):
     return env.Detect("dia")
diff --git a/senfscons/Doxygen.py b/senfscons/Doxygen.py
index db9fc5cad..f379f91ef 100644
--- a/senfscons/Doxygen.py
+++ b/senfscons/Doxygen.py
@@ -127,9 +127,9 @@ def DoxySourceScan(node, env, path):
          for root, dirs, files in entries:
             for f in files:
                filename = os.path.normpath(os.path.join(root, f))
-               if ( reduce(lambda x, y: x or fnmatch(filename, y),
+               if ( reduce(lambda x, y: x or fnmatch(f, y),
                            file_patterns, False) 
-                    and not reduce(lambda x, y: x or fnmatch(filename, y),
+                    and not reduce(lambda x, y: x or fnmatch(f, y),
                                    exclude_patterns, False) ):
                   sources.append(filename)
 
@@ -187,7 +187,7 @@ def doxyNodeHtmlDir(node):
    if not node.sources : return None
    data = DoxyfileParse(node.sources[0].abspath)
    if data.get("GENERATE_HTML",'YES').upper() != 'YES' : return None
-   return os.path.normpath(os.path.join( node.sources[0].abspath,
+   return os.path.normpath(os.path.join( node.sources[0].dir.abspath,
                                          data.get("OUTPUT_DIRECTORY","."),
                                          data.get("HTML_OUTPUT","html") ))
 
-- 
GitLab