-// Copyright (C) 2007
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
+// $Id$
+//
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
// Stefan Bund <g0dil@berlios.de>
//
// This program is free software; you can redistribute it and/or modify
/** \file
\brief PacketParser internal header */
-#ifndef IH_PacketParser_
-#define IH_PacketParser_ 1
+#ifndef IH_SENF_Packets_PacketParser_
+#define IH_SENF_Packets_PacketParser_ 1
// Custom includes
-#include "Utils/mpl.hh"
+#include "../Utils/mpl.hh"
///////////////////////////////ih.p////////////////////////////////////////
template <class Parser, unsigned _>
struct ParserInitBytes_Choose
: public boost::integral_constant<PacketParserBase::size_type, Parser::init_bytes> {};
+ // ^^-- g++ error signaled here:
+ // error: 'fixed_bytes' is not a member of 'some-class-name'
+ //
+ // The 'some-class-name' class (as given in the error message) does not seem to be a parser at
+ // all (it has neither a 'fixed_bytes' nor an 'init_bytes' member).
+ //
+ // 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'
struct ParserInitBytes
: public ParserInitBytes_Choose<Parser,SENF_MPL_RV(ParserInitBytes_Choose_<Parser>(0))> {};
+ template <class Parser, unsigned _>
+ struct ParserIsFixed_Choose
+ : public boost::false_type {};
+
+ template <class Parser>
+ struct ParserIsFixed_Choose<Parser, 1>
+ : public boost::true_type {};
+
+ template <class Parser>
+ struct ParserIsFixed
+ : public ParserIsFixed_Choose<Parser,SENF_MPL_RV(ParserInitBytes_Choose_<Parser>(0))> {};
+
# endif
}}