blob: 2c9594e22a69385f6d719d6d863ee848ff414948 [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 {
Brian Silvermanff12c9f2014-03-19 17:53:29 -070018namespace queue_primitive_types {
Brian Silverman76156ca2014-02-22 13:10:42 -080019#{TypeNames.collect do |name|
20 message_element = Target::MessageElement.new(name, 'value')
21 statement = MessageElementStmt.new(name, 'value')
22 message_element.size = statement.size
23 next <<END2
Brian Silvermanff12c9f2014-03-19 17:53:29 -070024 static const uint32_t #{name}_p = #{message_element.getTypeID()};
Brian Silverman76156ca2014-02-22 13:10:42 -080025END2
26end.join('')}
Brian Silvermanff12c9f2014-03-19 17:53:29 -070027} // namespace queue_primitive_types
Brian Silverman76156ca2014-02-22 13:10:42 -080028
29// A class for mapping an actual type to a type ID.
30// There are specializations for all of the actual primitive types.
31template<typename T>
32class TypeID {
33 public:
34 static const uint32_t id;
35};
36
37#{TypeNames.collect do |name|
38 message_element = Target::MessageElement.new(name, 'value')
39 statement = MessageElementStmt.new(name, 'value')
40 message_element.size = statement.size
41 next <<END2
42template<>
43class TypeID<#{name}> {
44 public:
45 static const uint32_t id = #{message_element.getTypeID()};
46};
47END2
48end.join('')}
49} // namespace aos
50END
51end