From 632e8cf78ceb8ec00f46b796e7cc50d3209afcda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Gonz=C3=A1lez?= Date: Thu, 30 Nov 2023 16:29:21 +0100 Subject: [PATCH] Add argument to change default unbounded countainer max size (#270) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Refs #20056. Argument to change max size of unbounded containers Signed-off-by: Ricardo González Moreno * Refs #20056. Update submodule Signed-off-by: Ricardo González Moreno --------- Signed-off-by: Ricardo González Moreno --- .../java/com/eprosima/fastdds/fastddsgen.java | 16 ++++++++++++++++ .../idl/templates/SerializationSource.stg | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/eprosima/fastdds/fastddsgen.java b/src/main/java/com/eprosima/fastdds/fastddsgen.java index c74983ad..c2dd5814 100644 --- a/src/main/java/com/eprosima/fastdds/fastddsgen.java +++ b/src/main/java/com/eprosima/fastdds/fastddsgen.java @@ -29,6 +29,7 @@ import com.eprosima.idl.parser.tree.Annotation; import com.eprosima.idl.parser.tree.Specification; import com.eprosima.idl.parser.typecode.Kind; +import com.eprosima.idl.parser.typecode.ContainerTypeCode; import com.eprosima.idl.parser.typecode.PrimitiveTypeCode; import com.eprosima.idl.parser.typecode.TypeCode; import com.eprosima.idl.util.Util; @@ -182,6 +183,17 @@ else if (arg.equals("-d")) throw new BadArgumentException("No URL specified after -d argument"); } } + else if (arg.equals(default_container_prealloc_size)) + { + if (count < args.length) + { + ContainerTypeCode.default_unbounded_max_size = args[count++]; + } + else + { + throw new BadArgumentException("No value specified after " + default_container_prealloc_size + " argument"); + } + } else if (arg.equals("-de") || arg.equals("-default_extensibility")) { if (count < args.length) @@ -538,6 +550,8 @@ private void showVersion() System.out.println(m_appName + " version " + version); } + private static String default_container_prealloc_size = "-default-container-prealloc-size"; + public static void printHelp() { System.out.println(m_appName + " usage:"); @@ -545,6 +559,8 @@ public static void printHelp() System.out.println("\twhere the options are:"); System.out.println("\t\t-cs: IDL grammar apply case sensitive matching."); System.out.println("\t\t-d : sets an output directory for generated files."); + System.out.print("\t\t" + default_container_prealloc_size + ": sets the default preallocated size for containers"); + System.out.println(" (sequence and maps). Default value: 0"); System.out.print("\t\t-default_extensibility | -de : sets the default extensibility for types without"); System.out.println(" the @extensibility annotation."); System.out.println("\t\t Values:"); diff --git a/src/main/java/com/eprosima/fastdds/idl/templates/SerializationSource.stg b/src/main/java/com/eprosima/fastdds/idl/templates/SerializationSource.stg index d10978fb..123c8e2e 100644 --- a/src/main/java/com/eprosima/fastdds/idl/templates/SerializationSource.stg +++ b/src/main/java/com/eprosima/fastdds/idl/templates/SerializationSource.stg @@ -557,7 +557,7 @@ for(size_t $loopvar$ = 0; $if(typecode.contentTypeCode.forwarded)$!$name$_detect >> map_assigment(ctx, typecode, name, originName, p, loopvar) ::= << -for(size_t $loopvar$ = 0; $loopvar$ < $typecode.maxsize$; ++$loopvar$) +for(size_t $loopvar$ = 0; $loopvar$ < $if(typecode.unbound)$50$else$$typecode.maxsize$$endif$; ++$loopvar$) { $if(typecode.valueTypeCode.isSequenceType)$ $map_member_assignment(ctx=ctx, keytypecode=typecode.keyTypeCode, valueTypeCode=typecode.valueTypeCode, name=name,