diff --git a/.github/fastddsgen.meta b/.github/fastddsgen.meta new file mode 100644 index 00000000..19f3b790 --- /dev/null +++ b/.github/fastddsgen.meta @@ -0,0 +1,10 @@ +{ + "names": + { + "fastdds_python": { + "cmake-args": [ + "-DBUILD_TESTING=ON" + ] + } + } +} diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 3fbc0edb..1edad6f3 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -90,7 +90,7 @@ jobs: - name: Build workspace run: | cmake --version - colcon build --event-handlers=console_direct+ --mixin rel-with-deb-info ccache + colcon build --event-handlers=console_direct+ --mixin rel-with-deb-info ccache --metas src/fastddsgen/.github/fastddsgen.meta - name: Test fastddsgen with fastcdr v1 if: startsWith(matrix.fastcdr_version, '1') diff --git a/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg b/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg index 576cfac8..7757141a 100644 --- a/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg +++ b/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg @@ -67,6 +67,9 @@ $definitions; separator="\n"$ // Include the class interfaces %include "$ctx.filename$.h" +$if(ctx.cdr_both)$ +%include "$ctx.filename$v1.h" +$endif$ // Include the corresponding TopicDataType %include "$ctx.filename$PubSubTypes.i" @@ -155,6 +158,9 @@ $endif$ member_getters(struct_name, member) ::= << $if(member.annotationOptional)$ +#if FASTCDR_VERSION_MAJOR == 1 +%ignore $struct_name$::$member.name$($member.typecode.cppTypename$&&); +#else %ignore eprosima::fastcdr::optional::value; %ignore eprosima::fastcdr::optional::reset; %template($member.typecode.noScopedCppTypename$Opt) eprosima::fastcdr::optional<$member.typecode.cppTypename$>; @@ -167,9 +173,12 @@ $if(member.annotationOptional)$ *\$self = value; } } +%ignore $struct_name$::$member.name$(eprosima::fastcdr::optional<$member.typecode.cppTypename$>&&); +#endif +$else$ +%ignore $struct_name$::$member.name$($member.typecode.cppTypename$&&); $endif$ -%ignore $struct_name$::$member.name$($member.typecode.cppTypename$&&); // Overloaded getter methods shadow each other and are equivalent in python // Const accesors produced constant enums instead of arrays/dictionaries when used @@ -182,9 +191,9 @@ $elseif(member.typecode.isMapType)$ %template($member.typecode.keyTypeCode.name$_$member.typecode.valueTypeCode.cppTypename$_map) std::map<$if(member.typecode.keyTypeCode.isEnumType)$enum $endif$$member.typecode.keyTypeCode.cppTypename$,$if(member.typecode.valueTypeCode.isEnumType)$enum $endif$$member.typecode.valueTypeCode.cppTypename$>; $elseif(member.typecode.isType_f)$ %ignore $struct_name$::$member.name$() const; -%template($member.typecode.contentTypeCode.noScopedCppTypename$_$member.typecode.evaluatedDimensions$_array) std::array<$if(member.typecode.contentTypeCode.isEnumType)$enum $endif$$member.typecode.contentTypeCode.cppTypename$,$member.typecode.dimensions$>; +%template($member.typecode.contentTypeCode.noScopedCppTypename$_$member.typecode.evaluatedDimensions$_array) std::array<$if(member.typecode.contentTypeCode.isEnumType)$enum $endif$$member.typecode.contentTypeCode.cppTypename$,$member.typecode.evaluatedDimensions$>; $if(member.typecode.contentTypeCode.primitive)$ -%extend std::array<$if(member.typecode.contentTypeCode.isEnumType)$enum $endif$$member.typecode.contentTypeCode.cppTypename$, $member.typecode.dimensions$> +%extend std::array<$if(member.typecode.contentTypeCode.isEnumType)$enum $endif$$member.typecode.contentTypeCode.cppTypename$, $member.typecode.evaluatedDimensions$> { const $if(member.typecode.contentTypeCode.isEnumType)$enum $endif$$member.typecode.contentTypeCode.cppTypename$* get_buffer() const {