got the ruby-generated type info actually working
diff --git a/aos/build/queues/output/q_struct.rb b/aos/build/queues/output/q_struct.rb
index 14ba385..868f1f2 100644
--- a/aos/build/queues/output/q_struct.rb
+++ b/aos/build/queues/output/q_struct.rb
@@ -7,20 +7,12 @@
 	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 = CPP::MemberFunc.new(type_class,"const ::aos::MessageType*","GetType")
+		type_class.add_member(member_func)
 		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()")
+		member_func.suite << CPP::Return.new("getter.Get()")
 	end
 	def create(cpp_tree)
 		return self if(@extern)
@@ -90,6 +82,11 @@
 	def create_usage(cpp_tree)
 		return "#{type_name(cpp_tree)} #{@name}"
 	end
+	def add_TypeRegister(cpp_tree, o_type, member_func)
+		type = cpp_tree.get(@type)
+		tName = @type.loc.to_cpp_id(type.name)
+		member_func.suite << "#{tName}::GetType()"
+	end
 	def fetchPrintArgs(args, parent = "")
 		@type.fetchPrintArgs(args, parent + "#{@name}.")
 	end