From 29ea6d349b8d70daf5c910b01060af9579fe2ffa Mon Sep 17 00:00:00 2001 From: Miguel Company Date: Mon, 24 Feb 2025 15:42:42 +0100 Subject: [PATCH 1/7] Refs #22835. SWIG extend to set fixed_string from std::string. Signed-off-by: Miguel Company --- .../fastcdr/idl/templates/TypesSwigInterface.stg | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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 e7e53306..43a5c6a4 100644 --- a/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg +++ b/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg @@ -53,6 +53,7 @@ $ctx.directIncludeDependencies : {include | %include "$include$.i"}; separator=" %include %import(module="fastdds") "fastcdr/xcdr/optional.hpp" +%import(module="fastdds") "fastcdr/cdr/fixed_size_string.hpp" %import(module="fastdds") "fastdds/dds/core/LoanableCollection.hpp" %import(module="fastdds") "fastdds/dds/core/LoanableTypedCollection.hpp" %import(module="fastdds") "fastdds/dds/core/LoanableSequence.hpp" @@ -188,6 +189,17 @@ $else$ %ignore $struct_name$::$member.name$(); %rename("%s") $struct_name$::$member.name$() const; +$if(typecode.isStringType && typecode.isBounded)$ +%extend $struct_name$ +{ + void $member.name$(const std::string& value) + { + eprosima::fastcdr::fixed_string<$typecode.maxSize$> tmp; + \$self->$member.name$(tmp); + } +} +$endif$ + $endif$ >> From a7abde1bbe51863e90e99ad3da29ad8eaafe1657 Mon Sep 17 00:00:00 2001 From: Miguel Company Date: Mon, 24 Feb 2025 15:45:40 +0100 Subject: [PATCH 2/7] Refs #22835. SWIG export template for fixed_string members. Signed-off-by: Miguel Company --- .../com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg | 1 + 1 file changed, 1 insertion(+) 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 43a5c6a4..d1bb2497 100644 --- a/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg +++ b/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg @@ -190,6 +190,7 @@ $else$ %rename("%s") $struct_name$::$member.name$() const; $if(typecode.isStringType && typecode.isBounded)$ +%template($typecode.noScopedCppTypename$_fixed_string_$typecode.maxSize$) eprosima::fastcdr::fixed_string<$typecode.maxSize$>; %extend $struct_name$ { void $member.name$(const std::string& value) From 39b5b968c1d692be283312f45196218d373c0a8c Mon Sep 17 00:00:00 2001 From: Miguel Company Date: Mon, 24 Feb 2025 15:54:49 +0100 Subject: [PATCH 3/7] Refs #22835. Fix access to typecode. Signed-off-by: Miguel Company --- .../eprosima/fastcdr/idl/templates/TypesSwigInterface.stg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 d1bb2497..eb951485 100644 --- a/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg +++ b/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg @@ -189,13 +189,13 @@ $else$ %ignore $struct_name$::$member.name$(); %rename("%s") $struct_name$::$member.name$() const; -$if(typecode.isStringType && typecode.isBounded)$ -%template($typecode.noScopedCppTypename$_fixed_string_$typecode.maxSize$) eprosima::fastcdr::fixed_string<$typecode.maxSize$>; +$if(member.typecode.isStringType && member.typecode.isBounded)$ +%template($member.typecode.noScopedCppTypename$_fixed_string_$member.typecode.maxSize$) eprosima::fastcdr::fixed_string<$member.typecode.maxSize$>; %extend $struct_name$ { void $member.name$(const std::string& value) { - eprosima::fastcdr::fixed_string<$typecode.maxSize$> tmp; + eprosima::fastcdr::fixed_string<$member.typecode.maxSize$> tmp; \$self->$member.name$(tmp); } } From f3ad4f8e6a16ff248c511b0b28c56779b9dbdc6e Mon Sep 17 00:00:00 2001 From: Miguel Company Date: Mon, 24 Feb 2025 15:57:54 +0100 Subject: [PATCH 4/7] Refs #22835. Fix max size typo. Signed-off-by: Miguel Company --- .../com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 eb951485..4a39120d 100644 --- a/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg +++ b/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg @@ -190,12 +190,12 @@ $else$ %rename("%s") $struct_name$::$member.name$() const; $if(member.typecode.isStringType && member.typecode.isBounded)$ -%template($member.typecode.noScopedCppTypename$_fixed_string_$member.typecode.maxSize$) eprosima::fastcdr::fixed_string<$member.typecode.maxSize$>; +%template($member.typecode.noScopedCppTypename$_fixed_string_$member.typecode.maxsize$) eprosima::fastcdr::fixed_string<$member.typecode.maxsize$>; %extend $struct_name$ { void $member.name$(const std::string& value) { - eprosima::fastcdr::fixed_string<$member.typecode.maxSize$> tmp; + eprosima::fastcdr::fixed_string<$member.typecode.maxsize$> tmp; \$self->$member.name$(tmp); } } From 74227041ac6e2192476ac527b80d75da6b30ad77 Mon Sep 17 00:00:00 2001 From: Miguel Company Date: Mon, 24 Feb 2025 16:01:54 +0100 Subject: [PATCH 5/7] Refs #22835. Fix exported template name. Signed-off-by: Miguel Company --- .../com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 4a39120d..6566be27 100644 --- a/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg +++ b/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg @@ -190,7 +190,7 @@ $else$ %rename("%s") $struct_name$::$member.name$() const; $if(member.typecode.isStringType && member.typecode.isBounded)$ -%template($member.typecode.noScopedCppTypename$_fixed_string_$member.typecode.maxsize$) eprosima::fastcdr::fixed_string<$member.typecode.maxsize$>; +%template(fixed_string_$member.typecode.maxsize$) eprosima::fastcdr::fixed_string<$member.typecode.maxsize$>; %extend $struct_name$ { void $member.name$(const std::string& value) From 2f7395b093a28d9e8a63fd63e84b9b59df3fa498 Mon Sep 17 00:00:00 2001 From: Miguel Company Date: Mon, 24 Feb 2025 16:12:42 +0100 Subject: [PATCH 6/7] Refs #22835. Fix extend code. Signed-off-by: Miguel Company --- .../com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 6566be27..ec30358e 100644 --- a/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg +++ b/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg @@ -195,7 +195,7 @@ $if(member.typecode.isStringType && member.typecode.isBounded)$ { void $member.name$(const std::string& value) { - eprosima::fastcdr::fixed_string<$member.typecode.maxsize$> tmp; + eprosima::fastcdr::fixed_string<$member.typecode.maxsize$> tmp(value); \$self->$member.name$(tmp); } } From 36f28c8b9ea5c13f81cf663c79f4f5ede90e597d Mon Sep 17 00:00:00 2001 From: Miguel Company Date: Tue, 25 Feb 2025 09:04:03 +0100 Subject: [PATCH 7/7] Refs #22850. Apply suggestions from review. Signed-off-by: Miguel Company --- .../com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg | 4 ++++ 1 file changed, 4 insertions(+) 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 ec30358e..49fd4092 100644 --- a/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg +++ b/src/main/java/com/eprosima/fastcdr/idl/templates/TypesSwigInterface.stg @@ -52,8 +52,12 @@ $ctx.directIncludeDependencies : {include | %include "$include$.i"}; separator=" %} %include +$if(ctx.thereIsOptionalAnnotation)$ %import(module="fastdds") "fastcdr/xcdr/optional.hpp" +$endif$ +$if(ctx.thereIsString)$ %import(module="fastdds") "fastcdr/cdr/fixed_size_string.hpp" +$endif$ %import(module="fastdds") "fastdds/dds/core/LoanableCollection.hpp" %import(module="fastdds") "fastdds/dds/core/LoanableTypedCollection.hpp" %import(module="fastdds") "fastdds/dds/core/LoanableSequence.hpp"