|
|
class <%= @name %> {
|
|
virtual ~<%= @name %>() = 0;
|
|
public:
|
|
<% if !(@attributes.nil?) %>
|
|
<%- @attributes.not_nil!.each do |attr| -%>
|
|
<%- attr.class_name = @name -%>
|
|
<%-= attr.to_s %>
|
|
<%- end -%>
|
|
<% end %>
|
|
|
|
<% if !(@attributeafters.nil?) %>
|
|
<%- @attributeafters.not_nil!.each do |attr| -%>
|
|
<%- attr.class_name = @name -%>
|
|
<%-= attr.to_s %>
|
|
<%- end -%>
|
|
<% end %>
|
|
|
|
<% if !(@bitfields.nil?) %>
|
|
<%- @bitfields.not_nil!.each do |attr| -%>
|
|
<%- attr.class_name = @name -%>
|
|
<%-= attr.to_s %>
|
|
<%- end -%>
|
|
<% end %>
|
|
|
|
<% if !(@repeats.nil?) %>
|
|
<%- @repeats.not_nil!.each do |attr| -%>
|
|
<%- attr.class_name = @name -%>
|
|
<%-= attr.to_s %>
|
|
<%- end -%>
|
|
<% end %>
|
|
|
|
private:
|
|
void dummy_function()
|
|
{
|
|
<% if !@size.nil? %>
|
|
<%- sz = @size.not_nil! -%>
|
|
<% if !(@attributes.nil?) %>
|
|
<%- @attributes.not_nil!.each do |attr|-%>
|
|
<%- if attr.start > sz -%>
|
|
<%- raise "attribute starts after end: "+attr.name+" in class "+@name -%>
|
|
<%- end -%>
|
|
static_assert(<%= attr.name %>_end_position()<=<%= sz%>, "attribute past the end");
|
|
<%- end -%>
|
|
<%- end -%>
|
|
<% if !(@bitfields.nil?) %>
|
|
<%- @bitfields.not_nil!.each do |attr|-%>
|
|
<%- if attr.start > sz -%>
|
|
<%- raise "bitfield starts after end: "+attr.name+" in class "+@name -%>
|
|
<%- end -%>
|
|
static_assert(<%= attr.name %>_end_position()<=<%= sz%>, "attribute past the end");
|
|
<%- end -%>
|
|
<%- end -%>
|
|
<% end %>
|
|
}
|
|
|
|
};
|