#pragma once #include namespace sp { namespace details { class EmptyBase {}; template struct MessageInterfaceBuilder { // Parse the options using ParsedOptions = MessageInterfaceParsedOptions; // Add ID retrieval functionality if ID type was provided using Base1 = typename MessageInterfaceProcessMsgId::Type; // Add ReadData() and WriteData(), that use the right endian using Base2 = typename MessageInterfaceProcessEndian::Type; // Add read functionality if Read type was provided using Base3 = typename MessageInterfaceProcessRead::Type; // Add write functionality if Write type was provided using Base4 = typename MessageInterfaceProcessWrite::Type; // add dispatch functionality if Handler type was provided using Base5 = typename MessageInterfaceProcessHandler::Type; // add valid functionality if Valid tpe was provided using Base6 = typename MessageInterfaceProcessValid::Type; // add write id functionality if write id and write was provided using Base7 = typename MessageInterfaceProcessWriteId::Type; // The last Base7 must be taken as final type. using Type = Base7; }; } // namespace details } // namespace sp