diff --git a/articles/serialization.md b/articles/serialization.md index 1bf726d61..009108427 100644 --- a/articles/serialization.md +++ b/articles/serialization.md @@ -141,17 +141,17 @@ As the results of produce_consume_method and produce_consume_backend_plain show Different serialization libraries specify different field type when e.g. generating C++ code for the messages. The major problem is the mapping between those types in an efficient manner. From a performance point of view the message interface should expose const references (especially to “big” fields). But those can only be mapped to the specific API of the serialization library if the types are exchangeable. But for example a byte array is represented differently in C++ in the various serialization libraries: - Protobuf: - - dyn. array<T>: RepeatedField<T> (STL-like interface) - - fix. array<T>: --- - - binary/string: std::string + - dyn. array<T>: RepeatedField<T> (STL-like interface) + - fix. array<T>: --- + - binary/string: std::string - Thrift: - - dyn. array<T>: std::vector<T> - - fix. array<T>: --- - - binary/string: std::string + - dyn. array<T>: std::vector<T> + - fix. array<T>: --- + - binary/string: std::string - ROS: - - array<T>: std::vector<T> - - fix. array<T, N>: boost::array<T, N> - - string: std::string + - array<T>: std::vector<T> + - fix. array<T, N>: boost::array<T, N> + - string: std::string Furthermore the serialization library specific message API might not expose mutable access which could therefore not be provided by RO either when using pipeline C.