Commit de1cbc40 authored by Jürg Billeter's avatar Jürg Billeter

codegen: Generate typedefs for boolean, integer, and floating types

parent 06eda08d
......@@ -596,20 +596,6 @@ public class Vala.CCodeAttribute : AttributeCache {
}
} else if (sym is Signal) {
return Symbol.camel_case_to_lower_case (sym.name);
} else if (sym is Struct && !sym.external) {
var st = (Struct) sym;
if (st.is_boolean_type ()) {
// typedef for boolean types
return "bool";
} else if (st.is_integer_type ()) {
// typedef for integral types
return "%sint%d_t".printf (st.signed ? "" : "u", st.width);
} else if (st.is_floating_type ()) {
// typedef for floating types
return st.width == 64 ? "double" : "float";
} else {
return "%s%s".printf (CCodeBaseModule.get_ccode_prefix (sym.parent_symbol), sym.name);
}
} else if (sym is LocalVariable || sym is Parameter) {
return sym.name;
} else {
......
......@@ -30,13 +30,26 @@ public abstract class Vala.CCodeStructModule : CCodeBaseModule {
return;
}
if (st.is_boolean_type ()) {
// typedef for boolean types
decl_space.add_include ("stdbool.h");
return;
} else if (st.is_integer_type ()) {
// typedef for integral types
decl_space.add_include ("stdint.h");
if (st.is_boolean_type () || st.is_integer_type () || st.is_floating_type ()) {
if (st.base_struct != null) {
generate_struct_declaration (st.base_struct, decl_space);
decl_space.add_type_declaration (new CCodeTypeDefinition (get_ccode_name (st.base_struct), new CCodeVariableDeclarator (get_ccode_name (st))));
} else {
string typename = null;
if (st.is_boolean_type ()) {
// typedef for boolean types
decl_space.add_include ("stdbool.h");
typename = "bool";
} else if (st.is_integer_type ()) {
// typedef for integral types
decl_space.add_include ("stdint.h");
typename = "%sint%d_t".printf (st.signed ? "" : "u", st.width);
} else if (st.is_floating_type ()) {
// typedef for floating types
typename = (st.width == 64 ? "double" : "float");
}
decl_space.add_type_declaration (new CCodeTypeDefinition (typename, new CCodeVariableDeclarator (get_ccode_name (st))));
}
return;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment