COMMS
Template library intended to help with implementation of communication protocols.
Classes | Namespaces | Macros | Typedefs | Functions
Message.h File Reference

Contains definition of Message object interface and various base classes for custom messages. More...

#include <cstdint>
#include <memory>
#include <type_traits>
#include "comms/ErrorStatus.h"
#include "comms/Assert.h"
#include "comms/Field.h"
#include "comms/util/type_traits.h"
#include "comms/details/MessageInterfaceBuilder.h"
#include "comms/details/transport_fields_access.h"
#include "comms/details/detect.h"
#include "comms/details/MessageIdTypeRetriever.h"
#include "comms/details/field_alias.h"

Go to the source code of this file.

Classes

class  comms::Message< TOptions >
 Main interface class for all the messages. More...
 

Namespaces

 comms
 Main namespace for all classes / functions of COMMS library.
 

Macros

#define COMMS_MSG_TRANSPORT_FIELD_ALIAS_ACCESS_NOTEMPLATE(f_, ...)   COMMS_EXPAND(COMMS_DO_ALIAS_NOTEMPLATE(transportField_, f_, __VA_ARGS__))
 Generate convinience alias access member functions for extra member transport fields in non template interface classes. More...
 
#define COMMS_MSG_TRANSPORT_FIELD_ALIAS_NOTEMPLATE(f_, ...)
 Generate convinience alias access member functions and type for extra member transport fields in non template interface classes. More...
 

Typedefs

template<typename TMsg , typename TDefaultType = std::intmax_t>
using comms::MessageIdType = typename comms::util::LazyDeepConditional< TMsg::InterfaceOptions::HasMsgIdType >::template Type< comms::details::MessageIdTypeRetriever, comms::util::AliasType, TDefaultType, TMsg >
 Get type of message ID used by interface class. More...
 

Functions

template<typename T >
constexpr bool comms::isMessage ()
 Compile time check of of whether the type is a message. More...
 
template<typename... TOptions>
const Message< TOptions... > & comms::toMessage (const Message< TOptions... > &msg)
 Upcast type of the message object to comms::Message in order to have access to its internal types.
 
template<typename... TOptions>
Message< TOptions... > & comms::toMessage (Message< TOptions... > &msg)
 Upcast type of the message object to comms::Message in order to have access to its internal types.
 

Detailed Description

Contains definition of Message object interface and various base classes for custom messages.

Macro Definition Documentation

◆ COMMS_MSG_TRANSPORT_FIELD_ALIAS_ACCESS_NOTEMPLATE

#define COMMS_MSG_TRANSPORT_FIELD_ALIAS_ACCESS_NOTEMPLATE (   f_,
  ... 
)    COMMS_EXPAND(COMMS_DO_ALIAS_NOTEMPLATE(transportField_, f_, __VA_ARGS__))

Generate convinience alias access member functions for extra member transport fields in non template interface classes.

Similar to COMMS_MSG_TRANSPORT_FIELD_ALIAS, but needs to be used in non-template interface class to allow compilation with gcc-4.8

See also
COMMS_MSG_TRANSPORT_FIELD_ALIAS_ACCESS()
Note
Defined in "comms/Message.h"

◆ COMMS_MSG_TRANSPORT_FIELD_ALIAS_NOTEMPLATE

#define COMMS_MSG_TRANSPORT_FIELD_ALIAS_NOTEMPLATE (   f_,
  ... 
)
Value:
COMMS_EXPAND(COMMS_MSG_TRANSPORT_FIELD_ALIAS_ACCESS_NOTEMPLATE(f_, __VA_ARGS__)) \
COMMS_EXPAND(COMMS_DO_ALIAS_TYPEDEF(TransportField_, f_, __VA_ARGS__))
#define COMMS_MSG_TRANSPORT_FIELD_ALIAS_ACCESS_NOTEMPLATE(f_,...)
Generate convinience alias access member functions for extra member transport fields in non template ...
Definition: Message.h:742

Generate convinience alias access member functions and type for extra member transport fields in non template interface classes.

Similar to COMMS_MSG_TRANSPORT_FIELD_ALIAS(), but needs to be used in non-template interface class to allow compilation with gcc-4.8

See also
COMMS_MSG_TRANSPORT_FIELD_ALIAS()
Note
Defined in "comms/Message.h"