blob: bd91191927291a89e81d0980255fa98ec83bcbbe [file] [log] [blame]
Brian Silverman76156ca2014-02-22 13:10:42 -08001require File.dirname(__FILE__) + '/load.rb'
2
3require 'fileutils'
4
5TypeNames = [8, 16, 32, 64].collect do |size|
6 ["uint#{size}_t", "int#{size}_t"]
7end.flatten + ['bool', 'float', 'char', 'double']
8
9FileUtils.mkdir_p(File.dirname(ARGV[0]))
10WriteIffChanged.open(ARGV[0]) do |output|
11 output.puts <<END
12// This file is generated by #{File.expand_path(__FILE__)}.
13// DO NOT EDIT BY HAND!
14
15#include <stdint.h>
16
17namespace aos {
18
19enum class QueuePrimitiveTypes : uint32_t {
20#{TypeNames.collect do |name|
21 message_element = Target::MessageElement.new(name, 'value')
22 statement = MessageElementStmt.new(name, 'value')
23 message_element.size = statement.size
24 next <<END2
25 #{name}_p = #{message_element.getTypeID()},
26END2
27end.join('')}
28};
29
30// A class for mapping an actual type to a type ID.
31// There are specializations for all of the actual primitive types.
32template<typename T>
33class TypeID {
34 public:
35 static const uint32_t id;
36};
37
38#{TypeNames.collect do |name|
39 message_element = Target::MessageElement.new(name, 'value')
40 statement = MessageElementStmt.new(name, 'value')
41 message_element.size = statement.size
42 next <<END2
43template<>
44class TypeID<#{name}> {
45 public:
46 static const uint32_t id = #{message_element.getTypeID()};
47};
48END2
49end.join('')}
50} // namespace aos
51END
52end