Skip to content
Snippets Groups Projects
Commit d52dae4c authored by g0dil's avatar g0dil
Browse files

Fix Doxygen builder file globbing

Add MAXWIDTH support to Dia2Png builder
Start Socket library documentation
parent b4e1c43a
No related branches found
No related tags found
No related merge requests found
No preview for this file type
......@@ -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
......
/** \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:
......@@ -15,5 +15,5 @@ SENFSCons.Lib(env,
LIBS = [ 'Utils' ])
SENFSCons.Doxygen(env, extra_sources = [
env.Dia2Png('SocketLibrary-classes.dia')
])
env.Dia2Png('SocketLibrary-classes.dia'),
])
No preview for this file type
......@@ -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
......@@ -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")
......@@ -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") ))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment