added mappings from C types to their queue type IDs
diff --git a/aos/build/queues/queue_primitives.rb b/aos/build/queues/queue_primitives.rb
new file mode 100644
index 0000000..bd91191
--- /dev/null
+++ b/aos/build/queues/queue_primitives.rb
@@ -0,0 +1,52 @@
+require File.dirname(__FILE__) + '/load.rb'
+
+require 'fileutils'
+
+TypeNames = [8, 16, 32, 64].collect do |size|
+ ["uint#{size}_t", "int#{size}_t"]
+end.flatten + ['bool', 'float', 'char', 'double']
+
+FileUtils.mkdir_p(File.dirname(ARGV[0]))
+WriteIffChanged.open(ARGV[0]) do |output|
+ output.puts <<END
+// This file is generated by #{File.expand_path(__FILE__)}.
+// DO NOT EDIT BY HAND!
+
+#include <stdint.h>
+
+namespace aos {
+
+enum class QueuePrimitiveTypes : uint32_t {
+#{TypeNames.collect do |name|
+ message_element = Target::MessageElement.new(name, 'value')
+ statement = MessageElementStmt.new(name, 'value')
+ message_element.size = statement.size
+ next <<END2
+ #{name}_p = #{message_element.getTypeID()},
+END2
+end.join('')}
+};
+
+// A class for mapping an actual type to a type ID.
+// There are specializations for all of the actual primitive types.
+template<typename T>
+class TypeID {
+ public:
+ static const uint32_t id;
+};
+
+#{TypeNames.collect do |name|
+ message_element = Target::MessageElement.new(name, 'value')
+ statement = MessageElementStmt.new(name, 'value')
+ message_element.size = statement.size
+ next <<END2
+template<>
+class TypeID<#{name}> {
+ public:
+ static const uint32_t id = #{message_element.getTypeID()};
+};
+END2
+end.join('')}
+} // namespace aos
+END
+end