diff --git a/src/main/java/com/eprosima/idl/parser/typecode/MemberedTypeCode.java b/src/main/java/com/eprosima/idl/parser/typecode/MemberedTypeCode.java index 34a31486..9498b498 100644 --- a/src/main/java/com/eprosima/idl/parser/typecode/MemberedTypeCode.java +++ b/src/main/java/com/eprosima/idl/parser/typecode/MemberedTypeCode.java @@ -16,6 +16,8 @@ import java.security.MessageDigest; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; import java.util.function.Function; import java.util.LinkedHashMap; import java.util.List; @@ -126,11 +128,39 @@ public boolean getHasScope() return !m_scope.isEmpty(); } + /*! + * @ingroup api_for_stg + * @brief This function can be used to return all members ordered by index (insertion). + * @return List of all members ordered by index. + */ public List getMembers() { return new ArrayList(m_members.values()); } + private class ComparatorById implements Comparator + { + @Override + public int compare( + Member m1, + Member m2) + { + return m1.get_id() - m2.get_id(); + } + } + + /*! + * @ingroup api_for_stg + * @brief This function can be used to return all members ordered by MemberId. + * @return List of all members ordered by MemberId. + */ + public List getMembersById() + { + ArrayList ret_list = new ArrayList(m_members.values()); + Collections.sort(ret_list, new ComparatorById()); + return ret_list; + } + public int getMembersSize() { return m_members.size();