From 96651a328ebf872d1adaa9bf68ce0097b1171649 Mon Sep 17 00:00:00 2001
From: g0dil <g0dil@wiback.org>
Date: Tue, 9 Jan 2007 13:12:46 +0000
Subject: [PATCH] Clean up SENFScons.py Rename macro prefix SATLIB to SENF
 Begin socket library documentation

---
 Socket/FhHierarchy.dia           | Bin 0 -> 2042 bytes
 Socket/Mainpage.dox              |  70 ++++++++++++++++++++++++++++++-
 Socket/SConscript                |   2 +
 Socket/SocketLibrary-classes.dia | Bin 4339 -> 5621 bytes
 Socket/SocketPolicy.ct           |   6 +--
 Socket/SocketPolicy.dia          | Bin 0 -> 2628 bytes
 Socket/SocketPolicy.hh           |   2 +-
 Socket/SocketPolicy.ih           |  30 ++++++-------
 doclib/Doxyfile.global           |   2 +-
 senfscons/SENFSCons.py           |  12 +-----
 10 files changed, 92 insertions(+), 32 deletions(-)
 create mode 100644 Socket/FhHierarchy.dia
 create mode 100644 Socket/SocketPolicy.dia

diff --git a/Socket/FhHierarchy.dia b/Socket/FhHierarchy.dia
new file mode 100644
index 0000000000000000000000000000000000000000..763745f1d13093260dbd0c70a5499f385f19dbac
GIT binary patch
literal 2042
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
Y{QgyXAb(c!?r{I=f7@OWiKdPK0A_^dcmMzZ

literal 0
HcmV?d00001

diff --git a/Socket/Mainpage.dox b/Socket/Mainpage.dox
index 09e881bbe..15993a6fe 100644
--- a/Socket/Mainpage.dox
+++ b/Socket/Mainpage.dox
@@ -33,12 +33,43 @@
     socket representation. This frees you of having to manage the
     socket lifetime explicitly.
     
+    \section socket_hierarchy The FileHandle hierarchy
+
+    \image html FhHierarchy.png
+
+    The senf::FileHandle class is the base of a hierarchy of socket
+    handle classes (realized as templates). These classes provide an
+    interface to the complete socket API. While going down the
+    inheritance hierarchy, the interface will be more and more
+    complete.
+
+    The most complete interface is provided by
+    senf::ProtocolClientSocketHandle and
+    senf::ProtocolServerSocketHandle. The template Arguments specifies
+    the Protocol class of the underlying socket type. These are the
+    \e only classes having public constructors and are therefore the
+    only classes, which may be created by the library user. You will
+    normally use these classes by naming a specific socket typedef
+    (e.g. senf::TCPv4ClientSocketHandle).
+    
+    However, to aid writing flexible and generic code, the socket
+    library provides the senf::ClientSocketHandle and
+    senf::ServerSocketHandle class templates. These templates
+    implement a family of closely related classes based on the
+    specification of the socket policy. This policy specification may
+    be \e incomplete (see below). Instances of
+    senf::ClientSocketHandle/senf::ServerSocketHandle can be assigned
+    and converted to different ClientSocketHandle/ServerSocketHandle
+    types as long as the policy specifications are compatible.
+
     \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
+    
+    \image html SocketPolicy.png
 
     The policy framework conceptually implements a list of parallel
     inheritance hierarchies each covering a specific interface aspect
@@ -70,6 +101,42 @@
     <dd>configures, if and how buffering is configured for a socket</dd>
     </dl>
 
+    Every Policy value is identified by a class type. The policy types
+    themselves built an inheritance hierarchy for each policy
+    axis. For each policy axis, the root of this tree is the class
+    named '<tt>(axis name)Base</tt>' (e.g. \p FramingPolicyBase or \p
+    CommunicationPolicyBase) which is aliased to '<tt>Unspecified(axis
+    name)</tt>' (e.g. \p UnspecifiedFramingPolicy or \p
+    UnspecifiedCommunicationPolicy). 
+
+    The senf::SocketPolicy template combines a set of policy classes,
+    one for each policy axis. Together, they define the behavior of a
+    socket handle. The socket handle instances do net implement any
+    socket functionality themselves, instead defering the
+    implementation to the socket classes. The interface is therefore
+    \e not implemented using virtual members, all important socket
+    functions can be inlined by the compiler to create highly
+    efficient code.
+
+    Two SocketPolicy instances are considered compatible, if all
+    policy axis are compatible. A policy axis is compatible, if one
+    policy class is either the same as the other or derived from
+    it. Two SocketHandle instances can be converted into each other,
+    as long as the SocketPolicies are compatible. 
+
+    \section policy_interface The policy interface
+
+    The socket handle classes and templates only implement the most
+    important socket API methods. To access the complete API, the
+    protocol interface is provided. Access to the protocol interface
+    is only possible via senf::ProtocolClientSocketHandle and
+    senf::ProtocolServerSocketHandle which have the necessary \c
+    protocol() member. This member returns a reference to the protocol
+    class instance which contains members covering all the API
+    function snot found in the SocketHandle interface. The protocol
+    interface is specific to the protocol. It's implementation is
+    quite free. Every protocol class will define the complete and
+    specific socket policy of it's socket handle.
  */
 
 /** \page extend Extending the Library
@@ -77,10 +144,9 @@
 
 /** \page implementation Implementation notes
 
-    \image html "../../SocketLibrary-classes.png" Class hierarchy
+    \image html SocketLibrary-classes.png
  */
 
-
 
 // Local Variables:
 // mode: c++
diff --git a/Socket/SConscript b/Socket/SConscript
index ffd61cda4..9aff67446 100644
--- a/Socket/SConscript
+++ b/Socket/SConscript
@@ -16,4 +16,6 @@ SENFSCons.Lib(env,
 
 SENFSCons.Doxygen(env, extra_sources = [
     env.Dia2Png('SocketLibrary-classes.dia'),
+    env.Dia2Png('FhHierarchy.dia'),
+    env.Dia2Png('SocketPolicy.dia'),
 ])
diff --git a/Socket/SocketLibrary-classes.dia b/Socket/SocketLibrary-classes.dia
index c0e9d1f5149240f8a28d73ba7b9c74a68fceb8cb..f31dd1dcbaa9ba94bc5d1dc44d1cc2b61ccb4888 100644
GIT binary patch
literal 5621
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

literal 4339
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
WtqikZG8tuV7zbi49-{glVEq>hTUfXN

diff --git a/Socket/SocketPolicy.ct b/Socket/SocketPolicy.ct
index cc2191618..cbcfd3084 100644
--- a/Socket/SocketPolicy.ct
+++ b/Socket/SocketPolicy.ct
@@ -32,12 +32,12 @@
 #define SP_TemplateArgs(x1,x2,n,SomePolicy) BOOST_PP_COMMA_IF(n) class BOOST_PP_CAT(SomePolicy,_)
 #define SP_TemplateParams(x1,x2,n,SomePolicy) BOOST_PP_COMMA_IF(n) BOOST_PP_CAT(SomePolicy,_)
 
-template < BOOST_PP_SEQ_FOR_EACH_I( SP_TemplateArgs, , SATLIB_SOCKET_POLICIES ) >
-prefix_ void senf::SocketPolicy< BOOST_PP_SEQ_FOR_EACH_I( SP_TemplateParams, , SATLIB_SOCKET_POLICIES ) >::
+template < BOOST_PP_SEQ_FOR_EACH_I( SP_TemplateArgs, , SENF_SOCKET_POLICIES ) >
+prefix_ void senf::SocketPolicy< BOOST_PP_SEQ_FOR_EACH_I( SP_TemplateParams, , SENF_SOCKET_POLICIES ) >::
 checkBaseOf(SocketPolicyBase const & other)
 {
 #   define SP_CheckPolicy(x1,x2,SomePolicy) (void) dynamic_cast<SomePolicy const &>(other.BOOST_PP_CAT(the,SomePolicy)());
-    BOOST_PP_SEQ_FOR_EACH( SP_CheckPolicy, , SATLIB_SOCKET_POLICIES )
+    BOOST_PP_SEQ_FOR_EACH( SP_CheckPolicy, , SENF_SOCKET_POLICIES )
 #   undef SP_CheckPolicy
 }
 
diff --git a/Socket/SocketPolicy.dia b/Socket/SocketPolicy.dia
new file mode 100644
index 0000000000000000000000000000000000000000..56ff6e8366fa8a4187b1c1e0a41e9b9d66c16816
GIT binary patch
literal 2628
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

literal 0
HcmV?d00001

diff --git a/Socket/SocketPolicy.hh b/Socket/SocketPolicy.hh
index e821d925e..91ee1bf5c 100644
--- a/Socket/SocketPolicy.hh
+++ b/Socket/SocketPolicy.hh
@@ -36,7 +36,7 @@ namespace senf {
     // be adjusted accordingly). However, AddressingPolicy MUST always
     // be the first Policy member ...
 
-#   define SATLIB_SOCKET_POLICIES               \
+#   define SENF_SOCKET_POLICIES               \
 	(AddressingPolicy)                      \
         (FramingPolicy)                         \
 	(CommunicationPolicy)                   \
diff --git a/Socket/SocketPolicy.ih b/Socket/SocketPolicy.ih
index a6d9ebbc0..dabdf26b6 100644
--- a/Socket/SocketPolicy.ih
+++ b/Socket/SocketPolicy.ih
@@ -53,7 +53,7 @@
 namespace senf {
 
 
-#   define SATLIB_SOCKET_POLICIES_N BOOST_PP_SEQ_SIZE( SATLIB_SOCKET_POLICIES )
+#   define SENF_SOCKET_POLICIES_N BOOST_PP_SEQ_SIZE( SENF_SOCKET_POLICIES )
     
     // This REALLY is bad ... but we just need an Address member in
     // AddressingPolicyBase as long as ClientSocketHandle /
@@ -72,7 +72,7 @@ namespace senf {
         { virtual ~ BOOST_PP_CAT(SomePolicy,Base) () {} };                              \
         typedef BOOST_PP_CAT(SomePolicy,Base) BOOST_PP_CAT(Unspecified,SomePolicy);
 
-    BOOST_PP_SEQ_FOR_EACH( SP_DeclareBase, , BOOST_PP_SEQ_POP_FRONT( SATLIB_SOCKET_POLICIES ) )
+    BOOST_PP_SEQ_FOR_EACH( SP_DeclareBase, , BOOST_PP_SEQ_POP_FRONT( SENF_SOCKET_POLICIES ) )
 
 #   undef SP_DeclareBase
         
@@ -86,7 +86,7 @@ namespace senf {
             virtual BOOST_PP_CAT(SomePolicy,Base) const & BOOST_PP_CAT(the,SomePolicy) () const \
                 { return BOOST_PP_CAT(BOOST_PP_CAT(the,SomePolicy),_); }
 
-        BOOST_PP_SEQ_FOR_EACH( SP_DeclareTypedef, , SATLIB_SOCKET_POLICIES )
+        BOOST_PP_SEQ_FOR_EACH( SP_DeclareTypedef, , SENF_SOCKET_POLICIES )
 
 #       undef SP_DeclareTypedef
     };
@@ -95,7 +95,7 @@ namespace senf {
         BOOST_PP_COMMA_IF( n )                                                  \
         class BOOST_PP_CAT(SomePolicy,_) = BOOST_PP_CAT(SomePolicy,Base)
 
-    template < BOOST_PP_SEQ_FOR_EACH_I( SP_TemplateArgs, , SATLIB_SOCKET_POLICIES ) >
+    template < BOOST_PP_SEQ_FOR_EACH_I( SP_TemplateArgs, , SENF_SOCKET_POLICIES ) >
     struct SocketPolicy
         : public SocketPolicyBase
     {
@@ -105,7 +105,7 @@ namespace senf {
         BOOST_PP_CAT(SomePolicy,Base) const & BOOST_PP_CAT(the,SomePolicy) () const     \
             { return BOOST_PP_CAT(BOOST_PP_CAT(the,SomePolicy),_); }
 
-        BOOST_PP_SEQ_FOR_EACH( SP_DeclarePolicyMember, , SATLIB_SOCKET_POLICIES )
+        BOOST_PP_SEQ_FOR_EACH( SP_DeclarePolicyMember, , SENF_SOCKET_POLICIES )
 #   undef SP_DeclarePolicyMember
 
         static void checkBaseOf(SocketPolicyBase const & other);
@@ -129,15 +129,15 @@ namespace impl {
         BOOST_PP_COMMA_IF( m )                                                  \
         BOOST_PP_IIF( BOOST_PP_EQUAL(n,m), Policy, typename Base::SomePolicy )
 
-#    define BOOST_PP_LOCAL_LIMITS (0, BOOST_PP_DEC( SATLIB_SOCKET_POLICIES_N ) )
+#    define BOOST_PP_LOCAL_LIMITS (0, BOOST_PP_DEC( SENF_SOCKET_POLICIES_N ) )
 #    define BOOST_PP_LOCAL_MACRO(n)                                                                                             \
-        SocketPolicy_rv<n> MakeSocketPolicy_merge_(BOOST_PP_CAT( BOOST_PP_SEQ_ELEM( n, SATLIB_SOCKET_POLICIES ),Base)*);        \
+        SocketPolicy_rv<n> MakeSocketPolicy_merge_(BOOST_PP_CAT( BOOST_PP_SEQ_ELEM( n, SENF_SOCKET_POLICIES ),Base)*);        \
                                                                                                                                 \
         template <class Base, class Policy>                                                                                     \
         struct MakeSocketPolicy_merge<Base,Policy,sizeof(SocketPolicy_rv<n>)>                                                   \
         {                                                                                                                       \
             typedef SocketPolicy<                                                                                               \
-               BOOST_PP_SEQ_FOR_EACH_I( SP_DeclareMakeSocketPolicy_merge_member, n, SATLIB_SOCKET_POLICIES )                    \
+               BOOST_PP_SEQ_FOR_EACH_I( SP_DeclareMakeSocketPolicy_merge_member, n, SENF_SOCKET_POLICIES )                    \
                > type;                                                                                                          \
         };
 
@@ -173,13 +173,13 @@ namespace impl {
 
     template <class Base>
     SocketPolicy_rv<1> SocketPolicy_checkcompat_(
-        BOOST_PP_SEQ_FOR_EACH_I( SP_DeclareArguments, , SATLIB_SOCKET_POLICIES ) );
+        BOOST_PP_SEQ_FOR_EACH_I( SP_DeclareArguments, , SENF_SOCKET_POLICIES ) );
 
 #   undef SP_DeclareArguments
 
     template <class Base>
     SocketPolicy_rv<2> SocketPolicy_checkcompat_( 
-        BOOST_PP_ENUM_PARAMS( SATLIB_SOCKET_POLICIES_N, void * BOOST_PP_INTERCEPT ) );
+        BOOST_PP_ENUM_PARAMS( SENF_SOCKET_POLICIES_N, void * BOOST_PP_INTERCEPT ) );
 
     template <int Size>
     struct SocketPolicy_checkcompat
@@ -200,17 +200,17 @@ namespace impl {
     struct SocketPolicy_compatibility
         : public SocketPolicy_checkcompat< sizeof(
             SocketPolicy_checkcompat_<Base>(
-                BOOST_PP_SEQ_FOR_EACH_I( SP_DeclareArguments, , SATLIB_SOCKET_POLICIES ) )) >
+                BOOST_PP_SEQ_FOR_EACH_I( SP_DeclareArguments, , SENF_SOCKET_POLICIES ) )) >
     {};
 
 } // namespace impl
 
-    template < BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( SATLIB_SOCKET_POLICIES_N, class T, senf::impl::nil ) >
+    template < BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( SENF_SOCKET_POLICIES_N, class T, senf::impl::nil ) >
     class MakeSocketPolicy
         : public boost::mpl::if_< boost::is_convertible< T0*, SocketPolicyBase* >,
-                                  impl::MakeSocketPolicy_impl< T0, boost::mpl::vector< BOOST_PP_ENUM_SHIFTED_PARAMS( SATLIB_SOCKET_POLICIES_N, T ) > >,
+                                  impl::MakeSocketPolicy_impl< T0, boost::mpl::vector< BOOST_PP_ENUM_SHIFTED_PARAMS( SENF_SOCKET_POLICIES_N, T ) > >,
                                   impl::MakeSocketPolicy_impl< SocketPolicy<>,
-                                                               boost::mpl::vector< BOOST_PP_ENUM_PARAMS( SATLIB_SOCKET_POLICIES_N, T ) > > >::type
+                                                               boost::mpl::vector< BOOST_PP_ENUM_PARAMS( SENF_SOCKET_POLICIES_N, T ) > > >::type
     {};
 
     template <class BasePolicy, class DerivedPolicy>
@@ -237,7 +237,7 @@ namespace impl {
             : public boost::enable_if_c< ! BOOST_PP_CAT(SomePolicy,Is)<Policy,Trait>::value >   \
         {};
 
-    BOOST_PP_SEQ_FOR_EACH( SP_DefineConditions, , SATLIB_SOCKET_POLICIES )
+    BOOST_PP_SEQ_FOR_EACH( SP_DefineConditions, , SENF_SOCKET_POLICIES )
 
 #   undef SP_DefineConditions
 
diff --git a/doclib/Doxyfile.global b/doclib/Doxyfile.global
index 22a55f801..27bccac09 100644
--- a/doclib/Doxyfile.global
+++ b/doclib/Doxyfile.global
@@ -87,7 +87,7 @@ EXCLUDE_PATTERNS       = *.test.cc .*
 EXAMPLE_PATH           = 
 EXAMPLE_PATTERNS       = *
 EXAMPLE_RECURSIVE      = NO
-IMAGE_PATH             = 
+IMAGE_PATH             = .
 INPUT_FILTER           = 
 FILTER_PATTERNS        = 
 FILTER_SOURCE_FILES    = NO
diff --git a/senfscons/SENFSCons.py b/senfscons/SENFSCons.py
index bed67e0bf..7308c0e75 100644
--- a/senfscons/SENFSCons.py
+++ b/senfscons/SENFSCons.py
@@ -113,8 +113,7 @@ def GlobSources(exclude=[]):
     
 def StandardTargets(env):
     all = env.Alias('all')
-    env.Clean(all, [ '.sconsign', '.sconf_temp', 'config.log', 'ChangeLog.bak', '.clean'
-                     ] + glob.glob("*~"))
+    env.Clean(all, [ '.sconsign', '.sconf_temp', 'config.log' ])
     env.Depends(all, '.')
 
 def GlobalTargets(env):
@@ -151,14 +150,7 @@ def Objects(env, sources, testSources = None, LIBS = []):
 
     return objects
 
-def DoxyGlob(exclude=[]):
-    sources = [ f
-                for ext in ("cci", "ct", "cti", "h", "hh", "ih", "mmc", "dox")
-                for f in glob.glob("*."+ext)
-                if f not in exclude ]
-    return sources
-
-def Doxygen(env, doxyfile="Doxyfile", extra_sources = []):
+def Doxygen(env, doxyfile = "Doxyfile", extra_sources = []):
     docs = env.Doxygen(doxyfile)
     # The last target is the (optional) tagfile
     if os.path.basename(str(docs[-1])) != '.stamp':
-- 
GitLab