fipa_acl  1.4
Public Member Functions | Public Attributes | List of all members
Message< Iterator > Struct Template Reference

#include <grammar_bitefficient.h>

Inherits grammar< Iterator, fipa::acl::Message()>.

Public Member Functions

 Message ()
 

Public Attributes

qi::rule< Iterator,
fipa::acl::Message()> 
aclCommunicativeAct
 
qi::rule< Iterator > message
 
qi::rule< Iterator,
fipa::acl::Header()> 
header
 
qi::rule< Iterator, char()> messageId
 
qi::rule< Iterator, char()> version
 
qi::rule< Iterator > endOfMessage
 
qi::rule< Iterator > endOfCollection
 
qi::rule< Iterator, std::string() > messageType
 
qi::rule< Iterator, std::string() > userDefinedMessageType
 
BinWord< Iterator > messageTypeName
 
qi::rule< Iterator,
fipa::acl::message::Parameter() > 
messageParameter
 
qi::rule< Iterator,
fipa::acl::message::Parameter() > 
userDefinedMessageParameter
 
qi::rule< Iterator,
fipa::acl::message::Parameter() > 
predefinedMessageParameter
 
BinWord< Iterator > parameterName
 
BinExpression< Iterator > parameterValue
 
qi::rule< Iterator, std::string() > predefinedMessageType
 
UserdefinedParameter< Iterator > userDefinedParameter
 
qi::rule< Iterator,
std::vector
< fipa::acl::AgentIdentifier >) > 
recipientExpr
 
AgentIdentifier< Iterator > agentIdentifier
 
BinExpression< Iterator > binExpression
 
BinWord< Iterator > binWord
 
BinString< Iterator > binString
 
BinString< Iterator > msgContent
 
BinExpression< Iterator > replyWithParam
 
BinDateTime< Iterator > replyByParam
 
BinExpression< Iterator > inReplyToParam
 
qi::rule< Iterator,
std::vector
< fipa::acl::AgentIdentifier >) > 
replyToParam
 
BinExpression< Iterator > language
 
BinExpression< Iterator > encoding
 
BinExpression< Iterator > ontology
 
BinWord< Iterator > protocol
 
BinExpression< Iterator > conversationId
 

Detailed Description

template<typename Iterator>
struct Message< Iterator >

Definition at line 420 of file grammar_bitefficient.h.

Constructor & Destructor Documentation

template<typename Iterator >
Message< Iterator >::Message ( )
inline

Definition at line 423 of file grammar_bitefficient.h.

423  : Message::base_type(aclCommunicativeAct, "message-bitefficient_grammar")
424  {
425  using phoenix::construct;
426  using phoenix::val;
427 
428  using qi::lit;
429  using qi::lexeme; // prevents character skipping
430  using qi::byte_;
431 
432 
433  // To avoid namespace clashes with boost::bind
434  namespace label = qi::labels;
435 
436  // Explanation:
437  // at_c<0>(label::_val) = label::_1
438  // set the first element (position 0) of the element synthesized attribute,i.e._val, to the parsed value, i.e. _1
439  // the synthesized attribute might be a fipa::acl::message, and the element ordering depends on the structure as
440  // defined with the BOOST_FUSION_ADAPT_STRUCT definition
441  aclCommunicativeAct = header [ phoenix::at_c<0>(label::_val) = label::_1 ]
442  >> messageType [ phoenix::at_c<1>(label::_val) = label::_1 ]
443  >> *messageParameter [ phoenix::push_back(phoenix::at_c<2>(label::_val), label::_1) ]
444  >> endOfMessage // No action here
445  ;
446 
447  header = messageId [ phoenix::at_c<0>(label::_val) = label::_1 ]
448  >> version [ phoenix::at_c<1>(label::_val) = label::_1 ]
449  ;
450 
451  // byte_() does only return an unused_type, so if we want to save the value, we have to assign it directly
452  messageId = byte_(0xFA) [ label::_val = 0xfa ]
453  | byte_(0xFB) [ label::_val = 0xfb ]
454  | byte_(0xFC) [ label::_val = 0xfc ]
455  ;
456 
457 
458  version = byte_;
459  endOfMessage %= endOfCollection;
460  endOfCollection %= byte_(0x01);
461 
462  // we do not support dynamic code tables or user defined values
463  // message type is a string
464  // the types in the rule definition have to match to apply alias()
466 
467  userDefinedMessageType = byte_(0x00)
468  >> messageTypeName [ label::_val = label::_1 ]
469  ;
470 
471 
472  // Note: never do a direct assignment like
473  // messageParameter = predefinedMessageParameter or you will be getting runtime errors
474  // use messageParameter = predefinedMessageParameter.alias() instead
476 
477  userDefinedMessageParameter = byte_(0x00)
478  >> parameterName [ phoenix::at_c<0>(label::_val) = label::_1 ]
479  >> parameterValue [ phoenix::at_c<1>(label::_val) = label::_1 ]
480  ;
481 
482  // Converting message type into predefined strings
483  predefinedMessageType = byte_(0x01) [ label::_val = "accept-proposal" ]
484  | byte_(0x02) [ label::_val = "agree" ]
485  | byte_(0x03) [ label::_val = "cancel" ]
486  | byte_(0x04) [ label::_val = "cfp" ]
487  | byte_(0x05) [ label::_val = "confirm" ]
488  | byte_(0x06) [ label::_val = "disconfirm" ]
489  | byte_(0x07) [ label::_val = "failure" ]
490  | byte_(0x08) [ label::_val = "inform" ]
491  | byte_(0x09) [ label::_val = "inform-if" ]
492  | byte_(0x0a) [ label::_val = "inform-ref" ]
493  | byte_(0x0b) [ label::_val = "not-understood" ]
494  | byte_(0x0c) [ label::_val = "propagate" ]
495  | byte_(0x0d) [ label::_val = "propose" ]
496  | byte_(0x0e) [ label::_val = "proxy" ]
497  | byte_(0x0f) [ label::_val = "query-if" ]
498  | byte_(0x10) [ label::_val = "query-ref" ]
499  | byte_(0x11) [ label::_val = "refuse" ]
500  | byte_(0x12) [ label::_val = "reject-proposal" ]
501  | byte_(0x13) [ label::_val = "request" ]
502  | byte_(0x14) [ label::_val = "request-when" ]
503  | byte_(0x15) [ label::_val = "request-whenever" ]
504  | byte_(0x16) [ label::_val = "subscribe" ]
505  ;
506 
507  // predefinedMessageParameter uses a boost::variant
508  predefinedMessageParameter = byte_(0x02) [ phoenix::at_c<0>(label::_val) = "sender" ] >> agentIdentifier [ phoenix::at_c<1>(label::_val) = label::_1 ] // sender
509  | byte_(0x03) [ phoenix::at_c<0>(label::_val) = "receiver" ] >> recipientExpr [ phoenix::at_c<1>(label::_val) = label::_1 ] // receiver
510  | byte_(0x04) [ phoenix::at_c<0>(label::_val) = "content" ] >> msgContent [ phoenix::at_c<1>(label::_val) = label::_1 ] // content
511  | byte_(0x05) [ phoenix::at_c<0>(label::_val) = "reply-with" ] >> replyWithParam [ phoenix::at_c<1>(label::_val) = label::_1 ] // reply-with
512  | byte_(0x06) [ phoenix::at_c<0>(label::_val) = "reply-by" ] >> replyByParam [ phoenix::at_c<1>(label::_val) = label::_1 ] // reply-by
513  | byte_(0x07) [ phoenix::at_c<0>(label::_val) = "in-reply-to" ] >> inReplyToParam [ phoenix::at_c<1>(label::_val) = label::_1 ] // in-reply-to
514  | byte_(0x08) [ phoenix::at_c<0>(label::_val) = "reply-to" ] >> replyToParam [ phoenix::at_c<1>(label::_val) = label::_1 ] // reply-to
515  | byte_(0x09) [ phoenix::at_c<0>(label::_val) = "language" ] >> language [ phoenix::at_c<1>(label::_val) = label::_1 ] // language
516  | byte_(0x0a) [ phoenix::at_c<0>(label::_val) = "encoding" ] >> encoding [ phoenix::at_c<1>(label::_val) = label::_1 ] // encoding
517  | byte_(0x0b) [ phoenix::at_c<0>(label::_val) = "ontology" ] >> ontology [ phoenix::at_c<1>(label::_val) = label::_1 ] // ontology
518  | byte_(0x0c) [ phoenix::at_c<0>(label::_val) = "protocol" ] >> protocol [ phoenix::at_c<1>(label::_val) = label::_1 ] // protocol
519  | byte_(0x0d) [ phoenix::at_c<0>(label::_val) = "conversation-id" ] >> conversationId [ phoenix::at_c<1>(label::_val) = label::_1 ] // conversation-id
520  ;
521 
522  recipientExpr = *agentIdentifier [ phoenix::push_back(label::_val, label::_1) ]
523  >> endOfCollection;
524 
525  replyToParam = recipientExpr.alias();
526 
527  // Enables the debug tree when debug mode is active
528  // requires the include of stream operators as well
529  // since every type will be printed to the outputstream (standard is cout)
530  // see also: debug.h
531  #ifdef BOOST_SPIRIT_DEBUG
532  // http://boost-spirit.com/home/articles/doc-addendum/debugging/
533  BOOST_SPIRIT_DEBUG_NODE(header);
534  BOOST_SPIRIT_DEBUG_NODE(messageId);
535  BOOST_SPIRIT_DEBUG_NODE(version);
536  BOOST_SPIRIT_DEBUG_NODE(messageType);
537  BOOST_SPIRIT_DEBUG_NODE(userDefinedMessageType);
538  BOOST_SPIRIT_DEBUG_NODE(messageParameter);
539  BOOST_SPIRIT_DEBUG_NODE(userDefinedMessageParameter);
540  BOOST_SPIRIT_DEBUG_NODE(predefinedMessageParameter);
541  BOOST_SPIRIT_DEBUG_NODE(predefinedMessageType);
542  #endif
543 
544  }
BinExpression< Iterator > encoding
BinExpression< Iterator > ontology
BinString< Iterator > msgContent
qi::rule< Iterator, fipa::acl::Message()> aclCommunicativeAct
qi::rule< Iterator > endOfCollection
qi::rule< Iterator, fipa::acl::message::Parameter() > messageParameter
BinExpression< Iterator > replyWithParam
qi::rule< Iterator, std::string() > messageType
qi::rule< Iterator, std::vector< fipa::acl::AgentIdentifier >) > recipientExpr
BinWord< Iterator > protocol
qi::rule< Iterator, char()> version
BinWord< Iterator > messageTypeName
BinWord< Iterator > parameterName
qi::rule< Iterator, fipa::acl::message::Parameter() > predefinedMessageParameter
qi::rule< Iterator, std::vector< fipa::acl::AgentIdentifier >) > replyToParam
qi::rule< Iterator, std::string() > userDefinedMessageType
AgentIdentifier< Iterator > agentIdentifier
BinDateTime< Iterator > replyByParam
BinExpression< Iterator > parameterValue
qi::rule< Iterator > endOfMessage
BinExpression< Iterator > language
qi::rule< Iterator, std::string() > predefinedMessageType
BinExpression< Iterator > conversationId
qi::rule< Iterator, char()> messageId
BinExpression< Iterator > inReplyToParam
qi::rule< Iterator, fipa::acl::message::Parameter() > userDefinedMessageParameter
qi::rule< Iterator, fipa::acl::Header()> header

Member Data Documentation

template<typename Iterator >
qi::rule<Iterator, fipa::acl::Message()> Message< Iterator >::aclCommunicativeAct

Definition at line 563 of file grammar_bitefficient.h.

template<typename Iterator >
AgentIdentifier<Iterator> Message< Iterator >::agentIdentifier

Definition at line 587 of file grammar_bitefficient.h.

template<typename Iterator >
BinExpression<Iterator> Message< Iterator >::binExpression

Definition at line 589 of file grammar_bitefficient.h.

template<typename Iterator >
BinString<Iterator> Message< Iterator >::binString

Definition at line 591 of file grammar_bitefficient.h.

template<typename Iterator >
BinWord<Iterator> Message< Iterator >::binWord

Definition at line 590 of file grammar_bitefficient.h.

template<typename Iterator >
BinExpression<Iterator> Message< Iterator >::conversationId

Definition at line 602 of file grammar_bitefficient.h.

template<typename Iterator >
BinExpression<Iterator> Message< Iterator >::encoding

Definition at line 599 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator> Message< Iterator >::endOfCollection

Definition at line 569 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator> Message< Iterator >::endOfMessage

Definition at line 568 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, fipa::acl::Header()> Message< Iterator >::header

Definition at line 565 of file grammar_bitefficient.h.

template<typename Iterator >
BinExpression<Iterator> Message< Iterator >::inReplyToParam

Definition at line 596 of file grammar_bitefficient.h.

template<typename Iterator >
BinExpression<Iterator> Message< Iterator >::language

Definition at line 598 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator> Message< Iterator >::message

Definition at line 564 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, char()> Message< Iterator >::messageId

Definition at line 566 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, fipa::acl::message::Parameter() > Message< Iterator >::messageParameter

Definition at line 575 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, std::string() > Message< Iterator >::messageType

Definition at line 571 of file grammar_bitefficient.h.

template<typename Iterator >
BinWord<Iterator> Message< Iterator >::messageTypeName

Definition at line 573 of file grammar_bitefficient.h.

template<typename Iterator >
BinString<Iterator> Message< Iterator >::msgContent

Definition at line 592 of file grammar_bitefficient.h.

template<typename Iterator >
BinExpression<Iterator> Message< Iterator >::ontology

Definition at line 600 of file grammar_bitefficient.h.

template<typename Iterator >
BinWord<Iterator> Message< Iterator >::parameterName

Definition at line 579 of file grammar_bitefficient.h.

template<typename Iterator >
BinExpression<Iterator> Message< Iterator >::parameterValue

Definition at line 580 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, fipa::acl::message::Parameter() > Message< Iterator >::predefinedMessageParameter

Definition at line 577 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, std::string() > Message< Iterator >::predefinedMessageType

Definition at line 582 of file grammar_bitefficient.h.

template<typename Iterator >
BinWord<Iterator> Message< Iterator >::protocol

Definition at line 601 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, std::vector<fipa::acl::AgentIdentifier>) > Message< Iterator >::recipientExpr

Definition at line 585 of file grammar_bitefficient.h.

template<typename Iterator >
BinDateTime<Iterator> Message< Iterator >::replyByParam

Definition at line 595 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, std::vector<fipa::acl::AgentIdentifier>) > Message< Iterator >::replyToParam

Definition at line 597 of file grammar_bitefficient.h.

template<typename Iterator >
BinExpression<Iterator> Message< Iterator >::replyWithParam

Definition at line 594 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, fipa::acl::message::Parameter() > Message< Iterator >::userDefinedMessageParameter

Definition at line 576 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, std::string() > Message< Iterator >::userDefinedMessageType

Definition at line 572 of file grammar_bitefficient.h.

template<typename Iterator >
UserdefinedParameter<Iterator> Message< Iterator >::userDefinedParameter

Definition at line 583 of file grammar_bitefficient.h.

template<typename Iterator >
qi::rule<Iterator, char()> Message< Iterator >::version

Definition at line 567 of file grammar_bitefficient.h.


The documentation for this struct was generated from the following file: