#define PID 500
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
class MySniffer
{
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#define MAX_PAYLOAD_POINTER ( TRANSPORT_PACKET_SIZE - 4 - 1 - 2 )
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
ULEdec::ULEdec(unsigned short adapter, unsigned short device)
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Socket/Protocols/DVB.hh>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
int main(int argc, char const * argv[])
{
return 0;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "MCSniffer.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
class MCSniffer
{
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "MCSniffer.mpp"
//#include "MultiMCLoop.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
typedef senf::UDPv4ClientSocketHandle UDPSocket;
std::cout << "I " << name << ": " << socket.read() << "\n";
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
class MCWriter
{
event.timeout(senf::scheduler::eventTime() + interval);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
class IfSetup
{
throw SystemException() << ": code " << rv << ": " << cmd;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
void sigintHandler(siginfo_t const &)
{
senf::scheduler::terminate();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
int main(int argc, char * argv[])
{
}
};
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "MultiMCLoop.mpp"
//#include "ppitest.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace module = senf::ppi::module;
namespace connector = senf::ppi::connector;
namespace ppi = senf::ppi;
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// RateFilter
class RateFilter
output(input());
}
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
class RateStuffer
{
}
};
-// ////////////////////////////////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// Module setup:
//
return 0;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "ppitest.mpp"
//#include "Sniffer.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
int loop_main (int argc, char const * argv[])
{
return 1;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Sniffer.mpp"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "psi2ts.cc.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
template <class InputIterator, class Distance>
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "psi2ts.cc.mpp"
#include <senf/Packets/MPEGDVBBundle/TransportPacket.hh>
//#include "psi2ts.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
class Psi2TsModule
: public senf::ppi::module::Module
};
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "psi2ts.cci"
//#include "psi2ts.ct"
//#include "psi2ts.cti"
#include <boost/lambda/lambda.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
void check_transportpacket_header(senf::TransportPacket tsPacket, bool pusi, unsigned pid, unsigned counter)
{
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
+body, table, div, p, dl {
+ font-family: Verdana, Arial, Helvetica, sans-serif;
+ font-size: 10pt;
+}
+
body {
padding: 0;
margin: 0;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 10pt;
}
/* Argh .. doxygen.css has font-size:90% for td ... */
font-size: 100%;
}
+div.header {
+ background-color: inherit;
+ background-image: none;
+ border: none;
+}
+
+div.summary {
+ float: none;
+ padding: 2pt 5pt 0 0;
+ width: auto;
+}
+
#head {
height: 62px;
border-top: 5px solid #DECD40;
background-color: white !important;
}
-div.tabs {
+div.tabs, div.tabs2 {
display: inline; /* IE double margin fix */
float: left;
clear: left;
overflow: hidden;
}
-* html div.tabs {
+* html div.tabs, * html div.tabs2 {
margin-bottom: 0; /* Grmpf .. IE6 is f**ing up ... */
}
-div.tabs ul {
+div.tabs ul, div.tabs2 ul {
margin: 0;
padding: 0;
list-style-type: none;
}
-div.tabs ul li {
+div.tabs ul li, div.tabs2 ul li {
display: inline;
}
-div.tabs ul li a {
+div.tabs ul li a, div.tabs2 ul li a {
display: block;
padding: 2px 5px;
font-size: 13px;
font-weight: normal;
}
-div.tabs ul li a:visited, div.tabs ul li a:active {
+div.tabs ul li a:visited, div.tabs ul li a:active,
+div.tabs2 ul li a:visited, div.tabs2 ul li a:active {
color: #726921;
text-decoration: none;
}
-div.tabs li.current a {
+div.tabs li.current a, div.tabs2 li.current a {
background-position: 100% -150px;
border-width: 0px;
}
-div.tabs li.current span {
+div.tabs li.current span, div.tabs2 li.current span {
background-position: 0% -150px;
padding-bottom: 6px;
}
-div.tabs ul li a:hover, div.tabs ul li.current a, div.tabs ul.glossary li a:hover {
+div.tabs ul li a:hover, div.tabs ul li.current a, div.tabs ul.glossary li a:hover,
+div.tabs2 ul li a:hover, div.tabs2 ul li.current a, div.tabs2 ul.glossary li a:hover {
color: #726921;
text-decoration: none;
background-color: #EDE497;
}
-div.tabs ul li.level1 a {
+div.tabs ul li.level1 a, div.tabs2 ul li.level1 a {
padding-left: 1.5em;
font-size: 90%;
}
-div.tabs ul.glossary li a {
+div.tabs ul.glossary li a, div.tabs2 ul.glossary li a {
background-color: #FDF7C3;
}
-div.tabs ul.glossary li.glossary a {
+div.tabs ul.glossary li.glossary a, div.tabs2 ul.glossary li.glossary a {
background-color: #EDE497;
}
font-size: 75%;
}
+.mdescLeft, .mdescRight, .memItemLeft, .memItemRight, .memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: inherit;
+}
+
p.memtitle {
color: #1a41a8;
font-weight: bold;
text-indent: -4em;
}
-div.memproto {
- margin-bottom: .5em;
-}
-
table {
width: 100%;
}
div.ah {
margin-right: 10px;
+ background-image: none;
+ -moz-box-shadow: none;
}
div.nav, div.navpath {
background-color: white;
border: none;
border-bottom: 1px solid #AF9D00;
- padding: 5px 0;
+ padding: 0;
margin: 0;
}
+div.navpath li {
+ background-image: none;
+ padding: 2pt 0;
+}
+
+div.navpath a:before {
+ content: "/";
+ white-space: pre;
+ padding: 0 2pt;
+}
+
+div.navpath a {
+ height: auto;
+}
+
+div.navpath ul {
+ background-image: none;
+ border: none;
+ height: auto;
+ line-height: inherit;
+}
+
div.qindex {
width: auto;
background-color: #e8eef2;
padding-right: 10px;
}
+table p, table p.starttd { margin: 0; }
+table.glossary p { margin: 0; }
+
table.members td:first-child {
width: 35%;
}
margin-bottom: .4em;
}
+div.memproto {
+ background-image: none;
+ text-shadow: none;
+ -moz-box-shadow: none;
+}
+
+div.memdoc {
+ background-image: none;
+ -moz-box-shadow: none;
+}
+
table.memname {
width: 100%;
font-weight: normal;
table.memname td.memparen {
width: 1%;
+ padding-right: 10px;
}
table.memname td.paramtype {
//#include "ActiveFeeder.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::ActiveFeeder
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::module::ActiveFeeder::request()
output(input());
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "ActiveFeeder.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::ActiveFeeder
prefix_ senf::ppi::module::ActiveFeeder::ActiveFeeder()
registerEvent(idle_, & ActiveFeeder::request);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "IdleEvent.hh"
//#include "ActiveFeeder.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "ActiveFeeder.cci"
//#include "ActiveFeeder.ct"
//#include "ActiveFeeder.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace debug = senf::ppi::module::debug;
namespace ppi = senf::ppi;
namespace module = senf::ppi::module;
BOOST_CHECK( sink.size() > 0);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Connectors.hh"
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class AnnotationType>
prefix_ senf::ppi::module::AnnotationRouter<AnnotationType>::AnnotationRouter()
}
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "MultiConnectorMixin.hh"
//#include "AnnotationRouter.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "AnnotationRouter.cci"
#include "AnnotationRouter.ct"
//#include "AnnotationRouter.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace ppi = senf::ppi;
namespace connector = ppi::connector;
namespace module = ppi::module;
BOOST_CHECK_EQUAL( sink2.size(), 1u );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "CloneSource.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
senf::ppi::module::CloneSource::CloneSource(senf::Packet const & packet)
: packet_(packet)
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "CloneSource.mpp"
#include "Connectors.hh"
//#include "CloneSource.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "CloneSource.cci"
//#include "CloneSource.ct"
//#include "CloneSource.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(cloneSource)
{
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "Connectors.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::Connector
prefix_ senf::ppi::connector::Connector::~Connector()
prefix_ void senf::ppi::connector::Connector::v_connected()
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::PassiveConnector
prefix_ senf::ppi::connector::PassiveConnector::~PassiveConnector()
peer_ = & dynamic_cast<ActiveConnector&>(Connector::peer());
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::connector::PassiveConnector::v_init()
SENF_PPI_THROTTLE_TRACE("OUT", "not forwarding unthrottle event");
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::ActiveConnector
prefix_ senf::ppi::connector::ActiveConnector::~ActiveConnector()
peer_ = & dynamic_cast<PassiveConnector&>(Connector::peer());
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::connector::ActiveConnector::v_init()
notifyRoutes_.erase(i);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::InputConnector
prefix_ senf::Packet senf::ppi::connector::InputConnector::operator()()
peer_ = & dynamic_cast<OutputConnector&>(Connector::peer());
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::connector::InputConnector::v_requestEvent()
prefix_ void senf::ppi::connector::InputConnector::v_dequeueEvent()
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::OutputConnector
prefix_ void senf::ppi::connector::OutputConnector::v_disconnected()
peer_ = & dynamic_cast<InputConnector&>(Connector::peer());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::GenericActiveInput
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::connector::GenericActiveInput::v_requestEvent()
request();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::GenericPassiveInput
prefix_ void senf::ppi::connector::GenericPassiveInput::v_disconnected()
peer_ = & dynamic_cast<GenericActiveOutput&>(Connector::peer());
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::connector::GenericPassiveInput::v_enqueueEvent()
}
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::GenericPassiveOutput
prefix_ void senf::ppi::connector::GenericPassiveOutput::v_disconnected()
peer_ = & dynamic_cast<GenericActiveInput&>(Connector::peer());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::GenericActiveInput
prefix_ void senf::ppi::connector::GenericActiveInput::v_disconnected()
peer_ = & dynamic_cast<GenericPassiveOutput&>(Connector::peer());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::GenericActiveOutput
prefix_ void senf::ppi::connector::GenericActiveOutput::v_disconnected()
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Connectors.mpp"
#include "Module.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef SENF_PPI_NOTRACE
# define SENF_PPI_THROTTLE_TRACE(label, type)
# define SENF_PPI_TRACE(packet, label) trace(packet, label)
#endif
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::Connector
prefix_ senf::ppi::connector::Connector & senf::ppi::connector::Connector::peer()
return traceState_;
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
prefix_ senf::ppi::connector::Connector::Connector()
return peer_;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::PassiveConnector
prefix_ senf::ppi::connector::ActiveConnector & senf::ppi::connector::PassiveConnector::peer()
return nativeThrottled_ || remoteThrottled_;
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::connector::PassiveConnector::emitThrottle()
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
prefix_ senf::ppi::connector::PassiveConnector::PassiveConnector()
}
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::ActiveConnector
prefix_ senf::ppi::connector::PassiveConnector & senf::ppi::connector::ActiveConnector::peer()
return ! connected() || peer().throttled();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
prefix_ senf::ppi::connector::ActiveConnector::ActiveConnector()
: throttleCallback_(), unthrottleCallback_(), notifyRoutes_(), throttled_(false)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::InputConnector
prefix_ senf::Packet senf::ppi::connector::InputConnector::read()
return queue_.empty();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
prefix_ senf::ppi::connector::InputConnector::InputConnector()
{}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::connector::InputConnector::enqueue(Packet const & p)
v_enqueueEvent();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::OutputConnector
prefix_ senf::ppi::connector::InputConnector & senf::ppi::connector::OutputConnector::peer()
operator()(p);
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
prefix_ senf::ppi::connector::OutputConnector::OutputConnector()
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::GenericPassiveInput
prefix_ senf::ppi::connector::GenericPassiveInput::GenericPassiveInput()
return ! empty();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::GenericPassiveOutput
prefix_ senf::ppi::connector::GenericActiveInput & senf::ppi::connector::GenericPassiveOutput::peer()
prefix_ senf::ppi::connector::GenericPassiveOutput::GenericPassiveOutput()
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::GenericActiveInput
prefix_ senf::ppi::connector::GenericPassiveOutput & senf::ppi::connector::GenericActiveInput::peer()
prefix_ senf::ppi::connector::GenericActiveInput::GenericActiveInput()
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::GenericActiveOutput
prefix_ senf::ppi::connector::GenericPassiveInput & senf::ppi::connector::GenericActiveOutput::peer()
prefix_ senf::ppi::connector::GenericActiveOutput::GenericActiveOutput()
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::PassiveConnector
template <class Handler>
callback_ = ppi::detail::Callback<>::make(handler, module());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::ActiveConnector
template <class Handler>
unthrottleCallback_ = ppi::detail::Callback<>::make(handler, module());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::GenericPassiveInput
template <class QDisc>
qdisc_.reset(new QDisc(disc));
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connectors::detail::TypedInputMixin<Self,PacketType>
template <class Self, class PacketType>
return operator()();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::detail::TypedOutputMixin<Self,PacketType>
template <class Self, class PacketType>
static_cast<Self*>(this)->OutputConnector::write(p);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "ModuleManager.hh"
//#include "Connectors.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Connectors.cci"
#include "Connectors.ct"
#include "Connectors.cti"
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace ppi = senf::ppi;
namespace debug = ppi::module::debug;
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::DebugEvent
prefix_ void senf::ppi::DebugEvent::trigger()
callback();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::DebugEvent::v_enable()
prefix_ void senf::ppi::DebugEvent::v_disable()
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Events.hh"
//#include "DebugEvent.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
: public EventImplementation<>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
// default default constructor
// default copy constructor
// default destructor
// no conversion constructors
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
void trigger(); ///< Trigger event
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "DebugEvent.cci"
//#include "DebugEvent.ct"
//#include "DebugEvent.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(debugEvent)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "DebugModules.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::debug::PassiveSource
prefix_ void senf::ppi::module::debug::PassiveSource::request()
output.throttle();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::debug::PassiveSink
prefix_ void senf::ppi::module::debug::PassiveSink::request()
packets_.push_back(input());
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "DebugModules.mpp"
#include "Setup.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::debug::ActiveSource
prefix_ senf::ppi::module::debug::ActiveSource::ActiveSource()
return output;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::debug::PassiveSource
prefix_ senf::ppi::module::debug::PassiveSource::PassiveSource()
return packets_.size();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::module::debug::PassiveSource::v_init()
output.throttle();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::debug::ActiveSink
prefix_ senf::ppi::module::debug::ActiveSink::ActiveSink()
return input;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::debug::PassiveSink
prefix_ senf::ppi::module::debug::PassiveSink::PassiveSink()
packets_.erase(packets_.begin(), packets_.end());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::debug::ActiveFeederSource
prefix_ senf::ppi::module::debug::ActiveFeederSource::ActiveFeederSource()
return source.size();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::debug::ActiveFeederSink
prefix_ senf::ppi::module::debug::ActiveFeederSink::ActiveFeederSink()
sink.clear();
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/hexdump.hh>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::debug::Logger<Stream,Area,level>
template <class Stream, class Area, class Level>
: label_ (label+"\n")
{}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
template <class Stream, class Area, class Level>
}));
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Logger/SenfLog.hh>
//#include "DebugModules.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "DebugModules.cci"
//#include "DebugModules.ct"
#include "DebugModules.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace debug = senf::ppi::module::debug;
namespace ppi = senf::ppi;
BOOST_CHECK( ! logTarget.str().empty() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "DiscardSink.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::ppi::module::DiscardSink::DiscardSink()
{
senf::IGNORE( input() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "DiscardSink.mpp"
#include "Module.hh"
//#include "DiscardSink.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "DiscardSink.cci"
//#include "DiscardSink.ct"
//#include "DiscardSink.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(discardSink)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "Duplicators.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void
senf::ppi::module::ActiveDuplicator::connectorSetup(ActiveDuplicator::ConnectorType & conn)
(*i)(p);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Duplicators.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::ActiveDuplicator
prefix_ senf::ppi::module::ActiveDuplicator::ActiveDuplicator()
input.onRequest(&ActiveDuplicator::request);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "MultiConnectorMixin.hh"
//#include "Duplicators.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Duplicators.cci"
//#include "Duplicators.ct"
//#include "Duplicators.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace ppi = senf::ppi;
namespace connector = ppi::connector;
BOOST_CHECK( sink2.pop_front() == p );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "EventManager.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::EventManager
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::EventManager::destroyModule(module::Module & module)
"Internal failure: registrations still active while destroying event ??");
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "EventManager.mpp"
#include <senf/Scheduler/Scheduler.hh>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::EventManager
prefix_ senf::ppi::EventManager & senf::ppi::EventManager::instance()
return eventTime_;
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::EventManager::eventTime(ClockService::clock_type time)
eventTime_ = time;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/ptr_container/ptr_vector.hpp>
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::EventManager
template <class Descriptor>
static_cast< detail::EventBinding<typename Descriptor::Event> & >(registrations_.back()));
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "detail/EventBinding.hh"
//#include "EventManager.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
class EventManager
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
#ifndef DOXYGEN
{};
#endif
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
static EventManager & instance();
// no conversion constructors
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
ClockService::clock_type now(); ///< Current time at last event dispatch
ClockService::clock_type time(); ///< Expected time of the last event
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "EventManager.cci"
#include "EventManager.ct"
//#include "EventManager.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(eventManager)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "Events.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::EventDescriptor
prefix_ senf::ppi::EventDescriptor::~EventDescriptor()
enabled_ = v;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Events.mpp"
#include <senf/PPI/detail/EventBinding.hh>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::EventDescriptor
prefix_ bool senf::ppi::EventDescriptor::enabled()
return enabled_;
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
prefix_ senf::ppi::EventDescriptor::EventDescriptor()
: enabled_(false), throttled_(false)
{}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::EventDescriptor::notifyThrottle()
routes_.erase(i);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "detail/EventBinding.hh"
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::EventImplementationHelper<EventType,Self>
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
template <class EventType, class Self>
binding().callback(event);
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
template <class EventType, class Self>
return * static_cast<Self*>(this)->binding_;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::EventImplementationHelper<void,Self>
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
template <class Self>
binding().callback();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
template <class Self>
return * static_cast<Self*>(this)->binding_;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::EventImplementation<EventType>
template <class EventType>
return binding_->manager();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
template <class EventType>
: binding_(0)
{}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
template <class EventType>
binding_ = & binding;
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "predecl.hh"
//#include "Events.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Events.cci"
//#include "Events.ct"
#include "Events.cti"
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(events)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "IOEvent.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::IOEvent
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::IOEvent::v_enable()
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "IOEvent.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::ppi::IOEvent::IOEvent()
: fd_ (-1),
event_ ("senf::ppi::IOEvent", boost::bind(&IOEvent::cb,this,_1))
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Handle>
prefix_ void senf::ppi::IOEvent::set(Handle handle, unsigned events)
}
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/bind.hpp>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::IOEvent
template <class Handle>
set(handle,events);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Exception.hh>
//#include "IOEvent.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
: public EventImplementation<IOEventInfo>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
// This is stupid, however there is no way to import the Scheduler::EventId enum together
, Err = scheduler::FdEvent::EV_ERR /**< Some other error condition on FileHandle */
};
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
IOEvent();
template <class Handle>
IOEvent(Handle handle, unsigned events);
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
template <class Handle>
void set(Handle handle, unsigned events);
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "IOEvent.cci"
#include "IOEvent.ct"
#include "IOEvent.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(ioEvent)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "IdleEvent.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::IdleEvent
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::IdleEvent::v_enable()
v_enable();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "IdleEvent.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::IdleEvent
prefix_ senf::ppi::IdleEvent::IdleEvent()
: timer_ ("senf::ppi::IdleEvent", boost::bind(&IdleEvent::cb,this))
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Events.hh"
//#include "IdleEvent.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "IdleEvent.cci"
//#include "IdleEvent.ct"
//#include "IdleEvent.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(idleEvent)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "IntervalTimer.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::IntervalTimer
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::IntervalTimer::v_enable()
schedule();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "IntervalTimer.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::IntervalTimer
prefix_ senf::ppi::IntervalTimer::IntervalTimer(ClockService::clock_type interval,
return std::make_pair(interval_, eventsPerInterval_);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Events.hh"
//#include "IntervalTimer.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
: public EventImplementation<IntervalTimerEventInfo>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
explicit IntervalTimer(ClockService::clock_type interval,
unsigned eventsPerInterval=1);
IntervalTimer();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
void interval(ClockService::clock_type interval, unsigned eventsPerInterval=1);
std::pair<ClockService::clock_type, unsigned> interval() const;
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "IntervalTimer.cci"
//#include "IntervalTimer.ct"
//#include "IntervalTimer.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace module = senf::ppi::module;
namespace ppi = senf::ppi;
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Setup.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::ppi::connector::GenericActiveInputJack::
GenericActiveInputJack(GenericActiveInput & input)
connect(source, target.connector());
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Setup.hh"
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class PacketType>
prefix_ senf::ppi::connector::ActiveInputJack<PacketType>::
connect(source, target.connector());
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Setup.hh"
//#include "Jack.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
#endif
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Jack.cci"
//#include "Jack.ct"
#include "Jack.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "Joins.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::PassiveJoin
prefix_ senf::ppi::module::PassiveJoin::PassiveJoin()
output.onUnthrottle(&PassiveJoin::onUnthrottle);
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::module::PassiveJoin::connectorSetup(connector::PassiveInput<> & conn)
bind(&connector::GenericPassiveInput::unthrottle, _1));
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::PriorityJoin
prefix_ senf::ppi::module::PriorityJoin::PriorityJoin()
output.onRequest(&PriorityJoin::request);
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void
output.unthrottle();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Joins.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::PassiveJoin
prefix_ void senf::ppi::module::PassiveJoin::request(connector::GenericPassiveInput & input)
output(input());
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "MultiConnectorMixin.hh"
//#include "Joins.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Joins.cci"
//#include "Joins.ct"
//#include "Joins.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace ppi = senf::ppi;
namespace connector = ppi::connector;
BOOST_CHECK( ! sink );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "Module.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Module.mpp"
#include <algorithm>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::Module
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::module::Module::v_init()
return routes_.back();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// public members
prefix_ senf::ppi::module::Module::~Module()
return eventManager().now();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
prefix_ senf::ppi::module::Module::Module()
eventManager().destroyModule(*this);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::Module
#ifndef DOXYGEN
{}
#endif
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::detail namespace members
template <class Source, class Target>
module.registerConnector(target);
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "ModuleManager.hh"
//#include "Module.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Module.cci"
#include "Module.ct"
//#include "Module.cti"
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/type_traits.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace ppi = senf::ppi;
namespace connector = ppi::connector;
BOOST_CHECK( maker.tester->init );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "ModuleManager.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::ModuleManager
prefix_ void senf::ppi::ModuleManager::init()
scheduler::process();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ senf::ppi::ModuleManager::ModuleManager()
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "ModuleManager.mpp"
#include <algorithm>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::ModuleManager
prefix_ senf::ppi::ModuleManager & senf::ppi::ModuleManager::instance()
return consoleDir_.node();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::ModuleManager::Initializable
prefix_ senf::ppi::ModuleManager::Initializable::Initializable()
return ModuleManager::instance();
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Console/ScopedDirectory.hh>
//#include "ModuleManager.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
class ModuleManager
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
struct Initializable
virtual void v_init() = 0;
};
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
static ModuleManager & instance();
// no conversion constructors
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
void init(); ///< Called by senf::ppi::init()
void run(); ///< Called by senf::ppi::run()
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "ModuleManager.cci"
//#include "ModuleManager.ct"
//#include "ModuleManager.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(moduleManager)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class PacketType>
prefix_ void senf::ppi::module::MonitorModule<PacketType>::request()
input.unthrottle();
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class PacketType>
prefix_ senf::ppi::module::MonitorModule<PacketType>::MonitorModule()
output.onUnthrottle(&MonitorModule::unthrottle);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Connectors.hh"
//#include "MonitorModule.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "MonitorModule.cci"
#include "MonitorModule.ct"
#include "MonitorModule.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/lambda/lambda.hpp>
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::MultiConnectorMixin<Self_,ConnectorType_,KeyType_,ContainerType_>
template <class Self_, class ConnectorType_, class KeyType_, class ContainerType_>
}
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::MultiConnectorMixin<Self_,ConnectorType_,void,ContainerType_>
template <class Self_, class ConnectorType_, class ContainerType_>
}
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::detail::MultiConnectorWrapper<Module,Connector>
template <class Module, class Connector>
static_cast<Module&>(this->module()).disconnected(*this);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::MultiConnectorMixin<Self_,ConnectorType_,KeyType_,ContainerType_>
template <class Self_, class ConnectorType_, class KeyType_, class ContainerType_>
connectorDestroy(ConnectorType const &)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::MultiConnectorMixin<Self_,ConnectorType_,void,ContainerType_>
template <class Self_, class ConnectorType_, class ContainerType_>
connectorDestroy(ConnectorType const &)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::MultiConnectorMixin<Self_,ConnectorType_,void,void>
template <class Self_, class ConnectorType_>
static_cast<Self_*>(this)->connectorDestroy(&c);
}
-////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef DOXYGEN
#endif
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "MultiConnectorMixin.mpp"
#include "MultiConnectorMixin.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "MultiConnectorMixin.cci"
#include "MultiConnectorMixin.ct"
#include "MultiConnectorMixin.cti"
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/mpl/not.hpp>
#include <boost/tuple/tuple.hpp>
-// ///////////////////////////mpp.p////////////////////////////////////////
-#elif BOOST_PP_IS_ITERATING // ////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-///////////////////////////mpp.p////////////////////////////////////////
+#elif BOOST_PP_IS_ITERATING //-////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// Local Macros
// => template <class A0, class A1, ...>
#define mpp_CallParamsKomma2() \
BOOST_PP_ENUM_TRAILING_PARAMS(BOOST_PP_FRAME_ITERATION(1), b)
-// ////////////////////////////////////////////////////////////////////////
-#if BOOST_PP_ITERATION_FLAGS()==1 // //////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#if BOOST_PP_ITERATION_FLAGS()==1 //-//////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// senf::ppi::module::MultiConnectorMixin member declaration 1..MAX_ARGS
mpp_TplParams()
ConnectorType_ & newConnector( mpp_FnParams() );
-// ////////////////////////////////////////////////////////////////////////
-#elif BOOST_PP_ITERATION_FLAGS()==2 // ////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#elif BOOST_PP_ITERATION_FLAGS()==2 //-////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// senf::ppi namespace member declaration 1..MAX_ARGS
// Here the reference to Source::ConnectorType / Target::ConnectorType
4 ))
#include BOOST_PP_ITERATE()
-// ////////////////////////////////////////////////////////////////////////
-#elif BOOST_PP_ITERATION_FLAGS()==4 // ////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#elif BOOST_PP_ITERATION_FLAGS()==4 //-////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// senf::ppi namespace member declaration 1..MAX_ARGS x 1..MAX_ARGS
template <class Source, class Target mpp_TplParamsKomma() mpp_TplParamsKomma2()>
boost::tuple<typename Source::ConnectorType &, typename Target::ConnectorType &> >::type
connect(Source & source mpp_FnParamsKomma(), Target & target mpp_FnParamsKomma2());
-// ////////////////////////////////////////////////////////////////////////
-#elif BOOST_PP_ITERATION_FLAGS()==8 // ////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#elif BOOST_PP_ITERATION_FLAGS()==8 //-////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// senf::ppi::module::detail::MultiConnectorMixinAccess member declaration 1..MAX_ARGS
template <class Module mpp_TplParamsKomma()>
static typename Module::ConnectorType &
newConnector(Module & module mpp_FnParamsKomma());
-// ////////////////////////////////////////////////////////////////////////
-#elif BOOST_PP_ITERATION_FLAGS()==3 // ////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#elif BOOST_PP_ITERATION_FLAGS()==3 //-////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// Implementation 1..MAX_ARGS
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Map container
template <class Self_, class ConnectorType_, class KeyType_, class ContainerType_>
return * connectors_.insert(key, conn).first->second;
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Vector container
template <class Self_, class ConnectorType_, class ContainerType_>
return conn;
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// User managed container
template <class Self_, class ConnectorType_>
return cref;
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::connect
template <class Source, class Target mpp_TplParamsKomma()>
return c;
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::detail::MultiConnectorMixinAccess members
template <class Module mpp_TplParamsKomma()>
5 ))
#include BOOST_PP_ITERATE()
-////////////////////////////////////////////////////////////////////////
-#elif BOOST_PP_ITERATION_FLAGS()==5 // ////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
+#elif BOOST_PP_ITERATION_FLAGS()==5 //-////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// Implementation 1..MAX_ARGS x 1..MAX_ARGS
template <class Source, class Target mpp_TplParamsKomma() mpp_TplParamsKomma2()>
return boost::tie(s,t);
}
-// ////////////////////////////////////////////////////////////////////////
-#endif // /////////////////////////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#endif //-/////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// Undefine local Macros
#undef mpp_CallParamsKomma2
#undef mpp_TplParams_
#undef mpp_TplParams
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
/*
(save-excursion (re-search-backward "^// Undefine local Macros")
(forward-line 1) (delete-region (point) (progn (search-forward
- "// ////") (forward-line -1) (point))) (insert "\n") (let ((b (point))
+ "//-////") (forward-line -1) (point))) (insert "\n") (let ((b (point))
(e (progn (insert (save-excursion (re-search-backward
"^// Local Macros") (search-forward "#define") (beginning-of-line)
- (buffer-substring (point) (progn (search-forward "// ////")
+ (buffer-substring (point) (progn (search-forward "//-////")
(search-backward "#define") (forward-line 1) (point))))) (point))))
(reverse-region b e) (shell-command-on-region b e "grep -F '#define'" nil
t) (goto-char b) (while (looking-at "#define") (delete-char 7) (insert
(delete-region (1- (point)) (progn (end-of-line) (point))) (forward-line
1))))
*/
-// ////////////////////////////////////////////////////////////////////////
-#endif // /////////////////////////////////////////////////////////////////
-// ///////////////////////////mpp.e////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#endif //-/////////////////////////////////////////////////////////////////
+//-///////////////////////////mpp.e////////////////////////////////////////
\f
// Local Variables:
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace ppi = senf::ppi;
namespace connector = ppi::connector;
namespace module = ppi::module;
BOOST_CHECK( sink.pop_front() == p );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "PassiveQueue.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::PassiveQueue
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::module::PassiveQueue::v_init()
output.throttle();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "PassiveQueue.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::PassiveQueue
prefix_ senf::ppi::module::PassiveQueue::PassiveQueue()
output.onRequest(&PassiveQueue::onOutput);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::PassiveQueue
template <class QDiscipline>
input.qdisc(disc);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "predecl.hh"
//#include "PassiveQueue.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "PassiveQueue.cci"
//#include "PassiveQueue.ct"
#include "PassiveQueue.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace ppi = senf::ppi;
namespace connector = ppi::connector;
BOOST_CHECK( ! sink );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "Queueing.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::ThresholdQueueing
prefix_ void senf::ppi::ThresholdQueueing::update(connector::GenericPassiveInput & input, Event event)
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Queueing.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::QueueingDiscipline
prefix_ senf::ppi::QueueingDiscipline::~QueueingDiscipline()
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::ThresholdQueueing
prefix_ senf::ppi::ThresholdQueueing::ThresholdQueueing(unsigned high, unsigned low)
: high_(high), low_(low)
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "predecl.hh"
//#include "Queueing.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Queueing.cci"
//#include "Queueing.ct"
//#include "Queueing.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace ppi = senf::ppi;
namespace connector = ppi::connector;
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Console/Variables.hh>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_PPI_REGISTER_QALGORITHM( "FIFOQueueingAlgorithm", senf::ppi::FIFOQueueingAlgorithm);
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::QueueingAlgorithm
prefix_ senf::ppi::QueueingAlgorithm::QueueingAlgorithm()
return dir_;
}
-/////////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::QueueingAlgorithmRegistry
prefix_ void senf::ppi::QueueingAlgorithmRegistry::dump(std::ostream & os)
throw Exception("QueueingAlgorithm not registered: ") << key;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::FIFOQueueingAlgorithm
prefix_ senf::ppi::FIFOQueueingAlgorithm::FIFOQueueingAlgorithm()
return new FIFOQueueingAlgorithm();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::QueueingAlgorithm
prefix_ unsigned senf::ppi::QueueingAlgorithm::size()
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::FIFOQueueingAlgorithm
prefix_ unsigned senf::ppi::FIFOQueueingAlgorithm::v_size()
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Console/ParsedCommand.hh>
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::QueueingAlgorithmRegistry
template <class QAlgorithm>
throw Exception("Duplicated QAlgorithm Registration ") << key;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::detail::QueueingAlgorithmRegistry_Entry<QAlgorithm>
template <class QAlgorithm>
return QAlgorithm::create();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::PassiveQueueingSocketSink<Writer>
template <class Writer>
qAlgorithm( QueueingAlgorithmRegistry::instance().createQAlgorithm( key));
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::QueueingAlgorithmRegistry::RegistrationProxy<QAlgorithm>
template <class QAlgorithm>
};
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::PassiveQueueingSocketSink<Writer>
template <class Writer>
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Console/ScopedDirectory.hh>
//#include "QueueingSocketSink.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "QueueingSocketSink.cci"
#include "QueueingSocketSink.ct"
#include "QueueingSocketSink.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace ppi = senf::ppi;
namespace module = ppi::module;
namespace debug = module::debug;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "RateAnalyzer.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::ppi::module::RateAnalyzer::RateAnalyzer()
: packets_ (0u), bytes_ (0u), minSize_ (0u), maxSize_ (0u), factor_ (0.0f)
packets_ = bytes_ = minSize_ = maxSize_ = 0;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "RateAnalyzer.mpp"
#include "IntervalTimer.hh"
//#include "RateAnalyzer.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
{
SENF_PPI_MODULE(RateAnalyzer);
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///\{
+ //\{
RateAnalyzer();
- ///\}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
// Statistics signals
struct Statistics {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "RateAnalyzer.cci"
//#include "RateAnalyzer.ct"
//#include "RateAnalyzer.cti"
#include <boost/test/floating_point_comparison.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "RateFilter.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
senf::ppi::module::RateFilter::RateFilter(senf::ClockService::clock_type interval)
: timer_(interval)
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "RateFilter.mpp"
#include "IntervalTimer.hh"
//#include "RateFilter.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}} //namespaces
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "RateFilter.cci"
//#include "RateFilter.ct"
//#include "RateFilter.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace ppi = senf::ppi;
namespace module = ppi::module;
namespace debug = module::debug;
BOOST_CHECK_EQUAL( sink.size(), 4);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Events.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::RouteBase
prefix_ senf::ppi::RouteBase::~RouteBase()
return v_hasEvent(event);
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
prefix_ senf::ppi::RouteBase::RouteBase(module::Module & module)
: module_(&module)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::ForwardingRoute
prefix_ bool senf::ppi::ForwardingRoute::autoThrottling()
return v_throttled();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
prefix_ senf::ppi::ForwardingRoute::ForwardingRoute(module::Module & module)
: RouteBase(module), autoThrottling_(true)
{}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::ForwardingRoute::notifyThrottle()
v_notifyUnthrottle();
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::detail::ForwardingRouteImplementation<Source,Target>
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
template <class Source, class Target>
throttled(this->target(),boost::mpl::bool_<RoutingTraits<Target>::notifySource>()) );
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::Route<Source,Target>
template <class Source, class Target>
: Base(module,source,target)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::ForwardingRoute
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
template <class T>
ob.notifyUnthrottle();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::detail::BaseRouteImplementation<Source,Target,Base>
template <class Source, class Target, class Base>
return *target_;
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
template <class Source, class Target, class Base>
: Base(module), source_(&source), target_(&target)
{}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
template <class Source, class Target, class Base>
return &event == &other;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::detail::ForwardingRouteImplementation<Source,Target>
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
template <class Source, class Target>
unregisterRoute(this->target());
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
template <class Source, class Target>
return false;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::detail::RouteImplementation2<Source,Target>
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
template <class Source, class Target>
: Base(module,source,target)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::detail::RouteImplementation<Source,Target>
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
template <class Source, class Target>
: Base(module,source,target)
{}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "predecl.hh"
//#include "Route.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Route.cci"
#include "Route.ct"
#include "Route.cti"
#include <boost/mpl/bool.hpp>
#include <boost/static_assert.hpp>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef DOXYGEN
#endif
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace ppi = senf::ppi;
namespace connector = ppi::connector;
BOOST_CHECK( activeSink );
}
-///////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// test connection new modules on runtime
namespace {
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "ModuleManager.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef DOXYGEN
#endif
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Jack.hh"
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef DOXYGEN
#endif
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "predecl.hh"
//#include "Setup.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Setup.cci"
//#include "Setup.ct"
#include "Setup.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(setup)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Socket/ClientSocketHandle.hh>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::ConnectedDgramWriter
prefix_ bool senf::ppi::ConnectedDgramWriter::operator()(Handle & handle,
return handle.write(packet.data()) != packet.data().begin();
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::ActiveSocketSink<Writer>
template <class Writer>
route(input, event_);
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
template <class Writer>
writer_(handle_,input());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::PassiveSocketSink<Writer>
template <class Writer>
checkThrottle();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
template <class Writer>
input.throttle();
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::TargetDgramWriter<HandleType>
template <class HandleType>
return false;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::ActiveSocketSink<Writer>
template <class Writer>
event_.set(handle_, IOEvent::Write);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::PassiveSocketSink<Writer>
template <class Writer>
}
#endif
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "IOEvent.hh"
//#include "SocketSink.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "SocketSink.cci"
#include "SocketSink.ct"
#include "SocketSink.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace ppi = senf::ppi;
namespace module = ppi::module;
namespace debug = module::debug;
BOOST_CHECK_EQUAL( data, input );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::DgramReader<Packet,MaxSize>
template <class Packet, unsigned MaxSize>
return packet;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::ActiveSocketSource<Reader>
template <class Reader>
route(event_, output);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::ActiveBurstSocketSource<Reader>
template <class Reader>
}
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::ActiveSocketSource<Reader>
template <class Reader>
output(reader_(handle_));
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::ActiveBurstSocketSource<Reader>
template <class Reader>
event_.set(handle_, IOEvent::Read);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "IOEvent.hh"
//#include "SocketSource.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "SocketSource.cci"
#include "SocketSource.ct"
#include "SocketSource.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace ppi = senf::ppi;
namespace module = ppi::module;
namespace debug = module::debug;
data.begin()) );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "ThrottleBarrier.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::ppi::module::ThrottleBarrier::ThrottleBarrier()
{
output(p);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "ThrottleBarrier.mpp"
#include "Module.hh"
//#include "ThrottleBarrier.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "ThrottleBarrier.cci"
//#include "ThrottleBarrier.ct"
//#include "ThrottleBarrier.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(throttleBarrier)
{
BOOST_CHECK_EQUAL( sink.size(), 1u );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/bind.hpp>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::detail::Callback<Arg>
template <class Arg>
return boost::bind(callable);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::detail::Callback<void>
template <class Owner, class FnClass>
return callable;
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/function.hpp>
//#include "Callback.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Callback.cci"
//#include "Callback.ct"
#include "Callback.cti"
//#include "EventBinding.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::ppi::detail::EventBindingBase::~EventBindingBase()
{
manager_->eventTime(time);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "EventBinding.mpp"
#include <senf/PPI/Events.hh>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::detail::EventBindingBase
prefix_ senf::ppi::EventManager & senf::ppi::detail::EventBindingBase::manager()
return *module_;
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
prefix_ senf::ppi::detail::EventBindingBase::EventBindingBase(EventManager & manager,
descriptor_->binding_ = this;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/PPI/EventManager.hh>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::detail::EventBindingHelper<EventType,Self>
template <class EventType, class Self>
callback(event, self().manager().now());
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
template <class EventType, class Self>
return * static_cast<Self*>(this);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::detail::EventBindingHelper<void,Self>
template <class Self>
callback(self().manager().now());
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
template <class Self>
return * static_cast<Self*>(this);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::detail::EventBinding<EvImpl>
template <class EventType>
: EventBindingBase(manager, module, descriptor), callback_(callback)
{}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Callback.hh"
//#include "EventBinding.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace ppi {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "EventBinding.cci"
//#include "EventBinding.ct"
#include "EventBinding.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
//#include "predecl.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "predecl.cci"
//#include "predecl.ct"
//#include "predecl.cti"
//#include "InformationElements.cc.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_PACKET_TLV_REGISTRY_REGISTER( senf::WLANSSIDInfoElementParser );
SENF_PACKET_TLV_REGISTRY_REGISTER( senf::WLANPowerConstraintInfoElementParser );
<< " value: ToDo!\n";
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/Packets.hh>
//#include "InformationElements.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
};
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "InformationElements.cci"
//#include "InformationElements.ct"
//#include "InformationElements.cti"
}
#define prefix_
-///////////////////////////////cc.p//////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Offset table management
prefix_ senf::RadiotapPacketParser::OffsetTable &
parseOffsetTable((boost::uint8_t*)&header, header.it_len, table);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::RadiotapPacketParser
unsigned const senf::RadiotapPacketParser_Header::FIELD_SIZE[] = {
currentTable_ = &newTable;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::RadiotapPacketType
prefix_ void senf::RadiotapPacketType::dump(packet p, std::ostream &os)
: optional_range( range(p.data().begin() + h, p.data().end() - t) );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::RadiotapPacketParser
prefix_ senf::RadiotapPacketParser::RadiotapPacketParser(data_iterator i, state_type s)
{
return parse<RadiotapPacketParser_FrameType>(length()).frameType();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::RadiotapPacketParser::initField(unsigned index)
return *currentTable_;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Parser>
prefix_ Parser senf::RadiotapPacketParser::parseField(unsigned index)
return parse<Parser>(currentTable()[index]);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/Packets.hh>
#include <boost/array.hpp>
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/** \brief Parse Flag field in Radiotap header
size_type bytes() const;
- // ////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
# define FIELD(name,type,index) \
typedef type name ## _t; \
typedef boost::array<size_type,MAX_INDEX+2> OffsetTable;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Offset table handling
static OffsetTable & offsetTable(boost::uint32_t presentFlags);
// Generate an offset table just from the present flags
static void buildOffsetTable(boost::uint32_t presentFlags, OffsetTable & table);
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
OffsetTable const & currentTable() const;
OffsetTable const & getTable(boost::uint32_t presentFlags) const;
typedef ConcretePacket<RadiotapPacketType> RadiotapPacket;
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "RadiotapPacket.cci"
//#include "RadiotapPacket.ct"
#include "RadiotapPacket.cti"
#include <senf/Utils/auto_unit_test.hh>
#include <boost/test/test_tools.hpp>
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(RadiotapPacket_fieldSizes)
{
#include <boost/io/ios_state.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::WLANBeaconPacketType::dump(packet p, std::ostream &os)
{
i->dump( os);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#include "InformationElements.hh"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
struct WLANBeaconPacketParser : public PacketParserBase
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "WLANBeaconPacket.cci"
//#include "WLANBeaconPacket.ct"
//#include "WLANBeaconPacket.cti"
#include <senf/Utils/auto_unit_test.hh>
#include <boost/test/test_tools.hpp>
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(WLANBeaconPacket_parse)
{
data, data+sizeof(data) );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
\f
// Local Variables:
#include <boost/io/ios_state.hpp>
#define prefix_
-///////////////////////////////cc.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
void dumpBase(senf::WLANPacketParser const & p, std::ostream & os)
os << senf::fieldName("QOS data") << p->qosField() << "\n";
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/DefaultBundle/EthernetPacket.hh>
#include <senf/Packets/DefaultBundle/LlcSnapPacket.hh>
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf
{
SENF_PARSER_FINALIZE(WLANPacketParser);
};
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
/** \brief Management frame parser
<b>Re-ordering of bits due to LSB byte order</b>
*/
typedef WLANPacket_MgtFrameType::packet WLANPacket_MgtFrame;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
/** \brief Control frame parser
<b>Re-ordering of bits due to LSB byte order</b>
*/
typedef WLANPacket_CtrlFrameType::packet WLANPacket_CtrlFrame;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
/** \brief Data frame parser
<b>Re-ordering of bits due to LSB byte order</b>
typedef WLANPacket_DataFrameType::packet WLANPacket_DataFrame;
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "WLANPacket.cci"
//#include "WLANPacket.ct"
//#include "WLANPacket.cti"
#include <senf/Utils/auto_unit_test.hh>
#include <boost/test/test_tools.hpp>
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
/* test parser with a data frame */
SENF_AUTO_UNIT_TEST(WLANPacket_dataFrame_packet)
{
BOOST_CHECK_EQUAL( p->subtype(), 13u);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
\f
// Local Variables:
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/Packets.hh>
//#include "MIHPacket.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
senf::MIHMessageRegistry, packet::type::MESSAGE_ID, packet )
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "MIHPacket.cci"
//#include "MIHPacket.ct"
//#include "MIHPacket.cti"
#include <senf/Packets/DefaultBundle/EthernetPacket.hh>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_PACKET_REGISTRY_REGISTER( senf::EtherTypes, 0x8917, senf::MIHPacket);
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// MIHPacketType
prefix_ void senf::MIHPacketType::dump(packet p, std::ostream &os)
return e ? e->factory() : MIHGenericPayloadPacket::factory();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// MIHGenericPayloadPacketType
prefix_ void senf::MIHGenericPayloadPacketType::dump(packet p, std::ostream &os)
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "MIHMessageRegistry.hh"
//#include "MIHPacket.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "MIHPacket.cci"
//#include "MIHPacket.ct"
//#include "MIHPacket.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
using namespace senf;
SENF_AUTO_UNIT_TEST(MIHPacket_msgId)
BOOST_CHECK( mihPacket->dst_mihfId().valueEquals( MIHFId::Multicast) );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
senf::MIHFId const senf::MIHFId::Multicast;
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// MIHFId
prefix_ senf::MIHFId::MIHFId()
: boost::variant< boost::blank, senf::MACAddress, senf::INet4Address,
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/variant.hpp>
//#include "MIHTypes.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "MIHTypes.cci"
//#include "MIHTypes.ct"
//#include "MIHTypes.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
using namespace senf;
SENF_AUTO_UNIT_TEST(mihfId)
BOOST_CHECK( id < MIHFId( INet4Address::from_string("128.129.130.131")));
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Format.hh>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_PACKET_TLV_REGISTRY_REGISTER( senf::MIHFSrcIdTLVParser );
SENF_PACKET_TLV_REGISTRY_REGISTER( senf::MIHFDstIdTLVParser );
SENF_PACKET_TLV_REGISTRY_REGISTER( senf::MIHStatusTLVParser );
SENF_PACKET_TLV_REGISTRY_REGISTER( senf::MIHValidTimeIntervalTLVParser );
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::MIHBaseListTLVParser
prefix_ void senf::MIHBaseListTLVParser::maxListSize(MIHTLVLengthParser::value_type maxl)
maxLength( maxl + senf::bytes(listSize_()));
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::MIHFIdTLVParser
prefix_ void senf::MIHFIdTLVParser::dump(std::ostream & os)
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::MIHFSrcIdTLVParser
prefix_ void senf::MIHFSrcIdTLVParser::dump(std::ostream & os)
MIHFIdTLVParser::dump(os);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::MIHFDstIdTLVParser
prefix_ void senf::MIHFDstIdTLVParser::dump(std::ostream & os)
MIHFIdTLVParser::dump(os);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::MIHStatusTLVParser
prefix_ void senf::MIHStatusTLVParser::dump(std::ostream & os)
os << " (???; invalid value!)" << std::endl;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::MIHRegisterReqCodeTLVParser
prefix_ void senf::MIHRegisterReqCodeTLVParser::dump(std::ostream & os)
os << " (???; invalid value!)" << std::endl;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::MIHValidTimeIntervalTLVParser
prefix_ void senf::MIHValidTimeIntervalTLVParser::dump(std::ostream & os)
<< ( value()==0 ? " (infinite)" : " seconds") << std::endl;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::MIHTLVLengthParser
prefix_ senf::MIHTLVLengthParser::value_type senf::MIHTLVLengthParser::value() const
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// MIHTLVLengthParser
prefix_ senf::MIHTLVLengthParser::size_type senf::MIHTLVLengthParser::bytes() const
return 1 + ( length_field()<=128 ? 0 : fixed_length_field());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// MIHFIdTLVParser::binaryNAIDecoder
prefix_ senf::MIHFIdTLVParser::binaryNAIDecoder::binaryNAIDecoder()
return readNextByte_;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// MIHFIdTLVParser
prefix_ senf::PacketParserBase::data_iterator senf::MIHFIdTLVParser::valueBegin()
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// MIHBaseTLVParser
prefix_ void senf::MIHBaseTLVParser::maxLength(MIHTLVLengthParser::value_type maxl)
};
-///////////////////////////////cci.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::MIHListTLVParserMixin
template <class Self>
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::MIHFIdTLVParser::binaryNAIEncoder<OutputIterator>
template <class OutputIterator>
*i_++ = v;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::MIHFIdTLVParser
template <class OutputIterator>
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "MIHTypes.hh"
//#include "TLVParser.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
public:
///\name Value setters
- ///@{
+ //\{
void value( MIHFId const & id);
void value( std::string const & id );
void value( senf::INet4Address const & addr);
void value( senf::INet6Address const & addr);
void value( senf::EUI64 const & addr);
- ///@}
+ //\}
///\name Value getters
- ///@{
+ //\{
MIHFId valueAs( MIHFId::Type type) const;
std::string valueAsString() const;
senf::INet4Address valueAsINet4Address() const;
senf::INet6Address valueAsINet6Address() const;
senf::EUI64 valueAsEUI64() const;
- ///@}
+ //\}
///\name Value comparisons
- ///@{
+ //\{
bool valueEquals( MIHFId const & id) const;
bool valueEquals( std::string const & id ) const;
bool valueEquals( senf::INet4Address const & addr) const;
bool valueEquals( senf::INet6Address const & addr) const;
bool valueEquals( senf::EUI64 const & addr) const;
- ///@}
+ //\}
void dump(std::ostream & os) const;
void maxIdLength(boost::uint8_t maxl) const;
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "TLVParser.cci"
#include "TLVParser.ct"
#include "TLVParser.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
using namespace senf;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ArrayParser<elements,ElementParser>
template <unsigned elements, class ElementParser>
(*i).init();
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/senfassert.hh>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ArrayParser<elements,ElementParser>
template <unsigned elements, class ElementParser>
return begin()[i];
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::ArrayParser_iterator<ElementParser>
template <class ElementParser>
i_ += n*ElementParser::fixed_bytes;
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "PacketParser.hh"
//#include "ArrayParser.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
void init() const;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Container interface
typedef ElementParser value_type;
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_ArrayParser_i_)
#define HH_SENF_Packets_ArrayParser_i_
// Custom includes
#include <boost/iterator/iterator_facade.hpp>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
/** \brief Internal: Array and Vector iterator
PacketParserBase::state_type s_;
};
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct VoidPacket : public senf::PacketTypeBase
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::PacketSizeAuxParserPolicy
prefix_ senf::PacketParserBase::size_type
return i;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::PrefixAuxParserPolicy<P>
template <class P>
return i+P::fixed_bytes;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::FixedAuxParserPolicy<P>
template <class P, unsigned Dist>
return i;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::DynamicAuxParserPolicy<P>
template <class P>
return i;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::DynamicWrapperAuxParserPolicy<P>
template <class P>
return i;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::TransformAuxParserPolicy<Policy,Transform>
template <class Policy, class Transform>
Policy::aux(Transform::set(v), i, s);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "SafeIterator.hh"
//#include "AuxParser.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace detail {
};
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_AuxParser_i_)
#define HH_SENF_Packets_AuxParser_i_
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// The other aux policies are tested with the corresponding container classes
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "DataPacket.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::DataPacketType::dump(packet p, std::ostream & os)
{
os << "Payload data (" << p.size() << " bytes)\n";
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "DataPacket.mpp"
#include "Packet.hh"
//#include "DataPacket.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
typedef ConcretePacket<DataPacketType> DataPacket;
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_DataPacket_impl_)
#define HH_SENF_Packets_DataPacket_impl_
#include <senf/Utils/Format.hh>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
SENF_PACKET_REGISTRY_REGISTER( senf::EtherTypes, 0x8100, senf::EthVLanPacket);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::EthernetPacketType
prefix_ void senf::EthernetPacketType::dump(packet p, std::ostream & os)
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/Packets.hh>
//#include "EthernetPacket.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "EthernetPacket.cci"
//#include "EthernetPacket.ct"
//#include "EthernetPacket.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(ethernetPacket_parse)
{
BOOST_CHECK_EQUAL(llcsnap->type_length(), 0x0800u);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <iomanip>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_PACKET_REGISTRY_REGISTER( senf::IpTypes, 58, senf::ICMPv6Packet);
senf::IpChecksum summer;
- ////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////////
// IPv6 pseudo header
summer.feed( ipv6->source().i(),
ipv6->source().i() + senf::IPv6Packet::Parser::source_t::fixed_bytes );
summer.feed( 0u );
summer.feed( 58u );
- ////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////////
// ICMP Packet
summer.feed( i(), i()+checksum_offset );
// checksum
<< "0x" << std::hex << std::setw(4) << unsigned(p->checksum()) << "\n";
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/Packets.hh>
//#include "ICMPv6Packet.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf
{
struct ICMPv6PacketParser : public PacketParserBase
typedef ConcretePacket<ICMPv6PacketType> ICMPv6Packet;
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "IPv4Packet.cci"
//#include "IPv4Packet.ct"
//#include "IPv4Packet.cti"
#include <senf/Utils/auto_unit_test.hh>
#include <boost/test/test_tools.hpp>
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(ICMPv6Packet_packet)
{
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
\f
// Local Variables:
#include "ICMPv6TypePacket.hh"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
SENF_PACKET_REGISTRY_REGISTER( senf::ICMPTypes, 1, senf::ICMPv6ErrDestUnreachable );
listIter->dump(os);
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
#include "ListOptionTypeParser.hh"
#include "NDPOptions.hh"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
//#############################################################
typedef ConcretePacket<NDPRedirectMessageType> NDPRedirectMessage;
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "ICMPv6TypePacket.cci"
//#include "ICMPv6TypePacket.ct"
//#include "ICMPv6TypePacket.cti"
#include "EthernetPacket.hh"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
SENF_PACKET_REGISTRY_REGISTER( senf::EtherTypes, 0x0800, senf::IPv4Packet);
SENF_PACKET_REGISTRY_REGISTER( senf::IpTypes, 4, senf::IPv4Packet); // IP-in-IP encapsulation
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::IPv4PacketParser
prefix_ boost::uint16_t senf::IPv4PacketParser::calcChecksum()
return summer.sum();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::IPv4PacketType
prefix_ void senf::IPv4PacketType::dump(packet p, std::ostream & os)
p->checksum() << p->calcChecksum();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/Packets.hh>
//#include "IPv4Packet.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "IPv4Packet.cci"
//#include "IPv4Packet.ct"
//#include "IPv4Packet.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
using namespace senf;
BOOST_CHECK( ip->validateChecksum() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/Packets.hh>
//#include "IPv6ExtOptions.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/** \brief IPv6 Extension Option parser
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "IPv6ExtOptions.cci"
//#include "IPv6ExtOptions.ct"
//#include "IPv6ExtOptions.cti"
//#include "IPv6Extensions.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
SENF_PACKET_REGISTRY_REGISTER( senf::IpTypes, 44, senf::IPv6FragmentPacket );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "IPv6Extensions.mpp"
#include "IPv6Packet.hh"
//#include "IPv6Extensions.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "IPv6Extensions.cci"
//#include "IPv6Extensions.ct"
//#include "IPv6Extensions.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(ipv6Extensions_fragment)
{
SENF_CHECK_NO_THROW( p.dump( oss));
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "IPv6Packet.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
SENF_PACKET_REGISTRY_REGISTER( senf::EtherTypes, 0x86dd, senf::IPv6Packet);
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "IPv6Packet.mpp"
#include "IPv4Packet.hh"
//#include "IPv6Packet.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
typedef ConcretePacket<IPv6PacketType> IPv6Packet;
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "IPv6Packet.cci"
//#include "IPv6Packet.ct"
//#include "IPv6Packet.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(ipV6Packet_parse)
{
data, data+sizeof(data), ip.data().begin(), ip.data().end() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::ListOptionTypeParser_Policy<ElementParser,AuxPolicy>
template <class ElementParser, class AuxPolicy>
AuxPolicy::aux(0, i, s);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::ListOptionTypeParser_Policy<ElementParser,BytesParser>
//constructor
return container_type::iterator::get(d).i();
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
//#include "ListOptionTypeParser.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "ListOptionTypeParser.cci"
//#include "ListOptionTypeParser.ct"
#include "ListOptionTypeParser.cti"
// Custom includes
#include <senf/Packets/ListParser.ih>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace detail {
}
}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct VoidPacket : public senf::PacketTypeBase
BOOST_CHECK_EQUAL( c.empty(), true);
}
}
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
\f
// Local Variables:
#include <boost/io/ios_state.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::LlcSnapPacketType::dump(packet p, std::ostream & os)
{
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/Packets.hh>
//#include "LlcSnapPacket.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "LlcSnapPacket.cci"
//#include "LlcSnapPacket.ct"
//#include "LlcSnapPacket.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(llcsnap_parse)
{
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/auto_unit_test.hh>
#include <boost/test/test_tools.hpp>
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(NDPMessage_create)
{
senf::dumpPacketRegistries(std::cout);
senf::NDPSourceLLAddressTLVParser llopt (listIter->as<senf::NDPSourceLLAddressTLVParser>());
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Local Variables:
#include "NDPOptions.hh"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_PACKET_TLV_REGISTRY_REGISTER( senf::NDPSourceLLAddressTLVParser );
SENF_PACKET_TLV_REGISTRY_REGISTER( senf::NDPTargetLLAddressTLVParser );
SENF_PACKET_TLV_REGISTRY_REGISTER( senf::NDPPrefixInformationTLVParser );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
#include <senf/Packets/DefaultBundle/EthernetPacket.hh>
#include <senf/Packets/DefaultBundle/IPv6Packet.hh>
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
//#############################################################
};
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "NDPOptions.cci"
//#include "NDPOptions.ct"
//#include "NDPOptions.cti"
#include "IPv6Packet.hh"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
SENF_PACKET_REGISTRY_REGISTER( senf::IpTypes, 6, senf::TCPPacket);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::TCPPacketParser
prefix_ boost::uint16_t senf::TCPPacketParser::calcChecksum()
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::TCPPacketType
prefix_ void senf::TCPPacketType::dump(packet p, std::ostream & os)
p->checksum() << p->calcChecksum();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/Packets.hh>
//#include "TCPPacket.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "TCPPacket.cci"
//#include "TCPPacket.ct"
//#include "TCPPacket.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(tcpPacket_parse)
{
BOOST_CHECK( tcp->validateChecksum() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "IPv6Packet.hh"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
SENF_PACKET_REGISTRY_REGISTER( senf::IpTypes, 17, senf::UDPPacket);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::UDPPacketParser
prefix_ boost::uint16_t senf::UDPPacketParser::calcChecksum()
return rv ? rv : 0xffffu;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::UDPPacketType
prefix_ void senf::UDPPacketType::dump(packet p, std::ostream & os)
p->checksum() << p->calcChecksum();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/Packets.hh>
//#include "UDPPacket.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "UDPPacket.cci"
//#include "UDPPacket.ct"
//#include "UDPPacket.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(udpPacket_parse)
{
BOOST_CHECK( udp->validateChecksum() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(packetLink)
{
BOOST_CHECK( p.next().is<senf::IPv6Packet>() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "DumpFormat.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef SENF_PACKET_DUMP_COLON_COLUMN
#define SENF_PACKET_DUMP_COLON_COLUMN 27
return t;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "DumpFormat.mpp"
#include <boost/type_traits/is_unsigned.hpp>
//#include "DumpFormat.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_DumpFormat_i_)
#define HH_SENF_Packets_DumpFormat_i_
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(dumpFormat)
{
BOOST_CHECK_EQUAL( senf::fieldName("xxxxxxxxxxxxxxxxxxxxxxxx"), " xxxxxxxxxxxxxxxxxxxxxxxx : " );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Format.hh>
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::GenericTLVParserBase<Base>
template <class Base>
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::GenericTLVParserRegistry<BaseParser,Keytype>
template <class BaseParser, class Keytype>
#undef PTRMAP_GET_CONTENTS
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::GenericTLVParserBase<Base>
template <class Base>
#endif
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail:GenericTLVParserRegistry_Entry<BaseParser, Parser>
template <class BaseParser, class Parser>
return senf::bytes( parser.template as<Parser>());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::GenericTLVParserRegistry<BaseParser,Keytype>
template <class BaseParser, class Keytype>
return i != map_.end();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::GenericTLVParserRegistry<BaseParser,Keytype>::RegistrationProxy<PacketParser>
template <class BaseParser, class Keytype>
GenericTLVParserRegistry<BaseParser,Keytype>::instance().registerParser<PacketParser>();
};
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/singleton.hh>
//#include "GenericTLV.hh.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "GenericTLV.cci"
#include "GenericTLV.ct"
#include "GenericTLV.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct MyTLVParserBase
BOOST_CHECK( it->is<MyConcreteTLVParser>()) ;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "PacketParser.hh"
//#include "IntParser.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "IntParser.ih"
namespace senf {
{
Int8Parser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef boost::int8_t value_type;
static size_type const fixed_bytes = 1;
{
UInt8Parser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef boost::uint8_t value_type;
static size_type const fixed_bytes = 1;
{
Int16Parser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef boost::int16_t value_type;
static size_type const fixed_bytes = 2;
{
Int16LSBParser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef boost::int16_t value_type;
static size_type const fixed_bytes = 2;
{
UInt16Parser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef boost::uint16_t value_type;
static size_type const fixed_bytes = 2;
{
UInt16LSBParser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef boost::uint16_t value_type;
static size_type const fixed_bytes = 2;
{
Int24Parser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef boost::int32_t value_type;
static size_type const fixed_bytes = 3;
{
UInt24Parser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef boost::uint32_t value_type;
static size_type const fixed_bytes = 3;
{
Int32Parser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef boost::int32_t value_type;
static size_type const fixed_bytes = 4;
{
UInt32Parser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef boost::uint32_t value_type;
static size_type const fixed_bytes = 4;
{
UInt32LSBParser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef boost::uint32_t value_type;
static size_type const fixed_bytes = 4;
{
Int64Parser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef boost::int64_t value_type;
static size_type const fixed_bytes = 8;
{
UInt64Parser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef boost::uint64_t value_type;
static size_type const fixed_bytes = 8;
{
UInt64LSBParser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef boost::uint64_t value_type;
static size_type const fixed_bytes = 8;
{
IntFieldParser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef boost::int32_t value_type;
static size_type const start_bit = Start;
{
UIntFieldParser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef boost::uint32_t value_type;
static size_type const start_bit = Start;
{
FlagParser(data_iterator i, state_type s) : PacketParserBase(i,s,fixed_bytes) {}
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
typedef bool value_type;
static size_type const bit = Bit;
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_IntParser_i_)
#define HH_SENF_Packets_IntParser_i_
// Custom includes
#include "PacketTypes.hh"
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace detail {
namespace packet {
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////////
// Integer operators
/** \brief Internal: Integer operation mixin for integer parsers
Derived const & derived() const { return *static_cast<Derived const *>(this); };
};
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////////
// Network byte order integer extraction
/** \brief Internal: Extract 16bit network byte order value
i[7] = ( v >> 56 ) & 0xff;
}
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////////
// bitfield extraction
// Doxygen doesn't like this stuff ...
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
using namespace senf;
// up, I'll add a check here ...
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::ListBParser_Policy<ElementParser,AuxPolicy>::container_policy
template <class ElementParser, class AuxPolicy>
container_size_ = selfp.data().size();
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::ListBParser_Policy<ElementParser,AuxPolicy>
template <class ElementParser, class AuxPolicy>
AuxPolicy::aux(0,i,s);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::ListBParser_Policy<ElementParser,BytesParser>
template <class ElementParser, class AuxPolicy>
return container_type::iterator::get(d).i();
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "ListParser.hh"
//#include "ListBParser.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_ListBParser_i_)
#define HH_SENF_Packets_ListBParser_i_
// Custom includes
#include "ListParser.ih"
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace detail {
}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct VoidPacket : public senf::PacketTypeBase
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/senfassert.hh>
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class ElementParser, class AuxPolicy>
prefix_ void
return j;
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class ElementParser, class AuxPolicy>
prefix_ senf::detail::ListNParser_Policy<ElementParser,AuxPolicy>::ListNParser_Policy()
: c.data().end();
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "ListNParser.mpp"
#include "ListNParser.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_ListNParser_i_)
#define HH_SENF_Packets_ListNParser_i_
// Custom includes
#include "ListParser.ih"
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace detail {
}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct VoidPacket_Type : public senf::PacketTypeBase
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/senfassert.hh>
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ListParser<ElementParser,ListPolicy>
template <class ListPolicy>
return *j;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ListParser_Container<ListPolicy>
template <class ListPolicy>
push_back(value,n-sz);
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/senfassert.hh>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ListParser<ListPolicy>
template <class ListPolicy>
return ListPolicy::bytes(i(),state());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Container interface
template <class ListPolicy>
return static_cast<ListParser const &>(p);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::ListParser_Iterator<ElementParser,IteratorPolicy>
template <class Container>
i_ = c_->Container::policy::next(*c_, *this);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ListParser_Container<ListPolicy>
// Structors and default members
parser().init();
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "PacketParser.hh"
//#include "ListParser.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
static const size_type init_bytes = ListPolicy::init_bytes;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Container interface
typedef typename ListPolicy::element_type value_type;
: private ListPolicy
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef ListPolicy policy;
typedef iterator const_iterator;
typedef PacketParserBase::state_type state_type;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
// no default constructor
// default copy
ListParser_Container(parser_type const & list);
~ListParser_Container();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
///\name Accessors
- ///@{
+ //\{
size_type size() const;
bool empty() const;
value_type front() const;
value_type back() const;
- ///@}
+ //\}
///\name Mutators
- ///@{
+ //\{
// All these operations can be quite inefficient depending on the list type
value_type shift(iterator pos, size_type n=1);
void resize (size_type n);
template <class Value> void resize (size_type n, Value value);
- ///@}
+ //\}
///\name Parser interface
- ///@{
+ //\{
parser_type parser() const;
data_iterator i() const;
size_type bytes() const;
void init() const;
- ///@}
+ //\}
private:
friend class detail::ListParser_Iterator<ListParser_Container>;
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_ListParser_i_)
#define HH_SENF_Packets_ListParser_i_
// Custom includes
#include <boost/iterator/iterator_facade.hpp>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace detail {
}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Since the list cannot be instantiated without a policy, there is nothing to test without atleast
// a very simple policy. Since ListBParser provides a policy which is as simple as it can get, all
// testing is performed in ListBParser.test.cc
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <iomanip>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::DTCPHelloPacketType::dump(packet p, std::ostream & os)
{
#undef prefix_
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/DefaultBundle/IPv6Packet.hh>
//#include "DTCPPacket.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
typedef DTCPHelloPacketType::packet DTCPHelloPacket;
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "DTCPPacket.cci"
//#include "DTCPPacket.ct"
//#include "DTCPPacket.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(dtcpPacket)
{
hello2.data().begin(), hello2.data().end() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/DefaultBundle/IPv4Packet.hh>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_PACKET_REGISTRY_REGISTER( senf::EtherTypes, 0x6558, senf::EthernetPacket );
SENF_PACKET_REGISTRY_REGISTER( senf::IpTypes, 47, senf::GREPacket );
<< senf::fieldName("protocol_type") << "0x" << std::hex << p->protocol_type() << "\n";
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/DefaultBundle/EthernetPacket.hh>
//#include "GREPacket.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "TransportPacket.cci"
//#include "TransportPacket.ct"
//#include "TransportPacket.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
using namespace senf;
//BOOST_CHECK_EQUAL( p->bytes(), 4u );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/DefaultBundle/IPv6Packet.hh>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ boost::uint32_t senf::MPESectionParser::calcCrc()
p->crc() = p->calcCrc();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/Packets.hh>
//#include "MPESection.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
typedef ConcretePacket<MPESectionType> MPESection;
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "MPESection.cci"
//#include "MPESection.ct"
//#include "MPESection.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
using namespace senf;
sec_data, sec_data+sizeof(sec_data), sec.data().begin(), sec.data().end() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ boost::uint32_t senf::SNDUPacketParser::calcCrc()
const
return 2 + 2; // D-Bit + 15 bits length + 16 bits type field
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/DefaultBundle/EthernetPacket.hh>
//#include "SNDUPacket.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
SENF_PARSER_FINALIZE( SNDUPacketParser );
- MACAddressParser destination() /// Only defined if d_bit() == \c false
+ MACAddressParser destination() ///< Only defined if d_bit() == \c false
{ return destination_().get<0>(); }
- bool d_bit() /// Destination absent bit
+ bool d_bit() ///< Destination absent bit
{ return d_bit_(); }
- void withDestination() /// Clear destination absent bit
+ void withDestination() ///< Clear destination absent bit
{ destination_().init<0>(); }
- void withoutDestination() /// Set destination absent bit
+ void withoutDestination() ///< Set destination absent bit
{ destination_().init<1>(); }
UInt32Parser crc()
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "SNDUPacket.cci"
//#include "SNDUPacket.ct"
//#include "SNDUPacket.cti"
#include <boost/io/ios_state.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::TransportPacketParser::init_fields()
const
os << senf::fieldName("pointer field") << "0x" << unsigned(p->pointer_field()) << "\n";
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Packets/Packets.hh>
//#include "TransportPacket.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "TransportPacket.cci"
//#include "TransportPacket.ct"
//#include "TransportPacket.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
using namespace senf;
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "Packet.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::Packet senf::Packet::getNext()
const
return p;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Packet.mpp"
#include <senf/Utils/senfassert.hh>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::Packet
// protected members
return target;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::Packet
template <class OtherPacket>
return OtherPacket();
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Exception.hh>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::Packet
// conversion constructors
return ptr()->annotation<Annotation>();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ConcretePacket<PacketType>
// structors and default members
return static_cast< PacketInterpreter<PacketType> *>( Packet::ptr().get());
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "PacketInterpreter.hh"
//#include "Packet.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
template <class PackeType> class ConcretePacket;
///\addtogroup packet_module
- ///@{
+ //\{
/** \brief Main %Packet class
public boost::equality_comparable<Packet>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef void type; ///< Type of the packet.
///< Unsigned type to represent packet size
typedef PacketInterpreterBase::factory_t factory_t; ///< Packet factory type (see below)
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
// default copy constructor
// default copy assignment
ConcretePacket into a general Packet, loosing the
protocol specific interface. */
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
///\name Interpreter chain access
- ///@{
+ //\{
Packet next() const; ///< Get next packet in chain
/**< \throws InvalidPacketChainException if no next packet
/**< This member will throw away the packet chain after the
current packet. The payload will be reparsed
automatically when calling next() */
- ///@}
+ //\}
///\name Data access
- ///@{
+ //\{
PacketData & data() const; ///< Access the packets raw data container
size_type size() const; ///< Return size of packet in bytes
/**< This size does \e not include the size of any preceding
headers/packets/interpreters. It does however include
\c this packets payload. */
- ///@}
+ //\}
///\name Annotations
- ///@{
+ //\{
template <class Annotation>
Annotation & annotation(); ///< Get packet annotation
the annotations equates to a new created %packet.
\warning all references to existing complex
annotations become invalid. */
- ///@}
+ //\}
///\name Other methods
- ///@{
+ //\{
bool operator==(Packet const & other) const; ///< Check for packet identity
/**< Two packet handles compare equal if they really are the
/**< This method returns true if there is any other packet
handle pointing to any header in the packet chain. */
- ///@}
+ //\}
protected:
explicit Packet(PacketInterpreterBase::ptr const & packet);
: public Packet
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef PacketType type;
typedef typename PacketType::parser Parser;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
// default copy constructor
// default copy assignment
ConcretePacket clone() const;
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
// Field access
template <class PacketType, class Parser>
Parser operator<<(Parser target, ConcretePacket<PacketType> const & packet);
- ///@}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_Packet_i_)
#define HH_SENF_Packets_Packet_i_
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
#endif
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "PacketData.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Modifying the raw packet data
impl().insert(this,end(),n-size(),v);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "PacketData.mpp"
// #include "PacketParser.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketData
prefix_ senf::detail::PacketImpl & senf::PacketData::impl()
: impl_(), begin_(b), end_(e)
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketData
// Modifying the raw packet data
{}
#endif
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Exception.hh>
//#include "PacketData.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
: boost::noncopyable
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef senf::detail::packet::iterator iterator;
typedef byte * pointer;
typedef byte const * const_pointer;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
// no public constructors
// no conversion constructors
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
///\name Sequence interface to raw data
- ///@{
+ //\{
iterator begin() const; ///< Return iterator to beginning
/**< Returns an <em>random access iterator</em> referring to the
void reserve(size_type n);
size_type capacity() const;
- ///@}
+ //\}
protected:
PacketData(size_type b, size_type e);
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_PacketData_i_)
#define HH_SENF_Packets_PacketData_i_
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct VoidPacket : public senf::PacketTypeBase {};
BOOST_CHECK( &d == &i.data() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "PacketImpl.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::PacketImpl
prefix_ senf::detail::PacketImpl::~PacketImpl()
? 0 : complexAnnotations_[-key-1].get();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::AnnotationRegistry
prefix_ void senf::detail::AnnotationRegistry::dump(key_type key, std::ostream & os,
senf::detail::AnnotationRegistry::instance().dumpRegistrations(os);
}
-/////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "PacketImpl.mpp"
// #include "PacketInterpreter.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::AnnotationRegistry
prefix_ std::string senf::detail::AnnotationRegistry::name(key_type key)
: simpleAnnotationCount_ (0), complexAnnotationCount_ (0)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Memory management:
//
// The last three also modify the impl_ member accordingly by calling
// PacketInterpreterBase::assign/release
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::PacketImpl
prefix_ senf::detail::PacketImpl::PacketImpl()
return key >= 0 ? & simpleAnnotations_[key] : complexAnnotation(key);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::PacketImpl::Guard
prefix_ senf::detail::PacketImpl::Guard::Guard(PacketImpl * impl)
p->release();
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Annotation>
senf::detail::AnnotationRegistry::RegistrationProxy<Annotation>
return rv;
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::AnnotationRegistry
template <class Annotation>
return AnnotationRegistry::Entry<Annotation>::key();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::PacketImpl
// Data container
return * static_cast<Annotation*>(antn);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "PacketImpl.mpp"
#include "PacketImpl.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_PacketImpl_i_)
#define HH_SENF_Packets_PacketImpl_i_
#include <senf/config.hh>
#include <senf/Utils/IgnoreValue.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct VoidPacket : public senf::PacketTypeBase {};
#endif
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "PacketInterpreter.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketInterpreterBase
// structors and default members
delete this;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketInterpreterBase::Factory
prefix_ senf::PacketInterpreterBase::Factory::~Factory()
{}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "PacketInterpreter.mpp"
#include <boost/utility.hpp>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketInterpreterBase
// Structors and default members
return impl().clearAnnotations();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
// protected structors
return v_appendClone(impl,r);
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
// containment management. Only to be called by PacketImpl.
const_cast<PacketInterpreterBase *>(p)->intrusive_refcount_base::release();
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Packet.hh"
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketInterpreterBase
// Interpreter chain access
return pi;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketInterpreter<PacketType>
// Create completely new packet
return create(&packet->impl(),packet->data().begin(),packet->data().end(),packet);
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
// virtual interface
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketInterpreterBase::Factory
template <class ForwardReadableRange>
return pi;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketInterpreter<PacketType>::FactoryImpl
// Create completely new packet
const typename senf::PacketInterpreter<PacketType>::FactoryImpl
senf::PacketInterpreter<PacketType>::factory_;
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketInterpreterBase
// Interpreter chain access
return impl().annotation<Annotation>();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketInterpreter<PacketType>
template <class PacketType>
return parser (data().begin(),&data());
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
// Private structors
return type::init(ConcretePacket<PacketType>(ptr(this)));
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/TypeIdValue.hh>
//#include "PacketInterpreter.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
public intrusive_refcount_t<PacketInterpreterBase>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef senf::detail::packet::smart_pointer<
typedef Factory const * factory_t;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
// protected constructors
// no copy
ptr clone();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
///\name Interpreter chain access
- ///@{
+ //\{
ptr next();
ptr prev();
void reparse();
- ///@}
+ //\}
///\name Data access
- ///@{
+ //\{
using PacketData::valid;
PacketData & data();
- ///@}
+ //\}
///\name Annotations
- ///@{
+ //\{
template <class Annotation>
Annotation & annotation();
void clearAnnotations();
- ///@}
+ //\}
///\name Access to the abstract interface
- ///@{
+ //\{
optional_range nextPacketRange();
void finalizeThis();
factory_t factory();
factory_t nextPacketType();
- ///@}
+ //\}
protected:
// protected structors
public pool_alloc_mixin< PacketInterpreter<PacketType> >
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef typename senf::detail::packet::smart_pointer<
typedef PacketType type;
typedef typename type::parser parser;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
// private constructors
// no copy
ptr clone();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
// Packet field access
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_PacketInterpreter_i_)
#define HH_SENF_Packets_PacketInterpreter_i_
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct VoidPacket : public senf::PacketTypeBase {
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "PacketParser.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::PacketParserBase::resize(size_type oldSize, size_type newSize)
{
i_ = safe_i;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "PacketParser.mpp"
#include "PacketData.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketParserBase
// public members
return Packet(PacketInterpreterBase::ptr(static_cast<PacketInterpreterBase*>(&data())));
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef DOXYGEN
template <class Parser>
return Parser::fixed_bytes;
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "PacketData.hh"
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketParserBase
template <class Parser>
return Parser(arg, boost::next(i(),n), state());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// namespace members
template <class Parser>
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ValueParserBase<Parser, ValueType, FixedBytes>
template <class Parser, typename ValueType, senf::PacketParserBase::size_type FixedBytes>
return *static_cast<Parser const *>(this);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "SafeIterator.hh"
//#include "PacketParser.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
// created data object. The default implementation just does nothing.
void init() const;
- // ////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Add here members returning (sub-)parsers for the fields. The 'parse' member is
// used to construct the sub-parsers. This member either takes an iterator to the
class PacketParserBase
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef detail::packet::iterator data_iterator; ///< Raw data iterator type
typedef PacketData * state_type; ///< Type of the 'state' parameter
typedef PacketParserBase parser_base_type; ///< Base type of the next parser
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
// no default constructor
// default copy
// default destructor
// no conversion constructors
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
data_iterator i() const; ///< Return beginning of data to parse
/**< The parser is expected to interpret the data beginning
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_PacketParser_i_)
#define HH_SENF_Packets_PacketParser_i_
// Custom includes
#include <senf/Utils/mpl.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace detail {
// Either 'some-class-name' is not the class you wanted to use (it really is no parser) or you
// left out either 'init_bytes' or 'fixed_bytes' when defining the parser. This will also
// happen, if you forget to call 'SENF_PARSER_FINALIZE()' when defining a composite parser.
- ///////////////////////////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////////
// If Parser::init_bytes is not defined, this specialization is chosen which instead uses
// 'Parser::fixed_bytes'
}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct VoidPacket : public senf::PacketTypeBase {};
BOOST_CHECK_EQUAL( senf::init_bytes<BarParser>::value, 6u );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "PacketRegistry.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::detail::PacketRegistryImplBase::~PacketRegistryImplBase()
{}
return map;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "PacketRegistry.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::dumpPacketRegistries(std::ostream & os)
{
senf::detail::PacketRegistryImplBase::dump(os);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Format.hh>
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::PacketRegistryImpl<KeyType>::Entry
template <class KeyType>
prefix_ senf::detail::PacketRegistryImpl<KeyType>::Entry::~Entry()
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::PacketRegistryImpl<KeyType>::EntryImpl<PacketType>
template <class KeyType>
return typeid(PacketType);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::PacketRegistryImpl<KeyType>:
template <class KeyType>
registry_.clear();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::DumpKey<KeyType,is_integral>
template <class KeyType, bool is_integral>
os << " " << senf::format::dumpint(v);
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////PacketRegistry..p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketRegistry<Tag>::ScopedRegistrationProxy<PacketType>
template <class Tag>
{}
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketRegistry<Tag>
template <class Tag>
return instance().registry_;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::PacketRegistryImpl<KeyType>
template <class KeyType>
return registry_.end();
}
-///////////////////////////////PacketRegistry..e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "PacketRegistry.ih"
//#include "PacketRegistry.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_PacketRegistry_i_)
#define HH_SENF_Packets_PacketRegistry_i_
#include <boost/iterator/transform_iterator.hpp>
#include <senf/Utils/TypeIdValue.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace detail {
};
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
// Types
typedef typename Registry::template index<ByKey>::type::const_iterator iterator;
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
PacketRegistryImpl(std::string const & name);
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-/////////////////////////////////////////////////////////////////////////////////////////
template <class PacketType>
void registerPacket(key_t key, int priority=0);
}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketTypeBase
prefix_ senf::PacketTypeBase::optional_range senf::PacketTypeBase::no_range()
prefix_ void senf::PacketTypeBase::dump(packet p, std::ostream & os)
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketTypeMixin<Self,void>
template <class Self>
boost::prior(p.data().end(),Self::initSize()-sz)));
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "PacketRegistry.hh"
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketTypeBase
template <class PacketType>
return PacketInterpreter<PacketType>::factory();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketTypeMixin<Self,Registry>
template <class Self, class Registry>
return entry ? entry->factory() : PacketTypeBase::no_factory();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::PacketTypeMixin<Self,void>
template <class Self>
p->init();
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Packet.hh"
//#include "PacketType.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
no_factory() will be returned. */
///\name PacketType interface implementation
- ///@{
+ //\{
static PacketInterpreterBase::optional_range nextPacketRange (ConcretePacket<Self> const & p);
static PacketInterpreterBase::factory_t nextPacketType (ConcretePacket<Self> const & p);
static PacketInterpreterBase::size_type initSize ();
static void init (ConcretePacket<Self> const & p);
- ///@}
+ //\}
};
# ifndef DOXYGEN
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_PacketType_i_)
#define HH_SENF_Packets_PacketType_i_
#include <senf/boost_intrusive/ilist_hook.hpp>
//#include "PacketTypes.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_PacketTypes_i_)
#define HH_SENF_Packets_PacketTypes_i_
\code
struct TestParser : public senf::PacketParserBase
{
- // /////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////
// #include SENF_PARSER()
private:
void init_chain (senf::mpl::rv <0> *) const {}
size_type field_offset_ (senf::mpl::rv <0> *) const { return 0; }
- // /////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////
// SENF_PARSER_SKIP_BITS( 4 );
SENF_MPL_SLOT_SET(bit, SENF_MPL_SLOT_GET(bit) + 4);
- // /////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////
// SENF_PARSER_BITFIELD_RO( type, 4, unsigned );
public:
return type_();
}
- // /////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////
// SENF_PARSER_PRIVATE_VARIANT( content_, type,
// ( novalue( nocontent, key(10, senf::VoidPacketParser)) )
// ( id( content, SubParser ) )
return content_().variant() == 1;
};
- // /////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////
// SENF_PARSER_FINALIZE(TestParser);
void defaultInit() const
//#include "ParseHelpers.mpp"
#include "ParseHelpers.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
/** \defgroup packetparsermacros Helper macros for defining new packet parsers
\ingroup packetparser
*/
///\addtogroup packetparsermacros
-///\{
+//\{
///\name Control information
-///@{
+//\{
/** \brief Define fixed size parser
*/
#define SENF_PARSER_FINALIZE(name)
-///@}
+//\}
///\name Parser fields
-///@{
+//\{
/** \brief Define normal parser field
*/
#define SENF_PARSER_CUSTOM_FIELD(name, type, size)
-///@}
+//\}
///\name Bit fields
-///@{
+//\{
/** \brief Define bit-field
*/
#define SENF_PARSER_PRIVATE_BITFIELD(name, bits, type)
-///@}
+//\}
///\name Current offset
-///@{
+//\{
/** \brief Skip bytes
*/
#define SENF_PARSER_CURRENT_FIXED_OFFSET()
-///@}
+//\}
#else
#endif
-///\}
+//\}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_ParseHelpers_i_)
#define HH_SENF_Packets_ParseHelpers_i_
# include "../Utils/preprocessor.hh"
# include "../Utils/mpl.hh"
#
-# ////////////////////////////////ih.p///////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
#
-# ///////////////////////////////////////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_INITIALIZE
#
# define SENF_PARSER_INITIALIZE BOOST_PP_CAT( SENF_PARSER_INITIALIZE_ , SENF_PARSER_TYPE )
size_type field_offset_(senf::mpl::rv<0>*) const { return 0; } \
public:
#
-# ///////////////////////////////////////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_INHERIT_*
#
# define SENF_PARSER_INHERIT_var(name) \
} \
public:
#
-# ///////////////////////////////////////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_FIELD*
# // SENF_PARSER_P_FIELD_*
#
BOOST_PP_CAT(SENF_PARSER_I_ISVAR_, ofstype) (name, type), \
access )
#
-# ////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_I_FIELD_INTRO
#
# define SENF_PARSER_I_FIELD_INTRO(name, type, access) \
SENF_MPL_SLOT_SET(index, BOOST_PP_CAT(name,_index)); \
access:
#
-# ////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_I_FIELD_INIT_*
#
# define SENF_PARSER_I_FIELD_INIT_rw(name, type, access) \
} \
access:
#
-# ////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_I_FIELD_OFS_*
#
# define SENF_PARSER_I_FIELD_OFS_var(name, type, access) \
SENF_MPL_SLOT_GET(offset); \
private:
#
-# ////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_I_ADVANCE_OFS_*
#
# define SENF_PARSER_I_SIZE_var(name, type) senf::bytes(BOOST_PP_CAT(name, _)())
SENF_MPL_SLOT_SET(offset, BOOST_PP_CAT(name, _next_offset)); \
access:
#
-# ////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_I_FIELD_VAL_*
#
# define SENF_PARSER_I_FIELD_VAL_rw(name, type, access) \
return BOOST_PP_CAT(name,_)(); \
}
#
-# ///////////////////////////////////////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_CUSTOM_FIELD_*
#
# define SENF_PARSER_CUSTOM_FIELD_var(name, type, size, isize) \
BOOST_PP_CAT(SENF_PARSER_I_ADVANCE_OFS_, ofstype) (name, type, size, isize, 1, public) \
BOOST_PP_CAT(name, _t) name() const
#
-# ///////////////////////////////////////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_BITFIELD_*
# // SENF_PARSER_P_BITFIELD_*
#
# define SENF_PARSER_P_BITFIELD_fix(name, bits, type) \
SENF_PARSER_BITFIELD_I(name, bits, type, fix, rw, protected)
#
-# ////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_BITFIELD_I
#
# define SENF_PARSER_BITFIELD_TYPE_signed(start, bits) senf::IntFieldParser<start, start+bits>
BOOST_PP_CAT(SENF_PARSER_I_FIELD_VAL_, rwtype) (name, type, access) \
public:
#
-# ////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_I_BITFIELD_OFS_*
#
# define SENF_PARSER_I_BITFIELD_OFS_var(name, type, access) \
static size_type const BOOST_PP_CAT(name, _offset) = \
SENF_MPL_SLOT_GET(offset) - SENF_MPL_SLOT_GET(bitfield_size);
#
-# ////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_I_BITFIELD_RESET
#
# define SENF_PARSER_I_BITFIELD_RESET() \
SENF_MPL_SLOT_SET(bit, 0); \
SENF_MPL_SLOT_SET(bitfield_size, 0);
#
-# ///////////////////////////////////////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_SKIP_*
#
# define SENF_PARSER_SKIP_var(bytes, ibytes) \
private) \
public:
#
-# ///////////////////////////////////////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_SKIP_BITS_*
#
# define SENF_PARSER_SKIP_BITS_var(bits) SENF_PARSER_I_SKIP_BITS(bits, var)
SENF_MPL_SLOT_SET(bit, SENF_MPL_SLOT_GET(bit) + bits); \
public:
#
-# ///////////////////////////////////////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_GOTO_*
#
# define SENF_PARSER_GOTO_var(name) \
# define SENF_PARSER_I_GOTO_SET_OFS_fix(name, offs, initsize) \
SENF_MPL_SLOT_SET(offset, offs);
#
-# ///////////////////////////////////////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_LABEL_*
#
# define SENF_PARSER_LABEL_var(name) SENF_PARSER_I_LABEL( name, var, public )
BOOST_PP_CAT(SENF_PARSER_I_ADVANCE_OFS_, ofstype) (name, void, 0, 0, 0, access) \
public:
#
-# ///////////////////////////////////////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_OFFSET_*
#
# define SENF_PARSER_OFFSET_fix(name) BOOST_PP_CAT(name, _offset)
# define SENF_PARSER_OFFSET_var(name) BOOST_PP_CAT(name, _offset)()
#
-# ///////////////////////////////////////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_FIXED_OFFSET_*
#
# define SENF_PARSER_FIXED_OFFSET_fix(name) BOOST_PP_CAT(name, _offset)
# define SENF_PARSER_FIXED_OFFSET_var(name) BOOST_PP_CAT(name, _init_bytes)
#
-# ///////////////////////////////////////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_CURRENT_FIXED_OFFSET_*
#
# define SENF_PARSER_CURRENT_FIXED_OFFSET_fix() SENF_MPL_SLOT_GET(offset)
# define SENF_PARSER_CURRENT_FIXED_OFFSET_var() SENF_MPL_SLOT_GET(init_bytes)
#
-# ///////////////////////////////////////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_FINALIZE_*
#
# define SENF_PARSER_FINALIZE_var(name) \
public: \
void init() const { init(0); }
#
-# ///////////////////////////////////////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_REQUIRE_VAR
#
# define SENF_PARSER_REQUIRE_VAR(description) \
BOOST_PP_CAT(description, _not_allowed_in_fixed_parser) ) \
BOOST_PP_CAT(errsym_, __LINE__);
#
-# ///////////////////////////////////////////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# // SENF_PARSER_COLLECTION_I
#
# ifndef DOXYGEN
BOOST_PP_CAT(name, _t) name() const \
{ return BOOST_PP_CAT(name, _)(); }
#
-# ////////////////////////////////ih.e///////////////////////////////////////
+# //-///////////////////////////////////////////////////////////////////////////////////////////////
# endif
#
#
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
BOOST_CHECK_EQUAL ( derivedParser.anotherOverlay() , 0x8384u );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::safe_data_iterator
prefix_ senf::safe_data_iterator::safe_data_iterator()
i_ += n;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::SafePacketParserWrapper<Parser>
template <class Parser>
return i_;
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/iterator/iterator_facade.hpp>
//#include "SafeIterator.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
: public safe_bool< SafePacketParserWrapper<Parser> >
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
// default copy constructor
// default copy assignment
SafePacketParserWrapper & operator=(Parser parser); ///< Assign \a parser to \c this
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
Parser & operator*() const; ///< Access the stored parser
/**< On every access, the stored parsers iterator will be
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_SafeIterator_i_)
#define HH_SENF_Packets_SafeIterator_i_
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct VoidPacket : public senf::PacketTypeBase {};
BOOST_CHECK_EQUAL( p->data()[0], 0x23u );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class LengthParser>
prefix_ senf::StringParser<LengthParser>::StringParser(data_iterator i, state_type s)
return os;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "IntParser.hh"
//#include "StringParser.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
public:
StringParser(data_iterator i, state_type s);
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
# include SENF_PARSER()
SENF_PARSER_PRIVATE_FIELD ( length, LengthParser );
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_StringParser_i_)
#define HH_SENF_Packets_StringParser_i_
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct VoidPacket : public senf::PacketTypeBase
BOOST_CHECK_EQUAL( MyStringParser(p->data().begin(), &p->data()).value(), "Another Test" );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <algorithm>
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class AuxPolicy, class Parsers>
template <unsigned N>
}
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/mpl/size.hpp>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::VariantParser<AuxPolicy,Parsers>
template <class AuxPolicy, class Parsers>
AuxPolicy::adjust(i(), state()), state() );
}
-/////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::VariantBytes<Variant,N>
template <class Variant, unsigned N>
return senf::bytes(v.template get<0>());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::VariantKeyTransform<T,Keys>
template <class T, class Keys>
return boost::mpl::at<Keys, boost::mpl::int_<0> >::type::key();
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "PacketParser.hh"
//#include "VariantParser.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
public:
///\name Parser interface
- ///\{
+ //\{
VariantParser(data_iterator i, state_type s);
VariantParser(AuxPolicy policy, data_iterator i, state_type s);
typename boost::mpl::at<parsers, boost::mpl::int_<0> >::type>::value
+ AuxPolicy::aux_bytes;
- ///\}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
unsigned variant() const; ///< Get current variant
/**< Get the currently selected variant index. The returned
SENF_PARSER_VARIANT_I(protected, name, chooser, types)
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_VariantParser_i_)
#define HH_SENF_Packets_VariantParser_i_
#include <boost/preprocessor/logical/not.hpp>
#include <boost/preprocessor/expr_if.hpp>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace detail {
}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(VariantParser)
{
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::VectorParser<ElementParser,AuxPolicy>
template <class ElementParser, class AuxPolicy>
i->init();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::VectorParser_Container<ElementParser,AuxPolicy>
template <class ElementParser, class AuxPolicy>
push_back(value,n-size());
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::VectorParser<ElementParser,Sizer>
template <class ElementParser, class AuxPolicy>
c.resize(n,value);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::VectorParser_wrapper<Parser,SizeParser,Container>
// structors and default members
aux(value, i(),state());
}
-/////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "AuxParser.hh" // for the AuxPolicies
//#include "VectorParser.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
static const size_type init_bytes = AuxPolicy::aux_bytes;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Container interface
typedef ElementParser value_type;
: private AuxPolicy::WrapperPolicy
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef VectorParser<ElementParser,AuxPolicy> parser_type;
typedef iterator const_iterator;
typedef PacketParserBase::state_type state_type;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
// no default constructor
// default copy
VectorParser_Container(parser_type const & vector);
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
///\name Accessors
- ///@{
+ //\{
size_type size() const;
bool empty() const;
value_type front() const;
value_type back() const;
- ///@}
+ //\}
///\name Mutators
- ///@{
+ //\{
iterator shift(iterator pos, size_type n=1);
template <class Value>
void resize (size_type n);
template <class Value> void resize (size_type n, Value value);
- ///@}
+ //\}
///\name Parser interface
- ///@{
+ //\{
parser_type parser() const;
data_iterator i() const;
size_type bytes() const;
void init() const;
- ///@}
+ //\}
protected:
SENF_PARSER_VECTOR_I(protected, name, size, elt_type)
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#if !defined(HH_SENF_Packets_Packets__decls_) && !defined(HH_SENF_Packets_VectorParser_i_)
#define HH_SENF_Packets_VectorParser_i_
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace detail {
}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/assign.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct VoidPacket : public senf::PacketTypeBase
// The real functionality is already tested in AuxPolixy.test.cc ...
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "bundledump.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
int main(int argc, char const ** argv)
{
return 0;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "bundledump.mpp"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(packetLink)
{
BOOST_CHECK( p.next().is<senf::IPv6Packet>() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Packets.hh"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
//#include "main.test.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace detail {
}}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "main.test.cci"
//#include "main.test.ct"
//#include "main.test.cti"
//#include "ClockService.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void
senf::parseClockServiceInterval(console::ParseCommandInfo::TokensRange const & tokens,
os << interval << "ns";
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "ClockService.mpp"
#include <senf/Utils/Exception.hh>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ClockService
prefix_ senf::ClockService::clock_type senf::ClockService::now()
return spec.tv_sec * 1000000000LL + spec.tv_nsec;
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
namespace senf { namespace scheduler { ClockService::clock_type now(); } }
instance().restart_m();
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Console/Parse.hh>
//#include "ClockService.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
: singleton<ClockService>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
/** \brief ClockService timer data type
*/
typedef boost::posix_time::time_duration reltime_type;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
static clock_type now(); ///< Return current clock value
void formatClockServiceInterval(ClockService::clock_type interval, std::ostream & os);
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "ClockService.cci"
//#include "ClockService.ct"
//#include "ClockService.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
(senf::ClockService::milliseconds(100)) );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "EventHook.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::EventHook
prefix_ void senf::scheduler::EventHook::v_run()
return "";
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::EventHookDispatcher
prefix_ senf::scheduler::detail::EventHookDispatcher::~EventHookDispatcher()
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "EventHook.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::EventHook
prefix_ senf::scheduler::EventHook::EventHook(std::string const & name, Callback const & cb,
cb_ = cb;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::EventHookDispatcher
prefix_ void senf::scheduler::detail::EventHookDispatcher::add(EventHook & event)
prefix_ senf::scheduler::detail::EventHookDispatcher::EventHookDispatcher()
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "FIFORunner.hh"
//#include "EventHook.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace scheduler {
public detail::EventHookListBase
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::function<void ()> Callback;
static Priority const PRE = PRIORITY_HIGH; ///< Execute hook BEFORE all other events
static Priority const POST = PRIORITY_LOW; ///< Execute hook AFTER all other events
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
EventHook(std::string const & name, Callback const & cb,
Priority priority, bool initiallyEnabled = true);
POST */
~EventHook();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
void disable(); ///< Disable event
void enable(); ///< Enable event
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "EventHook.cci"
//#include "EventHook.ct"
//#include "EventHook.cti"
// Custom includes
#include <senf/Utils/singleton.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace scheduler {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
//#include "EventManager.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::scheduler::detail::EventManager::EventManager()
{
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "EventManager.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::Event
prefix_ senf::scheduler::detail::Event::Event(std::string const & name)
++ runCount_;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::EventManager
prefix_ bool senf::scheduler::detail::EventManager::IteratorFilter::operator()(Event const & e)
IteratorFilter(), events_.end(), events_.end());
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Console/LazyDirectory.hh>
//#include "EventManager.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace scheduler {
: public EventListBase
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
explicit Event(std::string const & name);
virtual ~Event();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
std::string const & name() const; ///< Get event name
bool enabled() const; ///< \c true, if event is enabled, \c false otherwise
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "EventManager.cci"
//#include "EventManager.ct"
//#include "EventManager.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(eventManager)
{
BOOST_CHECK( i == em.end() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "FIFORunner.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::scheduler::detail::FIFORunner::FIFORunner()
: tasks_ (), next_ (tasks_.end()), watchdogRunning_ (false), watchdogMs_ (1000),
assert(false);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "FIFORunner.mpp"
#endif
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::FIFORunner::TaskInfo
prefix_ senf::scheduler::detail::FIFORunner::TaskInfo::TaskInfo(std::string const & name,
return TaskListBase::linked();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::FIFORunner::NullTask
prefix_ senf::scheduler::detail::FIFORunner::NullTask::NullTask()
return "";
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::FIFORunner
prefix_ void senf::scheduler::detail::FIFORunner::enqueue(TaskInfo * task)
yield_ = true;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "EventManager.hh"
//#include "FIFORunner.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace scheduler {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "FIFORunner.cci"
//#include "FIFORunner.ct"
//#include "FIFORunner.cti"
//#include "FdEvent.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::FdDispatcher
prefix_ senf::scheduler::detail::FdDispatcher::~FdDispatcher()
}
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::FileDispatcher
prefix_ void senf::scheduler::detail::FileDispatcher::add(FdEvent & event)
detail::FdManager::instance().timeout(managerTimeout_);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::FdEvent
prefix_ void senf::scheduler::FdEvent::disable()
return ss.str();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "FdEvent.mpp"
#include "FdManager.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::FdEvent
prefix_ senf::scheduler::FdEvent::FdEvent(std::string const & name, Callback const & cb)
return events_;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::FdDispatcher
prefix_ senf::scheduler::detail::FdDispatcher::FdDispatcher()
return fds_.empty();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::FileDispatcher
prefix_ void senf::scheduler::detail::FileDispatcher::timeout(int t)
return fds_.empty();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ int senf::scheduler::detail::retrieve_filehandle(int fd)
{
return fd;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::FdEvent
template <class Handle>
return *this;
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::FdEvent
template <class Handle>
enable();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Handle>
prefix_ int senf::scheduler::get_descriptor(Handle const & handle)
return retrieve_filehandle(handle);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "FIFORunner.hh"
//#include "FdEvent.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace scheduler {
public detail::FdManager::Event
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::function<void (int)> Callback;
| detail::FdManager::EV_PRIO) ///< register all events (read, prio and write)
};
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
template <class Handle>
FdEvent(std::string const & name, Callback const & cb, Handle const & handle, int events,
initialized. */
~FdEvent();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
void disable(); ///< Disable event
void enable(); ///< Enable event
int get_descriptor(Handle const & handle);
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "FdEvent.cci"
#include "FdEvent.ct"
#include "FdEvent.cti"
// Custom includes
#include <senf/boost_intrusive/iset.hpp>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace scheduler {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
int conn = accept(sock,0,0);
if (conn < 0) fail("accept");
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
if (write(conn,"READ",4)<0) fail("write");
char buffer[1024];
} else
if (write(conn,"FAIL",4)<0) fail("write");
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
close(conn);
close(sock);
senf::scheduler::detail::FileDispatcher::instance().timeout(-1);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "FdManager.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::scheduler::detail::FdManager::processOnce()
{
i->second->signal(i->first);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "FdManager.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::FdManager
prefix_ senf::scheduler::detail::FdManager::FdManager()
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::FdManager::Event
prefix_ senf::scheduler::detail::FdManager::Event::~Event()
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/singleton.hh>
//#include "FdManager.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace scheduler {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "FdManager.cci"
//#include "FdManager.ct"
//#include "FdManager.cti"
//#include "IdleEvent.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::IdleEvent
prefix_ void senf::scheduler::IdleEvent::v_run()
return "";
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::IdleEventDispatcher
prefix_ void senf::scheduler::detail::IdleEventDispatcher::remove(IdleEvent & event)
FIFORunner::instance().dequeue(&(*i));
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "IdleEvent.mpp"
#include "FdEvent.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::IdleEvent
prefix_ senf::scheduler::IdleEvent::IdleEvent(std::string const & name, Callback const & cb,
cb_ = cb;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::IdleEventDispatcher
prefix_ void senf::scheduler::detail::IdleEventDispatcher::add(IdleEvent & event)
: managerTimeout_ (scheduler::detail::FileDispatcher::instance().timeout())
{}
-/////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "FIFORunner.hh"
//#include "IdleEvent.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace scheduler {
public detail::IdleEventListBase
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::function<void ()> Callback;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///\{
+ //\{
IdleEvent(std::string const & name, Callback const & cb,
bool initiallyEnabled = true);
~IdleEvent();
- ///\}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
void disable(); ///< Disable event
void enable(); ///< Enable event
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "IdleEvent.cci"
//#include "IdleEvent.ct"
//#include "IdleEvent.cti"
// Custom includes
#include <senf/Utils/singleton.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace scheduler {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
BOOST_CHECK_EQUAL( calls, 4u );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Exception.hh>
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Value>
prefix_ bool senf::scheduler::detail::Poller<Value>::set(int fd, int events, Value * data)
boost::make_transform_iterator(events+rv, GetPollResult()) );
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <unistd.h>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Value>
prefix_ senf::scheduler::detail::Poller<Value>::Poller()
return std::make_pair(ev.events, static_cast<Value*>(ev.data.ptr));
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/range/iterator_range.hpp>
//#include "Poller.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace scheduler {
static int const NumEvents = 8;
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef Value value_type;
EV_HUP = EPOLLHUP, EV_ERR = EPOLLERR
};
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
Poller();
~Poller();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
bool set(int fd, int events, Value * data); ///< Set file descriptor event data and mask
/**< The Poller does \e not own \a data. The value is owned
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Poller.cci"
#include "Poller.ct"
#include "Poller.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(poller)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::ReadUntil::ReadUntil(std::string const & target_)
: target(target_)
return data.find(target);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Scheduler.hh"
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Handle>
prefix_ senf::ReadHelper<Handle>::ReadHelper(Handle handle, std::string::size_type maxSize,
return predicate(data);
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Exception.hh>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Handle>
prefix_ typename senf::ReadHelper<Handle>::ptr
if (errno_ != 0) throw SystemException(errno_ SENF_EXC_DEBUGINFO);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "FdEvent.hh"
//#include "ReadHelper.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
: public senf::intrusive_refcount
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::intrusive_ptr<ReadHelper> ptr; ///< Smart pointer type for this class
typedef boost::function<void (ptr)> Callback; ///< Callback type
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
static ptr dispatch(Handle handle, std::string::size_type maxSize,
Callback callback); ///< Register new ReadHandler instance
\param[in] callback callback
\returns smart pointer to new ReadHelper instance */
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
Handle handle() const; ///< Access the handle object
std::string::size_type maxSize() const; ///< Return maximum number of bytes to be read
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "ReadHelper.cci"
#include "ReadHelper.ct"
#include "ReadHelper.cti"
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
bool terminate_ (false);
std::auto_ptr<detail::TimerSource>(new detail::POSIXTimerSource()));
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::schedulerLogTimeSource
prefix_ senf::log::time_type senf::scheduler::LogTimeSource::operator()()
return senf::scheduler::now();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::BlockSignals
prefix_ senf::scheduler::BlockSignals::BlockSignals(bool initiallyBlocked)
blocked_ = false;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/format.hpp>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// public members
detail::TimerDispatcher::instance().timerSource()) == 0;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::BlockSignals
prefix_ senf::scheduler::BlockSignals::~BlockSignals()
return blocked_;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "EventHook.hh"
//#include "scheduler.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Scheduler.cci"
//#include "Scheduler.ct"
//#include "Scheduler.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
int conn = accept(sock,0,0);
if (conn < 0) fail("accept");
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
if (write(conn,"READ",4)<0) fail("write");
char buffer[1024];
} else
if (write(conn,"FAIL",4)<0) fail("write");
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
close(conn);
close(sock);
BOOST_FAIL("connect");
}
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////////
senf::scheduler::EventHook evev ("eventCounter", eventeventhandler,
senf::scheduler::EventHook::PRE);
BOOST_CHECK( eventCount >= 8u );
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////////
close(sock);
SENF_CHECK_NO_THROW( senf::scheduler::process() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "SignalEvent.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::scheduler::detail::SignalDispatcher::SignalDispatcher()
: blocked_ (true)
return "";
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "SignalEvent.mpp"
#include <senf/Utils/senfassert.hh>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::scheduler::detail::SignalDispatcher::blockSignals()
{
return handlers_.empty();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::SignalEvent
prefix_ senf::scheduler::SignalEvent::SignalEvent(int signal, Callback const & cb,
cb_ = cb;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/boost_intrusive/iset_hook.hpp>
//#include "SignalEvent.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
public detail::SignalSetBase
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::function<void (siginfo_t const &)> Callback;
///< Callback type
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
SignalEvent(int signal, Callback const & cb, bool initiallyEnabled=true);
///< Register a signal event
enable callback automatically. */
~SignalEvent();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
void disable(); ///< Enable signal event registration
void enable(); ///< Disable the signal event registration
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "SignalEvent.cci"
//#include "SignalEvent.ct"
//#include "SignalEvent.cti"
#include <senf/Utils/Exception.hh>
#include <senf/Utils/singleton.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace scheduler {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
BOOST_CHECK( called );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "TimerEvent.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::scheduler::detail::TimerDispatcher::TimerDispatcher()
: source_ (new PollTimerSource())
source_->timeout(timers_.begin()->timeout_);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::TimerDispatcher::TimerEvent
prefix_ void senf::scheduler::TimerEvent::v_run()
return ss.str();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "TimerEvent.mpp"
#include <unistd.h>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::TimerEvent
prefix_ senf::scheduler::TimerEvent::TimerEvent(std::string const & name, Callback const & cb,
return timeout_;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::TimerDispatcher
prefix_ void senf::scheduler::detail::TimerDispatcher::enable()
return source_.get();
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Logger/SenfLog.hh>
//#include "TimerEvent.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace scheduler {
public detail::TimerSetBase
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::function<void ()> Callback;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
TimerEvent(std::string const & name, Callback const & cb, ClockService::clock_type timeout,
bool initiallyEnabled = true);
\param[in] cb Callback to call. */
~TimerEvent();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
void disable(); ///< Disable timer
void enable(); ///< Enable timer
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "TimerEvent.cci"
//#include "TimerEvent.ct"
//#include "TimerEvent.cti"
#include <senf/boost_intrusive/iset.hpp>
#include "TimerSource.hh"
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace scheduler {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/random.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/membind.hh>
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template<typename IdType>
prefix_ senf::scheduler::TimerEventProxy<IdType>::TimerEventProxy(std::string const & description)
return tmp;
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Scheduler/ClockService.hh>
#include <senf/Scheduler/TimerEvent.hh>
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace scheduler {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "TimerEventProxy.cci"
#include "TimerEventProxy.ct"
//#include "TimerEventProxy.cti"
#include <boost/random.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
int mask = 0;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "TimerSource.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::TimerSource
prefix_ senf::scheduler::detail::TimerSource::~TimerSource()
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::POSIXTimerSource
prefix_ senf::scheduler::detail::POSIXTimerSource::POSIXTimerSource()
SENF_THROW_SYSTEM_EXCEPTION("timer_settime()");
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::PollTimerSource
prefix_ void senf::scheduler::detail::PollTimerSource::timeout(ClockService::clock_type timeout)
prefix_ void senf::scheduler::detail::PollTimerSource::disable()
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::TimerFDTimerSource
#ifdef HAVE_TIMERFD_CREATE
}
#endif
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "TimerSource.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::scheduler::detail::TimerSource
prefix_ senf::scheduler::detail::TimerSource::TimerSource()
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "FdManager.hh"
//#include "TimerSource.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace scheduler {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "TimerSource.cci"
//#include "TimerSource.ct"
//#include "TimerSource.cti"
#include "Scheduler.hh"
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Handle>
prefix_ senf::WriteHelper<Handle>::WriteHelper(Handle handle, std::string const & data,
callback_(ptr(this));
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Exception.hh>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Handle>
prefix_ typename senf::WriteHelper<Handle>::ptr
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "FdEvent.hh"
//#include "WriteHelper.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
: public senf::intrusive_refcount
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::intrusive_ptr<WriteHelper> ptr; ///< Smart pointer type for this class
typedef boost::function<void (ptr)> Callback; ///< Callback type
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
static ptr dispatch(Handle handle, std::string const & data, Callback callback);
///< Register new WriteHelper instance
\param[in] callback callback
\returns smart pointer to new WriteHelper instance */
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
Handle handle() const;
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "WriteHelper.cci"
#include "WriteHelper.ct"
#include "WriteHelper.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "SocketPolicy.hh"
//#include "AddressingPolicy.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup policy_impl_group
- /// @{
+ //\{
/** \brief AddressingPolicy for non-addressable sockets
struct NoAddressingPolicy : public AddressingPolicyBase
{};
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "AddressingPolicy.cci"
//#include "AddressingPolicy.ct"
//#include "AddressingPolicy.cti"
#include <senf/Utils/Buffer.hh>
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::ReadRange<Handle,ForwardWritableRange,IsContiguous>
template <class Handle, class ForwardWritableRange, bool IsContiguous>
return std::copy(buffer, handle.readfrom(buffer,buffer+nread,addr), boost::begin(range));
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::WriteRange<Handle,ForwardReadableRange,IsContiguous>
template <class Handle, class ForwardReadableRange, bool IsContiguous>
return i;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ClientSocketHandle<Policy>
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// reading and writing
// senf::ClientSocketHandle<Policy>::read
container.end());
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
// senf::ClientSocketHandle<SPolicy>::available
return nread;
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <typeinfo>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::ReadRange<Policy,ForwardWritableRange,true>
template <class Handle, class ForwardWritableRange>
- ic);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::WriteRange<Handle, ForwardReadableRange, true>
template <class Handle, class ForwardReadableRange>
return i;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ClientSocketHandle<Policy>
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// structors
template <class SPolicy>
{}
#endif
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// reading and writing
// senf::ClientSocketHandle<SPolicy>::read
return start + SPolicy::WritePolicy::writeto(*this, addr, start, end-start);
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// addressing
// senf::ClientSocketHandle<SPolicy>::peer
SPolicy::AddressingPolicy::bind(*this, addr);
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Casting
template <class SPolicy>
return cast_static(handle);
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// State information
template <class SPolicy>
return detail::dumpState(map);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "SocketHandle.hh"
//#include "ClientSocketHandle.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup handle_group
- /// @{
+ //\{
template <class SPolicy> class ServerSocketHandle;
: public SocketHandle<SPolicy>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
/// Address type from the addressing policy
NoAddressingPolicy. */
typedef ServerSocketHandle<SPolicy> ServerHandle;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
// default default constructor
// default copy constructor
ClientSocketHandle<OtherPolicy> const & operator=(ClientSocketHandle<OtherPolicy> other);
# endif
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Reading and Writing
- ///@{
+ //\{
/** \brief Read data from socket
\see \ref writeto() \n
<a href="http://www.boost.org/doc/libs/release/libs/range/index.html">Boost.Range</a> */
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Addressing
- ///@{
+ //\{
/** \brief Connect to remote peer
///< Query local address
/**< \see \ref local() */
- ///@}
+ //\}
static ClientSocketHandle cast_static(FileHandle handle);
static ClientSocketHandle cast_dynamic(FileHandle handle);
friend class senf::ServerSocketHandle<SPolicy>;
};
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "ClientSocketHandle.cci"
#include "ClientSocketHandle.ct"
#include "ClientSocketHandle.cti"
// Custom includes
#include <senf/Utils/IteratorTraits.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace detail {
- ///////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::ReadRange
/** \brief Internal: Choose optimal read implementation
# endif
- ///////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::WriteRange
/** \brief Internal: Choose optimal write implementation
}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
SENF_CHECK_NO_THROW( BOOST_CHECK_EQUAL( myh.local(), 2u ) );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "CommunicationPolicy.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::ConnectedCommunicationPolicy::do_listen(FileHandle const & handle,
unsigned backlog)
return rv;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "CommunicationPolicy.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ int senf::ConnectedCommunicationPolicy::accept(FileHandle const & handle)
{
return do_accept(handle, 0, 0);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef DOXYGEN
template <class SPolicy>
{}
#endif
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "FileHandle.hh"
//#include "CommunicationPolicy.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
struct sockaddr;
namespace senf {
/// \addtogroup policy_impl_group
- /// @{
+ //\{
template <class SPolicy> class ServerSocketHandle;
struct UnconnectedCommunicationPolicy : public CommunicationPolicyBase
{};
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "CommunicationPolicy.cci"
//#include "CommunicationPolicy.ct"
#include "CommunicationPolicy.cti"
#include <senf/Utils/Exception.hh>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::FileBody
prefix_ void senf::FileBody::close()
prefix_ senf::FileBody::~FileBody()
{}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <errno.h>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::FileBody
prefix_ senf::FileBody::FileBody(int fd)
(timeout==-1?-1:senf::ClockService::in_milliseconds(timeout)), true);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::FileHandle
prefix_ senf::FileBody & senf::FileHandle::body()
return handle.fd();
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Scheduler/ClockService.hh>
//#include "FileHandle.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "FileHandle.ih"
namespace senf {
/// \addtogroup handle_group
- /// @{
+ //\{
/** \brief Basic file handle wrapper
: public safe_bool<FileHandle>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
FileHandle();
~FileHandle();
// no conversion constructors
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
void close(); ///< Close filehandle
/**< \throws senf::SystemException */
*/
int retrieve_filehandle(FileHandle handle);
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "FileHandle.cci"
//#include "FileHandle.ct"
//#include "FileHandle.cti"
#include <senf/Utils/intrusive_refcount.hh>
#include <senf/Utils/pool_alloc_mixin.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
public senf::pool_alloc_mixin<FileBody>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
// Types
typedef boost::intrusive_ptr<FileBody> ptr;
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
explicit FileBody(int fd=-1); ///< Create new instance
/**< You need to pass a real file descriptor to this
// no copy
// no conversion constructors
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-/////////////////////////////////////////////////////////////////////////////////////////
FileHandle handle();
bool valid() const;
private:
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
// Virtual interface for subclasses to override
virtual void v_close(); ///< Called to close the file descriptor
}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
class FHandle : public senf::FileHandle
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "SocketPolicy.hh"
//#include "FramingPolicy.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup policy_impl_group
- /// @{
+ //\{
/** \brief FramingPolicy for stream oriented sockets
struct DatagramFramingPolicy : public FramingPolicyBase
{};
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "FramingPolicy.cci"
//#include "FramingPolicy.ct"
//#include "FramingPolicy.cti"
#include <senf/Socket/Protocols/Raw/MACAddress.hh>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#define doIoctl(ifr, request, errorMsg) \
if ( ::ioctl( sockfd_->fd, request, &ifr ) < 0 ) \
#undef doIoctl
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::NetdeviceController::SockFd
prefix_ senf::NetdeviceController::SockFd::SockFd()
return p;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "NetdeviceController.mpp"
#include <boost/shared_ptr.hpp>
//#include "NetdeviceController.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
struct ifreq;
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "NetdeviceController.cci"
//#include "NetdeviceController.ct"
//#include "NetdeviceController.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(NetdeviceController) {
BOOST_CHECK_EQUAL( ctrl.promisc(), promisc);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/senfassert.hh>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class SocketProtocol>
prefix_ senf::ProtocolClientSocketHandle<SocketProtocol>::
return detail::dumpState(map);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Tags.hh>
#include "ProtocolClientSocketHandle.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup handle_group
- /// @{
+ //\{
template <class Protocol> class ProtocolServerSocketHandle;
: public ClientSocketHandle<typename SocketProtocol::Policy>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef SocketProtocol Protocol; ///< The sockets protocol
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
/** \brief Create new client socket
*/
ProtocolClientSocketHandle(senf::NoInit_t);
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
Protocol & protocol(); ///< Access the protocol interface
/**< The returned protocol class reference gives access to
friend class ProtocolServerSocketHandle<Protocol>;
};
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "ProtocolClientSocketHandle.cci"
//#include "ProtocolClientSocketHandle.ct"
#include "ProtocolClientSocketHandle.cti"
#include <boost/preprocessor/enum.hpp>
#include <boost/preprocessor/cat.hpp>
-// ///////////////////////////mpp.p////////////////////////////////////////
-#elif BOOST_PP_IS_ITERATING // ////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-///////////////////////////mpp.p////////////////////////////////////////
+#elif BOOST_PP_IS_ITERATING //-////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// Local Macros
#define mpp_Arg(z,n,data) BOOST_PP_CAT(A,n) const & BOOST_PP_CAT(a,n)
#define mpp_MethodParameters() BOOST_PP_ENUM(BOOST_PP_ITERATION(), mpp_Arg, )
#define mpp_CallParameters() BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), a )
-// ////////////////////////////////////////////////////////////////////////
-#if BOOST_PP_ITERATION_FLAGS()==1 // //////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#if BOOST_PP_ITERATION_FLAGS()==1 //-//////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// senf::ProtocolClientSocketHandle<SocketProtocol>::
// ProtocolClientSocketHandle (constructor) declaration
template < mpp_TemplateParameters() >
explicit ProtocolClientSocketHandle( mpp_MethodParameters() );
-// ////////////////////////////////////////////////////////////////////////
-#elif BOOST_PP_ITERATION_FLAGS()==2 // ////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#elif BOOST_PP_ITERATION_FLAGS()==2 //-////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// senf::ProtocolClientSocketHandle<SocketProtocol>::
// ProtocolClientSocketHandle (constructor) implementation
this->protocol().init_client( mpp_CallParameters() );
}
-// ////////////////////////////////////////////////////////////////////////
-#endif // /////////////////////////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#endif //-/////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// Undefine local Macros
#undef mpp_Arg
#undef mpp_MethodParameters
#undef mpp_CallParameters
-// ////////////////////////////////////////////////////////////////////////
-#endif // /////////////////////////////////////////////////////////////////
-// ///////////////////////////mpp.e////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#endif //-/////////////////////////////////////////////////////////////////
+//-///////////////////////////mpp.e////////////////////////////////////////
\f
// Local Variables:
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct MySocketProtocol : public senf::test::SomeSocketProtocol
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "ProtocolClientSocketHandle.hh"
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class SocketProtocol>
prefix_ senf::ProtocolServerSocketHandle<SocketProtocol>::
: ServerSocketHandle<typename SocketProtocol::Policy>(other,isChecked)
{}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Tags.hh>
#include "ProtocolServerSocketHandle.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup handle_group
- /// @{
+ //\{
template <class Protocol> class ProtocolClientSocketHandle;
: public ServerSocketHandle<typename SocketProtocol::Policy>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef SocketProtocol Protocol; ///< The socket protocol
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
/** \brief Create new server socket
\implementation The socket handle will have no \c body allocated.
*/
ProtocolServerSocketHandle(senf::NoInit_t);
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
Protocol & protocol(); ///< Access the protocol interface
/**< The returned protocol class reference gives access to
};
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "ProtocolServerSocketHandle.cci"
//#include "ProtocolServerSocketHandle.ct"
#include "ProtocolServerSocketHandle.cti"
#include <boost/preprocessor/enum.hpp>
#include <boost/preprocessor/cat.hpp>
-//////////////////////////////mpp_PSSH_.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Local Macros
#define mpp_PSSH_Arg(z,n,data) BOOST_PP_CAT(A,n) const & BOOST_PP_CAT(a,n)
#define mpp_PSSH_MethodParameters() BOOST_PP_ENUM(BOOST_PP_ITERATION(), mpp_PSSH_Arg, )
#define mpp_PSSH_CallParameters() BOOST_PP_ENUM_PARAMS(BOOST_PP_ITERATION(), a )
-//////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#else
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-//////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#if BOOST_PP_ITERATION_FLAGS()==1
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ProtocolServerSocketHandle<SocketProtocol>::
// ProtocolServerSocketHandle (constructor) declaration
template < mpp_PSSH_TemplateParameters() >
explicit ProtocolServerSocketHandle( mpp_PSSH_MethodParameters() );
-//////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#elif BOOST_PP_ITERATION_FLAGS()==2
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ProtocolServerSocketHandle<SocketProtocol>::
// ProtocolServerSocketHandle (constructor) implementation
this->protocol().init_server( mpp_PSSH_CallParameters() );
}
-//////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
#endif
#if !BOOST_PP_IS_ITERATING
#ifdef MPP_SENF_Socket_ProtocolServerSocketHandle_
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Undefine local Macros
#undef mpp_PSSH_Arg
#undef mpp_PSSH_MethodParameters
#undef mpp_PSSH_CallParameters
-//////////////////////////////mpp_PSSH_.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#else
#define MPP_SENF_Socket_ProtocolServerSocketHandle_ 1
#endif
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Exception.hh>
//#include "AddressExceptions.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "AddressExceptions.cci"
//#include "AddressExceptions.ct"
//#include "AddressExceptions.cti"
//#include "BSDAddressingPolicy.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::BSDAddressingPolicyMixinBase::do_local(FileHandle const & handle,
struct sockaddr * addr,
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "BSDAddressingPolicy.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::BSDAddressingPolicyMixin<Address>
#ifndef DOXYGEN
}
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "BSDSocketAddress.hh"
//#include "BSDAddressingPolicy.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup policy_impl_group
- /// @{
+ //\{
/** \brief Non-template implementation class of BSDAddressingPolicyMixin template
\param[in] addr local socket address */
};
- /// @}
+ //\}
struct BSDAddressingPolicy
: public AddressingPolicyBase,
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "BSDAddressingPolicy.cci"
//#include "BSDAddressingPolicy.ct"
#include "BSDAddressingPolicy.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(bsdAddressingPolicy)
{
BOOST_CHECK_EQUAL( BSDHandle(tcph).local(), tcph.local() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "BSDSocketAddress.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ std::ostream & senf::operator<<(std::ostream & os, BSDSocketAddress const & addr)
{
return os;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "BSDSocketAddress.mpp"
#include <typeinfo>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::BSDSocketAddress
prefix_ struct sockaddr const * senf::BSDSocketAddress::sockaddr_p()
0u)) < socklen()-2;
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
prefix_ senf::BSDSocketAddress::BSDSocketAddress(socklen_t len, short family)
return & len_;
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// related
template <class Target>
return static_cast<Target const &>(source);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::GenericBSDSocketAddress
prefix_ senf::GenericBSDSocketAddress::GenericBSDSocketAddress()
return static_cast<struct sockaddr *>(static_cast<void *>(& addr_));
}
-/////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <iostream>
//#include "BSDSocketAddress.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
each typed derived class
(e.g. INet4Address::addressFamily) */
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Generic sockaddr interface
- ///\{
+ //\{
struct sockaddr const * sockaddr_p() const;
socklen_t socklen() const;
socklen_t const * socklen_p() const;
- ///\}
+ //\}
protected:
BSDSocketAddress(socklen_t len, short family);
: public BSDSocketAddress
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
GenericBSDSocketAddress();
GenericBSDSocketAddress(BSDSocketAddress const & other);
GenericBSDSocketAddress(const GenericBSDSocketAddress& other);
GenericBSDSocketAddress& operator=(const GenericBSDSocketAddress& other);
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
///\name Generic sockaddr interface
- ///\{
+ //\{
struct sockaddr const * sockaddr_p() const;
struct sockaddr * sockaddr_p();
using BSDSocketAddress::socklen_p;
- ///\}
+ //\}
protected:
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "BSDSocketAddress.cci"
//#include "BSDSocketAddress.ct"
//#include "BSDSocketAddress.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(bsdSocketAddress)
{
BOOST_CHECK( g1 == g2 );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "BSDSocketProtocol.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ std::pair<bool,unsigned> senf::BSDSocketProtocol::linger()
const
SENF_THROW_SYSTEM_EXCEPTION("");
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ bool senf::AddressableBSDSocketProtocol::reuseaddr()
const
SENF_THROW_SYSTEM_EXCEPTION("");
}
-/////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "BSDSocketProtocol.mpp"
#include <boost/cstdint.hpp>
//#include "BSDSocketProtocol.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup protocol_facets_group
- /// @{
+ //\{
/** \brief Protocol facet providing basic BSD socket functionality
\param[in] value new \c SO_REUSEADDR state */
};
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "BSDSocketProtocol.cci"
//#include "BSDSocketProtocol.ct"
//#include "BSDSocketProtocol.cti"
//#include "DVBDemuxHandles.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::DVBDemuxHandles
prefix_ void senf::DVBDemuxSectionSocketProtocol::init_client(unsigned short adapter, unsigned short device)
return 188;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "DVBDemuxHandles.mpp"
#include <boost/enable_shared_from_this.hpp>
#include <boost/shared_ptr.hpp>
#include <iostream>
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup concrete_protocol_group
- /// @{
+ //\{
typedef MakeSocketPolicy<
NoAddressingPolicy,
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// internal interface
///\name Constructors
- ///@{
+ //\{
void init_client(unsigned short adapter=0, unsigned short device=0) const; ///< xxx
/**< \note This member is implicitly called from the
ProtocolClientSocketHandle::ProtocolClientSocketHandle()
constructor */
- ///@}
+ //\}
///\name Abstract Interface Implementation
- ///@{
+ //\{
unsigned available() const;
- ///@}
+ //\}
void setSectionFilter(unsigned short int pid,
unsigned char filter= 0x3e,
public DVBSocketProtocol
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// internal interface
///\name Constructors
- ///@{
+ //\{
void init_client(unsigned short adapter=0, unsigned short device=0) const; ///< xxx
/**< \note This member is implicitly called from the
ProtocolClientSocketHandle::ProtocolClientSocketHandle()
constructor */
- ///@}
+ //\}
///\name Abstract Interface Implementation
- ///@{
+ //\{
unsigned available() const;
- ///@}
+ //\}
void setPESFilter(unsigned short int pid, dmx_input_t input, dmx_output_t output, dmx_pes_type_t pesType, unsigned int flags)const;
};
public DVBDemuxSocketProtocol
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// internal interface
///\name Constructors
- ///@{
+ //\{
void init_client(unsigned short adapter=0, unsigned short device=0) const; ///< xxx
/**< \note This member is implicitly called from the
ProtocolClientSocketHandle::ProtocolClientSocketHandle()
constructor */
- ///@}
+ //\}
///\name Abstract Interface Implementation
- ///@{
+ //\{
unsigned available() const;
- ///@}
+ //\}
};
typedef ProtocolClientSocketHandle<DVBDvrSocketProtocol> DVBDvrHandle;
- ///@}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "DVBDemuxHandles.cci"
//#include "DVBDemuxHandles.ct"
//#include "DVBDemuxHandles.cti"
//#include "DVBDemuxSocketProtocol.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::DVBDemuxSocketProtocol::setBufferSize(unsigned long size)
const
return false;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "DVBDemuxSocketProtocol.mpp"
#include <senf/Socket/SocketProtocol.hh>
//#include "DVBSocketProtocol.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup protocol_facets_group
- /// @{
+ //\{
/** \todo Document me!
*/
void stopFiltering() const;
///\name Abstract Interface Implementation
- ///@{
+ //\{
bool eof() const;
- ///@}
+ //\}
};
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "DVBDemuxSocketProtocol.cci"
//#include "DVBDemuxSocketProtocol.ct"
//#include "DVBDemuxSocketProtocol.cti"
//#include "DVBFrontendHandle.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::DVBFrontendHandle
using namespace std;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "DVBFrontendHandle.mpp"
#include <senf/Socket/SocketProtocol.hh>
#include <fcntl.h>
//#include "DVBFrontendHandle.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup concrete_protocol_group
- /// @{
+ //\{
typedef MakeSocketPolicy<
NoAddressingPolicy,
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// internal interface
///\name Constructors
- ///@{
+ //\{
void init_client(unsigned short adapter = 0, unsigned short device = 0, int flags = (O_RDWR | O_NONBLOCK) ) const;
///< Opens the specified frontend device in read-only mode.
/**< \note This member is implicitly called from the
ProtocolClientSocketHandle::ProtocolClientSocketHandle()
constructor */
- ///@}
+ //\}
void setNonBlock(bool on = true) const;
/**< Returns dvb_frontend_parameters struct, which contains the actual
configuration of the device.*/
///\name Abstract Interface Implementation
- ///@{
+ //\{
dvb_frontend_event getEvent() const;
/**< Returns always <tt>false</tt>, since the DVB frontend
socket does not support the notion of EOF. */
- ///@}
+ //\}
int16_t signalStrength() const; ///< Returns current signal strength
/**< Returns the signal strength value for the signal
typedef ProtocolClientSocketHandle<DVBFrontendSocketProtocol> DVBFrontendHandle;
- ///@}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "DVBFrontendHandle.cci"
//#include "DVBFrontendHandle.ct"
//#include "DVBFrontendHandle.cti"
#include <senf/Utils/Console/Utility.hh>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::DVBSectionProtocolWrapper::DVBSectionProtocolWrapper(senf::DVBDemuxSectionHandle sh)
: protocol(sh.protocol()), dir(this)
.doc("Stops filtering") );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::DVBSectionProtocolWrapper::setSectionFilter(
unsigned short int pid, u_int8_t filter, unsigned int flags, u_int8_t mask,
}
-///////////////////////////////cci.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
#include <senf/Utils/Console/Traits.hh>
#include "DVBDemuxHandles.hh"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_CONSOLE_REGISTER_ENUM( dmx_input_t, (DMX_IN_FRONTEND)(DMX_IN_DVR) );
SENF_CONSOLE_REGISTER_ENUM( dmx_output_t, (DMX_OUT_DECODER)(DMX_OUT_TAP)(DMX_OUT_TS_TAP) );
(CHECK_CRC)(ONESHOT)(IMMEDIATE_START)(KERNEL_CLIENT));
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "DVBProtocolWrapper.cci"
//#include "DVBProtocolWrapper.ct"
//#include "DVBProtocolWrapper.cti"
#include "DVBProtocolWrapper.hh"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
unsigned int senf::DVBSocketController::controllerNr(0);
.arg("mode", "mode 'sync' or 'async'", kw::default_value = "async") );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "DatagramSocketProtocol.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::ClockService::clock_type senf::DatagramSocketProtocol::timestamp()
const
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "DatagramSocketProtocol.mpp"
#include <senf/Scheduler/ClockService.hh>
//#include "DatagramSocketProtocol.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
///\addtogroup protocol_facets_group
- ///\{
+ //\{
/** \brief Protocol facet providing generic BSD datagram socket functionality
*/
};
- ///\}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "DatagramSocketProtocol.cci"
//#include "DatagramSocketProtocol.ct"
//#include "DatagramSocketProtocol.cti"
//#include "UDPSocketHandle.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ConnectedRawV4SocketProtocol
prefix_ void senf::ConnectedRawV4SocketProtocol::init_client()
clientHandle().connect(address);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::UDPv6SocketProtocol::
prefix_ void senf::ConnectedRawV6SocketProtocol::init_client()
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "ConnectedRawINetSocketHandle.mpp"
#include <senf/Socket/ProtocolClientSocketHandle.hh>
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup concrete_protocol_group
- /// @{
+ //\{
typedef MakeSocketPolicy<
INet4AddressingPolicy,
public AddressableBSDSocketProtocol
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// internal interface
///\name Constructors
- ///@{
+ //\{
void init_client() const; ///< Create unconnected client socket for IPPROTO_RAW
/**< \note This member is implicitly called from the
send
\param[in] address local address to connect to */
- ///@}
+ //\}
};
typedef ProtocolClientSocketHandle<ConnectedRawV4SocketProtocol>
-//////////////////////////////////////////////// Raw IPv6 Socket ////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
typedef MakeSocketPolicy<
INet6AddressingPolicy,
DatagramFramingPolicy,
public AddressableBSDSocketProtocol
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// internal interface
///\name Constructors
- ///@{
+ //\{
void init_client() const; ///< Create unconnected client socket for IPPROTO_RAW
/**< \note This member is implicitly called from the
ProtocolClientSocketHandle::ProtocolClientSocketHandle()
constructor (??) */
- ///@}
+ //\}
};
typedef ProtocolClientSocketHandle<ConnectedRawV6SocketProtocol>
ConnectedRawV6ClientSocketHandle;
- /// @}
+ //\}
}
//#include "ConnectedUDPSocketHandle.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ConnectedUDPv4SocketProtocol
prefix_ void senf::ConnectedUDPv4SocketProtocol::init_client()
clientHandle().connect(address);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ConnectedUDPv6SocketProtocol::
prefix_ void senf::ConnectedUDPv6SocketProtocol::init_client()
clientHandle().connect(address);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "ConnectedUDPSocketHandle.mpp"
#include <senf/Socket/ProtocolClientSocketHandle.hh>
//#include "ConnectedUDPSocketHandle.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup concrete_protocol_group
- /// @{
+ //\{
typedef MakeSocketPolicy<
INet4AddressingPolicy,
public AddressableBSDSocketProtocol
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// internal interface
///\name Constructors
- ///@{
+ //\{
void init_client() const; ///< Create unconnected client socket
/**< \note This member is implicitly called from the
ProtocolClientSocketHandle::ProtocolClientSocketHandle()
constructor */
- ///@}
+ //\}
};
typedef ProtocolClientSocketHandle<
public AddressableBSDSocketProtocol
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// internal interface
///\name Constructors
- ///@{
+ //\{
void init_client() const; ///< Create unconnected client socket
/**< \note This member is implicitly called from the
ProtocolClientSocketHandle::ProtocolClientSocketHandle()
constructor */
- ///@}
+ //\}
};
typedef ProtocolClientSocketHandle<
ConnectedUDPv6SocketProtocol> ConnectedUDPv6ClientSocketHandle;
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "ConnectedUDPSocketHandle.cci"
//#include "ConnectedUDPSocketHandle.ct"
//#include "ConnectedUDPSocketHandle.cti"
//#include "INet4Address.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::INet4Address::INet4Address
prefix_ senf::INet4Address::INet4Address(address_type value)
senf::INet4Address const senf::INet4Address::Loopback (0x7F000001u);
senf::INet4Address const senf::INet4Address::Broadcast (0xFFFFFFFFu);
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::INet4Network
prefix_ senf::INet4Network::INet4Network(std::string const & s)
address_ = INet4Address(INet4Address::from_string(std::string(s, 0, i)).address() & mask());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// namespace members
prefix_ std::ostream & senf::operator<<(std::ostream & os, INet4Address const & addr)
return is;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "INet4Address.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::INet4Address
prefix_ senf::INet4Address::INet4Address()
return inaddr();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::INet4Network
prefix_ unsigned senf::INet4Network::prefix_len()
return prefix_len_;
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ boost::uint32_t senf::INet4Network::mask()
return (~((boost::uint32_t(1u)<<(32u-prefix_len()))-1u)) & 0xFFFFFFFFu;
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// public members
prefix_ senf::INet4Network::INet4Network()
return INet4Network(host(net << (32-prefix_len)),prefix_len);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// namespace members
prefix_ std::ostream & senf::operator<<(std::ostream & os, INet4Network const & addr)
return os;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::INet4Address
template <class InputIterator>
return addr;
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/integer/integer_mask.hpp>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::CheckINet4Network<address,prefix_len>
template <boost::uint32_t address, unsigned prefix_len>
(address & ~boost::uint32_t(boost::low_bits_mask_t<32-prefix_len>::sig_bits));
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Tags.hh>
//#include "INet4Address.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
public comparable_safe_bool<INet4Address>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef uint32_t address_type; ///< Address representation as number in host byte order
static INet4Address const Loopback; ///< The loopback (127.0.0.1) address
static INet4Address const Broadcast; ////< The global broadcast (255.255.255.255) address
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
INet4Address(); ///< Construct an empty address
explicit INet4Address(senf::NoInit_t); ///< Construct uninitialized (!) address
code to convert a network byte order address in an
integer number into an INet4Address. */
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
///\name Accessors
- ///@{
+ //\{
bool local() const; ///< \c true, if address is locally administered
/**< This call checks, if the address is within one of the
/**< This member returns the address as an integer number in
host byte order. This representation allows simple
network math operations. */
- ////@}
+ //-/////////////////////////////////////////////////////////////////////////////////////////
private:
enum InAddr_t { IsInAddr };
public comparable_safe_bool<INet4Network>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
INet4Network(); ///< Construct empty (0.0.0.0/0) network
INet4Network(INet4Address const & address, unsigned prefix_len);
///< Construct network from given address and prefix length
explicit INet4Network(std::string const & s); ///< Construct network from CIDR notation
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
INet4Address const & address() const; ///< Get the networks address
unsigned prefix_len() const; ///< Get the networks prefix length
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "INet4Address.cci"
#include "INet4Address.ct"
#include "INet4Address.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(inet4Address)
{
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "INet6Address.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::INet6Address
prefix_ senf::INet6Address senf::INet6Address::from_string(std::string const & s,
senf::INet6Address const senf::INet6Address::AllNodes (0xFF02u,0u,0u,0u,0u,0u,0u,1u);
senf::INet6Address const senf::INet6Address::AllRouters (0xFF02u,0u,0u,0u,0u,0u,0u,2u);
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::INet6Network
prefix_ senf::INet6Network::INet6Network(std::string const & s)
return is;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "INet6Address.mpp"
#include <boost/lambda/lambda.hpp>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::INet6Address::INet6Address(senf::NoInit_t)
{}
(*this)[15] = id ;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::INet6Network
prefix_ senf::INet6Network::INet6Network()
return os;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// namespace senf::detail members
prefix_ boost::uint8_t senf::detail::low_bits_mask(unsigned bits)
return ((1<<bits)-1);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::INet6Address
template <class InputIterator>
return addr;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// namespace senf::detail members
template <class ForwardIterator, class Function>
return e1;
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/integer/integer_mask.hpp>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef DOXYGEN
#endif
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "INet6Address.mpp"
#include "INet6Address.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
public comparable_safe_bool<INet6Address>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
static INet6Address const None; ///< The empty (::0) address
, UnassignedScope = 6 /**< Unassigned scope, may be defined locally */
};
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
explicit INet6Address(senf::NoInit_t); ///< Construct uninitialized (!) address
explicit INet6Address(boost::uint16_t a0=0u, boost::uint16_t a1=0u, boost::uint16_t a2=0u,
in6_addr toin6_addr() const; ///< get the linux in6_addr struct (convenience only)
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
///\name Accessors
- ///@{
+ //\{
INet6Network network() const; ///< Return <tt>/64</tt> Network of this address
bool hasEUI64() const; ///< \c true, if address is based on an EUID-64
bool boolean_test() const; ///< \c true, if address != '::' (None)
- ///@}
+ //\}
///\name Mutators
- ///@{
+ //\{
void network(boost::uint64_t net); ///< Set network part of address
void id(boost::uint64_t id); ///< Set interface id part of address
- ///@}
+ //\}
};
public comparable_safe_bool<INet6Network>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
INet6Network(); ///< Construct empty (::/0) network
INet6Network(INet6Address const & address, unsigned prefix_len);
///< Construct network from given address and prefix length
explicit INet6Network(std::string const & s); ///< Construct network from CIDR notation
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
INet6Address const & address() const; ///< Get the network address
unsigned prefix_len() const; ///< Get the network prefix length
std::istream & operator>>(std::istream & is, INet6Network & addr);
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "INet6Address.cci"
#include "INet6Address.ct"
#include "INet6Address.cti"
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(inet6Address)
{
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "INetAddressing.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::INet4SocketAddress
prefix_ senf::INet4SocketAddress::INet4SocketAddress(std::string const & addr)
return is;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::INet6SocketAddress
prefix_ senf::INet6SocketAddress::INet6SocketAddress(std::string const & addr,
return is;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "INetAddressing.mpp"
#include <arpa/inet.h>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::INet4Address
prefix_ senf::INet4SocketAddress::INet4SocketAddress()
addr_.sin_port = htons(p);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::INet6SocketAddress
prefix_ senf::INet6SocketAddress::INet6SocketAddress()
assignIface(iface);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "INet6Address.hh"
//#include "INetAddressing.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
public:
static short const addressFamily = AF_INET;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
INet4SocketAddress();
explicit INet4SocketAddress(std::string const & addr); ///< Set address and port
INet4SocketAddress(const INet4SocketAddress& other);
INet4SocketAddress& operator=(const INet4SocketAddress& other);
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
INet4Address address() const; ///< Return address
unsigned port() const; ///< Return port number
public:
static short const addressFamily = AF_INET6;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
INet6SocketAddress(); ///< Create empty instance
explicit INet6SocketAddress(std::string const & addr,
INet6SocketAddress(const INet6SocketAddress& other);
INet6SocketAddress& operator=(const INet6SocketAddress& other);
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
INet6Address address() const; ///< Get printable address representation
void address(INet6Address const & addr); ///< Change address
std::istream & operator>>(std::istream & is, INet6SocketAddress & addr);
/// \addtogroup policy_impl_group
- /// @{
+ //\{
/** \brief Addressing policy supporting IPv4 addressing
using BSDAddressingPolicyMixin<INet6SocketAddress>::bind;
};
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "INetAddressing.cci"
//#include "INetAddressing.ct"
//#include "INetAddressing.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(inet4SocketAddress)
{
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "INetSocketProtocol.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::INetSocketProtocol
prefix_ void senf::INetSocketProtocol::bindInterface(std::string const & iface)
return iface;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::IPv4SocketProtocol
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::IPv6SocketProtocol
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "INetSocketProtocol.mpp"
#include <senf/Socket/SocketProtocol.hh>
//#include "INetSocketProtocol.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup protocol_facets_group
- /// @{
+ //\{
/** \brief Generic addressing type independent INet protocol facet
*/
\returns Bound interface name */
};
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "INetSocketProtocol.cci"
//#include "INetSocketProtocol.ct"
//#include "INetSocketProtocol.cti"
//#include "MulticastSocketProtocol.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::MulticastSocketProtocol
prefix_ void senf::MulticastSocketProtocol::broadcastEnabled(bool v)
SENF_THROW_SYSTEM_EXCEPTION("");
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::INet4MulticastSocketProtocol
prefix_ void senf::INet4MulticastSocketProtocol::mcAddMembership(INet4Address const & mcAddr)
mc4SSMSourceRequest(MCAST_LEAVE_SOURCE_GROUP, fd(), group, source, iface);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::INet6MulticastSocketProtocol
prefix_ void senf::INet6MulticastSocketProtocol::mcAddMembership(INet6Address const & mcAddr)
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "MulticastSocketProtocol.mpp"
#include "INet6Address.hh"
//#include "MulticastSocketProtocol.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
///\addtogroup protocol_facets_group
- ///\{
+ //\{
/** \brief Generic addressing type independent multicast protocol facet
\param[in] iface interface to leave the group on */
};
- ///\}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "MulticastSocketProtocol.cci"
//#include "MulticastSocketProtocol.ct"
//#include "MulticastSocketProtocol.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(multicastSocketProtocol)
{
// "lo") );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "UDPSocketHandle.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::RawV4SocketProtocol
prefix_ void senf::RawV4SocketProtocol::init_client()
clientHandle().bind(address);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::RawV6SocketProtocol::
prefix_ void senf::RawV6SocketProtocol::init_client()
clientHandle().bind(address);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "RawINetSocketHandle.mpp"
#include <senf/Socket/ProtocolClientSocketHandle.hh>
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup concrete_protocol_group
- /// @{
+ //\{
typedef MakeSocketPolicy<
INet4AddressingPolicy,
public INet4MulticastSocketProtocol
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// internal interface
///\name Constructors
- ///@{
+ //\{
void init_client() const; ///< Create unconnected client socket for IPPROTO_RAW
/**< \note This member is implicitly called from the
\param[in] protocol Layer 4 protocol to filter for / to send
\param[in] address local address to bind to */
- ///@}
+ //\}
};
typedef ProtocolClientSocketHandle<RawV4SocketProtocol> RawV4ClientSocketHandle;
-//////////////////////////////////////////////////////////////////// Raw IPv6 Socket //////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
typedef MakeSocketPolicy<
INet6AddressingPolicy,
DatagramFramingPolicy,
public INet6MulticastSocketProtocol
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// internal interface
///\name Constructors
- ///@{
+ //\{
void init_client() const; ///< Create unconnected client socket for IPPROTO_RAW
/**< \note This member is implicitly called from the
ProtocolClientSocketHandle::ProtocolClientSocketHandle()
constructor */
- ///@}
+ //\}
};
typedef ProtocolClientSocketHandle<RawV6SocketProtocol> RawV6ClientSocketHandle;
- /// @}
+ //\}
}
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "RawINetSocketProtocol.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ unsigned senf::RawINetSocketProtocol::available()
const
return false;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "RawINetSocketProtocol.mpp"
namespace senf {
/// \addtogroup protocol_facets_group
- /// @{
+ //\{
/** \brief Protocol facet to support RAW operations upon IPv4/6
{
public:
///\name Abstract Interface Implementation
- ///@{
+ //\{
unsigned available() const;
bool eof() const;
- ///@}
+ //\}
};
- /// @}
+ //\}
}
#endif /*HH_SENF_Socket_Protocols_INet_RawINetSocketProtocol_*/
//#include "TCPSocketHandle.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::TCPv4SocketProtocol
prefix_ void senf::TCPv4SocketProtocol::init_client()
SENF_THROW_SYSTEM_EXCEPTION("");
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::TCPv6SocketProtocol::
prefix_ void senf::TCPv6SocketProtocol::init_client()
SENF_THROW_SYSTEM_EXCEPTION("");
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "TCPSocketHandle.mpp"
#include <senf/Socket/ProtocolServerSocketHandle.hh>
//#include "TCPSocketHandle.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup concrete_protocol_group
- /// @{
+ //\{
typedef MakeSocketPolicy<
INet4AddressingPolicy,
public AddressableBSDSocketProtocol
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// internal interface
///\name Constructors
- ///@{
+ //\{
void init_client() const; ///< Create unconnected client socket
/**< \note This member is implicitly called from the
ProtocolServerSocketHandle::ProtocolServerSocketHandle()
constructor */
- ///@}
+ //\}
};
typedef ProtocolClientSocketHandle<TCPv4SocketProtocol> TCPv4ClientSocketHandle;
public AddressableBSDSocketProtocol
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// internal interface
///\name Constructors
- ///@{
+ //\{
void init_client() const; ///< Create unconnected client socket
/**< \note This member is implicitly called from the
ProtocolServerSocketHandle::ProtocolServerSocketHandle()
constructor */
- ///@}
+ //\}
};
typedef ProtocolClientSocketHandle<TCPv6SocketProtocol> TCPv6ClientSocketHandle;
typedef ProtocolServerSocketHandle<TCPv6SocketProtocol> TCPv6ServerSocketHandle;
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "TCPSocketHandle.cci"
//#include "TCPSocketHandle.ct"
//#include "TCPSocketHandle.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
}
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "TCPSocketProtocol.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ bool senf::TCPSocketProtocol::nodelay()
const
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "TCPSocketProtocol.mpp"
#include "INetSocketProtocol.hh"
//#include "TCPSocketProtocol.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup protocol_facets_group
- /// @{
+ //\{
/** \brief Protocol facet to support TCP operations
void shutdown(ShutType type) const;
///\name Abstract Interface Implementation
- ///@{
+ //\{
void close();
unsigned available() const;
bool eof() const;
- ///@}
+ //\}
};
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "TCPSocketProtocol.cci"
//#include "TCPSocketProtocol.ct"
//#include "TCPSocketProtocol.cti"
//#include "UDPSocketHandle.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::UDPv4SocketProtocol
prefix_ void senf::UDPv4SocketProtocol::init_client()
clientHandle().bind(address);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::UDPv6SocketProtocol::
prefix_ void senf::UDPv6SocketProtocol::init_client()
clientHandle().bind(address);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "UDPSocketHandle.mpp"
#include <senf/Socket/ProtocolClientSocketHandle.hh>
//#include "UDPSocketHandle.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup concrete_protocol_group
- /// @{
+ //\{
typedef MakeSocketPolicy<
INet4AddressingPolicy,
public AddressableBSDSocketProtocol
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// internal interface
///\name Constructors
- ///@{
+ //\{
void init_client() const; ///< Create unconnected client socket
/**< \note This member is implicitly called from the
ProtocolClientSocketHandle::ProtocolClientSocketHandle()
constructor */
- ///@}
+ //\}
};
public AddressableBSDSocketProtocol
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// internal interface
///\name Constructors
- ///@{
+ //\{
void init_client() const; ///< Create unconnected client socket
/**< \note This member is implicitly called from the
ProtocolClientSocketHandle::ProtocolClientSocketHandle()
constructor */
- ///@}
+ //\}
};
typedef ProtocolClientSocketHandle<UDPv6SocketProtocol> UDPv6ClientSocketHandle;
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "UDPSocketHandle.cci"
//#include "UDPSocketHandle.ct"
//#include "UDPSocketHandle.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "UDPSocketProtocol.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ unsigned senf::UDPSocketProtocol::available()
const
return false;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "UDPSocketProtocol.mpp"
#include "INetSocketProtocol.hh"
//#include "UDPSocketProtocol.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup protocol_facets_group
- /// @{
+ //\{
/** \brief Protocol facet to support UDP operations
{
public:
///\name Abstract Interface Implementation
- ///@{
+ //\{
unsigned available() const;
bool eof() const;
- ///@}
+ //\}
};
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "UDPSocketProtocol.cci"
//#include "UDPSocketProtocol.ct"
//#include "UDPSocketProtocol.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/test/test_tools.hpp>
//#include "net.test.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "net.test.cci"
//#include "net.test.ct"
//#include "net.test.cti"
//#include "EUI64.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
senf::EUI64 const senf::EUI64::None;
return is;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "EUI64.mpp"
#include "MACAddress.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::EUI64::EUI64(boost::uint64_t v)
{
| (boost::uint64_t((*this)[7]) );
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/config.hh>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class InputIterator>
prefix_ senf::EUI64 senf::EUI64::from_data(InputIterator i)
return eui;
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/safe_bool.hh>
//#include "EUI64.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
public senf::comparable_safe_bool<EUI64>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
static EUI64 const None; ///< The empty (0) address
/**< The iterator \a i must point to a sequence of 8
octets in network byte order. */
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
bool isMACCompatible() const; ///< \c true, if EUI64 is MAC compatible, \c false otherwise
/**< An EUI64 is MAC compatible if bytes 4th and 5th byte
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "EUI64.cci"
//#include "EUI64.ct"
#include "EUI64.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(eui64)
{
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "LLAddressing.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ std::string senf::LLSocketAddress::interface()
const
return os;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "LLAddressing.mpp"
#include <netinet/in.h>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::LLSocketAddress::LLSocketAddress()
: BSDSocketAddress (sizeof(sockaddr_ll), AF_PACKET)
std::copy(addr.begin(), addr.end(), &addr_.sll_addr[0]);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "LLAddressing.mpp"
//#include "LLAddressing.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup addr_group
- /// @{
+ //\{
/** \brief Link local address
, Outgoing = PACKET_OUTGOING /**< Packet sent out from this host */
};
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
LLSocketAddress(); ///< Create empty address
explicit LLSocketAddress(unsigned proto, std::string const & iface="");
LLSocketAddress(LLSocketAddress const & other);
LLSocketAddress& operator=(LLSocketAddress const & other);
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
MACAddress address() const; ///< Return address
std::string interface() const; ///< Return interface name
struct ::sockaddr_ll addr_;
};
- /// @}
+ //\}
/// \addtogroup policy_impl_group
- /// @{
+ //\{
/** \brief Addressing policy supporting link-local addressing
using BSDAddressingPolicyMixin<LLSocketAddress>::bind;
};
- /// @}
+ //\}
/** \brief Write link layer address
\related LLSocketAddress
std::ostream & operator<<(std::ostream & os, LLSocketAddress const & llAddr);
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "LLAddressing.cci"
//#include "LLAddressing.ct"
//#include "LLAddressing.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(llAddress)
{
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "MACAddress.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::MACAddress
prefix_ senf::MACAddress::MACAddress senf::MACAddress::from_string(std::string const & s)
senf::MACAddress const senf::MACAddress::None;
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// namespace members
prefix_ std::ostream & senf::operator<<(std::ostream & os, MACAddress const & mac)
return is;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "MACAddress.mpp"
#include "EUI64.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::MACAddress
prefix_ senf::MACAddress::MACAddress()
return mac == eui64;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
#include <senf/config.hh>
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::MACAddress
template <class InputIterator>
return mac;
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Tags.hh>
//#include "MACAddress.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "MACAddress.cci"
#include "MACAddress.ct"
//#include "MACAddress.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(macAddress)
{
BOOST_CHECK_EQUAL( senf::EUI64::from_mac(mac), mac );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "PacketSocketHandle.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::PacketSocketProtocol::init_client(SocketType type, int protocol)
const
throw senf::SystemException();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "PacketSocketHandle.mpp"
//#include "PacketSocketHandle.mpp"
//#include "PacketSocketHandle.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup concrete_protocol_group
- /// @{
+ //\{
typedef MakeSocketPolicy<
LLAddressingPolicy,
///< Socket types
///\name Constructors
- ///@{
+ //\{
void init_client(SocketType type = RawSocket, int protocol = -1) const;
///< Create packet socket
/**< The new socket will receive all packets of the given
/**< \note This member is implicitly called from the
ProtocolClientSocketHandle::ProtocolClientSocketHandle()
constructor */
- ///@}
+ //\}
///\name Protocol Interface
- ///@{
+ //\{
void mcAdd(std::string const & interface, MACAddress const & address) const;
///< Enable reception of a multicast group
void promisc(std::string const & interface, bool mode) const;
///< enable/disable promiscuous mode
- ///@}
+ //\}
///\name Abstract Interface Implementation
- ///@{
+ //\{
unsigned available() const;
bool eof() const;
- ///@}
+ //\}
};
typedef ProtocolClientSocketHandle<PacketSocketProtocol> PacketSocketHandle;
///< SocketHandle of the PacketSocketProtocol
/**< \related PacketPrototol */
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "PacketSocketHandle.cci"
//#include "PacketSocketHandle.ct"
//#include "PacketSocketHandle.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(packetSocketHandle)
{
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Socket/Protocols/AddressExceptions.hh>
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class ForwardIterator>
prefix_ void senf::detail::parseHexString(std::string const & value,
throw AddressSyntaxException(value);
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
//#include "ParseString.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace detail {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "ParseString.cci"
#include "ParseString.ct"
//#include "ParseString.cti"
//#include "TunTapSocketHandle.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::TapSocketProtocol::init_client()
const
return std::string(buf);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "TunTapSocketHandle.mpp"
//#include "TunTapSocketHandle.mpp"
//#include "TunTapSocketHandle.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup concrete_protocol_group
- /// @{
+ //\{
typedef MakeSocketPolicy<
NoAddressingPolicy,
{
public:
///\name Constructors
- ///@{
+ //\{
void init_client() const; ///< Open tap socket and create new tap interface
/**< Opens the tun/tap socket and create a new tap interface
Use \ref ifaceName() to get the actual name of the newly
ProtocolClientSocketHandle::ProtocolClientSocketHandle()
constructor */
- ///@}
+ //\}
///\name Abstract Interface Implementation
- ///@{
+ //\{
unsigned available() const;
bool eof() const; ///< returns always false.
private:
mutable unsigned int ifaceIndex_;
- ///@}
+ //\}
};
typedef ProtocolClientSocketHandle<TapSocketProtocol> TapSocketHandle;
///< SocketHandle of TapSocketProtocol
/**< \related TapSocketProtocol */
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "TunTapSocketHandle.cci"
//#include "TunTapSocketHandle.ct"
//#include "TunTapSocketHandle.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(tapSocketHandle)
{
SENF_CHECK_NO_THROW( sock.bind(senf::LLSocketAddress("tap_unittest")) );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "UNDatagramSocketHandle.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::ConnectedUNDatagramSocketProtocol::init_client() const
{
clientHandle().connect(address);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "UNDatagramSocketHandle.mpp"
#include <senf/Socket/ProtocolClientSocketHandle.hh>
//#include "UNDatagramSocketHandle.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
>::policy ConnectedUNDatagramSocket_Policy; ///< Socket Policy of the Unix Domain Datagram Protocol (connected)
/// \ingroup concrete_protocol_group
- /// \{
+ //\{
/** \brief Unix Domain Datagram Socket Protocol (connected)
public AddressableBSDSocketProtocol
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// internal interface
///\name Constructors
- ///@{
+ //\{
void init_client() const; ///< Create unconnected client socket
/**< \note This member is implicitly called from the
ProtocolClientSocketHandle::ProtocolClientSocketHandle()
constructor */
- ///@}
+ //\}
};
typedef ProtocolClientSocketHandle<ConnectedUNDatagramSocketProtocol> ConnectedUNDatagramClientSocketHandle;
- ///\}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "ConnectedUNDatagramSocketHandle.cci"
//#include "ConnectedUNDatagramSocketHandle.ct"
//#include "ConnectedUNDatagramSocketHandle.cti"
#include <senf/Socket/Protocols/AddressExceptions.hh>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::UNSocketAddress::path(std::string const & path)
{
addr_.sun_path[socklen()-sizeof(short)+1] = 0;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "UNAddressing.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::UNSocketAddress
prefix_ senf::UNSocketAddress::UNSocketAddress()
return os;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Socket/Protocols/BSDSocketAddress.hh>
//#include "UNAddressing.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
std::ostream & operator<<(std::ostream & os, UNSocketAddress const & addr);
/// \addtogroup policy_impl_group
- /// @{
+ //\{
/** \brief Addressing policy supporting unix domain addressing
using BSDAddressingPolicyMixin<UNSocketAddress>::bind;
};
- ///@}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "UNAddressing.cci"
//#include "UNAddressing.ct"
//#include "UNAddressing.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(UNSocketAddress)
{
BOOST_CHECK_THROW( senf::UNSocketAddress(std::string(1024, 'x')), senf::AddressSyntaxException );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "UNDatagramSocketHandle.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::UNDatagramSocketProtocol::init_client() const
{
clientHandle().bind(address);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "UNDatagramSocketHandle.mpp"
#include <senf/Socket/ProtocolClientSocketHandle.hh>
//#include "UNDatagramSocketHandle.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup concrete_protocol_group
- /// @{
+ //\{
typedef MakeSocketPolicy<
UNAddressingPolicy,
public AddressableBSDSocketProtocol
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// internal interface
///\name Constructors
- ///@{
+ //\{
void init_client() const; ///< Create unconnected client socket
/**< \note This member is implicitly called from the
ProtocolClientSocketHandle::ProtocolClientSocketHandle()
constructor */
- ///@}
+ //\}
};
typedef ProtocolClientSocketHandle<UNDatagramSocketProtocol> UNDatagramClientSocketHandle;
- ///@}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "UNDatagramSocketHandle.cci"
//#include "UNDatagramSocketHandle.ct"
//#include "UNDatagramSocketHandle.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(unDatagramSocketHandle)
{
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "UNSocketProtocol.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ unsigned senf::UNSocketProtocol::available()
const
{
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "UNSocketProtocol.mpp"
#include <senf/Socket/SocketProtocol.hh>
//#include "UNSocketProtocol.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup protocol_facets_group
- /// @{
+ //\{
/** \brief Protocol facet providing Unix Domain Addressing related API
block. Like the overriden method, this member will ignore
failures and will never throw. It therefore safe to be
called from a destructor. */ ///\name Abstract Interface Implementation
- ///@{
+ //\{
unsigned available() const;
bool eof() const;
std::string path_;
};
- ///@}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "UNSocketProtocol.cci"
//#include "UNSocketProtocol.ct"
//#include "UNSocketProtocol.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(unProtocol)
{
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "ReadWritePolicy.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ unsigned senf::ReadablePolicy::read(FileHandle & handle, char * buffer,
unsigned size)
return rv;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "ReadWritePolicy.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef DOXYGEN
template <class SPolicy>
{}
#endif
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "CommunicationPolicy.hh"
//#include "ReadWritePolicy.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
struct sockaddr;
namespace senf {
/// \addtogroup policy_impl_group
- /// @{
+ //\{
/** \brief ReadPolicy for readable sockets
struct NotWriteablePolicy : public WritePolicyBase
{};
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "ReadWritePolicy.cci"
//#include "ReadWritePolicy.ct"
#include "ReadWritePolicy.cti"
#include <typeinfo>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class SPolicy>
prefix_ senf::ServerSocketHandle<SPolicy>::ServerSocketHandle()
return *this;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Server socket interface
template <class SPolicy>
SPolicy::CommunicationPolicy::accept(*this,addr), false));
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class SPolicy>
prefix_ senf::ServerSocketHandle<SPolicy>::ServerSocketHandle(FileHandle other,
return detail::dumpState(map);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "SocketHandle.hh"
//#include "ServerSocketHandle.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup handle_group
- /// @{
+ //\{
template <class SPolicy> class ClientSocketHandle;
: public SocketHandle<SPolicy>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
/// Address type from the addressing policy
/// Corresponding client socket handle with the same policy
typedef ClientSocketHandle<SPolicy> ClientHandle;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
// default default constructor
// default copy constructor
typename SocketHandle<SPolicy>::template IsCompatible<OtherPolicy>::type const &
operator=(ServerSocketHandle<OtherPolicy> other);
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Server socket interface
- ///@{
+ //\{
/** \brief Set local address
\returns handle of new client connection
\see \ref accept() */
- ///@}
+ //\}
static ServerSocketHandle cast_static(FileHandle handle);
static ServerSocketHandle cast_dynamic(FileHandle handle);
};
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "ServerSocketHandle.cci"
//#include "ServerSocketHandle.ct"
#include "ServerSocketHandle.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "SocketHandle.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::SocketBody
prefix_ void senf::SocketBody::state(SocketStateMap & map, unsigned lod)
return protocol().eof();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::StateMapOrdering
namespace {
return s.str();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "SocketHandle.mpp"
#include "SocketProtocol.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::SocketBody::SocketBody(bool isServer)
: isServer_(isServer)
return protocol().clone(fd, isServer);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::StreamableString
prefix_ senf::detail::StreamableString & senf::detail::StreamableString::operator<<(bool v)
return (*this) << std::string(v ? "true" : "false");
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/TypeInfo.hh>
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::StreamableString
template <class T>
return *this;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ProtocolSocketBody<SProtocol>
template <class SProtocol>
return senf::prettyName(typeid(SProtocol));
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/TypeInfo.hh>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::SocketHandle<SPolicy>
template <class SPolicy>
SENF_WRAP_EXC(std::bad_cast)
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ProtocolSocketBody<SProtocol>
template <class SProtocol>
: SocketBody(isServer, fd)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class SPolicy>
prefix_ std::ostream & senf::operator<<(std::ostream & os, SocketHandle<SPolicy> handle)
return os;
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "FileHandle.hh"
#include "SocketPolicy.hh"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup handle_group
- /// @{
+ //\{
/** \brief basic SocketHandle supporting protocol and policy abstraction
: public FileHandle
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef SPolicy Policy;
: public boost::enable_if< SocketPolicyIsBaseOf<Policy,OtherPolicy>, SocketHandle >
{};
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
// default default constructor
// default copy constructor
///< Convert from other socket handle checking policy
///< compatibility
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
template <class OtherPolicy>
typename IsCompatible<OtherPolicy>::type const & operator=(SocketHandle<OtherPolicy> other);
template <class Target, class Source>
bool check_socket_cast(Source handle);
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "SocketHandle.cci"
#include "SocketHandle.ct"
#include "SocketHandle.cti"
#include <boost/scoped_ptr.hpp>
#include "FileHandle.hh"
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
: public FileBody
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
// Types
typedef boost::intrusive_ptr<SocketBody> ptr;
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
SocketBody(bool isServer); /**< \param isServer \c true, if this socket is a server
socket, false otherwise */
// no copy
// no conversion constructors
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-/////////////////////////////////////////////////////////////////////////////////////////
SocketProtocol & protocol() const; ///< Access the protocol instance
}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
BOOST_CHECK( senf::test::SomeSocketProtocol::closeCount() >= 1u );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "SocketPolicy.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::AddressingPolicyBase::~AddressingPolicyBase()
{}
prefix_ senf::SocketPolicyBase::~SocketPolicyBase()
{}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "SocketPolicy.mpp"
#include "senf/Utils/IgnoreValue.hh"
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#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,_)
#undef SP_TemplateArgs
#undef SP_TemplateParams
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
//#include "SocketPolicy.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup policy_group
- /// @{
+ //\{
// This may be adapted to change the supported policies (however, ClientSocketHandle and
// ServerSocketHandle will probably have to be adjusted accordingly)
# endif
- /// @}
+ //\}
}
-//////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "SocketPolicy.ih"
//#include "SocketPolicy.cci"
#include "SocketPolicy.ct"
#include <senf/Utils/mpl.hh>
#include <senf/Utils/pool_alloc_mixin.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
/// \cond disabled
// Hide this code from doxygen
/// \endcond
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
using namespace senf;
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "FileHandle.hh"
//#include "SocketPolicy.test.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace test {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "SocketPolicy.test.cci"
//#include "SocketPolicy.test.ct"
//#include "SocketPolicy.test.cti"
//#include "SocketProtocol.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::SocketProtocol::close()
{
const
{}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "SocketProtocol.mpp"
#include <senf/Utils/senfassert.hh>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::SocketProtocol
prefix_ senf::FileHandle senf::SocketProtocol::fh()
prefix_ senf::SocketProtocol::~SocketProtocol()
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "SocketHandle.hh"
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ConcreteSocketProtocol<SocketPolicy,Self>
template <class SocketPolicy, class Self>
static_cast< ProtocolSocketBody<Self> const & >(*this));
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
template <class SocketPolicy, class Self>
return static_socket_cast< ServerSocketHandle<Policy> >(fh());
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "SocketHandle.ih"
//#include "SocketProtocol.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/// \addtogroup protocol_group
- /// @{
+ //\{
class SocketPolicyBase;
: boost::noncopyable
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
SocketProtocol();
virtual ~SocketProtocol() = 0;
// no copy
// no conversion constructors
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
virtual SocketPolicyBase const & policy() const = 0;
///< Access the policy instance
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Virtual interface
virtual unsigned available() const = 0;
: public virtual SocketProtocol
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef SocketPolicy Policy; ///< The protocols policy
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
~ConcreteSocketProtocol() = 0;
// no copy
// no conversion constructors
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
Policy const & policy() const;
Policy policy_;
};
- /// @}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "SocketProtocol.cci"
//#include "SocketProtocol.ct"
#include "SocketProtocol.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(socketProtocol)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "ProtocolClientSocketHandle.hh"
//#include "SocketProtocol.test.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace test {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "SocketProtocol.test.cci"
//#include "SocketProtocol.test.ct"
//#include "SocketProtocol.test.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "Backtrace.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::formatBacktrace(std::ostream & os, void ** backtrace, unsigned numEntries)
{
#endif
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Backtrace.mpp"
#include <iostream>
//#include "Backtrace.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/** \defgroup backtraces Backtrace formatting and parsing
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Backtrace.cci"
//#include "Backtrace.ct"
//#include "Backtrace.cti"
#include "Exception.hh"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::Beeper
prefix_ senf::Beeper::Beeper(std::string const & device)
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <linux/kd.h>
#define prefix_ inline
-///////////////////////////////cci.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::Beeper
prefix_ bool senf::Beeper::start_beep(float freq)
::ioctl(fd_, KIOCSOUND, 0);
}
-///////////////////////////////cci.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <string>
#include <senf/Scheduler/TimerEvent.hh>
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Beeper.cci"
//#include "Beeper.ct"
//#include "Beeper.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(beep_beep)
{
senf::scheduler::process();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/config.hh>
//#include "Buffer.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#if defined(SENF_BUFFER_USE_LOCALS)
#endif
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Buffer.cci"
//#include "Buffer.ct"
//#include "Buffer.cti"
#include "senf/Utils/IgnoreValue.hh"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(buffer)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "Config.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::RestrictedExecutor
prefix_ senf::console::detail::RestrictedExecutor::RestrictedExecutor(DirectoryNode & root)
parsedNodes_.push_back(node.thisptr());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ConfigBundle
prefix_ void senf::console::ConfigBundle::parse()
(*i)->parse(executor_);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::RestrictedExecutor::RestrictGuard
prefix_ senf::console::detail::RestrictedExecutor::RestrictGuard::
executor_.restrict_ = senf::console::root().thisptr();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::ConfigSource
prefix_ senf::console::detail::ConfigSource::~ConfigSource()
{}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Config.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::RestrictedExecutor
prefix_ bool senf::console::detail::RestrictedExecutor::complete()
return stream_;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ConfigBundle
prefix_ senf::console::ConfigBundle::ConfigBundle()
executor_.chroot(node);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::ConfigSource
prefix_ void senf::console::detail::ConfigSource::parse(RestrictedExecutor & executor)
v_parse(executor);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::BundleMixin
prefix_ senf::console::detail::BundleMixin::BundleMixin()
bundle_.reset();
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ConfigBundle
template <class Source>
return *source;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::BundleMixin
template <class Source>
return bundle_.add(source);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "Config.mpp"
#include "Config.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
class ConfigBundle
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
ConfigBundle(); ///< root node is set to console::root()
ConfigBundle(DirectoryNode & root); ///< Set custom root node
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
template <class Source>
Source & add(boost::intrusive_ptr<Source> source);
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Config.cci"
//#include "Config.ct"
#include "Config.cti"
#include <senf/Utils/intrusive_refcount.hh>
#include <senf/Utils/DiscardStream.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
public:
typedef void result_type;
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
//\/name Structors and default members
- ///\{
+ //\{
RestrictedExecutor(DirectoryNode & root = senf::console::root());
- ///\}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-/////////////////////////////////////////////////////////////////////////////////////////
void execute(std::ostream & output, ParseCommandInfo const & command);
///< Execute command
class RestrictedExecutor::RestrictGuard
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
//\/name Structors and default members
- ///\{
+ //\{
explicit RestrictGuard(RestrictedExecutor & executor);
RestrictGuard(RestrictedExecutor & executor, DirectoryNode & restrict);
~RestrictGuard();
- ///\}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-/////////////////////////////////////////////////////////////////////////////////////////
protected:
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
std::string val1;
BOOST_CHECK_EQUAL( val2, true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "ConfigFile.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::ConfigFileSource
#ifndef DOXYGEN
}
#endif
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::console::parseFile(std::string const & filename, DirectoryNode & root)
{
cfg.parse();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "ConfigFile.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::ConfigFileSource
#ifndef DOXYGEN
{}
#endif
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ConfigFile
prefix_ senf::console::ConfigFile::ConfigFile(std::string const & filename,
self_.ignoreMissing();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::console::detail::ConfigFileSource::ptr
senf::console::FileConfig(std::string const & filename)
return detail::ConfigFileSource::create(filename);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "ConfigFile.mpp"
#include "ConfigFile.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
: public detail::BundleMixin
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
explicit ConfigFile(std::string const & filename, DirectoryNode & root = root());
///< Create ConfigFile object for \a filename
parse() calls. All configuration statements will be
interpreted relative to \a root as root node. */
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
void ignoreMissing(); ///< Call to ignore missing files
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "ConfigFile.cci"
//#include "ConfigFile.ct"
//#include "ConfigFile.cti"
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
//#include "Console.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Server.hh"
#include "ParsedCommand.hh"
#include "UDPServer.hh"
#include "Utility.hh"
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Console.cci"
//#include "Console.ct"
//#include "Console.cti"
//#include "Executor.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::Executor
prefix_ senf::console::DirectoryNode & senf::console::Executor::cwd()
os << "<Null Directory>";
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Executor.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::Executor
prefix_ senf::console::Executor::Executor()
return cwd_.empty();
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Node.hh"
//#include "Executor.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
SENF_LOG_CLASS_AREA();
SENF_LOG_DEFAULT_LEVEL( senf::log::VERBOSE );
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
/// Thrown by built-in 'exit' command
typedef void result_type;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
//\/name Structors and default members
- ///\{
+ //\{
Executor();
- ///\}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
void execute(std::ostream & output, ParseCommandInfo const & command);
///< Execute command
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Executor.cci"
//#include "Executor.ct"
//#include "Executor.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
std::vector<senf::console::ParseCommandInfo> commands;
senf::console::root().remove("dir2");
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "LazyDirectory.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::console::LazyDirectory::LazyDirectory()
: p_( new ScopedDirectory<>() )
return *p_;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "LazyDirectory.mpp"
#include <boost/scoped_ptr.hpp>
//#include "LazyDirectory.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "LazyDirectory.cci"
//#include "LazyDirectory.ct"
//#include "LazyDirectory.cti"
//#include "LineEditor.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::LineEditorSwitcher
prefix_ senf::console::detail::LineEditorSwitcher::LineEditorSwitcher(Client & client)
return reader_->width();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::LineEditorClientReader
prefix_ senf::console::detail::LineEditorClientReader::
completions.push_back(j->first + (j->second->followLink().isDirectory() ? "/" : " "));
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "LineEditor.mpp"
#include "Server.hh"
//#include "LineEditor.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "LineEditor.cci"
//#include "LineEditor.ct"
//#include "LineEditor.cti"
//#include "Node.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::console::DirectoryNode & senf::console::root()
{
dodump(os,0,dir);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::GenericNode
prefix_ std::string senf::console::GenericNode::path()
return node;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::LinkNode
prefix_ void senf::console::LinkNode::v_help(std::ostream & os)
return follow().shorthelp();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//senf::console::DirectoryNode
prefix_ senf::console::DirectoryNode::~DirectoryNode()
return doc_.substr(0,doc_.find('\n'));
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::NodeTraverser
#ifndef DOXYGEN
}
#endif
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::SimpleCommandNode
prefix_ void senf::console::SimpleCommandNode::v_help(std::ostream & output)
fn_(os, command);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Node.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::GenericNode
prefix_ senf::console::GenericNode::ptr senf::console::GenericNode::thisptr()
: *this;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::LinkNode
prefix_ senf::console::GenericNode & senf::console::LinkNode::follow()
: node_ (node.thisptr())
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::DirectoryNode
prefix_ senf::console::DirectoryNode::ptr senf::console::DirectoryNode::create()
return boost::static_pointer_cast<DirectoryNode const>(shared_from_this());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::NodeTraverser
#ifndef DOXYGEN
#endif
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::CommandNode
prefix_ senf::console::CommandNode::ptr senf::console::CommandNode::thisptr()
execute(rv, output, command);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::SimpleCommandNode
prefix_ senf::console::SimpleCommandNode::SimpleCommandNode(Function const & fn)
return boost::static_pointer_cast<SimpleCommandNode const>(shared_from_this());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::console::DirectoryNode & senf::console::provideDirectory(DirectoryNode & dir,
std::string const & name)
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::factory::SimpleCommand
prefix_ senf::console::factory::SimpleCommand::SimpleCommand(SimpleCommandNode::Function fn)
return *this;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::factory::Directory
prefix_ senf::console::factory::Directory::Directory()
return *this;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::factory::Link
prefix_ senf::console::factory::Link::Link(GenericNode & target)
return dir.add(name, node_);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::DirectoryNode
template <class NodeType>
return factory.create(*this, name);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Logger/SenfLog.hh>
//#include "Node.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
{
SENF_LOG_CLASS_AREA();
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::shared_ptr<GenericNode> ptr;
typedef boost::shared_ptr<GenericNode const> cptr;
typedef boost::weak_ptr<GenericNode> weak_ptr;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
virtual ~GenericNode();
: public GenericNode
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::shared_ptr<LinkNode> ptr;
typedef boost::shared_ptr<LinkNode const> cptr;
typedef boost::weak_ptr<LinkNode> weak_ptr;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
static ptr create(GenericNode & node); ///< Create new link node.
/**< You should normally use DirectoryNode::link() to
create a link node. */
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
GenericNode & follow() const; ///< Access the referenced node
SENF_LOG_CLASS_AREA();
typedef std::map<std::string, GenericNode::ptr> ChildMap;
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::shared_ptr<DirectoryNode> ptr;
typedef DirectoryNode node_type;
typedef DirectoryNode & return_type;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///\{
+ //\{
static ptr create(); ///< Create node object.
/**< You should normally use either mkdir() or
ScopedDirectory instead of create() */
~DirectoryNode();
- ///\}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
///\name Children
- ///\{
+ //\{
template <class NodeType>
NodeType & add(std::string const & name, boost::shared_ptr<NodeType> node);
///< Return iterator range of completions for \a s
/**< The returned range is sorted by child name. */
- ///\}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
DirectoryNode & doc(std::string const & doc); ///< Set node documentation
DirectoryNode & shortdoc(std::string const & doc); ///< Set node short documentation
{
SENF_LOG_CLASS_AREA();
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::shared_ptr<CommandNode> ptr;
typedef boost::shared_ptr<CommandNode const> cptr;
typedef boost::weak_ptr<CommandNode> weak_ptr;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
void execute(std::ostream & output, ParseCommandInfo const & command) const;
///< Execute the command
{
SENF_LOG_CLASS_AREA();
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::shared_ptr<SimpleCommandNode> ptr;
typedef SimpleCommandNode node_type;
typedef SimpleCommandNode & return_type;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///\{
+ //\{
static ptr create(Function const & fn);
- ///\}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
ptr thisptr();
cptr thisptr() const;
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Node.cci"
//#include "Node.ct"
#include "Node.cti"
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(genericNode)
{
senf::console::root().remove("fn");
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "OverloadedCommand.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::OverloadedCommandNode
prefix_ senf::console::OverloadedCommandNode &
return node;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// So soll die doku aussehen:
//
// Usage:
throw err;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::SimpleCommandOverload
prefix_ unsigned senf::console::SimpleCommandOverload::v_numArguments()
fn_(os, command);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "OverloadedCommand.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::OverloadedCommandNode
prefix_ senf::console::OverloadedCommandNode::ptr senf::console::OverloadedCommandNode::create()
prefix_ senf::console::OverloadedCommandNode::OverloadedCommandNode()
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::CommandOverload
prefix_ senf::console::CommandOverload::~CommandOverload()
: node_(0)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::SimpleCommandOverload
prefix_ senf::console::SimpleCommandOverload::ptr
: fn_ (fn)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::SimpleOverloadAttributor
prefix_ senf::console::SimpleOverloadAttributor::
return node;
}
-/////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::OverloadedCommandNode
template <class Command>
return *overload;
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/optional.hpp>
//#include "OverloadedCommand.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
: public senf::intrusive_refcount
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::intrusive_ptr<CommandOverload> ptr;
typedef boost::intrusive_ptr<CommandOverload const> cptr;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
virtual ~CommandOverload();
typedef std::vector<CommandOverload::ptr> Overloads;
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::shared_ptr<OverloadedCommandNode> ptr;
typedef boost::iterator_range<Overloads::const_iterator> OverloadsRange;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
static ptr create();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
template <class Command>
Command & add(boost::intrusive_ptr<Command> overload); ///< Add an additional overload
: public CommandOverload
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::intrusive_ptr<SimpleCommandOverload> ptr;
typedef boost::function<void (std::ostream &, ParseCommandInfo const &)> Function;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
static SimpleCommandOverload::ptr create(Function fn);
///< Create new SimpleCommandOverload
/**< \param[in] fn callback to call */
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
SimpleCommandOverload & doc(std::string const & doc);
///< Assign overload specific documentation
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "OverloadedCommand.cci"
//#include "OverloadedCommand.ct"
#include "OverloadedCommand.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
cmd.unlink();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "Parse.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::Token
prefix_ senf::console::Token::Token(TokenType type, std::string token,
return os;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ParseCommandInfo
prefix_ std::ostream & senf::console::operator<<(std::ostream & stream,
return stream;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ParseCommandInfo::ArgumentIterator
prefix_ void senf::console::ParseCommandInfo::ArgumentIterator::setRange()
}
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::CommandParser
#ifndef DOXYGEN
parseLoop(commands.begin(), commands.end(), "<unknown>", cb) );
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Character sets
prefix_ bool senf::console::CommandParser::isSpecialChar(char ch)
return Impl::Grammar::word_p.test(ch);
}
-/////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Parse.mpp"
#include <senf/Utils/senfassert.hh>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::Token
prefix_ std::string const & senf::console::Token::value()
return Token(Token::Word, value);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ParseCommandInfo
prefix_ senf::console::ParseCommandInfo::ParseCommandInfo()
tokens_.push_back(token);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ParseCommandInfo::ArgumentIterator
prefix_ senf::console::ParseCommandInfo::ArgumentIterator::ArgumentIterator()
b_ = e_;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::console::CheckedArgumentIteratorWrapper::
CheckedArgumentIteratorWrapper(ParseCommandInfo::ArgumentsRange const & range,
return i;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::SingleCommandParser
prefix_ senf::console::CommandParser::Impl & senf::console::CommandParser::impl()
return *impl_;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Exception.hh>
//#include "Parse.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
: boost::noncopyable
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::function<void (ParseCommandInfo const &)> Callback;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
CommandParser();
~CommandParser();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
void parse(std::string const & command, Callback cb); ///< Parse string
void parseFile(std::string const & filename, Callback cb); ///< Parse file
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Parse.cci"
//#include "Parse.ct"
//#include "Parse.cti"
#include <senf/Utils/Phoenix.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
::phoenix::function<PositionOf> const positionOf;
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////////
// Grammar
template <class ParseDispatcher>
struct CommandGrammar : boost_spirit::grammar<CommandGrammar<ParseDispatcher> >
{
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
// Start rules
enum { CommandParser, SkipParser, ArgumentsParser, PathParser };
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
// The parse context (variables needed while parsing)
typedef Token::TokenType TokenType;
Context & context;
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
// Configuration
bool incremental;
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
// Dispatching semantic actions
ParseDispatcher & dispatcher;
- //////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
// charachter sets
static boost_spirit::chset<> special_p;
static boost_spirit::chset<> word_p;
static boost_spirit::distinct_parser<> keyword_p;
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
// Errors
enum Errors {
QuoteExpected
};
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////////////
CommandGrammar(ParseDispatcher & d, Context & c)
: context(c), incremental(false), dispatcher(d) {}
assertion<Errors> closing_paren_expected (ClosingParenExpected);
assertion<Errors> quote_expected (QuoteExpected);
- ///////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////
// Spirit grammar
//
// Syntax summary:
= self.space_p | comment_p('#')
;
- ///////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////////////
start_parsers(
command, // CommandParser
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace
{
CheckParseEx( "/foo/bar (", "')' expected\nat <unknown>:1:11" );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "ParsedCommand.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::ArgumentInfoBase
prefix_ senf::console::detail::ArgumentInfoBase::~ArgumentInfoBase()
{}
-////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ParsedCommandOverloadBase
prefix_ unsigned senf::console::ParsedCommandOverloadBase::v_numArguments()
return doc_;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
#include "ParsedCommand.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::ArgumentInfoBase
prefix_ senf::console::detail::ArgumentInfoBase::ArgumentInfoBase(std::string const & type_,
: type (type_), name (), hasDefault (false), singleToken (singleToken_)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ParsedCommandOverloadBase
prefix_ senf::console::ParsedCommandOverloadBase::ParsedCommandOverloadBase()
doc_ = d;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ParsedCommandAttributorBase
prefix_ senf::console::OverloadedCommandNode &
shortdoc_ = doc;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ParsedCommandOverload<FunctionTraits,n>
#define BOOST_PP_ITERATION_PARAMS_1 (4, (0, SENF_CONSOLE_MAX_COMMAND_ARITY, \
3))
#include BOOST_PP_ITERATE()
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/parameter.hh>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::ArgumentInfo<ParameterType>
template <class ParameterType>
return hasDefault ? ArgumentTraits<ParameterType>::str(defaultValue) : "";
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ParsedCommandOverloadBase
template <class Type>
parameters_.push_back(detail::ArgumentInfo<Type>::create());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ParsedCommandOverload<FunctionTraits,n>
#define BOOST_PP_ITERATION_PARAMS_1 (4, (0, SENF_CONSOLE_MAX_COMMAND_ARITY, \
2))
#include BOOST_PP_ITERATE()
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ParsedCommandAttributor<Overload>
template <class Overload>
: ParsedCommandAttributorBase (other, index)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ParsedArgumentAttributorBase<Overload,Self>
template <class Overload, class Self, class ReturnType>
: ParsedCommandAttributor<Overload> (other, index)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ParsedArgumentAttributor<Overload,index,flag>
template <class Overload, unsigned index, bool flag>
this->overload().arg<index>().parser = fn;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ParsedArgumentAttributor<Overload, index, false>
template <class Overload, unsigned index>
: ParsedArgumentAttributorBase<Overload, ParsedArgumentAttributor> (other, index)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// namespace members
namespace senf {
}}}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Signature>
prefix_ senf::console::SimpleOverloadAttributor
return detail::addOverloadedCommandNode<CastTo>(senf::membind(memfn,owner));
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "ParsedCommand.ih"
#include "ParsedCommand.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "ParsedCommand.cci"
#include "ParsedCommand.ct"
#include "ParsedCommand.cti"
#include <boost/intrusive_ptr.hpp>
#include "Parse.hh"
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/mpl/at.hpp>
#include "senf/Utils/IgnoreValue.hh"
-// ///////////////////////////mpp.p////////////////////////////////////////
-#elif BOOST_PP_IS_ITERATING // ////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-///////////////////////////mpp.p////////////////////////////////////////
+#elif BOOST_PP_IS_ITERATING //-////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// Local Macros
#define mpp_ArgTypeN(n) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(n)), _type)
#define mpp_BindArgs_(z,n,d) BOOST_PP_CAT( _, BOOST_PP_INC(BOOST_PP_INC(n)))
#define mpp_TrailingBindArgs() BOOST_PP_ENUM_TRAILING( BOOST_PP_ITERATION(), mpp_BindArgs_, _ )
-// ////////////////////////////////////////////////////////////////////////
-#if BOOST_PP_ITERATION_FLAGS()==1 // //////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#if BOOST_PP_ITERATION_FLAGS()==1 //-//////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// Header file (.hh)
Function function_;
};
-// ////////////////////////////////////////////////////////////////////////
-#elif BOOST_PP_ITERATION_FLAGS()==2 // ////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#elif BOOST_PP_ITERATION_FLAGS()==2 //-////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// inline template implementation (.cti)
# undef mpp_l
}
-// ////////////////////////////////////////////////////////////////////////
-#elif BOOST_PP_ITERATION_FLAGS()==3 // ////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#elif BOOST_PP_ITERATION_FLAGS()==3 //-////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// non-inline template implementation (.ct)
function_(os mpp_TrailingArgs());
}
-// ////////////////////////////////////////////////////////////////////////
-#elif BOOST_PP_ITERATION_FLAGS()==4 // ////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#elif BOOST_PP_ITERATION_FLAGS()==4 //-////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// CreateParsedCommandOverload
};
-// ////////////////////////////////////////////////////////////////////////
-#elif BOOST_PP_ITERATION_FLAGS()==5 // ////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#elif BOOST_PP_ITERATION_FLAGS()==5 //-////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// Create keyword arg forwarding functions
return argInfo( kw(BOOST_PP_ENUM_PARAMS( BOOST_PP_ITERATION(), a )) );
}
-// ////////////////////////////////////////////////////////////////////////
-#endif // /////////////////////////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#endif //-/////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// Undefine local Macros
#undef mpp_TrailingBindArgs
#undef mpp_ArgN
#undef mpp_ArgTypeN
-// ////////////////////////////////////////////////////////////////////////
-#endif // /////////////////////////////////////////////////////////////////
-// ///////////////////////////mpp.e////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#endif //-/////////////////////////////////////////////////////////////////
+//-///////////////////////////mpp.e////////////////////////////////////////
\f
// Local Variables:
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
#endif
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "ProgramOptions.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::ProgramOptionsSource::NonOptionContainer
prefix_ senf::console::detail::ProgramOptionsSource::NonOptionContainer::~NonOptionContainer()
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::ProgramOptionsSource
prefix_ void senf::console::detail::ProgramOptionsSource::v_parse(RestrictedExecutor & executor)
nonOptions_->push_back(arg);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::console::parseOptions(int argc, char const ** argv, DirectoryNode & root)
{
opts.parse();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "ProgramOptions.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::ProgramOptionsSource
prefix_ senf::console::detail::ProgramOptionsSource::ptr
return *this;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::ProgramOptionsSource::ShortOption
prefix_ senf::console::detail::ProgramOptionsSource::ShortOption::
: withArg (withArg_), longOpt (longOpt_)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ProgramOptions
prefix_ senf::console::ProgramOptions::ProgramOptions(int argc, char const ** argv,
return *this;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::console::detail::ProgramOptionsSource::ptr
senf::console::OptionsConfig(int argc, char const ** argv)
return detail::ProgramOptionsSource::create(argc, argv);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::ProgramOptionsSource
template <class Container>
return *this;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::ProgramOptionsSource::NonOptionContainerImpl
template <class Container>
c_.push_back(value);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ProgramOptions
template <class Container>
return *this;
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "ProgramOptions.mpp"
#include "ProgramOptions.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
: public detail::BundleMixin
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
ProgramOptions(int argc, char const ** argv, DirectoryNode & root = root());
///< Create ProgramOptions parser for given options
the operating system. Especially argv[0] is \e not an
option and is ignored. */
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
template <class Container>
ProgramOptions & nonOptions(Container & container);
detail::ProgramOptionsSource::ptr OptionsConfig(int argc, char const ** argv);
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "ProgramOptions.cci"
//#include "ProgramOptions.ct"
#include "ProgramOptions.cti"
#include <boost/scoped_ptr.hpp>
#include "Parse.hh"
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
std::string val1;
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/format.hpp>
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef DOXYGEN
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::CollectionArgumentTraitsBase<Collection>
template <class Collection>
return ss.str();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::CollectionArgumentTraits<Collection,Adder>
template <class Collection, class Adder>
}
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::CollectionReturnValueTraits<Collection>
template <class Collection>
os << ")";
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::MapArgumentTraits<Collection>
template <class Collection>
return ss.str();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::MapReturnValueTraits<Collection>
template <class Collection>
os << ")";
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ArgumentTraits< std::pair<T1,T2> >
template <class T1, class T2>
return ss.str();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ReturnValueTraits< std::pair<T1,T2> >
template <class T1, class T2>
#endif
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::PushBackFunctor
template <class Sequence, class ValueType>
seq.push_back(value);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::InsertFunctor
template <class Collection, class ValueType>
seq.insert(value);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "STLSupport.mpp"
#include "STLSupport.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "STLSupport.cci"
#include "STLSupport.ct"
#include "STLSupport.cti"
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
" default: (bar=2 \"foo bar\"=7)\n" );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ScopedDirectoryBase
prefix_ senf::console::DirectoryNode & senf::console::ScopedDirectoryBase::node()
node_->unlink();
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ScopedDirectory<Owner>
template <class Owner>
return node().add(name, factory);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ScopedDirectory<void>
return node().add(name,factory);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "LazyDirectory.hh" // For ScopedDirectory template default arg
//#include "ScopedDirectory.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
DirectoryNode & node() const; ///< Access the proxied DirectoryNode
operator DirectoryNode & () const; ///< Access the proxied DirectoryNode
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Proxied members (see DirectoryNode)
- ///\{
+ //\{
GenericNode::ptr remove(std::string const & name);
bool hasChild(std::string const & name) const;
void help(std::ostream & output) const;
std::string shorthelp() const;
- ///\}
+ //\}
protected:
ScopedDirectoryBase();
class ScopedDirectory : public ScopedDirectoryBase
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef Owner owner;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
explicit ScopedDirectory(Owner * owner);
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
template <class NodeType>
NodeType & add(std::string const & name, boost::shared_ptr<NodeType> node);
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "ScopedDirectory.cci"
//#include "ScopedDirectory.ct"
#include "ScopedDirectory.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct TestObject {
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "Server.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#ifdef SENF_DEBUG
# define BUILD_TYPE "development"
senf::str(senf::log::LEVELNAMES[senf::SenfLog::compileLimit::value]), 0);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::NonBlockingSocketSink
prefix_ std::streamsize senf::console::detail::NonblockingSocketSink::write(const char * s,
return n;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::Server
prefix_ senf::console::Server &
clients_.erase(boost::intrusive_ptr<Client>(&client));
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::DumbClientReader
prefix_ senf::console::detail::DumbClientReader::DumbClientReader(Client & client)
return 80;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::NoninteractiveClientReader
prefix_
stream() << std::flush;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::Client
prefix_ senf::console::Client::Client(Server & server, ClientHandle handle)
return rv < minWidth ? defaultWidth : rv;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::Client::SysBacktrace
prefix_ senf::console::Client::SysBacktrace::SysBacktrace()
senf::console::Client::SysBacktrace senf::console::Client::SysBacktrace::instance_;
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Server.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::ServerManager
prefix_ void senf::console::detail::ServerManager::add(ptr server)
return manager;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::NonblockingSocketSink
prefix_ senf::console::detail::NonblockingSocketSink::NonblockingSocketSink(Client & client)
return client_;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::Server
prefix_ senf::console::Server & senf::console::Server::name(std::string const & name)
detail::ServerManager::remove(boost::intrusive_ptr<Server>(this));
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::Client
prefix_ senf::console::Client::~Client()
return out_t::member;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::ClientReader
prefix_ senf::console::detail::ClientReader::~ClientReader()
: client_ (client)
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "Server.mpp"
#include "Server.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
SENF_LOG_CLASS_AREA();
SENF_LOG_DEFAULT_LEVEL( senf::log::NOTICE );
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef detail::ServerHandle ServerHandle;
enum Mode { Automatic, Interactive, Noninteractive };
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
static Server & start(senf::INet4SocketAddress const & address);
///< Start server on given IPv4 address/port
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Server.cci"
//#include "Server.ct"
//#include "Server.cti"
#include <set>
#include <senf/Utils/Logger/SenfLog.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(server)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "ParsedCommand.hh"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::console::SysInfo::Proxy::Proxy(std::string const & descr, unsigned pos)
{
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
#include <list>
#include <senf/Utils/singleton.hh>
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "SysInfo.cci"
//#include "SysInfo.ct"
//#include "SysInfo.cti"
#include "ScopedDirectory.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::console::ScopedDirectory<> & senf::console::sysdir()
{
senf::console::root().add("sys", sysdir_);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Node.hh"
//#include "Sysdir.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Sysdir.cci"
//#include "Sysdir.ct"
//#include "Sysdir.cti"
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
//#include "Traits.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ long senf::console::detail::parseEnum(EnumTable const & table,
ParseCommandInfo::TokensRange const & tokens)
return i->second;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Traits.mpp"
#include <boost/algorithm/string/predicate.hpp>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ArgumentTraits<bool>
prefix_ void
return value ? "true" : "false";
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ReturnValueTraits<bool>
prefix_ void senf::console::ReturnValueTraits<bool>::format(bool value, std::ostream & os)
formatTrueFalse(value, os);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::console::formatTrueFalse(bool value, std::ostream & os)
{
os << (value ? "0" : "1");
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Type>
prefix_ bool
return false;
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/TypeInfo.hh>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::ReturnValueTraits<Type>
template <class Type>
os << value;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ArgumentTraits<Type>
template <class Type>
return ss.str();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::CharArgumentTraits<CharT>
template <class CharT>
return std::numeric_limits<CharT>::is_signed ? "byte" : "ubyte";
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Traits.ih"
//#include "Traits.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Traits.cci"
#include "Traits.ct"
#include "Traits.cti"
#include <boost/algorithm/string/case_conv.hpp>
#include <boost/mpl/if.hpp>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
char charTest(char value) { return value; }
senf::console::FlagCollection<TestEnum> >::singleToken );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "UDPServer.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::console::UDPServer::UDPServer(senf::INet4SocketAddress const & address)
: replies_ (true), emptyReplies_ (true), target_ (),
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "UDPServer.mpp"
#include "Executor.hh"
//#include "UDPServer.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
SENF_LOG_CLASS_AREA();
SENF_LOG_DEFAULT_LEVEL(senf::log::NOTICE);
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef senf::ClientSocketHandle<
senf::MakeSocketPolicy<senf::UDPv4SocketProtocol::Policy,
senf::BSDAddressingPolicy>::policy > Handle;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
explicit UDPServer(senf::INet4SocketAddress const & address);
///< Open UDP server on \a address
explicit UDPServer(senf::INet6SocketAddress const & address);
///< Open UDP server on \a address
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
UDPServer & replies(bool enable); ///< Enable or disable reply packets
/** \e Default: enabled */
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "UDPServer.cci"
//#include "UDPServer.ct"
//#include "UDPServer.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
BOOST_CHECK_EQUAL( data, "sys/ \n" );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Traits.hh"
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ArgumentTraits< CharAsString<CharT> >
template <class CharT>
return senf::console::format(std::string(1,value.value),os);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ArgumentTraits< senf::console::ValueRange<T> >
template <class T>
return ss.str();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ReturnValueTraits< senf::console::ValueRange<T> >
template <class T>
os << ':' << senf::console::str(value.high);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ArgumentTraits< senf::console::FlagCollection<Enum> >
template <class Enum>
return ss.str();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ReturnValueTraits< senf::console::FlagCollection<Enum> >
template <class Enum>
os << (n != 1 ? "(" + ss.str() + ")" : ss.str());
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class CharT>
prefix_ senf::console::CharAsString<CharT>::CharAsString()
return value;
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Parse.hh"
//#include "Utility.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
/** \defgroup senf_console_utilities Special console utility types
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Utility.cci"
#include "Utility.ct"
#include "Utility.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
BOOST_CHECK_EQUAL( ss.str(), "()\n" );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::QueryVariable<Variable>
template <class Variable>
return var_;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::detail::SetVariable<Variable>
template <class Variable>
var_ = value;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::ConstVariableFactory<Variable>
template <class Variable>
: queryOverload_ (detail::QueryVariable<Variable>::create(var))
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::console::VariableFactory<Variable>
template <class Variable>
var_ (var)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Var>
prefix_ senf::console::factory::VariableFactory<Var>
return ConstVariableFactory<Var>(var);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Variables.ih"
//#include "Variables.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Variables.cci"
//#include "Variables.ct"
#include "Variables.cti"
#include <boost/function.hpp>
#include <boost/type_traits/is_const.hpp>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace console {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
void testParser(senf::console::ParseCommandInfo::TokensRange const &, int & value)
#endif
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "Daemon.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#define LIBC_CALL(fn, args) if (fn args < 0) \
SENF_THROW_SYSTEM_EXCEPTION(#fn "()")
#define LIBC_CALL_RV(var, fn, args) \
int var (fn args); if (var < 0) SENF_THROW_SYSTEM_EXCEPTION(#fn "()")
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::Daemon
prefix_ senf::Daemon::~Daemon()
return *instance_;
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
prefix_ senf::Daemon::Daemon()
senf::Daemon * senf::Daemon::instance_ (0);
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::Daemon::configure()
#endif
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::DaemonWatcher
prefix_ senf::detail::DaemonWatcher::DaemonWatcher(int pid, int coutpipe, int cerrpipe,
scheduler::process();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::detail::DaemonWatcher::pipeClosed(int id)
scheduler::terminate();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::DaemonWatcher::Forwarder
prefix_ senf::detail::DaemonWatcher::Forwarder::Forwarder(int src, Callback cb)
#undef LIBC_CALL
#undef LIBC_CALL_RV
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Daemon.mpp"
#include <boost/bind.hpp>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::detail::DaemonWatcher::Forwarder::Target::Target(Forwarder & fwd, int fd_)
: fd (fd_), offset (0),
fd, scheduler::FdEvent::EV_WRITE, false)
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Logger/SenfLog.hh>
//#include "Daemon.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
/** \brief %Daemon process
- The %Daemon class provides simple management for daemon processes. Specifically, it implements
+ The %Daemon class provides simple management for daemon processes. Specifically, it
+ implements
\li <i>Safe startup.</i> If the startup fails, the foreground process which launches the
daemon will terminate with an appropriate error exit code.
\li <i>Straight forward application initialization.</i> The daemon process is forked before
- even initializing the application. The initialization procedure must not cater for a
- later fork().
- \li <i>Automatic pid file management.</i> The daemon will not be started, if a valid pid file is
- found. Stale pid files are automatically removed.
+ even initializing the application. The initialization procedure doesn't need to cater
+ for a later fork().
+ \li <i>Automatic pid file management.</i> The daemon will not be started, if a valid pid
+ file is found. Stale pid files are automatically removed.
\li <i>Console log management.</i> It is possible, to redirect standard output and error to
one or two log files. Messages pertaining to application initialization will be written
to both the console and the log file whereas later messages will be directed to the log
public:
SENF_LOG_CLASS_AREA();
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////
// Types
/// Select standard stream to redirect
, Both /** Both, standard output and error stream */
};
- ///////////////////////////////////////////////////////////////////////////
+ //-/////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///\{
+ //\{
virtual ~Daemon();
- ///\}
+ //\}
///\name Parameters
- ///\{
+ //\{
void daemonize(bool); ///< Configure whether to run in fore- or background
bool daemon(); ///< \c true, if running as daemon
daemon startup. If another running instance of the
daemon is detected, starting the daemon will fail. */
- ///\}
+ //\}
///\name Auxiliary helpers
- ///\{
+ //\{
void detach(); ///< Detach into background now
/**< This is \e not the same as forking. The process will
/**< This is used when rotating the logs. By default,
SIGHUP calls logReopen. */
- ///\}
+ //\}
int start(int argc, char const ** argv); ///< Called from main() to launch daemon.
/**< Normally not called directly but from the
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Daemon.cci"
//#include "Daemon.ct"
//#include "Daemon.cti"
#include <senf/Scheduler/Scheduler.hh>
#include <senf/Scheduler/FdEvent.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace detail {
}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
SENF_CHECK_NO_THROW( boost::filesystem::remove("testDaemon.log.1") );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ std::streamsize senf::DiscardSink::write(char const * s, std::streamsize n)
{
open(DiscardSink());
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/iostreams/stream.hpp>
//#include "DiscardStream.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "DiscardStream.cci"
//#include "DiscardStream.ct"
//#include "DiscardStream.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(discardStream)
{
SENF_CHECK_NO_THROW( stream << "discard me" );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Backtrace.hh"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::Exception
#ifdef SENF_DEBUG
}
#endif
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::Exception
prefix_ senf::Exception::~Exception()
return what_.c_str();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::SystemException
prefix_ void senf::SystemException::init(std::string const & descr, int code
if (! descr.empty()) (*this) << " " << descr;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <cstring>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ExceptionMixin
prefix_ senf::ExceptionMixin::ExceptionMixin(std::string const & description)
what_ += text;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::Exception
prefix_ senf::Exception::Exception(std::string const & description)
: ExceptionMixin(description)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::SystemException
prefix_ senf::SystemException::SystemException(std::string const & descr _SENF_EXC_DEBUG_ARGS_ND)
throw()
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/lexical_cast.hpp>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Exc, class Arg>
prefix_ typename boost::enable_if< boost::is_convertible<Exc*,senf::ExceptionMixin*>, Exc & >::type
return const_cast<Exc &>(exc);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::WrapExcecption<BaseException>
template <class BaseException>
return what_.c_str();
}
-/////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/type_traits/is_convertible.hpp>
//#include "Exception.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
/** \defgroup exception Exception classes
class SystemException : public Exception
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
explicit SystemException(std::string const & descr = "" _SENF_EXC_DEBUG_ARGS);
explicit SystemException(int code _SENF_EXC_DEBUG_ARGS);
virtual ~SystemException() throw();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
int errorNumber() const; ///< Error code (\c errno number)
char const * errorString() const; ///< Error string (\c strerror() value)
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Exception.cci"
//#include "Exception.ct"
#include "Exception.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(wrapException)
{
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
/**\defgroup externals External objects referenced from within SENF */
///\addtogroup externals
-///\{
+//\{
namespace boost { class array {}; }
namespace boost { class base_from_member {}; }
namespace boost { class enable_if {}; }
namespace boost { namespace iostreams { class sink {}; } }
namespace std { class exception {}; }
namespace std { class string {}; }
-///\}
+//\}
//#include "Format.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
unsigned int senf::format::IndentHelper::static_level = 0;
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Format.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::format::eng
prefix_ senf::format::eng::eng(float v, float d)
return *this;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::format::IndentHelper
prefix_ senf::format::IndentHelper::IndentHelper()
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class T>
prefix_ std::string
return detail::dumpintUnsigned(v.value(), std::numeric_limits<typename T::value_type>::digits);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/type_traits/is_unsigned.hpp>
//#include "Format.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace format {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Format.cci"
//#include "Format.ct"
#include "Format.cti"
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace format {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(formatEng)
{
" f2_3\n");
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class T>
prefix_ void senf::IGNORE(T const &)
prefix_ void senf::IGNORE(T const *)
{}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
//#include "IgnoreValue.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "IgnoreValue.cci"
//#include "IgnoreValue.ct"
#include "IgnoreValue.cti"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::IpChecksum::IpChecksum()
: sum_(0), odd_(false)
return ~ v;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class InputIterator>
prefix_ void senf::IpChecksum::feed(InputIterator b, InputIterator e)
feed(*b);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/cstdint.hpp>
//#include "IpChecksum.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
class IpChecksum
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
IpChecksum();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
void feed(boost::uint8_t byte); ///< Feed single byte
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "IpChecksum.cci"
//#include "IpChecksum.ct"
#include "IpChecksum.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(ipChecksum)
{
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/utility.hpp>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Iterator>
prefix_ typename std::iterator_traits<Iterator>::pointer senf::storage_iterator(Iterator i)
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <string>
//#include "IteratorTraits.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "IteratorTraits.cci"
//#include "IteratorTraits.ct"
#include "IteratorTraits.cti"
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(iteratorTraits)
{
#endif
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "AreaRegistry.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::detail::AreaBase
prefix_ senf::log::detail::AreaBase::AreaBase()
i->target->write(timestamp, stream, *this, level, msg);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "AreaRegistry.mpp"
#include "StreamRegistry.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::AreaRegistry
prefix_ std::string const &
return i == registry_.end() ? 0 : i->second;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::detail::AreaBase
prefix_ std::string senf::log::detail::AreaBase::fullName()
DISABLED::value : routingCache_[stream.index].limit;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "AreaRegistry.mpp"
#include "AreaRegistry.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace log {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "AreaRegistry.cci"
//#include "AreaRegistry.ct"
//#include "AreaRegistry.cti"
#include "Levels.hh"
#include "TimeSource.hh"
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace log {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(areaRegistry)
{
#endif
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "Config.mpp"
#include "Config.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
/** \defgroup config Configuration
namespace log {
///\ingroup config
- ///\{
+ //\{
# ifdef DOXYGEN
>= detail::Config<Stream,Area>::compileLimit::value );
};
- ///\}
+ //\}
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Config.cci"
//#include "Config.ct"
//#include "Config.cti"
#include <boost/preprocessor/facilities/is_empty.hpp>
#include <senf/Utils/preprocessor.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace log {
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(logConfig)
{
senf::log::VERBOSE >::value ));
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::ConsoleTarget
prefix_ senf::log::ConsoleTarget & senf::log::ConsoleTarget::instance()
: IOStreamTarget("console", std::cout)
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "IOStreamTarget.hh"
//#include "ConsoleTarget.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace log {
class ConsoleTarget : public IOStreamTarget
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
static ConsoleTarget & instance();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
private:
ConsoleTarget();
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "ConsoleTarget.cci"
//#include "ConsoleTarget.ct"
//#include "ConsoleTarget.cti"
//#include "Definitions.mpp"
#include "Definitions.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace log {
///\addtogroup logging
- ///\{
+ //\{
///\name Defining logger objects
- ///\{
+ //\{
/** \brief Define log stream
/** \brief Default global %log area */
SENF_LOG_DEFINE_AREA(DefaultArea);
- ///\}
- ///\}
+ //\}
+ //\}
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Definitions.cci"
//#include "Definitions.ct"
//#include "Definitions.cti"
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Implementation details concerning SENF_LOG_CLASS_AREA
//
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
//#include "FileTarget.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
return target.consoleDir().node().thisptr();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "FileTarget.mpp"
#include "IOStreamTarget.hh"
//#include "FileTarget.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
typedef boost::base_from_member<std::ofstream> ofstream_t;
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
explicit FileTarget(std::string const & filename, std::string const & nodename = "");
///< Construct FileTarget writing to \a file
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
void reopen(); ///< Reopen %log after log-file rotation
void reopen(std::string const & file); ///< Reopen %log under a new name
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "FileTarget.cci"
//#include "FileTarget.ct"
//#include "FileTarget.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(fileTarget)
{
SENF_CHECK_NO_THROW( boost::filesystem::remove(filename) );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "IOStreamTarget.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::IOStreamTarget
prefix_ void senf::log::IOStreamTarget::v_write(time_type timestamp,
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "IOStreamTarget.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::log::IOStreamTarget::IOStreamTarget(std::string const & name, std::ostream & os)
: Target(name), LogFormat(consoleDir()), stream_ (os)
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "LogFormat.hh"
//#include "IOStreamTarget.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace log {
: public Target, private detail::LogFormat
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
IOStreamTarget(std::string const & name, std::ostream & os);
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
using detail::LogFormat::showTime;
using detail::LogFormat::showStream;
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "IOStreamTarget.cci"
//#include "IOStreamTarget.ct"
//#include "IOStreamTarget.cti"
//#include "Levels.mpp"
#include "Levels.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace log {
simpler to parse them if they are all of the same type.
*/
- ///\{
+ //\{
/** \brief Log level %VERBOSE
\see loglevels */
\see loglevels */
struct NONE : public detail::LevelBase { static unsigned const value = 0; };
- ///\}
+ //\}
static char const * const LEVELNAMES[8] = {
"NONE", "VERBOSE", "NOTICE", "MESSAGE", "IMPORTANT", "CRITICAL", "FATAL", "DISABLED" };
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Levels.cci"
//#include "Levels.ct"
//#include "Levels.cti"
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace log {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
//#include "Log.mpp"
#include "Log.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
/** \defgroup logging Logging commands
*/
///\addtogroup logging
-///\{
+//\{
///\name Generating log messages
-///\{
+//\{
/** \brief Write log message
SENF_LOG_BLOCK_TPL_( SENF_LOG_MERGE_PARAMETERS_TPL(BOOST_PP_SEQ_POP_BACK(args)), \
BOOST_PP_SEQ_ELEM(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(args)),args))
-///\}
-///\}
+//\}
+//\}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Log.cci"
//#include "Log.ct"
//#include "Log.cti"
// Custom includes
#include <sstream>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#define SENF_LOG_BLOCK_(parameters, block) \
do { \
} \
} while(0)
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(logger)
{
target.clear();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "LogFormat.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::log::detail::LogFormat::LogFormat()
: tag_ (detail::getDefaultTag()), noformat_ (false), showTime_ (true),
return datestream_.str();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::log::detail::quoteNonPrintable(std::string & s)
{
return ss.str();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "LogFormat.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::log::detail::LogFormat::showTime(bool flag)
{
return tag_.empty() && !showTime_ && !showStream_ && !showLevel_ && !showArea_;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Console/LazyDirectory.hh>
//#include "LogFormat.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace log {
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "LogFormat.cci"
//#include "LogFormat.ct"
//#include "LogFormat.cti"
//#include "Parameters.mpp"
#include "Parameters.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
///\addtogroup logging
-///\{
+//\{
///\name Default parameters
-///\{
+//\{
/** \brief Set scope default log stream
\hideinitializer
*/
#define SENF_LOG_DEFAULT_LEVEL(level) typedef level SENFLogDefaultLevel
-///\}
-///\}
+//\}
+//\}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Parameters.cci"
//#include "Parameters.ct"
//#include "Parameters.cti"
#include "Config.hh"
#include "Target.hh"
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace log {
senf::log::detail::empty, \
(SENFLogDefaultStream)(SENFLogDefaultArea)(SENFLogDefaultLevel)args) >
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Tested in Log.test.cc
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Logger.hh"
//#include "SenfLog.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "SenfLog.cci"
//#include "SenfLog.ct"
//#include "SenfLog.cti"
//#include "Stream.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
unsigned senf::log::detail::StreamBase::nStreams = 0;
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::detail::StreamBase
prefix_ senf::log::detail::StreamBase::~StreamBase()
{}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Stream.mpp"
#include <senf/Utils/TypeInfo.hh>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::StreamRegistry
prefix_ senf::log::StreamRegistry::StreamRegistry()
return i == registry_.end() ? 0 : i->second;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::detail::StreamBase
prefix_ senf::log::detail::StreamBase::StreamBase()
senf::log::StreamRegistry::instance().registerStream(*this);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "StreamRegistry.mpp"
#include "StreamRegistry.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace log {
}}
-///////////////////////////////hh.e////////////////////////////////////////#
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "StreamRegistry.cci"
//#include "StreamRegistry.ct"
//#include "StreamRegistry.cti"
// Custom includes
#include <string>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace log {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(streamRegistry)
{
BOOST_CHECK_EQUAL( senf::log::detail::StreamBase::nStreams, 3u );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::StringTarget
prefix_ senf::log::StringTarget::StringTarget()
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "IOStreamTarget.hh"
//#include "StringTarget.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace log {
{
typedef boost::base_from_member<std::stringstream> stream_base;
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
StringTarget();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
std::string str() const; ///< Get log messages accumulated so far
void clear(); ///< Clear buffer
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "StringTarget.cci"
//#include "StringTarget.ct"
#include "StringTarget.cti"
//#include "SyslogTarget.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
int const senf::log::SyslogTarget::LEVELMAP[8] = {
0, LOG_DEBUG, LOG_INFO, LOG_NOTICE, LOG_WARNING, LOG_CRIT, LOG_EMERG, 0 };
return target.consoleDir().node().thisptr();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "SyslogTarget.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::log::SyslogTarget::SyslogTarget(int facility)
: Target("syslog"), facility_ (facility)
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Target.hh"
//#include "SyslogTarget.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
: public Target
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
explicit SyslogTarget(int facility = LOG_USER);
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
private:
void v_write(time_type timestamp, std::string const & stream,
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "SyslogTarget.cci"
//#include "SyslogTarget.ct"
//#include "SyslogTarget.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(syslogTarget)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "SyslogUDPTarget.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::log::SyslogUDPTarget::init()
{
return tg.consoleDir().node().thisptr();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "SyslogUDPTarget.mpp"
#include <senf/Utils/String.hh>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::log::SyslogUDPTarget::SyslogUDPTarget(senf::INet4Address const & target,
int facility)
syslogFormat_ = enabled;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Socket/CommunicationPolicy.hh>
//#include "SyslogUDPTarget.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace log {
: public Target, private detail::LogFormat
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
explicit SyslogUDPTarget(senf::INet4Address const & target, int facility = LOG_USER);
explicit SyslogUDPTarget(senf::INet4SocketAddress const & target, int facility = LOG_USER);
explicit SyslogUDPTarget(senf::INet6Address const & target, int facility = LOG_USER);
explicit SyslogUDPTarget(senf::INet6SocketAddress const & target, int facility = LOG_USER);
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
using detail::LogFormat::showTime;
using detail::LogFormat::showStream;
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "SyslogUDPTarget.cci"
//#include "SyslogUDPTarget.ct"
//#include "SyslogUDPTarget.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
BOOST_CHECK_EQUAL( server.read(), "<13> 0000000000.000000000 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "Target.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::Target
namespace senf {
updateRoutingCache(i->stream_, i->area_);
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
prefix_ senf::console::ScopedDirectory<> & senf::log::Target::consoleDir()
return consoleDir_();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::log::Target::route(detail::StreamBase const * stream,
unroute(pm.stream, pm.area, pm.level, action);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::detail::TargetRegistry
prefix_ void senf::log::detail::TargetRegistry::dynamicTarget(std::auto_ptr<Target> target)
return senf::console::Client::get(os).consoleDir().node().thisptr();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::detail::LogParameters
prefix_ void senf::log::detail::LogParameters::clear()
return pm;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// namespace members
prefix_ std::ostream & senf::log::operator<<(std::ostream & os, senf::log::Target::action_t const & action)
parseParamToken(i->value(), out);
}
-//////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// I need to put this here, otherwise the file target will not be registered
// if it is not used ... :-(
senf::log::SyslogTarget::RegisterConsole senf::log::SyslogTarget::RegisterConsole::instance;
senf::log::SyslogUDPTarget::RegisterConsole senf::log::SyslogUDPTarget::RegisterConsole::instance;
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Target.mpp"
#include "AreaRegistry.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::Target
prefix_ void senf::log::Target::route(action_t action, int index)
return rib_.empty();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::Target::RoutingEntry
prefix_ senf::log::Target::RoutingEntry::RoutingEntry(detail::StreamBase const * stream,
return action_;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::detail::TargetRegistry
prefix_ void senf::log::detail::TargetRegistry::routed()
return consoleDir_();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::log::detail::TargetRegistry::unregisterTarget(Target * target)
targets_.erase(target);
}
-/////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Levels.hh"
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::Target
// senf::log::Target::route
#endif
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// namespace senf::log::detail members
template <class Stream, class Area, class Level>
TargetRegistry::instance().write(Stream::instance(), Area::instance(), Level::value, msg);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Console/LazyDirectory.hh>
//#include "Target.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
/** \defgroup targets Targets
class Target : private boost::noncopyable
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
/** \brief Routing action
typedef RIB::const_iterator iterator; ///< Routing table iterator
typedef RIB::size_type size_type;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
explicit Target(std::string const & name);
virtual ~Target();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
///\name Routing
- ///\{
+ //\{
# ifdef DOXYGEN
# endif
- ///\}
+ //\}
/** \brief Exception: Invalid stream */
struct InvalidStreamException : public senf::Exception
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Target.cci"
//#include "Target.ct"
#include "Target.cti"
#include <senf/Utils/Console/LazyDirectory.hh>
#include <senf/Utils/Console/Parse.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
BOOST_CHECK_EQUAL( target.size(), 0u );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "TimeSource.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::TimeSource
prefix_ senf::log::TimeSource::~TimeSource()
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::SystemTimeSource
prefix_ senf::log::time_type senf::log::SystemTimeSource::operator()()
return senf::ClockService::now();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "TimeSource.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::detail::TimeSourceManager
prefix_ senf::log::detail::TimeSourceManager::TimeSourceManager()
timeSource_.reset(source.release());
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::log::TimeSource
prefix_ senf::log::time_type senf::log::TimeSource::now()
return detail::TimeSourceManager::instance().now();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// namespace senf::log members
prefix_ void senf::log::timeSource(std::auto_ptr<TimeSource> source)
detail::TimeSourceManager::instance().timeSource(source);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// namespace senf::log members
template <class Source>
timeSource(std::auto_ptr<TimeSource>(new Source()));
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/config.hh>
//#include "TimeSource.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace log {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "TimeSource.cci"
//#include "TimeSource.ct"
#include "TimeSource.cti"
#include <boost/scoped_ptr.hpp>
#include <senf/Utils/singleton.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace log {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "Logger.hh"
//#include "main.test.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_LOG_DEFINE_AREA(GlobalTestArea);
}}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "main.test.cci"
//#include "main.test.ct"
//#include "main.test.cti"
#include <boost/operators.hpp>
//#include "Operators.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Operators.cci"
//#include "Operators.ct"
//#include "Operators.cti"
//#include "Phoenix.mpp"
#include "Phoenix.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
/** \defgroup phoenix_helpers Boost.Phoenix extensions */
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Phoenix.cci"
//#include "Phoenix.ct"
//#include "Phoenix.cti"
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace phoenix {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Range, class Fn>
prefix_ boost::iterator_range<
return ! r.empty() && boost::next(r.begin()) == r.end();
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/iterator/transform_iterator.hpp>
//#include "Range.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
bool has_one_elt(Range r);
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Range.cci"
//#include "Range.ct"
#include "Range.cti"
#include <senf/Utils/safe_bool.hh>
//#include "RestrictedInt.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "RestrictedInt.cci"
//#include "RestrictedInt.ct"
//#include "RestrictedInt.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct TestIntTag {};
BOOST_CHECK_EQUAL( i2, TestInt(8) );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::ScopeExit::ScopeExit(Function const & fn)
: fn_ (fn)
fn_();
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/utility.hpp>
//#include "ScopeExit.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "ScopeExit.cci"
//#include "ScopeExit.ct"
//#include "ScopeExit.cti"
//#include "Statistics.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::StatisticsBase
prefix_ void senf::StatisticsBase::enter(unsigned n, float min, float avg, float max, float dev)
}
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::Statistics
prefix_ senf::Statistics::Statistics()
return "";
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::Collector
prefix_ void senf::Collector::enter(unsigned n, float min, float avg, float max, float dev)
return owner_->path() + "-" + senf::str(rank_);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Statistics.mpp"
#include "Range.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::StatisticsBase::Transform
prefix_ senf::StatisticsBase::Transform::result_type
return i.second;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::StatisticsBase::OutputEntry
prefix_ senf::StatisticsBase::OutputEntry::OutputEntry()
os << i->label << "\n";
}
-/////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::StatisticsBase
prefix_ senf::StatisticsBase::StatisticsBase()
return v_path();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::Collector
prefix_ senf::Collector::Collector(StatisticsBase * owner, unsigned rank)
return StatisticsBase::OutputProxy<Collector>(this, StatisticsBase::output(n));
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::Statistics
prefix_ void senf::Statistics::operator()(unsigned n, float min, float avg, float max,
return StatisticsBase::OutputProxy<Statistics>(this, StatisticsBase::output(n));
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::StatisticsBase::OutputProxy
template <class Owner>
return entry_->dir;
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/Console/Console.hh>
//#include "Statistics.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
struct OutputEntry;
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::iterator_range<ValueIterator> CollectorRange;
template <class OtherOwner> friend class OutputProxy;
};
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Accessing the current value
- ///\{
+ //\{
float min() const; ///< Last min value entered
float avg() const; ///< Last avg value entered
/**< \returns number of basic values collected into each new
value by this collector. */
- ///\}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
///\name Child collectors
- ///\{
+ //\{
Collector & operator[](unsigned rank);
///< Get child collector
is empty, otherwise it is built by joining the
collector ranks. */
- ///\}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
///\name Result generation
OutputProxy<StatisticsBase> output(unsigned n = 1u);
\endcode
\param[in] n size of sliding average window */
- ///\}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
// Exceptions
struct InvalidRankException : public senf::Exception
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Statistics.cci"
//#include "Statistics.ct"
#include "Statistics.cti"
#include <boost/test/floating_point_comparison.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "StatisticsTargets.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::StatisticsLoggerRegistry
prefix_ void
(*i)(stats, rank, dir);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
"senf::StatisticsLogger(\"" + prefix + "\")");
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "StatisticsTargets.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::StatisticsLoggerRegistry
prefix_ void senf::detail::StatisticsLoggerRegistry::add(AddFn fn)
adders_.push_back(fn);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ std::auto_ptr< senf::detail::StatisticsLogger<void,void,void> >
senf::StatisticsLogger(std::string const & label)
new detail::StatisticsLogger<void,void,void>(label));
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::StatisticsLogger
template <class Stream, class Area, class Level>
label << min << ' ' << avg << ' ' << max << ' ' << dev));
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::detail::StatisticsLogger
template <class Stream, class Area, class Level>
: label (label_.empty() ? "" : label_ + " ")
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Stream>
prefix_ std::auto_ptr< senf::detail::StatisticsLogger<Stream,void,void> >
new detail::StatisticsLogger<Stream,Area,Level>(label));
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "StatisticsTargets.mpp"
#include "StatisticsTargets.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "StatisticsTargets.cci"
#include "StatisticsTargets.ct"
#include "StatisticsTargets.cti"
#include <boost/utility.hpp>
#include <senf/Utils/singleton.hh>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/shared_ptr.hpp>
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class ForwardReadableRange>
prefix_ std::string senf::stringJoin(ForwardReadableRange const & range, std::string sep)
return detail::lexical_caster<Target>();
}
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/lexical_cast.hpp>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class T>
prefix_ std::string senf::str(T const & t)
return boost::lexical_cast<std::string>(t);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <string>
//#include "String.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
detail::lexical_caster<Target> lexical_cast();
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "String.cci"
#include "String.ct"
#include "String.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(stringJoin)
{
senf::lexical_cast<std::string>(6699u), "6699" ) );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
//#include "Tags.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
/** \defgroup utils_tags Type tags
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Tags.cci"
//#include "Tags.ct"
//#include "Tags.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Nothing to test
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <string>
//#include "AbstractTerminal.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace term {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "AbstractTerminal.cci"
//#include "AbstractTerminal.ct"
//#include "AbstractTerminal.cti"
//#include "Editor.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::term::BaseEditor::BaseEditor(AbstractTerminal & terminal)
: terminal_ (&terminal),
write(*i);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::term::LineEditor::LineEditor(AbstractTerminal & terminal, AcceptCallback cb)
: BaseEditor(terminal), enabled_ (false), prompt_ ("$"), promptWidth_ (1u), editWidth_ (0u),
toColumn(point_ - displayPos_ + promptWidth_ + 1);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::term::bindings::selfInsertCommand(LineEditor & editor)
{
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Editor.mpp"
#include "Terminfo.hh"
//#include "Editor.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace term {
: public BaseEditor
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
typedef boost::function<void (LineEditor&)> KeyBinding; ///< Type of a key binding function
static unsigned const MAX_HISTORY_SIZE = 1024u;
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
LineEditor(AbstractTerminal & terminal, AcceptCallback cb);
///< Create a LineEditor
\param[in] cb callback to call for complete input
line */
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Overall edit control
- ///\{
+ //\{
void show(); ///< Enable editor widget
void hide(); ///< Disable editor widget
void forceRedisplay(); ///< Redisplay the editor buffer \e now
void prompt(std::string const & text); ///< Set prompt string
- ///\}
+ //\}
///\name Cursor and display movement
- ///\{
+ //\{
void gotoChar(unsigned n); ///< Move cursor to position \a n
void scrollTo(unsigned n); ///< Move positon \n to beginning of display line
- ///\}
+ //\}
///\name Text manipulation
- ///\{
+ //\{
void deleteChar(unsigned n=1); ///< Delete \a n characters at point
void insert(char ch); ///< Insert \a ch at point
text. The cursor will be placed at position \a pos
within this text. */
- ///\}
+ //\}
///\name History
- ///\{
+ //\{
void pushHistory(std::string const & text, bool accept = false);
///< Add string \a text to history
void prevHistory(); ///< Switch to previous history entry
void nextHistory(); ///< Switch to next history entry
- ///\}
+ //\}
///\name Aux Display
- ///\{
+ //\{
void auxDisplay(unsigned line, std::string const & text);
///< Display \a text on aux display line \a lilne
unsigned maxAuxDisplayHeight(); ///< Get maximum height of the aux display area
void clearAuxDisplay(); ///< Clear the aux display area
- ///\}
+ //\}
///\name Get information
- ///\{
+ //\{
std::string const & text(); ///< Get current editor buffer contents
unsigned point(); ///< Get current cursor position
unsigned displayPos(); ///< Get current display position
keycode_t lastKey(); ///< Get last key code received
- ///\}
+ //\}
///\name Key bindings
- ///\{
+ //\{
void defineKey(keycode_t key, KeyBinding binding);
///< Bind key \a key to \a binding
void unsetKey(keycode_t key); ///< Remove all bindings for \a key
- ///\}
+ //\}
private:
virtual bool cb_init();
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Editor.cci"
//#include "Editor.ct"
//#include "Editor.cti"
//#include "Telnet.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::term::BaseTelnetProtocol::BaseTelnetProtocol(Handle handle)
: handle_ (handle), charState_ (NORMAL), command_ (CMD_NONE), option_ (0),
}
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::term::telnethandler::TerminalType
prefix_ senf::term::telnethandler::TerminalType::TerminalType()
incrementRequestCounter();
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::term::telnethandler::NAWS
prefix_ senf::term::telnethandler::NAWS::NAWS()
decrementRequestCounter();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Telnet.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::term::BaseTelnetProtocol::OptInfo
prefix_ senf::term::BaseTelnetProtocol::OptInfo::OptInfo()
: local (l), option (o), wantState (DISABLED), optionState (NONE), enabled (false)
{}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::term::BaseTelnetProtocol::TelnetHandler
prefix_ senf::term::BaseTelnetProtocol::TelnetHandler::~TelnetHandler()
return type_;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::term::telnethandler::NAWS
prefix_ unsigned senf::term::telnethandler::NAWS::width()
return height_;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::term::BaseTelnetProtocol
prefix_ senf::term::BaseTelnetProtocol::~BaseTelnetProtocol()
v_charReceived(c);
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::term::BaseTelnetProtocol
template <class Handler>
requestPeerOption(Handler::OPTION_CODE);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Scheduler/ClockService.hh>
//#include "Telnet.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace term {
OptInfo();
OptInfo(bool local, option_type option);
- ///////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////
bool const local;
option_type const option;
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Telnet.cci"
//#include "Telnet.ct"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(telnet)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "TelnetTerminal.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::term::TelnetTerminal::TelnetTerminal()
: setupFailed_ (false)
callbacks_->cb_windowSizeChanged();
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "TelnetTerminal.mpp"
#include <senf/Utils/Logger.hh>
//#include "TelnetTerminal.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace term {
TelnetTerminal();
///\name AbstractTerminal interface implementation
- ///\{
+ //\{
virtual void setCallbacks(AbstractTerminal::Callbacks & cb);
virtual std::string terminalType();
virtual unsigned width() const;
virtual unsigned height() const;
virtual void write(char ch);
- ///\}
+ //\}
protected:
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "TelnetTerminal.cci"
//#include "TelnetTerminal.ct"
//#include "TelnetTerminal.cti"
//#include "Terminfo.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
char const * const senf::term::Terminfo::properties::BooleanNames [] = {
"AutoLeftMargin", "AutoRightMargin", "NoEscCtlc", "CeolStandoutGlitch", "EatNewlineGlitch",
"AcsUlcorner", "AcsLlcorner", "AcsUrcorner", "AcsLrcorner", "AcsLtee", "AcsRtee", "AcsBtee",
"AcsTtee", "AcsHline", "AcsVline", "AcsPlus", "MemoryLock", "MemoryUnlock", "BoxChars1" };
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::term::Terminfo
prefix_ senf::term::Terminfo::Terminfo()
*j = 0;
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::term::KeyParser
char const * const senf::term::KeyParser::KeyNames[] = {
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "Terminfo.mpp"
#include <senf/Utils/Exception.hh>
//#include "Terminfo.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace term {
class Terminfo
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
/** \brief NoValue constant
typedef boost::int16_t number_t; ///< Numeric terminfo property type
typedef char const* string_t; ///< String terminfo property type
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
Terminfo();
explicit Terminfo(std::string const & term); ///< Load terminfo entry \a term
/**< Formats the string property \a p containing special
terminfo codes. Terminfo supports up to 9 parameters. */
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
void dump(std::ostream & os) const; ///< Dump a description of the terminfo entry
class KeyParser
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
// Types
/** \brief Special keyboard key codes */
/** \brief Helper to convert uppercase char to Control key code */
static keycode_t Ctrl(char ch) { return ch-'@'; }
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
KeyParser();
explicit KeyParser(Terminfo const & ti); ///< Load keymap information from \a ti
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "Terminfo.cci"
//#include "Terminfo.ct"
//#include "Terminfo.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
typedef std::pair<senf::term::KeyParser::keycode_t, senf::term::KeyParser::size_type> Pair;
"\e[10;13H" );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "telnetServer.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
return 0;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "telnetServer.mpp"
//#include "TypeIdValue.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "TypeIdValue.mpp"
#include "senfassert.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::TypeIdValue::TypeIdValue()
: p_ (&typeid(void))
return os;
}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Type>
prefix_ senf::TypeIdValue const senf::typeIdValue()
return typeid(ob);
}
-/////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/operators.hpp>
//#include "TypeIdValue.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
class TypeIdValue : public boost::totally_ordered<TypeIdValue>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
// my default constructor
// my copy constructor
TypeIdValue();
TypeIdValue(std::type_info const & v);
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
bool operator==(TypeIdValue const & other) const;
bool operator<(TypeIdValue const & other) const;
std::ostream & operator<<(std::ostream & os, TypeIdValue const & v);
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "TypeIdValue.cci"
//#include "TypeIdValue.ct"
#include "TypeIdValue.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(typeIdValue)
{
BOOST_CHECK ( senf::typeIdValue<int>() == senf::typeIdValue<int>() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "TypeInfo.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ std::string senf::prettyName(std::type_info const & type)
{
return name.substr(b,e-b);
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "TypeInfo.mpp"
#include <typeinfo>
//#include "TypeInfo.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "TypeInfo.cci"
//#include "TypeInfo.ct"
//#include "TypeInfo.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace test {
BOOST_CHECK_EQUAL( senf::prettyName(typeid(baseOb)), "test::Foo<test::Foo<test::Blub, 1>, 10>" );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Iterator>
prefix_ typename senf::test::detail::NoCharIterator<Iterator>::type
return typename detail::NoCharIterator<Iterator>::type (i);
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "auto_unit_test.mpp"
#include "auto_unit_test.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#if BOOST_VERSION >= 103400
#endif
#endif
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "auto_unit_test.cci"
//#include "auto_unit_test.ct"
#include "auto_unit_test.cti"
#include <iterator>
#include <boost/iterator/iterator_adaptor.hpp>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace test {
}}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
//#include "hexdump.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef DOXYGEN
prefix_ void senf::detail::HexDumper::operator()(unsigned char ch)
}
#endif
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "hexdump.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//senf::detail::HexDumper
#ifndef DOXYGEN
{}
#endif
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "hexdump.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Iterator>
prefix_ void senf::hexdump(Iterator i, Iterator i_end, std::ostream & stream,
return s;
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "hexdump.mpp"
#include <iostream>
//#include "hexdump.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
std::string hexdumpQuote(Iterator i, Iterator i_end);
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "hexdump.cci"
#include "hexdump.ct"
//#include "hexdump.cti"
#include <boost/io/ios_state.hpp>
#include <boost/utility.hpp>
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace detail {
}}
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(hExDuMp)
{
BOOST_CHECK_EQUAL( s.str(), " 0000 18 19 20 21 7c 7d 7e 7f .. !| }..\n" );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "intrusive_refcount.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::intrusive_refcount_base::~intrusive_refcount_base()
{}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "intrusive_refcount.mpp"
#include "senfassert.hh"
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ senf::intrusive_refcount_base::refcount_t senf::intrusive_refcount_base::refcount()
const
prefix_ senf::intrusive_refcount::intrusive_refcount()
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class S>
prefix_ void senf::intrusive_refcount_base::intrusive_ptr_add_ref()
prefix_ senf::intrusive_refcount_t<Self>::intrusive_refcount_t()
{}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/utility.hpp>
//#include "intrusive_refcount.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "intrusive_refcount.cci"
//#include "intrusive_refcount.ct"
#include "intrusive_refcount.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct Tester
}
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(testMain)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/function.hpp>
#include <senf/config.hh>
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
/** \brief Get function pointer
#ifdef DOXYGEN
/// \addtogroup membind
- /// @{
+ //\{
/** \brief Build bound member function object
template <typename R, typename T, typename Args>
boost::function<R (Args)> membind(R (T::* fn)( Args ), T * ob);
- /// @}
+ //\}
#endif
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "membind.cci"
//#include "membind.ct"
//#include "membind.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
BOOST_CHECK_EQUAL( f2(1,2), "meth2(1,2)" );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
//#include "mpl.mpp"
#include "mpl.ih"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace mpl {
}}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "mpl.cci"
//#include "mpl.ct"
//#include "mpl.cti"
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#define SENF_MPL_SLOT_I_CHOOSE(a,b) (a != 0 ? a-1 : (b))
0 ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
BOOST_CHECK_EQUAL( unsigned(Test::total), 8u );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/mpl/not.hpp>
//#include "parameter.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
///\addtogroup boost_parameter
- ///\{
+ //\{
/** \brief Test \a ArgumentPack, whether the \a TagType argument was supplied
void > >::type
{};
- ///\}
+ //\}
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "parameter.cci"
//#include "parameter.ct"
//#include "parameter.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
SENF_AUTO_UNIT_TEST(parameter)
{
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include "IgnoreValue.hh"
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::pimpl_ptr<T,CloneAllocator>
template <typename T, class CloneAllocator>
return CloneAllocator::allocate_clone(*p);
}
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class T, class CloneAllocator>
prefix_ void std::swap(senf::pimpl_ptr<T,CloneAllocator> & lhs,
typename senf::pimpl_ptr<T,CloneAllocator>::Deleter
senf::pimpl_ptr<T,CloneAllocator>::doDelete_ (0);
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/ptr_container/clone_allocator.hpp>
//#include "pimpl_ptr.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf
{
throw();
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "pimpl_ptr.cci"
//#include "pimpl_ptr.ct"
#include "pimpl_ptr.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
#endif
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/Utils/senfassert.hh>
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Self>
prefix_ void * senf::pool_alloc_mixin<Self>::operator new(size_t size)
#endif
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/pool/singleton_pool.hpp>
//#include "pool_alloc_mixin.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "pool_alloc_mixin.cci"
//#include "pool_alloc_mixin.ct"
#include "pool_alloc_mixin.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
class Test : public senf::pool_alloc_mixin<Test>
#endif
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/preprocessor/dec.hpp>
//#include "preprocessor.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
/** \defgroup senfpp Preprocessor meta programming
preprocessor.hh provides some additional helper macros based on the Boost.Preprocessor library.
*/
-///\{
+//\{
///\ingroup senfpp
/** \brief Return last element of a sequence
# define SENF_CAT_RECURS3_I(a, b) a ## b
#
-///\}
+//\}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "preprocessor.cci"
//#include "preprocessor.ct"
//#include "preprocessor.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// Nothing to really to test ...
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ void senf::safe_bool_base::this_type_does_not_support_comparisons()
const
prefix_ senf::safe_bool_base::~safe_bool_base()
{}
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <typename T>
prefix_ senf::comparable_safe_bool<T>::operator bool_type()
lhs.this_type_does_not_support_comparisons();
}
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
//#include "safe_bool.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "safe_bool.cci"
//#include "safe_bool.ct"
#include "safe_bool.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
BOOST_CHECK( ! TestFalse() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
//#include "senfassert.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef SENF_DEBUG
#endif
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "senfassert.cci"
//#include "senfassert.ct"
//#include "senfassert.cti"
//#include "signalnames.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
prefix_ std::string const & senf::signalName(int signal)
{
(signal <= 0 || signal > int(sizeof(names)/sizeof(names[0]))) ? 0 : signal ];
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "signalnames.mpp"
#include <string>
//#include "signalnames.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "signalnames.cci"
//#include "signalnames.ct"
//#include "signalnames.cti"
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
template <class Self>
prefix_ senf::singleton<Self>::singleton()
template <class Self>
typename senf::singleton<Self>::force_creation senf::singleton<Self>::creator_;
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/utility.hpp>
//#include "singleton.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "singleton.cci"
//#include "singleton.ct"
#include "singleton.cti"
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
BOOST_CHECK( AliveTest2::alive() );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <senf/config.hh>
#include "type_traits.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf
{
*/
///\addtogroup typetraits
- ///\{
+ //\{
/** \brief Strip first parameter from function traits
{};
#endif
- ///}
+ //\}
#ifndef DOXYGEN
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "type_traits.cci"
//#include "type_traits.ct"
//#include "type_traits.cti"
#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
#include <boost/preprocessor/repetition/enum_params.hpp>
-// ///////////////////////////mpp.p////////////////////////////////////////
-#elif BOOST_PP_IS_ITERATING // ////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-///////////////////////////mpp.p////////////////////////////////////////
+#elif BOOST_PP_IS_ITERATING //-////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// Local Macros
#define mpp_Arg(n) BOOST_PP_CAT(BOOST_PP_CAT(arg, BOOST_PP_INC(n)), _type)
#define mpp_TrailTplArgs() BOOST_PP_ENUM_TRAILING_PARAMS( BOOST_PP_ITERATION(), class A )
#define mpp_Args() BOOST_PP_ENUM_PARAMS( BOOST_PP_ITERATION(), A )
-// ////////////////////////////////////////////////////////////////////////
-#if BOOST_PP_ITERATION_FLAGS()==1 // //////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#if BOOST_PP_ITERATION_FLAGS()==1 //-//////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
template <class Traits>
struct function_traits_remove_arg<Traits, mpp_ArgN()>
typedef T type (mpp_Args());
};
-// ////////////////////////////////////////////////////////////////////////
-#endif // /////////////////////////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#endif //-/////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// Undefine local Macros
#undef mpp_Args
#undef mpp_OtherArgs_
#undef mpp_Arg
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
/*
(save-excursion (re-search-backward "^// Undefine local Macros")
(forward-line 1) (delete-region (point) (progn (search-forward
- "// ////") (forward-line -1) (point))) (insert "\n") (let ((b (point))
+ "//-////") (forward-line -1) (point))) (insert "\n") (let ((b (point))
(e (progn (insert (save-excursion (re-search-backward
"^// Local Macros") (search-forward "#define") (beginning-of-line)
- (buffer-substring (point) (progn (search-forward "// ////")
+ (buffer-substring (point) (progn (search-forward "//-////")
(search-backward "#define") (forward-line 1) (point))))) (point))))
(reverse-region b e) (shell-command-on-region b e "grep -F '#define'" nil
t) (goto-char b) (while (looking-at "#define") (delete-char 7) (insert
(delete-region (1- (point)) (progn (end-of-line) (point))) (forward-line
1))))
*/
-#endif // /////////////////////////////////////////////////////////////////
-// ///////////////////////////mpp.e////////////////////////////////////////
+#endif //-/////////////////////////////////////////////////////////////////
+//-///////////////////////////mpp.e////////////////////////////////////////
\f
// Local Variables:
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace {
struct Class;
BOOST_CHECK( true );
}
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
#include <boost/cstdint.hpp>
#include <limits.h>
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
namespace config {
# endif
#
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
-<?xml version="1.0" encoding="utf-8"?>\r
-<xsl:stylesheet version="1.0"\r
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"\r
- xmlns:str="http://exslt.org/strings"\r
- xmlns:set="http://exslt.org/sets"\r
- xmlns:exslt="http://exslt.org/common"\r
- extension-element-prefixes="str">\r
-\r
- <xsl:output \r
- method="html" \r
- encoding="html" \r
- doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"\r
- doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>\r
-\r
- <xsl:param name="topdir" select="''"/>\r
- \r
- <xsl:template match="*" name="copy">\r
- <xsl:copy>\r
- <xsl:call-template name="copy-attributes"/>\r
- <xsl:apply-templates/>\r
- </xsl:copy>\r
- </xsl:template>\r
-\r
- <xsl:template name="copy-attributes">\r
- <xsl:for-each select="@*">\r
- <xsl:attribute name="{name(current())}">\r
- <xsl:choose>\r
- <xsl:when test="contains(current(),'@TOPDIR@')">\r
- <xsl:value-of select="substring-before(current(),'@TOPDIR@')"/>\r
- <xsl:value-of select="$topdir"/>\r
- <xsl:value-of select="substring-after(current(),'@TOPDIR@')"/>\r
- </xsl:when>\r
- <xsl:otherwise>\r
- <xsl:value-of select="current()"/>\r
- </xsl:otherwise>\r
- </xsl:choose>\r
- </xsl:attribute>\r
- </xsl:for-each>\r
- </xsl:template>\r
-\r
- <!-- Replace @TOPDIR@ with relative top directory path -->\r
-\r
- <xsl:template match="@*[contains(current(),'@TOPDIR@')]">\r
- <xsl:value-of select="substring-before(current(),'@TOPDIR@')"/>\r
- <xsl:value-of select="$topdir"/>\r
- <xsl:value-of select="substring-after(current(),'@TOPDIR@')"/>\r
- </xsl:template>\r
- \r
- <!-- Add 'class' attribute -->\r
- \r
- <xsl:template name="add-class">\r
- <xsl:param name="class"/>\r
- <xsl:copy>\r
- <xsl:call-template name="copy-attributes"/>\r
- <xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>\r
- <xsl:apply-templates/>\r
- </xsl:copy>\r
- </xsl:template>\r
-\r
- <!-- Add '<br/>' tag after every ', ' -->\r
- <!-- This code is not very robust, it works with the doxygen output though -->\r
-\r
- <xsl:template name="break-comma">\r
- <xsl:copy>\r
- <xsl:call-template name="copy-attributes"/>\r
- <xsl:attribute name="class">commalist</xsl:attribute>\r
- <xsl:apply-templates mode="break-comma"/>\r
- </xsl:copy>\r
- </xsl:template>\r
- \r
- <xsl:template match="text()[1]" mode="break-comma">\r
- <xsl:value-of select="current()"/><br/>\r
- </xsl:template>\r
-\r
- <xsl:template match="*" mode="break-comma">\r
- <xsl:call-template name="copy"/>\r
- </xsl:template>\r
-\r
- <xsl:template match="text()[contains(current(),' and') or contains(current(),'and ')]" mode="break-comma" priority="1">\r
- <xsl:value-of select="substring-before(current(),'and')"/>\r
- <br/>\r
- <xsl:value-of select="substring-after(current(),'and')"/>\r
- </xsl:template>\r
-\r
- <xsl:template match="text()[contains(current(),',')]" mode="break-comma">\r
- <xsl:value-of select="substring-before(current(),',')"/>\r
- <xsl:text>,</xsl:text><br/>\r
- <xsl:value-of select="substring-after(current(),',')"/>\r
- </xsl:template>\r
-\r
- <!-- ====================================================================== -->\r
-\r
- <!-- Hack Glossary menu highlight -->\r
-\r
- <xsl:template match="div[@class='tabs menu']/ul[1]">\r
- <xsl:choose>\r
- <xsl:when test="//h1[.//text()='Glossary']">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">glossary</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:when>\r
- <xsl:otherwise>\r
- <xsl:copy>\r
- <xsl:call-template name="copy-attributes"/>\r
- <xsl:apply-templates/>\r
- </xsl:copy>\r
- </xsl:otherwise>\r
- </xsl:choose>\r
- </xsl:template>\r
-\r
- <!-- Autogenerate table-of-contents for a page -->\r
-\r
- <xsl:template match="div[@id='autotoc']">\r
- <xsl:copy>\r
- <xsl:call-template name="copy-attributes"/>\r
- <h1>Contents</h1>\r
- <ul>\r
- <xsl:for-each select="following::h2|following::h3|following::h4">\r
- <xsl:element name="li">\r
- <xsl:attribute name="class">\r
- <xsl:value-of select="concat('level_',local-name())"/>\r
- </xsl:attribute>\r
- <b><xsl:call-template name="section-number"/><xsl:text> </xsl:text></b>\r
- <xsl:element name="a">\r
- <xsl:choose>\r
- <xsl:when test="a/@name">\r
- <xsl:attribute name="href">\r
- <xsl:value-of select="concat('#',a/@name)"/>\r
- </xsl:attribute>\r
- </xsl:when>\r
- <xsl:otherwise>\r
- <xsl:attribute name="href">\r
- <xsl:text>#autotoc-</xsl:text>\r
- <xsl:call-template name="section-number"/>\r
- </xsl:attribute>\r
- </xsl:otherwise>\r
- </xsl:choose>\r
- <xsl:value-of select="string(current())"/>\r
- </xsl:element>\r
- </xsl:element>\r
- </xsl:for-each>\r
- </ul>\r
- </xsl:copy>\r
- </xsl:template>\r
-\r
- <xsl:template name="section-number">\r
- <xsl:number level="any" from="div[@id='autotoc']" count="h2"/>\r
- <xsl:text>.</xsl:text>\r
- <xsl:if test="self::h3|self::h4">\r
- <xsl:number level="any" from="h2" count="h3"/>\r
- <xsl:text>.</xsl:text>\r
- </xsl:if>\r
- <xsl:if test="self::h4">\r
- <xsl:number level="any" from="h3" count="h4"/>\r
- <xsl:text>.</xsl:text>\r
- </xsl:if>\r
- </xsl:template>\r
- \r
- <xsl:template match="h2|h3|h4">\r
- <xsl:copy>\r
- <xsl:call-template name="copy-attributes"/>\r
- <xsl:choose>\r
- <xsl:when test="preceding::div[@id='autotoc']">\r
- <xsl:call-template name="section-number"/>\r
- <xsl:text> </xsl:text>\r
- <xsl:choose>\r
- <xsl:when test="a">\r
- <xsl:apply-templates/>\r
- </xsl:when>\r
- <xsl:otherwise>\r
- <xsl:element name="a">\r
- <xsl:attribute name="class"><xsl:text>anchor</xsl:text></xsl:attribute>\r
- <xsl:attribute name="name">\r
- <xsl:text>autotoc-</xsl:text>\r
- <xsl:call-template name="section-number"/>\r
- </xsl:attribute>\r
- <xsl:apply-templates/>\r
- </xsl:element>\r
- </xsl:otherwise>\r
- </xsl:choose>\r
- </xsl:when>\r
- <xsl:otherwise>\r
- <xsl:apply-templates/>\r
- </xsl:otherwise>\r
- </xsl:choose>\r
- </xsl:copy>\r
- </xsl:template>\r
-\r
- <!-- Build dia image-map from special div/span elements -->\r
- <xsl:template match="div[@class='diamap']">\r
- <xsl:element name="map">\r
- <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>\r
- <xsl:for-each select="span">\r
- <xsl:if test="a">\r
- <xsl:variable name="name" select="string(a[1])"/>\r
- <xsl:element name="area">\r
- <xsl:attribute name="shape">rect</xsl:attribute>\r
- <xsl:attribute name="alt"><xsl:value-of select="$name"/></xsl:attribute>\r
- <xsl:attribute name="title"><xsl:value-of select="$name"/></xsl:attribute>\r
- <xsl:attribute name="href"><xsl:value-of select="a[1]/@href"/></xsl:attribute>\r
- <xsl:attribute name="coords"><xsl:value-of select="@coords"/></xsl:attribute>\r
- </xsl:element>\r
- </xsl:if>\r
- </xsl:for-each>\r
- </xsl:element>\r
- </xsl:template>\r
-\r
- <!-- Reformat detailed member documentation -->\r
-\r
- <xsl:template match="table[@class='memname']">\r
- <xsl:variable name="name1"><xsl:value-of select="str:split(tr/td[@class='memname'],'::')[position()=last()]"/></xsl:variable>\r
- <xsl:variable name="name2"><xsl:value-of select="str:split(tr/td[@class='memname'],' ')[position()=last()]"/></xsl:variable>\r
- <xsl:variable name="name"><xsl:value-of select="substring($name1,string-length($name1)-string-length($name2))"/></xsl:variable>\r
- <xsl:element name="table">\r
- <xsl:attribute name="class">\r
- <xsl:text>memname</xsl:text>\r
- <xsl:if test="contains(tr/td[@class='memname'],'#define')"><xsl:text> macro</xsl:text></xsl:if>\r
- </xsl:attribute>\r
- <tr>\r
- <td class="memtype" colspan="5">\r
- <xsl:for-each select="tr/td[@class='memname']/*|tr/td[@class='memname']/text()">\r
- <xsl:choose>\r
- <xsl:when test="position()=last()">\r
- <xsl:value-of select="substring(.,1,string-length(.)-string-length($name))"/>\r
- </xsl:when>\r
- <xsl:otherwise>\r
- <xsl:copy-of select="."/>\r
- </xsl:otherwise>\r
- </xsl:choose>\r
- </xsl:for-each>\r
- </td>\r
- </tr>\r
-\r
- <xsl:choose>\r
- <xsl:when test="tr/td[@class='paramtype']">\r
- <tr>\r
- <td class="memname"><xsl:copy-of select="$name"/></td>\r
- <td class="memparen">(</td>\r
- <xsl:copy-of select="tr[1]/td[@class='paramtype']"/>\r
- <xsl:copy-of select="tr[1]/td[@class='paramname']"/>\r
- <td class="memparen"><xsl:if test="not(tr[td[@class='paramkey']])">)</xsl:if></td>\r
- </tr>\r
-\r
- <xsl:for-each select="tr[td[@class='paramkey']]">\r
- <tr>\r
- <td class="memname"></td>\r
- <td class="memparen"></td>\r
- <xsl:copy-of select="td[@class='paramtype']"/>\r
- <xsl:copy-of select="td[@class='paramname']"/>\r
- <td class="memparen"><xsl:if test="position()=last()">)</xsl:if></td>\r
- </tr>\r
- </xsl:for-each>\r
- </xsl:when>\r
- <xsl:otherwise>\r
- <tr>\r
- <td class="memname"><xsl:copy-of select="$name"/></td>\r
- <td class="memparen"><xsl:if test="tr/td[.='(']">()</xsl:if></td>\r
- <td class="paramtype"></td>\r
- <td class="paramname"></td>\r
- <td class="memparen"></td>\r
- </tr>\r
- </xsl:otherwise>\r
- </xsl:choose>\r
- <tr>\r
- <td colspan="5" class="memattrs"><xsl:copy-of select="tr/td[@width='100%']/*|tr/td[@width='100%']/text()"/></td>\r
- </tr>\r
- </xsl:element>\r
- </xsl:template>\r
-\r
- <!-- no idea, where these 's come frome ... -->\r
- <xsl:template match="div[@class='memproto']/text()[.=' 
']">\r
- </xsl:template>\r
-\r
- <!-- Add grouping to all-members page -->\r
-\r
- <xsl:template match="table[preceding-sibling::h1[1][contains(text(),'Member List')]]">\r
- <table class="allmembers">\r
-\r
- <!-- We need to filter the table rows by looking for indications on the object type -->\r
- <!-- The table has 3 acolumns: -->\r
- <!-- td[1] is the name of the object, -->\r
- <!-- td[2] is the name of the class the object is defined in -->\r
- <!-- td[3] contains additional flags -->\r
- <!-- -->\r
- <!-- The conditions we have are: -->\r
- <!-- -->\r
- <!-- contains(td[3],'static') static member (variable or function) -->\r
- <!-- contains(td[3],'protected') protected member of arbitrary type -->\r
- <!-- contains(td[3],'private') private member of arbitrary type -->\r
- <!-- contains(td{3],'friend') friend declaration (function or class) -->\r
- <!-- contains(td[3],'pure virtual') entry is a pure-virtual member function -->\r
- <!-- starts-with(td[1]/text(),'(') function entry (member, static or friend) -->\r
- <!-- contains(td[1], 'typedef') entry is a typdef -->\r
- <!-- contains(td[1], 'enum ') entry is enum type or enumerator -->\r
- <!-- contains(td[1], 'enum name') entry is the name of an enum type -->\r
- <!-- contains(td[1], 'enum value') entry is an enumerator value -->\r
- <!-- str:split(substring-before(concat(td[2]/a,'<'),'<'),'::')[position()=last()]==string(td[1]/a) -->\r
- <!-- entry is a constructor -->\r
- <!-- not(starts-with(td[1]/a,'~')) entry is a destructor -->\r
-\r
- <xsl:variable name="public-static-memfn">\r
- <xsl:apply-templates select="tr[contains(td[3],'static')][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(contains(td[3],'friend'))][starts-with(td[1]/text(),'(')]"/>\r
- </xsl:variable>\r
- <xsl:if test="string($public-static-memfn)">\r
- <tr><td colspan="3"><h2>Static Public Member Functions</h2></td></tr>\r
- <xsl:copy-of select="$public-static-memfn"/>\r
- </xsl:if>\r
-\r
- <xsl:variable name="public-static-var">\r
- <xsl:apply-templates select="tr[not(contains(td[1],'typedef'))][contains(td[3],'static')][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(starts-with(td[1]/text(),'('))]"/>\r
- </xsl:variable>\r
- <xsl:if test="string($public-static-var)">\r
- <tr><td colspan="3"><h2>Static Public Attributes</h2></td></tr>\r
- <xsl:copy-of select="$public-static-var"/>\r
- </xsl:if>\r
- \r
- <xsl:variable name="public-memfn">\r
- <xsl:apply-templates select="tr[not(contains(td[1],'typedef'))][not(contains(td[3],'static'))][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(contains(td[3],'friend'))][starts-with(td[1]/text(),'(')][str:split(substring-before(concat(td[2]/a,'<'),'<'),'::')[position()=last()]!=string(td[1]/a)][not(starts-with(td[1]/a,'~'))][not(contains(td[3],'pure virtual'))]"/>\r
- </xsl:variable>\r
- <xsl:if test="string($public-memfn)">\r
- <tr><td colspan="3"><h2>Public Member Functions</h2></td></tr>\r
- <xsl:copy-of select="set:distinct(exslt:node-set($public-memfn)/tr)"/>\r
- </xsl:if>\r
-\r
- <xsl:variable name="public-var">\r
- <xsl:apply-templates select="tr[not(contains(td[1],'typedef'))][not(contains(td[1],'enum '))][not(contains(td[3],'static'))][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(starts-with(td[1]/text(),'('))]"/>\r
- </xsl:variable>\r
- <xsl:if test="string($public-var)">\r
- <tr><td colspan="3"><h2>Public Attributes</h2></td></tr>\r
- <xsl:copy-of select="$public-var"/>\r
- </xsl:if>\r
- \r
- <xsl:variable name="public-enum">\r
- <xsl:apply-templates select="tr[contains(td[1],'enum value')][not(contains(td[3],'protected'))][not(contains(td[3],'private'))]"/>\r
- </xsl:variable>\r
- <xsl:if test="string($public-enum)">\r
- <tr><td colspan="3"><h2>Public Enumerators</h2></td></tr>\r
- <xsl:copy-of select="$public-enum"/>\r
- </xsl:if>\r
- \r
- <xsl:variable name="public-type">\r
- <xsl:apply-templates select="tr[contains(td[1],'typedef') or contains(td[1],'enum name')][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(contains(td[3],'friend'))]"/>\r
- </xsl:variable>\r
- <xsl:if test="string($public-type)">\r
- <tr><td colspan="r"><h2>Public Types</h2></td></tr>\r
- <xsl:copy-of select="$public-type"/>\r
- </xsl:if>\r
- \r
- <xsl:variable name="non-public">\r
- <xsl:apply-templates select="tr[contains(td[3],'protected') or contains(td[3],'private') or contains(td[3],'friend')][str:split(substring-before(concat(td[2]/a,'<'),'<'),'::')[position()=last()]!=string(td[1]/a)][not(starts-with(td[1]/a,'~'))][not(contains(td[3],'pure virtual'))]"/>\r
- </xsl:variable>\r
- <xsl:if test="string($non-public)">\r
- <tr><td colspan="3"><h2>Non-Public Members</h2></td></tr>\r
- <xsl:copy-of select="$non-public"/>\r
- </xsl:if>\r
-\r
- </table>\r
- </xsl:template>\r
-\r
- <xsl:template match="table[preceding-sibling::h1[1][contains(text(),'Member List')]]/tr/td[2]/a/text()[contains(.,'<')]">\r
- <!-- this removes the template args form the second column to make the table more compact -->\r
- <xsl:value-of select="substring-before(.,'<')"/>\r
- </xsl:template>\r
-\r
- <xsl:template match="table[preceding-sibling::h1[1][contains(text(),'Member List')]]/tr/td[1]/a/text()[contains(.,'::')]">\r
- <!-- for some weird reason, some members have a fully qualified name in the first column -->\r
- <!-- remove the qualification here -->\r
- <xsl:value-of select="str:split(.,'::')[position()=last()]"/>\r
- </xsl:template>\r
-\r
- <!-- Remove the automatically inserted search form (we build our own) -->\r
- <xsl:template match="li[form]"> \r
- </xsl:template>\r
-\r
- <!-- Add CSS class to alphabetical class index table -->\r
- <xsl:template match="table[preceding-sibling::*[1][self::div][@class='qindex']]">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">qindextable</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <!-- Add CSS class to special paragraphs -->\r
-\r
- <xsl:template match="dl[dt/b/a/text()='Bug:']">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">xref-bug</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <xsl:template match="dl[dt/b/a/text()='Fix:']">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">xref-fix</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <xsl:template match="dl[dt/b/a/text()='Todo:']">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">xref-todo</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <xsl:template match="dl[dt/b/a/text()='Idea:']">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">xref-idea</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <xsl:template match="dl[dt/b/text()='Parameters:']|dl[dt/b/text()='Template Parameters:']">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">parameters</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <xsl:template match="dl[dt/b/text()='Implementation note:']">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">implementation</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <xsl:template match="p[starts-with(text(),'Definition at line ')]">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">sourceline</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <xsl:template match="div[@class='memdoc']/p[starts-with(text(),'References ')]">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">references</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <xsl:template match="div[@class='memdoc']/p[starts-with(text(),'Referenced by ')]">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">referencedby</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <xsl:template match="div[@class='memdoc']/p[starts-with(text(),'Reimplemented from ')]">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">reimplementedfrom</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <xsl:template match="div[@class='memdoc']/p[starts-with(text(),'Reimplemented in ')]">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">reimplementedin</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <xsl:template match="div[@class='memdoc']/p[starts-with(text(),'Implemented in ')]">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">implementedin</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <!-- Break the following lists after each komma -->\r
-\r
- <xsl:template match="p[starts-with(text(),'Inherited by ')]">\r
- <xsl:call-template name="break-comma"/>\r
- </xsl:template>\r
-\r
- <xsl:template match="p[starts-with(text(),'Inherits ')]">\r
- <xsl:call-template name="break-comma"/>\r
- </xsl:template>\r
-\r
- <!-- Add CSS class to the member overview table of a class documentation -->\r
- <xsl:template match="table[descendant::td[@class='memItemLeft']]">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">members</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <!-- Add CSS class to literal links (links, where link text and href attribute are the same -->\r
- <xsl:template match="a[@href=string(current())]" priority="1">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">literal</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <!-- Add CSS class to external links -->\r
- <xsl:template match="a[contains(@href,'http://')]">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">ext</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <!-- Add CSS class to anchor-only links -->\r
- <xsl:template match="a[not(@href)]">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">anchor</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <!-- Add CSS class to the brief documentation paragraph of the member documentation -->\r
- <xsl:template match="div[@class='memdoc']/p[1][not(contains(.,'Definition at line'))]">\r
- <xsl:call-template name="add-class">\r
- <xsl:with-param name="class">memtitle</xsl:with-param>\r
- </xsl:call-template>\r
- </xsl:template>\r
-\r
- <!-- Remove external items from the namespace index -->\r
- <xsl:template match="div[@id='content2']/table[contains(preceding-sibling::h1/text(),'Namespace Reference')]/tr[td[@class='memItemRight']/a[1][@class='elRef'][@doxygen]]">\r
- </xsl:template>\r
- \r
- <!-- Remove [external] references from the modules page -->\r
- <xsl:template match="div[@id='content2']/ul/li[a/@class='elRef'][a/@doxygen][code/text()='[external]'][not(ul)]">\r
- </xsl:template>\r
-\r
-</xsl:stylesheet>\r
+<?xml version="1.0" encoding="utf-8"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:str="http://exslt.org/strings"
+ xmlns:set="http://exslt.org/sets"
+ xmlns:exslt="http://exslt.org/common"
+ extension-element-prefixes="str">
+
+ <xsl:output
+ method="html"
+ encoding="html"
+ doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
+ doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>
+
+ <xsl:param name="topdir" select="''"/>
+
+ <xsl:template match="*" name="copy">
+ <xsl:copy>
+ <xsl:call-template name="copy-attributes"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template name="copy-attributes">
+ <xsl:for-each select="@*">
+ <xsl:attribute name="{name(current())}">
+ <xsl:choose>
+ <xsl:when test="contains(current(),'@TOPDIR@')">
+ <xsl:value-of select="substring-before(current(),'@TOPDIR@')"/>
+ <xsl:value-of select="$topdir"/>
+ <xsl:value-of select="substring-after(current(),'@TOPDIR@')"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="current()"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:for-each>
+ </xsl:template>
+
+ <!-- Replace @TOPDIR@ with relative top directory path -->
+
+ <xsl:template match="@*[contains(current(),'@TOPDIR@')]">
+ <xsl:value-of select="substring-before(current(),'@TOPDIR@')"/>
+ <xsl:value-of select="$topdir"/>
+ <xsl:value-of select="substring-after(current(),'@TOPDIR@')"/>
+ </xsl:template>
+
+ <!-- Add 'class' attribute -->
+
+ <xsl:template name="add-class">
+ <xsl:param name="class"/>
+ <xsl:copy>
+ <xsl:call-template name="copy-attributes"/>
+ <xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+
+ <!-- Add '<br/>' tag after every ', ' -->
+ <!-- This code is not very robust, it works with the doxygen output though -->
+
+ <xsl:template name="break-comma">
+ <xsl:copy>
+ <xsl:call-template name="copy-attributes"/>
+ <xsl:attribute name="class">commalist</xsl:attribute>
+ <xsl:apply-templates mode="break-comma"/>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template match="text()[1]" mode="break-comma">
+ <xsl:value-of select="current()"/><br/>
+ </xsl:template>
+
+ <xsl:template match="*" mode="break-comma">
+ <xsl:call-template name="copy"/>
+ </xsl:template>
+
+ <xsl:template match="text()[contains(current(),' and') or contains(current(),'and ')]" mode="break-comma" priority="1">
+ <xsl:value-of select="substring-before(current(),'and')"/>
+ <br/>
+ <xsl:value-of select="substring-after(current(),'and')"/>
+ </xsl:template>
+
+ <xsl:template match="text()[contains(current(),',')]" mode="break-comma">
+ <xsl:value-of select="substring-before(current(),',')"/>
+ <xsl:text>,</xsl:text><br/>
+ <xsl:value-of select="substring-after(current(),',')"/>
+ </xsl:template>
+
+ <!-- ====================================================================== -->
+
+ <!-- Hack Glossary menu highlight -->
+
+ <xsl:template match="div[@class='tabs menu']/ul[1]">
+ <xsl:choose>
+ <xsl:when test="//h1[.//text()='Glossary']">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">glossary</xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy>
+ <xsl:call-template name="copy-attributes"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Autogenerate table-of-contents for a page -->
+
+ <xsl:template match="div[@id='autotoc']">
+ <xsl:copy>
+ <xsl:call-template name="copy-attributes"/>
+ <h1>Contents</h1>
+ <ul>
+ <xsl:for-each select="following::h2|following::h3|following::h4">
+ <xsl:element name="li">
+ <xsl:attribute name="class">
+ <xsl:value-of select="concat('level_',local-name())"/>
+ </xsl:attribute>
+ <b><xsl:call-template name="section-number"/><xsl:text> </xsl:text></b>
+ <xsl:element name="a">
+ <xsl:choose>
+ <xsl:when test="a/@name">
+ <xsl:attribute name="href">
+ <xsl:value-of select="concat('#',a/@name)"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:attribute name="href">
+ <xsl:text>#autotoc-</xsl:text>
+ <xsl:call-template name="section-number"/>
+ </xsl:attribute>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="string(current())"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:for-each>
+ </ul>
+ </xsl:copy>
+ </xsl:template>
+
+ <xsl:template name="section-number">
+ <xsl:number level="any" from="div[@id='autotoc']" count="h2"/>
+ <xsl:text>.</xsl:text>
+ <xsl:if test="self::h3|self::h4">
+ <xsl:number level="any" from="h2" count="h3"/>
+ <xsl:text>.</xsl:text>
+ </xsl:if>
+ <xsl:if test="self::h4">
+ <xsl:number level="any" from="h3" count="h4"/>
+ <xsl:text>.</xsl:text>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="h2|h3|h4">
+ <xsl:copy>
+ <xsl:call-template name="copy-attributes"/>
+ <xsl:choose>
+ <xsl:when test="preceding::div[@id='autotoc']">
+ <xsl:call-template name="section-number"/>
+ <xsl:text> </xsl:text>
+ <xsl:choose>
+ <xsl:when test="a">
+ <xsl:apply-templates/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="a">
+ <xsl:attribute name="class"><xsl:text>anchor</xsl:text></xsl:attribute>
+ <xsl:attribute name="name">
+ <xsl:text>autotoc-</xsl:text>
+ <xsl:call-template name="section-number"/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:copy>
+ </xsl:template>
+
+ <!-- Build dia image-map from special div/span elements -->
+ <xsl:template match="div[@class='diamap']">
+ <xsl:element name="map">
+ <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
+ <xsl:for-each select="span">
+ <xsl:if test="a">
+ <xsl:variable name="name" select="string(a[1])"/>
+ <xsl:element name="area">
+ <xsl:attribute name="shape">rect</xsl:attribute>
+ <xsl:attribute name="alt"><xsl:value-of select="$name"/></xsl:attribute>
+ <xsl:attribute name="title"><xsl:value-of select="$name"/></xsl:attribute>
+ <xsl:attribute name="href"><xsl:value-of select="a[1]/@href"/></xsl:attribute>
+ <xsl:attribute name="coords"><xsl:value-of select="@coords"/></xsl:attribute>
+ </xsl:element>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:template>
+
+ <!-- Reformat detailed member documentation -->
+
+ <xsl:template match="table[@class='memname']">
+ <xsl:variable name="name1"><xsl:value-of select="str:split(tr/td[@class='memname'],'::')[position()=last()]"/></xsl:variable>
+ <xsl:variable name="name2"><xsl:value-of select="str:split(tr/td[@class='memname'],' ')[position()=last()]"/></xsl:variable>
+ <xsl:variable name="name"><xsl:value-of select="substring($name1,string-length($name1)-string-length($name2))"/></xsl:variable>
+ <xsl:element name="table">
+ <xsl:attribute name="class">
+ <xsl:text>memname</xsl:text>
+ <xsl:if test="contains(tr/td[@class='memname'],'#define')"><xsl:text> macro</xsl:text></xsl:if>
+ </xsl:attribute>
+ <tr>
+ <td class="memtype" colspan="5">
+ <xsl:for-each select="tr/td[@class='memname']/*|tr/td[@class='memname']/text()">
+ <xsl:choose>
+ <xsl:when test="position()=last()">
+ <xsl:value-of select="substring(.,1,string-length(.)-string-length($name))"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:copy-of select="."/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </td>
+ </tr>
+
+ <xsl:choose>
+ <xsl:when test="tr/td[@class='paramtype']">
+ <tr>
+ <td class="memname"><xsl:copy-of select="$name"/></td>
+ <td class="memparen">(</td>
+ <xsl:copy-of select="tr[1]/td[@class='paramtype']"/>
+ <xsl:copy-of select="tr[1]/td[@class='paramname']"/>
+ <td class="memparen"><xsl:if test="not(tr[td[@class='paramkey']])">)</xsl:if></td>
+ </tr>
+
+ <xsl:for-each select="tr[td[@class='paramkey']]">
+ <tr>
+ <td class="memname"></td>
+ <td class="memparen"></td>
+ <xsl:copy-of select="td[@class='paramtype']"/>
+ <xsl:copy-of select="td[@class='paramname']"/>
+ <td class="memparen"><xsl:if test="position()=last()">)</xsl:if></td>
+ </tr>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <tr>
+ <td class="memname"><xsl:copy-of select="$name"/></td>
+ <td class="memparen"><xsl:if test="tr/td[.='(']">()</xsl:if></td>
+ <td class="paramtype"></td>
+ <td class="paramname"></td>
+ <td class="memparen"></td>
+ </tr>
+ </xsl:otherwise>
+ </xsl:choose>
+ <tr>
+ <td colspan="5" class="memattrs"><xsl:copy-of select="tr/td[@width='100%']/*|tr/td[@width='100%']/text()"/></td>
+ </tr>
+ </xsl:element>
+ </xsl:template>
+
+ <!-- no idea, where these 's come frome ... -->
+ <xsl:template match="div[@class='memproto']/text()[.=' 
']">
+ </xsl:template>
+
+ <!-- Add grouping to all-members page -->
+
+ <xsl:template match="table[preceding::h1[1][contains(text(),'Member List')]]">
+ <table class="allmembers">
+
+ <!-- We need to filter the table rows by looking for indications on the object type -->
+ <!-- The table has 3 acolumns: -->
+ <!-- td[1] is the name of the object, -->
+ <!-- td[2] is the name of the class the object is defined in -->
+ <!-- td[3] contains additional flags -->
+ <!-- -->
+ <!-- The conditions we have are: -->
+ <!-- -->
+ <!-- contains(td[3],'static') static member (variable or function) -->
+ <!-- contains(td[3],'protected') protected member of arbitrary type -->
+ <!-- contains(td[3],'private') private member of arbitrary type -->
+ <!-- contains(td{3],'friend') friend declaration (function or class) -->
+ <!-- contains(td[3],'pure virtual') entry is a pure-virtual member function -->
+ <!-- starts-with(td[1]/text(),'(') function entry (member, static or friend) -->
+ <!-- contains(td[1], 'typedef') entry is a typdef -->
+ <!-- contains(td[1], 'enum ') entry is enum type or enumerator -->
+ <!-- contains(td[1], 'enum name') entry is the name of an enum type -->
+ <!-- contains(td[1], 'enum value') entry is an enumerator value -->
+ <!-- str:split(substring-before(concat(td[2]/a,'<'),'<'),'::')[position()=last()]==string(td[1]/a) -->
+ <!-- entry is a constructor -->
+ <!-- not(starts-with(td[1]/a,'~')) entry is a destructor -->
+
+ <xsl:variable name="public-static-memfn">
+ <xsl:apply-templates select="tr[contains(td[3],'static')][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(contains(td[3],'friend'))][starts-with(td[1]/text(),'(')]"/>
+ </xsl:variable>
+ <xsl:if test="string($public-static-memfn)">
+ <tr><td colspan="3"><h2>Static Public Member Functions</h2></td></tr>
+ <xsl:copy-of select="$public-static-memfn"/>
+ </xsl:if>
+
+ <xsl:variable name="public-static-var">
+ <xsl:apply-templates select="tr[not(contains(td[1],'typedef'))][contains(td[3],'static')][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(starts-with(td[1]/text(),'('))]"/>
+ </xsl:variable>
+ <xsl:if test="string($public-static-var)">
+ <tr><td colspan="3"><h2>Static Public Attributes</h2></td></tr>
+ <xsl:copy-of select="$public-static-var"/>
+ </xsl:if>
+
+ <xsl:variable name="public-memfn">
+ <xsl:apply-templates select="tr[not(contains(td[1],'typedef'))][not(contains(td[3],'static'))][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(contains(td[3],'friend'))][starts-with(td[1]/text(),'(')][str:split(substring-before(concat(td[2]/a,'<'),'<'),'::')[position()=last()]!=string(td[1]/a)][not(starts-with(td[1]/a,'~'))][not(contains(td[3],'pure virtual'))]"/>
+ </xsl:variable>
+ <xsl:if test="string($public-memfn)">
+ <tr><td colspan="3"><h2>Public Member Functions</h2></td></tr>
+ <xsl:copy-of select="set:distinct(exslt:node-set($public-memfn)/tr)"/>
+ </xsl:if>
+
+ <xsl:variable name="public-var">
+ <xsl:apply-templates select="tr[not(contains(td[1],'typedef'))][not(contains(td[1],'enum '))][not(contains(td[3],'static'))][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(starts-with(td[1]/text(),'('))]"/>
+ </xsl:variable>
+ <xsl:if test="string($public-var)">
+ <tr><td colspan="3"><h2>Public Attributes</h2></td></tr>
+ <xsl:copy-of select="$public-var"/>
+ </xsl:if>
+
+ <xsl:variable name="public-enum">
+ <xsl:apply-templates select="tr[contains(td[1],'enum value')][not(contains(td[3],'protected'))][not(contains(td[3],'private'))]"/>
+ </xsl:variable>
+ <xsl:if test="string($public-enum)">
+ <tr><td colspan="3"><h2>Public Enumerators</h2></td></tr>
+ <xsl:copy-of select="$public-enum"/>
+ </xsl:if>
+
+ <xsl:variable name="public-type">
+ <xsl:apply-templates select="tr[contains(td[1],'typedef') or contains(td[1],'enum name')][not(contains(td[3],'protected'))][not(contains(td[3],'private'))][not(contains(td[3],'friend'))]"/>
+ </xsl:variable>
+ <xsl:if test="string($public-type)">
+ <tr><td colspan="r"><h2>Public Types</h2></td></tr>
+ <xsl:copy-of select="$public-type"/>
+ </xsl:if>
+
+ <xsl:variable name="non-public">
+ <xsl:apply-templates select="tr[contains(td[3],'protected') or contains(td[3],'private') or contains(td[3],'friend')][str:split(substring-before(concat(td[2]/a,'<'),'<'),'::')[position()=last()]!=string(td[1]/a)][not(starts-with(td[1]/a,'~'))][not(contains(td[3],'pure virtual'))]"/>
+ </xsl:variable>
+ <xsl:if test="string($non-public)">
+ <tr><td colspan="3"><h2>Non-Public Members</h2></td></tr>
+ <xsl:copy-of select="$non-public"/>
+ </xsl:if>
+
+ </table>
+ </xsl:template>
+
+ <xsl:template match="table[preceding-sibling::h1[1][contains(text(),'Member List')]]/tr/td[2]/a/text()[contains(.,'<')]">
+ <!-- this removes the template args form the second column to make the table more compact -->
+ <xsl:value-of select="substring-before(.,'<')"/>
+ </xsl:template>
+
+ <xsl:template match="table[preceding-sibling::h1[1][contains(text(),'Member List')]]/tr/td[1]/a/text()[contains(.,'::')]">
+ <!-- for some weird reason, some members have a fully qualified name in the first column -->
+ <!-- remove the qualification here -->
+ <xsl:value-of select="str:split(.,'::')[position()=last()]"/>
+ </xsl:template>
+
+ <!-- Remove the automatically inserted search form (we build our own) -->
+ <xsl:template match="li[form]">
+ </xsl:template>
+
+ <xsl:template match="li[@id='searchli']">
+ </xsl:template>
+
+ <xsl:template match="div[@id='MSearchSelectWindow']">
+ </xsl:template>
+
+ <xsl:template match="div[@id='MSearchResultsWindow']">
+ </xsl:template>
+
+ <xsl:template match="script">
+ </xsl:template>
+
+ <!-- Add CSS class to alphabetical class index table -->
+ <xsl:template match="table[preceding-sibling::*[1][self::div][@class='qindex']]">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">qindextable</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Add CSS class to special paragraphs -->
+
+ <xsl:template match="dl[dt/b/a/text()='Bug:']">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">xref-bug</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="dl[dt/b/a/text()='Fix:']">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">xref-fix</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="dl[dt/b/a/text()='Todo:']">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">xref-todo</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="dl[dt/b/a/text()='Idea:']">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">xref-idea</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="dl[dt/b/text()='Parameters:']|dl[dt/b/text()='Template Parameters:']">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">parameters</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="dl[dt/b/text()='Implementation note:']">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">implementation</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="p[starts-with(text(),'Definition at line ')]">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">sourceline</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="div[@class='memdoc']/p[starts-with(text(),'References ')]">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">references</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="div[@class='memdoc']/p[starts-with(text(),'Referenced by ')]">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">referencedby</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="div[@class='memdoc']/p[starts-with(text(),'Reimplemented from ')]">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">reimplementedfrom</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="div[@class='memdoc']/p[starts-with(text(),'Reimplemented in ')]">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">reimplementedin</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template match="div[@class='memdoc']/p[starts-with(text(),'Implemented in ')]">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">implementedin</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Break the following lists after each komma -->
+
+ <xsl:template match="p[starts-with(text(),'Inherited by ')]">
+ <xsl:call-template name="break-comma"/>
+ </xsl:template>
+
+ <xsl:template match="p[starts-with(text(),'Inherits ')]">
+ <xsl:call-template name="break-comma"/>
+ </xsl:template>
+
+ <!-- Add CSS class to the member overview table of a class documentation -->
+ <xsl:template match="table[descendant::td[@class='memItemLeft']]">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">members</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Add CSS class to literal links (links, where link text and href attribute are the same -->
+ <xsl:template match="a[@href=string(current())]" priority="1">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">literal</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Add CSS class to external links -->
+ <xsl:template match="a[contains(@href,'http://')]">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">ext</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Add CSS class to anchor-only links -->
+ <xsl:template match="a[not(@href)]">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">anchor</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Add CSS class to the brief documentation paragraph of the member documentation -->
+ <xsl:template match="div[@class='memdoc']/p[1][not(contains(.,'Definition at line'))][not(contains(.,'Reimplemented in'))][not(contains(.,'References '))][not(contains(.,'Referenced by '))][not(contains(.,'Reimplemented from '))]">
+ <xsl:call-template name="add-class">
+ <xsl:with-param name="class">memtitle</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+
+ <!-- Remove external items from the namespace index -->
+ <xsl:template match="div[@id='content2']/table[contains(preceding-sibling::h1/text(),'Namespace Reference')]/tr[td[@class='memItemRight']/a[1][@class='elRef'][@doxygen]]">
+ </xsl:template>
+
+ <!-- Remove [external] references from the modules page -->
+ <xsl:template match="div[@id='content2']/ul/li[a/@class='elRef'][a/@doxygen][code/text()='[external]'][not(ul)]">
+ </xsl:template>
+
+</xsl:stylesheet>
//#include "@NAME@.mpp"
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
//#include "@NAME@.mpp"
// Custom includes
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////cci.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_
-///////////////////////////////ct.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////ct.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
// Custom includes
#define prefix_ inline
-///////////////////////////////cti.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////cti.e///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
/** \file
\brief @NAME@ public header */
-#ifndef HH_@NAME@_
-#define HH_@NAME@_ 1
+#ifndef HH_SENF_@PATH@_
+#define HH_SENF_@PATH@_ 1
// Custom includes
//#include "@NAME@.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
//#include "@NAME@.cci"
//#include "@NAME@.ct"
//#include "@NAME@.cti"
/** \file
\brief @NAME@ internal header */
-#ifndef IH_@NAME@_
-#define IH_@NAME@_ 1
+#ifndef IH_SENF_@PATH@_
+#define IH_SENF_@PATH@_ 1
// Custom includes
-///////////////////////////////ih.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////ih.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#endif
\f
// Custom includes
-// ///////////////////////////mpp.p////////////////////////////////////////
-#elif BOOST_PP_IS_ITERATING // ////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-///////////////////////////mpp.p////////////////////////////////////////
+#elif BOOST_PP_IS_ITERATING //-////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// Local Macros
-// ////////////////////////////////////////////////////////////////////////
-#if BOOST_PP_ITERATION_FLAGS()==1 // //////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#if BOOST_PP_ITERATION_FLAGS()==1 //-//////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
-#endif // /////////////////////////////////////////////////////////////////
-// ////////////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#endif //-/////////////////////////////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
// Undefine local Macros
-// ////////////////////////////////////////////////////////////////////////
-#endif // /////////////////////////////////////////////////////////////////
-// ///////////////////////////mpp.e////////////////////////////////////////
+//-////////////////////////////////////////////////////////////////////////
+#endif //-/////////////////////////////////////////////////////////////////
+//-///////////////////////////mpp.e////////////////////////////////////////
\f
// Local Variables:
#include <boost/test/test_tools.hpp>
#define prefix_
-///////////////////////////////cc.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////cc.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#undef prefix_
\f
fi
base="`dirname "$0"`"; base="`cd "$base/_templates"; pwd`"
+root="`cd "$base/../.."; pwd`"
-if [ "$1" == "-f" ]; then
+if [ "$1" = "-f" ]; then
force=1
shift
fi
exit 1
fi
-sed -e "s/@NAME@/$name/g" -e "s/@AUTHOR@/${SENF_AUTHOR:-@AUTHOR@}/g" \
+path="`dirname "$1"`"; path="`cd "$path"; pwd`"
+path="$path/${name%%.*}"
+path="${path#$root}"
+path="$(echo "${path#/}" | tr / _)"
+
+sed -e "s/@NAME@/$name/g" \
+ -e "s/@PATH@/$path/g" \
+ -e "s/@AUTHOR@/${SENF_AUTHOR:-@AUTHOR@}/g" \
< "$base/Example$type" \
> "$1"