Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement growing message sequences for [] syntax #47

Open
wants to merge 14 commits into
base: develop
Choose a base branch
from
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ public String lookForComments(TokenStream tokenStream, Token token, int lookback
String comments = tokenStream.get(tokenIndex).getText().trim();
if (!comments.isEmpty())
{
comments = comments.replaceAll("(\n|\r\n|\r) {1,5}\\*", "\n *");
comments = comments.replaceAll("\\R +", "\n").stripIndent();
return comments;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,6 @@ public String getIdlTypename()

public String getMaxsize()
{
if(m_maxsize == null)
return "100";

return m_maxsize;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,20 @@ public boolean addMember(Member member)
return false;
}

@Override
public boolean getUnbounded()
{
for (Member member : getMembers())
{
// TODO: there may be more type codes that are sequence-like
if (member.getTypecode() instanceof SequenceTypeCode || member.getTypecode() instanceof MapTypeCode)
if (member.getTypecode().getUnbounded())
return true;
Comment on lines +93 to +96
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

check this

}

return false;
}

public List<ConstDeclaration> getConstants()
{
return m_consts;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,13 @@ public int getMaxSerializedSizeWithoutAlignment(int currentSize)
{
return currentSize + getSize();
}*/


@Override
public String getMaxsize()
{
return getSize();
}

@Override
public String getSize()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,6 @@ public String getIdlTypename()

public String getMaxsize()
{
if(m_maxsize == null)
return "100";

return m_maxsize;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,6 @@ public String getIdlTypename()

public String getMaxsize()
{
if(m_maxsize == null)
return "100";

return m_maxsize;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,6 @@ public String getInitialValue()

public String getMaxsize()
{
if(m_maxsize == null)
return "255";

return m_maxsize;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,11 @@ public String getMaxsize()
{
return null;
}

public boolean getUnbounded()
{
return getMaxsize() == null;
}

/*!
* @brief This function returns the size of the datatype. By default is null string.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,21 @@ $if(params)$$separatorInicial$$endif$$params : {param | /*$param.comment$*/ $par

object_serialization(ctx, object, arg, element) ::= <<
$if(object.typecode.maxsize)$
$if(!object.typecode.primitive)$
if($element$get$object.javaName$($arg$).$sizeFunction.(object.typecode.stType)$ <= $object.typecode.maxsize$)

$endif$
$endif$
$if(object.typecode.isType_c)$cdr.write_$object.typecode.stType$($element$get$object.javaName$($arg$).ordinal());
$elseif(object.typecode.isType_f)$$array_serialize(ctx=ctx, typecodeArr=object.typecode, data=[element, "get", object.javaName, "(", arg, ")"], loopvar=ctx.newLoopVarName, dimensions=object.typecode.dimensions)$
$elseif(object.typecode.isType_a)$$object.typecode.pubsubTypename$.write($element$get$object.javaName$($arg$), cdr);
$else$cdr.write_$object.typecode.stType$($element$get$object.javaName$($arg$));
$endif$
$if(object.typecode.maxsize)$
else
throw new RuntimeException("$object.name$ field exceeds the maximum length");
$if(!object.typecode.primitive)$
$\n$else
throw new RuntimeException("$object.name$ field exceeds the maximum length");
$endif$
$endif$
>>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -230,13 +230,16 @@ $else$

public static int getMaxCdrSerializedSize(int current_alignment)
{
int initial_alignment = current_alignment;

$if(struct.Unbounded)$
return 0; // One or more members of the message is unbounded$\n$
$else$
int initial_alignment = current_alignment;
$struct.members : { member |
// $member.javaName$$if(member.typecode.Unbounded)$ (unbounded)$endif$
$max_serialized_size(ctx=ctx, typecode=member.typecode, var="current_alignment")$
}; separator="\n"$

return current_alignment - initial_alignment;
$endif$
}

public final static int getCdrSerializedSize($struct.javaTypename$ data)
Expand All @@ -249,6 +252,7 @@ $struct.members : { member |
int initial_alignment = current_alignment;

$struct.members : { member |
// $member.javaName$$if(member.typecode.Unbounded)$ (unbounded)$endif$
$serialized_size(ctx=ctx, object=member, data=["data.get", member.javaName, "()"], var="current_alignment")$
}; separator="\n"$

Expand All @@ -258,13 +262,15 @@ $struct.members : { member |
public static void write($struct.javaTypename$ data, us.ihmc.idl.CDR cdr)
{
$struct.members : { member |
// $member.javaName$$if(member.typecode.Unbounded)$ (unbounded)$endif$
$object_serialization(ctx=ctx, object=member, arg="", element="data.")$
}; separator="\n"$
}

public static void read($struct.javaTypename$ data, us.ihmc.idl.CDR cdr)
{
$struct.members : { member |
// $member.javaName$$if(member.typecode.Unbounded)$ (unbounded)$endif$
$object_deserialization(ctx=ctx, object=member, arg="", argsep="", element="data.")$
}; separator=""$
}
Expand All @@ -273,6 +279,7 @@ $struct.members : { member |
public final void serialize($struct.javaTypename$ data, us.ihmc.idl.InterchangeSerializer ser)
{
$struct.members : { member |
// $member.javaName$$if(member.typecode.Unbounded)$ (unbounded)$endif$
$if(member.typecode.isType_a)$
ser.write_$member.typecode.stType$("$member.name$", new $member.typecode.pubsubTypename$(), data.get$member.javaName$());
$elseif(member.typecode.isType_f)$
Expand All @@ -291,6 +298,7 @@ $endif$
public final void deserialize(us.ihmc.idl.InterchangeSerializer ser, $struct.javaTypename$ data)
{
$struct.members : { member |
// $member.javaName$$if(member.typecode.Unbounded)$ (unbounded)$endif$
$if(member.typecode.isType_c)$
data.set$member.javaName$(($member.typecode.javaTypename$)ser.read_$member.typecode.stType$("$member.name$", $member.typecode.javaTypename$.class));
$elseif(member.typecode.isType_a)$
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,21 +50,21 @@ $endif$
$struct.members : { member |
$if(member.typecode.isType_e)$
$if(member.typecode.ContentTypeCode.isType_c)$
$member.name$_ = new $member.typecode.javaTypename$($member.typecode.Maxsize$, $member.typecode.ContentTypeCode.javaTypename$.class, $member.typecode.ContentTypeCode.javaTypename$.values);$\n$
$member.name$_ = new $member.typecode.javaTypename$($if(!member.typecode.Unbounded)$$member.typecode.Maxsize$, $endif$$member.typecode.ContentTypeCode.javaTypename$.class, $member.typecode.ContentTypeCode.javaTypename$.values);$\n$
$elseif(member.typecode.ContentTypeCode.primitive)$
$member.name$_ = new $member.typecode.javaTypename$($member.typecode.Maxsize$, "$member.typecode.ContentTypeCode.stType$");$\n$
$member.name$_ = new $member.typecode.javaTypename$($if(!member.typecode.Unbounded)$$member.typecode.Maxsize$, $endif$"$member.typecode.ContentTypeCode.stType$");$\n$
$elseif(member.typecode.ContentTypeCode.isType_d)$
$member.name$_ = new $member.typecode.javaTypename$($member.typecode.Maxsize$, "$member.typecode.ContentTypeCode.stType$");$\n$
$member.name$_ = new $member.typecode.javaTypename$($if(!member.typecode.Unbounded)$$member.typecode.Maxsize$, $endif$"$member.typecode.ContentTypeCode.stType$");$\n$
$else$
$member.name$_ = new $member.typecode.javaTypename$($member.typecode.Maxsize$, new $member.typecode.ContentTypeCode.pubsubTypename$());$\n$
$member.name$_ = new $member.typecode.javaTypename$($if(!member.typecode.Unbounded)$$member.typecode.Maxsize$, $endif$new $member.typecode.ContentTypeCode.pubsubTypename$());$\n$
$endif$
$elseif(member.typecode.isType_f)$
$member.name$_ = new $member.typecode.ContentTypeCode.JavaTypename$[$member.typecode.Dimensions;separator="]["$];$\n$
$if(!member.typecode.ContentTypeCode.primitive)$
$array_init(ctx=ctx, typecodeArr=member.typecode, data=[member.name, "_"], elemInit=["new ", member.typecode.ContentTypeCode.JavaTypename, "()"], loopvar=ctx.nextLoopVarName, dimensions=member.typecode.dimensions)$$\n$
$endif$
$elseif(member.typecode.isType_d)$
$member.name$_ = new $member.typecode.javaTypename$($member.typecode.Maxsize$);
$member.name$_ = new $member.typecode.javaTypename$($if(!member.typecode.Unbounded)$$member.typecode.Maxsize$$endif$);
$elseif(!member.typecode.primitive)$
$member.name$_ = new $member.typecode.javaTypename$();$\n$
$endif$
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
public class GenerateTestMessages
{
/**
* Must be run from ihmc-pub-sub-group/ihmc-pub-sub-generator/src/test folder.
* Must be run from ihmc-ros2-library/ihmc-pub-sub-generator/src/test folder.
*/
public static void main(String[] args) throws IOException
{
Expand Down
2 changes: 1 addition & 1 deletion ihmc-pub-sub/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ The code will not compile until this is run once.

This will also clone the git submodules.
```
ihmc-pub-sub-group $ gradle compositeTask -PtaskName=compileJava
ihmc-ros2-library $ gradle compositeTask -PtaskName=compileJava
```

### Native compilation
Expand Down
2 changes: 1 addition & 1 deletion ihmc-pub-sub/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<author email="[email protected]">Jesper Smith</author>
<maintainer email="[email protected]">Jesper Smith</maintainer>

<url type="website">https://github.com/ihmcrobotics/ihmc-pub-sub-group</url>
<url type="website">https://github.com/ihmcrobotics/ihmc-ros2-library</url>

<license>Apache 2.0</license>

Expand Down
Loading
Loading