make EqualsNoTime actually work for not-structs...
Change-Id: Ieb0f4d9904fb4d01a6603bf2ad33e16b66ad2a42
diff --git a/aos/build/queues/output/message_dec.rb b/aos/build/queues/output/message_dec.rb
index 6290489..781d5b3 100644
--- a/aos/build/queues/output/message_dec.rb
+++ b/aos/build/queues/output/message_dec.rb
@@ -115,6 +115,10 @@
@members.each do |elem|
if elem.respond_to? :create_EqualsNoTime
member_func.suite << "if (!other.#{elem.name}.EqualsNoTime(#{elem.name})) return false;"
+ elsif elem.respond_to?(:length) && elem.member_type.respond_to?(:create_EqualsNoTime)
+ 0.upto(elem.length - 1) do |i|
+ member_func.suite << "if (!other.#{elem.name}[#{i}].EqualsNoTime(#{elem.name}[#{i}])) return false;"
+ end
else
member_func.suite << "if (other.#{elem.name} != #{elem.name}) return false;"
end
@@ -228,6 +232,7 @@
create_DoGetType(type_class, cpp_tree)
create_DefaultConstructor(type_class, cpp_tree)
create_InOrderConstructor(type_class, cpp_tree)
+ create_EqualsNoTime(type_class, cpp_tree)
b_namespace = cpp_tree.get(b_loc = self.class.builder_loc(@loc))
@@ -367,6 +372,9 @@
def type()
return "::std::array< #{@type.type()}, #{@length}>"
end
+ def member_type()
+ return @type
+ end
def simpleStr()
return "#{@type.type} #{@name}[#{@length}]"
end
diff --git a/aos/build/queues/output/q_struct.rb b/aos/build/queues/output/q_struct.rb
index 8e2e811..4c02ecd 100644
--- a/aos/build/queues/output/q_struct.rb
+++ b/aos/build/queues/output/q_struct.rb
@@ -85,8 +85,11 @@
@members.each do |elem|
if elem.respond_to? :create_EqualsNoTime
member_func.suite << "if (!other.#{elem.name}.EqualsNoTime(#{elem.name})) return false;"
+ elsif elem.respond_to?(:length) && elem.member_type.respond_to?(:create_EqualsNoTime)
+ 0.upto(elem.length - 1) do |i|
+ member_func.suite << "if (!other.#{elem.name}[#{i}].EqualsNoTime(#{elem.name}[#{i}])) return false;"
+ end
else
- puts elem.class.to_s + ' ' + elem.name.to_s
member_func.suite << "if (other.#{elem.name} != #{elem.name}) return false;"
end
end