Added autogen code for queue_types.
diff --git a/aos/build/queues/output/q_struct.rb b/aos/build/queues/output/q_struct.rb
index 6ce1794..14ba385 100644
--- a/aos/build/queues/output/q_struct.rb
+++ b/aos/build/queues/output/q_struct.rb
@@ -1,4 +1,4 @@
-class Target::StructDec < Target::Node
+class Target::StructDec < Target::StructBase
attr_accessor :name,:loc,:parent, :extern
def initialize(name)
@name = name
@@ -7,6 +7,21 @@
def add_member(member)
@members << member
end
+ def add_TypeRegister(o_type, member_func)
+ type = cpp_tree.get(self)
+ if(@loc == o_type.loc) #use relative name
+ tName = type.name
+ else #use full name
+ tName = @loc.to_cpp_id(type.name)
+ end
+ member_func.suite << "#{tName}::TypeGet()"
+ end
+ def create_GetType(type_class, cpp_tree)
+ member_func = CPP::MemberFunc.new(type_class,"const ::aos::MessageType& ","GetType")
+ member_func.static = true
+ member_func.suite << "static ::aos::Once<const ::aos::MessageType> getter(#{type_class.name}::DoGetType)"
+ member_func.suite << CPP::Return.new("*getter.Get()")
+ end
def create(cpp_tree)
return self if(@extern)
orig_namespace = namespace = cpp_tree.get(@loc)
@@ -20,16 +35,10 @@
@members.each do |elem|
type_class.add_member(elem.create_usage(cpp_tree))
end
+ create_DoGetType(type_class, cpp_tree)
+ create_GetType(type_class, cpp_tree)
return type_class
end
- def size()
- return @size if(@size)
- @size = 0
- @members.each do |elem|
- @size += elem.size
- end
- return @size
- end
def getPrintFormat()
return "{" + @members.collect { |elem| elem.toPrintFormat() }.join(", ") + "}"
end
@@ -97,5 +106,10 @@
def zeroCall(suite, parent = "")
@type.zeroCall(suite, parent + "#{@name}.")
end
-
+ def simpleStr()
+ "#{@type.simpleStr()} #{@name}"
+ end
+ def getTypeID()
+ return @type.getTypeID()
+ end
end