Skip to content

Commit

Permalink
Merge pull request #48 from eProsima/release/1.0.9
Browse files Browse the repository at this point in the history
Release 1.0.9 [5241]
  • Loading branch information
richiware authored Apr 30, 2019
2 parents ba94e14 + 665d5b4 commit 3e85b3b
Show file tree
Hide file tree
Showing 8 changed files with 1,387 additions and 268 deletions.
2 changes: 1 addition & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#
m4_define([version_major],[1])
m4_define([version_minor],[0])
m4_define([version_micro],[8])
m4_define([version_micro],[9])

AC_INIT([fastcdr], [version_major.version_minor.version_micro], [[email protected]], [eProsima FastCDR], [http://eprosima.com/])
CONFIG_ARGS="$*"
Expand Down
34 changes: 34 additions & 0 deletions src/java/com/eprosima/fastcdr/idl/generator/TypesGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

import com.eprosima.idl.context.Context;
import com.eprosima.idl.generator.manager.TemplateManager;
import com.eprosima.idl.parser.tree.AnnotationDeclaration;
import com.eprosima.idl.parser.tree.Definition;
import com.eprosima.idl.parser.tree.Export;
import com.eprosima.idl.parser.tree.Interface;
Expand Down Expand Up @@ -170,6 +171,27 @@ else if(definition.isIsTypeDeclaration())
}
}
}
else if(definition.isIsAnnotation())
{
AnnotationDeclaration annotation = (AnnotationDeclaration)definition;

// Create StringTemplate of the annotation
StringTemplate ifcst = stg_.getInstanceOf("annotation");
ifcst.setAttribute("ctx", context);
//ifcst.setAttribute("parent", annotation.getParent());
ifcst.setAttribute("annotation", annotation);

StringTemplate extensionst = null;
String extensionname = null;
if(extensions != null && (extensionname = extensions.get("annotation")) != null)
{
extensionst = stg_.getInstanceOf(extensionname);
extensionst.setAttribute("ctx", context);
//extensionst.setAttribute("parent", annotation.getParent());
extensionst.setAttribute("annotation", annotation);
ifcst.setAttribute("extension", extensionst.toString());
}
}
}
}

Expand Down Expand Up @@ -252,6 +274,18 @@ else if(typedecl.getTypeCode().getKind() == Kind.KIND_BITSET)
extensionst.setAttribute("bitset", typedecl.getTypeCode());
}
}
else if(typedecl.getTypeCode().getKind() == Kind.KIND_BITMASK)
{
typest = stg_.getInstanceOf("bitmask_type");
typest.setAttribute("bitmask", typedecl.getTypeCode());

// Get extension
if(extensions != null && (extensionname = extensions.get("bitmask_type")) != null)
{
extensionst = stg_.getInstanceOf(extensionname);
extensionst.setAttribute("bitmask", typedecl.getTypeCode());
}
}

if(typest != null)
{
Expand Down
27 changes: 23 additions & 4 deletions src/java/com/eprosima/fastcdr/idl/templates/FastCdrCommon.stg
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ scdr << $serializeCasting(typecode=object.typecode)$$preffix$$object.name$;
$endif$
>>

bitfield_serialization(ctx, object) ::= <<$if(member.name)$
scdr << static_cast<$member.spec.cppTypename$>($member.name$());$endif$
>>

object_deserialization(ctx, object, preffix) ::= <<
$if(object.typecode.isType_f)$
$if(object.typecode.contentTypeCode.isType_c)$
Expand All @@ -75,6 +79,12 @@ $if(object.typecode.contentTypeCode.isType_c)$
dcdr \>> seq_length;
dcdr.deserializeArray(reinterpret_cast<uint32_t*>($preffix$$object.name$.data()), seq_length);
}
$elseif(object.typecode.contentTypeCode.isBitmaskType)$
{
$typecode.contentTypeCode.castingType$ seq_length = 0;
dcdr \>> seq_length;
dcdr.deserializeArray(reinterpret_cast<$typecode.contentTypeCode.castingType$*>($preffix$$object.name$.data()), seq_length);
}
$else$
dcdr \>> $preffix$$object.name$;
$endif$
Expand All @@ -83,6 +93,11 @@ $deserializePossibleEnum(typecode=object.typecode, name=object.name, preffix=pre
$endif$
>>

bitfield_deserialization(ctx, object) ::= <<$if(member.name)$$member.spec.cppTypename$ aux_$member.name$;
dcdr \>> aux_$member.name$;
$member.name$(aux_$member.name$);$endif$
>>

// TODO Todos los tipos. MEJORAR. size of 1 no deberia generar alignment.
max_serialized_size(ctx, typecode, var) ::= <<
$if(typecode.isType_13)$
Expand Down Expand Up @@ -332,9 +347,7 @@ $endif$
>>

serializeCasting(typecode) ::= <<
$if(typecode.isType_c)$
(uint32_t)
$endif$
$if(typecode.isType_c)$(uint32_t)$elseif(typecode.isBitmaskType)$($typecode.castingType$)$elseif(typecode.forwarded)$*$endif$
>>

deserializePossibleEnum(typecode, name, preffix) ::= <<
Expand All @@ -344,8 +357,14 @@ $if(typecode.isType_c)$
dcdr \>> enum_value;
$preffix$$name$ = ($typecode.scopedname$)enum_value;
}
$elseif(typecode.isBitmaskType)$
{
$typecode.castingType$ bitmask_value = 0;
dcdr \>> bitmask_value;
$preffix$$name$ = ($typecode.scopedname$)bitmask_value;
}
$else$
dcdr \>> $preffix$$name$;
dcdr \>> $if(typecode.forwarded)$*$endif$$preffix$$name$;
$endif$
>>

Expand Down
2 changes: 2 additions & 0 deletions src/java/com/eprosima/fastcdr/idl/templates/JavaType.stg
Original file line number Diff line number Diff line change
Expand Up @@ -228,3 +228,5 @@ public class $enum.name$
$extension$
}
>>

bitmask_type(ctx, parent, bitmask, extension) ::= <<>>
42 changes: 42 additions & 0 deletions src/java/com/eprosima/fastcdr/idl/templates/TypeObjectHeader.stg
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,14 @@ eProsima_user_DllExport const TypeObject* GetComplete$enum.name$Object();

>>

bitmask_type(ctx, parent, bitmask) ::= <<
eProsima_user_DllExport const TypeIdentifier* Get$bitmask.name$Identifier(bool complete = false);
eProsima_user_DllExport const TypeObject* Get$bitmask.name$Object(bool complete = false);
eProsima_user_DllExport const TypeObject* GetMinimal$bitmask.name$Object();
eProsima_user_DllExport const TypeObject* GetComplete$bitmask.name$Object();

>>

struct_type(ctx, parent, struct, extensions) ::= <<
eProsima_user_DllExport const TypeIdentifier* Get$struct.name$Identifier(bool complete = false);
eProsima_user_DllExport const TypeObject* Get$struct.name$Object(bool complete = false);
Expand All @@ -89,4 +97,38 @@ eProsima_user_DllExport const TypeObject* GetMinimal$union.name$Object();
eProsima_user_DllExport const TypeObject* GetComplete$union.name$Object();

>>

bitset_type(ctx, parent, bitset, extensions) ::= <<
eProsima_user_DllExport const TypeIdentifier* Get$bitset.name$Identifier(bool complete = false);
eProsima_user_DllExport const TypeObject* Get$bitset.name$Object(bool complete = false);
eProsima_user_DllExport const TypeObject* GetMinimal$bitset.name$Object();
eProsima_user_DllExport const TypeObject* GetComplete$bitset.name$Object();

>>

annotation(ctx, annotation) ::= <<
eProsima_user_DllExport const TypeIdentifier* Get$annotation.name$Identifier(bool complete = false);
eProsima_user_DllExport const TypeObject* Get$annotation.name$Object(bool complete = false);
eProsima_user_DllExport const TypeObject* GetMinimal$annotation.name$Object();
eProsima_user_DllExport const TypeObject* GetComplete$annotation.name$Object();

namespace $annotation.name$
{
$annotation.enums : {$enum_type(ctx=ctx, parent=annotation, enum=it)$}; separator="\n"$

$annotation.typeDefs : {$typedef_decl(ctx=ctx, parent=annotation, typedefs=it)$}; separator="\n"$
}

>>

module(ctx, parent, module, definition_list) ::= <<
$definition_list$
>>

definition_list(definitions) ::= <<
$definitions; separator="\n"$
>>

const_decl(ctx, parent, const) ::= <<>>

/***** Utils *****/
Loading

0 comments on commit 3e85b3b

Please sign in to comment.