VISR  0.11.7
Versatile Interactive Scene Renderer
communication_protocol_type.hpp
Go to the documentation of this file.
1 /* Copyright Institute of Sound and Vibration Research - All rights reserved */
2 
3 #ifndef VISR_COMMUNICATION_PROTOCOL_TYPE_HPP_INCLUDED
4 #define VISR_COMMUNICATION_PROTOCOL_TYPE_HPP_INCLUDED
5 
7 
8 #include <string>
9 #include <cstddef>
10 
11 namespace visr
12 {
13 
14 using CommunicationProtocolType = std::uint64_t;
15 
17 {
18  return detail::compileTimeHashFNV1( typeString );
19 }
20 
21 
28 template<class CommunicationProtocolClass >
30 
37 template< CommunicationProtocolType id>
39 
40 } // namespace visr
41 
44 #define DEFINE_COMMUNICATION_PROTOCOL( CommunicationProtocolClassType, CommunicationProtocolId, CommunicationProtocolName )\
45 namespace visr \
46 { \
47  template<>\
48  struct CommunicationProtocolToId< CommunicationProtocolClassType > \
49  { \
50  public: \
51  enum : CommunicationProtocolType { id = CommunicationProtocolId };\
52  static constexpr const char * name = CommunicationProtocolName; \
53  }; \
54 }
55 
56 #endif // #ifndef VISR_COMMUNICATION_PROTOCOL_TYPE_HPP_INCLUDED
Definition: communication_protocol_type.hpp:29
Definition: communication_protocol_type.hpp:38
constexpr uint64_t compileTimeHashFNV1(const char *s)
Definition: compile_time_hash_fnv1.hpp:25
std::uint64_t CommunicationProtocolType
Definition: communication_protocol_type.hpp:14
Definition: options.cpp:10
constexpr CommunicationProtocolType communicationProtocolTypeFromString(char const *typeString)
Definition: communication_protocol_type.hpp:16