1 #ifndef FIPA_ACL_GRAMMAR_ENVELOPE_BITEFFICIENT_H 2 #define FIPA_ACL_GRAMMAR_ENVELOPE_BITEFFICIENT_H 3 #include <fipa_acl/message_generator/acl_envelope.h> 4 #include <fipa_acl/message_parser/grammar/grammar_bitefficient.h> 16 (
const std::string&,
const std::string&, obj.getPayload(), obj.setPayload(val))
23 (
const std::string& ,
const std::string&, obj.getACLRepresentationString(), obj.setACLRepresentation(val))
27 (
const base::Time&,
const base::Time&, obj.getDate(), obj.setDate(val))
39 (
const base::Time&,
const base::Time&, obj.getDate(), obj.setDate(val))
55 template <
typename T0,
typename T1>
61 template <
typename T0,
typename T1>
64 return base.
merge(extra);
71 namespace bitefficient {
73 template<
typename Iterator>
74 struct Any : qi::grammar<Iterator, std::string()>
76 Any() :
Any::base_type(any_rule,
"Any-bitefficient_grammar")
79 any_rule = binStringNoCodetable [ label::_val =
convertToString(label::_1) ];
88 template<
typename Iterator>
89 struct Url : qi::grammar<Iterator, std::string()>
91 Url() :
Url::base_type(url_rule,
"Url-bitefficient_grammar")
93 url_rule = nullTerminatedString [ label::_val =
convertToString(label::_1)];
100 template<
typename Iterator>
107 agent_identifier_rule = byte_(0x02) >> agentName [ phoenix::at_c<0>(label::_val) =
convertToString(label::_1) ]
108 >> -addresses [ phoenix::at_c<1>(label::_val) = label::_1 ]
109 >> -resolvers [ phoenix::at_c<2>(label::_val) = label::_1 ]
110 >> -userDefinedParameters [ phoenix::at_c<3>(label::_val) = label::_1 ]
113 addresses = byte_(0x02) >> urlCollection [ label::_val = label::_1 ];
114 resolvers = byte_(0x03) >> *agent_identifier_rule [ phoenix::push_back(label::_val, label::_1) ]
117 userDefinedParameters = *userDefinedParameter [ phoenix::push_back(label::_val, label::_1) ]
120 urlCollection = *url [ phoenix::push_back(label::_val, label::_1) ]
123 userDefinedParameter = byte_(0x05) >> nullTerminatedString [ phoenix::at_c<0>(label::_val) =
convertToString(label::_1) ]
124 >> any [ phoenix::at_c<1>(label::_val) = label::_1 ]
127 #ifdef BOOST_SPIRIT_DEBUG 141 qi::rule<Iterator, std::vector<std::string>() > addresses;
142 qi::rule<Iterator, std::vector<fipa::acl::AgentID>() > resolvers;
143 qi::rule<Iterator, std::vector<fipa::acl::UserdefParam>() > userDefinedParameters;
145 qi::rule<Iterator, std::vector<std::string>() > urlCollection;
153 template <
typename Iterator>
160 received_object_rule = by [ phoenix::at_c<0>(label::_val) = label::_1 ]
162 >> -from [ phoenix::at_c<1>(label::_val) = label::_1 ]
163 >> -
id [ phoenix::at_c<3>(label::_val) = label::_1 ]
164 >> -via [ phoenix::at_c<4>(label::_val) = label::_1 ]
165 >> userDefinedParameters [ phoenix::at_c<5>(label::_val) = label::_1 ]
170 from = byte_(0x02) >> url [ label::_val = label::_1 ];
171 id = byte_(0x03) >> nullTerminatedString [ label::_val =
convertToString(label::_1)];
172 via = byte_(0x04) >> nullTerminatedString [ label::_val =
convertToString(label::_1)];
174 userDefinedParameters = *userDefinedParameter [ phoenix::push_back(label::_val, label::_1) ];
175 userDefinedParameter = qi::byte_(0x00)
176 >> nullTerminatedString [ phoenix::at_c<0>(label::_val) =
convertToString(label::_1) ]
177 >> nullTerminatedString [ phoenix::at_c<1>(label::_val) =
convertToString(label::_1) ]
184 qi::rule<Iterator, fipa::acl::URL()>
from;
185 qi::rule<Iterator, fipa::acl::ID()>
id;
186 qi::rule<Iterator, fipa::acl::Via()>
via;
198 template <
typename Iterator>
199 struct Envelope : qi::grammar<Iterator, fipa::acl::ACLEnvelope()>
204 namespace label = qi::labels;
206 message_envelope_rule = *extEnvelope [ phoenix::at_c<1>(label::_val) = label::_1 ]
207 >> baseEnvelope [ phoenix::at_c<0>(label::_val) = label::_1 ]
208 >> payload [ phoenix::at_c<2>(label::_val) = label::_1]
212 baseEnvelope = baseEnvelopeHeader [ label::_a = label::_1 ]
214 >> endOfEnvelope [ label::_val = label::_a ]
217 extEnvelope = extEnvelopeHeader [ label::_a = label::_1 ]
219 >> endOfEnvelope [ label::_val = label::_a ]
222 baseEnvelopeHeader = baseMsgId
223 >> envLen [ phoenix::at_c<4>(label::_val) = label::_1 ]
224 >> aclRepresentation [ phoenix::at_c<2>(label::_val) = label::_1 ]
228 extEnvelopeHeader = extMsgId
229 >> envLen [ phoenix::at_c<4>(label::_val) = label::_1 ]
230 >> receivedObject [ phoenix::at_c<8>(label::_val) = label::_1 ]
233 envLen = len16 | jumboEnvelope;
235 jumboEnvelope = byte_(0x00) >> byte_(0x00)
236 >> len32 [ label::_val = label::_1 ]
239 baseMsgId = byte_(0xfe) [ label::_val = 0xfe ];
240 extMsgId = byte_(0xfd) [ label::_val = 0xfd ];
242 agentIdentifierSequence = *agentIdentifier [ phoenix::push_back(label::_val, label::_1) ]
246 parameter = predefinedParameter [ label::_val = label::_1 ]
247 | customParameterList [ phoenix::at_c<10>(label::_val) = label::_1 ]
251 customParameterList = userDefinedMessageParameter [ phoenix::push_back(label::_val, label::_1) ]
254 userDefinedMessageParameter = byte_(0x00)
255 >> parameterName [ phoenix::at_c<0>(label::_val) = label::_1 ]
256 >> parameterValue [ phoenix::at_c<1>(label::_val) = label::_1 ]
259 predefinedParameter = byte_(0x02) >> agentIdentifierSequence [ phoenix::at_c<0>(label::_val) = label::_1 ]
260 | byte_(0x03) >> agentIdentifier [ phoenix::at_c<1>(label::_val) = label::_1 ]
261 | byte_(0x04) >> aclRepresentation [ phoenix::at_c<2>(label::_val) = label::_1 ]
262 | byte_(0x05) >> comments [ phoenix::at_c<3>(label::_val) =
convertToString(label::_1) ]
264 | byte_(0x07) >> payloadEncoding [ phoenix::at_c<5>(label::_val) =
convertToString(label::_1) ]
266 | byte_(0x09) >> intendedReceiver [ phoenix::at_c<7>(label::_val) = label::_1 ]
267 | byte_(0x0a) >> receivedObject [ phoenix::at_c<8>(label::_val) = label::_1 ]
268 | byte_(0x0b) >> transportBehaviour [ phoenix::at_c<9>(label::_val) = label::_1 ]
271 aclRepresentation = userDefinedACLRepresentation
277 intendedReceiver = agentIdentifierSequence.alias();
279 userDefinedACLRepresentation = byte_(0x00)
282 payload = *byte_ [ label::_val += label::_1 ];
292 qi::rule<Iterator, fipa::acl::ACLBaseEnvelope(), qi::locals<fipa::acl::ACLBaseEnvelope> >
extEnvelope;
295 qi::rule<Iterator, fipa::acl::ACLBaseEnvelope(), qi::locals<fipa::acl::ACLBaseEnvelope> >
baseEnvelope;
296 qi::rule<Iterator, fipa::acl::ACLBaseEnvelope()>
parameter;
312 qi::rule<Iterator, boost::uint_least32_t()>
envLen;
329 qi::rule<Iterator, std::vector<fipa::acl::AgentID>() > agentIdentifierSequence;
330 qi::rule<Iterator, std::vector<fipa::acl::AgentID>() > intendedReceiver;
340 #endif // FIPA_ACL_GRAMMAR_ENVELOPE_BITEFFICIENT_H NullTerminatedString< Iterator > nullTerminatedString
ReceivedObject< Iterator > receivedObject
std::string TransportBehaviour
qi::rule< Iterator, fipa::acl::AgentID() > agent_identifier_rule
qi::rule< Iterator, fipa::acl::ID()> id
FIPA_ACL_FUSION_ADAPT(fipa::acl::ACLEnvelope,(const fipa::acl::ACLBaseEnvelope &, const fipa::acl::ACLBaseEnvelope &, obj.getBaseEnvelope(), obj.setBaseEnvelope(val))(const fipa::acl::ACLBaseEnvelopeList &, const fipa::acl::ACLBaseEnvelopeList &, obj.getExtraEnvelopes(), obj.addExtraEnvelope(val))(const std::string &, const std::string &, obj.getPayload(), obj.setPayload(val)))
The ACLBaseEnvelope defines the layout for an envelope with which ACLMessage data can be wrapped...
NullTerminatedString< Iterator > keyword
qi::rule< Iterator > extMsgId
EndOfCollection< Iterator > endOfCollection
BinExpression< Iterator > binExpression
qi::rule< Iterator, fipa::acl::UserdefParam()> userDefinedParameter
ACLMessage envelope (also typed as fipa::acl::Letter) includes the base envelope and updated fields...
qi::rule< Iterator, fipa::acl::UserdefParam() > userDefinedParameter
qi::rule< Iterator, fipa::acl::UserDefinedParameter() > userDefinedParameter
Any< Iterator > transportBehaviour
qi::rule< Iterator, fipa::acl::ACLBaseEnvelope()> extEnvelopeHeader
qi::rule< Iterator, fipa::acl::ReceivedObject()> received_object_rule
qi::rule< Iterator, fipa::acl::ACLBaseEnvelope(), qi::locals< fipa::acl::ACLBaseEnvelope > > extEnvelope
qi::rule< Iterator, boost::uint_least32_t()> jumboEnvelope
std::vector< UserdefParam > UserdefinedParameterList
BinDateTime< Iterator > date
qi::rule< Iterator, fipa::acl::ACLBaseEnvelope()> baseEnvelopeHeader
ACLBaseEnvelope merge(const ACLBaseEnvelope &other) const
qi::rule< Iterator > baseMsgId
NullTerminatedString< Iterator > comments
qi::rule< Iterator, fipa::acl::ACLEnvelope()> message_envelope_rule
qi::rule< Iterator, std::string() > payload
NullTerminatedString< Iterator > nullTerminatedString
phoenix::function< convertStringToNumberImpl > convertStringToNumber
phoenix::function< convertToStringImpl > convertToString
fipa::acl::ACLBaseEnvelope result_type
std::vector< AgentID > AgentIDList
qi::rule< Iterator, std::string()> parameterValue
BinWord< Iterator > binWord
NullTerminatedString< Iterator > nullTerminatedString
qi::rule< Iterator, std::string()> userDefinedACLRepresentation
qi::rule< Iterator, fipa::acl::UserdefinedParameterList() > userDefinedParameters
qi::rule< Iterator, fipa::acl::ACLBaseEnvelope() > predefinedParameter
result_type operator()(T0 base, T1 extra) const
BinStringNoCodetable< Iterator > binStringNoCodetable
const std::string TypeTxt[]
qi::rule< Iterator, std::string()> parameterName
BOOST_FUSION_ADAPT_STRUCT(fipa::acl::envelope::Parameter,(std::string, name)(fipa::acl::envelope::ParameterValue, data))
std::vector< ACLBaseEnvelope > ACLBaseEnvelopeList
qi::rule< Iterator, boost::uint_least32_t()> envLen
std::string ParameterValue
BinStringNoCodetable< Iterator > binStringNoCodetable
EndOfCollection< Iterator > endOfCollection
qi::rule< Iterator, fipa::acl::Via()> via
phoenix::function< mergeBaseEnvelopeImpl > mergeBaseEnvelope
qi::rule< Iterator, fipa::acl::URL()> from
qi::rule< Iterator, std::string()> url_rule
qi::rule< Iterator, fipa::acl::UserdefinedParameterList() > customParameterList
phoenix::function< convertToBaseTimeImpl > convertToBaseTime
EndOfCollection< Iterator > endOfEnvelope
qi::rule< Iterator, std::string()> aclRepresentation
NullTerminatedString< Iterator > nullTerminatedString
EnvelopeAgentIdentifier()
qi::rule< Iterator, std::string() > any_rule
EndOfCollection< Iterator > endOfCollection
#define FIPA_DEBUG_RULE(X)
std::string PayloadEncoding
qi::rule< Iterator, fipa::acl::UserdefParam()> userDefinedMessageParameter
EnvelopeAgentIdentifier< Iterator > agentIdentifier
qi::rule< Iterator, fipa::acl::ACLBaseEnvelope()> parameter
Implements the general AgentID functionality, which is present throughout the fipa specifications(FIP...
Foundation of Physical Intelligent Agents.
BinDateTime< Iterator > date
NullTerminatedString< Iterator > payloadEncoding
BinNumber< Iterator > payloadLength
NullTerminatedString< Iterator > agentName
qi::rule< Iterator, fipa::acl::ACLBaseEnvelope(), qi::locals< fipa::acl::ACLBaseEnvelope > > baseEnvelope