cxx: Add header guards for manual definitions

This will be used for things like efl_del

efl_part was a lucky case where the entire class was to be implemented
manually, thus the global header guard was sufficient.
This commit is contained in:
Jean-Philippe Andre 2017-11-28 15:32:02 +09:00
parent 9d14b4cfe8
commit cb7f2d0dd5
2 changed files with 24 additions and 0 deletions

View File

@ -44,6 +44,11 @@ struct function_declaration_generator
.generate(sink, std::make_tuple(_klass_name.namespaces, _klass_name.eolian_name, suffix), add_upper_case_context(ctx)))
return false;
if(!as_generator
("#ifndef EOLIAN_CXX_" << string << "_DECLARATION\n")
.generate(sink, f.c_name, add_upper_case_context(ctx)))
return false;
std::string template_statement(f.template_statement());
if (!template_statement.empty() &&
!as_generator(template_statement << " ")
@ -58,9 +63,17 @@ struct function_declaration_generator
<< string << "(" << (parameter % ", ") << ")" << const_flag << ";\n")
.generate(sink, std::make_tuple(f.return_type, escape_keyword(f.name), f.parameters), ctx))
return false;
if(!as_generator
("#else\n" << scope_tab << "EOLIAN_CXX_" << string << "_DECLARATION\n"
"#endif\n")
.generate(sink, f.c_name, add_upper_case_context(ctx)))
return false;
if(f.is_beta &&
!as_generator("#endif\n").generate(sink, attributes::unused, ctx))
return false;
return true;
}

View File

@ -54,6 +54,11 @@ struct function_definition_generator
.generate(sink, std::make_tuple(_klass_name.namespaces, _klass_name.eolian_name), add_upper_case_context(ctx)))
return false;
if(!as_generator
("#ifndef EOLIAN_CXX_" << string << "_IMPLEMENTATION\n")
.generate(sink, f.c_name, add_upper_case_context(ctx)))
return false;
std::string template_statement(f.template_statement());
if (!template_statement.empty() &&
!as_generator(template_statement << "\n")
@ -161,6 +166,12 @@ struct function_definition_generator
if(!as_generator("}\n").generate(sink, attributes::unused, ctx))
return false;
if(!as_generator
("#else\n" << scope_tab << "EOLIAN_CXX_" << string << "_IMPLEMENTATION\n"
"#endif\n")
.generate(sink, f.c_name, add_upper_case_context(ctx)))
return false;
if(f.is_beta &&
!as_generator("#endif\n").generate(sink, attributes::unused, ctx))
return false;