efl::eolian::grammar::attributes::klass_def klass_def(klass, opts.unit);
std::vector<efl::eolian::grammar::attributes::klass_def> klasses{klass_def};
- std::vector<efl::eolian::grammar::attributes::klass_def> forward_klasses{};
+ std::set<efl::eolian::grammar::attributes::klass_def> forward_klasses{};
std::set<std::string> c_headers;
std::set<std::string> cpp_headers;
c_headers.insert(eolian_class_file_get(klass2) + std::string(".h"));
cpp_headers.insert(eolian_class_file_get(klass2) + std::string(".hh"));
efl::eolian::grammar::attributes::klass_def cls{klass2, opts.unit};
- if(std::find(forward_klasses.begin(), forward_klasses.end(), cls) == forward_klasses.end())
- forward_klasses.push_back(cls);
+ forward_klasses.insert(cls);
};
auto complex_function
= [&] (efl::eolian::grammar::attributes::complex_type_def const& complex)
c_headers.insert(eolian_class_file_get(inherit) + std::string(".h"));
cpp_headers.insert(eolian_class_file_get(inherit) + std::string(".hh"));
efl::eolian::grammar::attributes::klass_def klass3{inherit, opts.unit};
- if(std::find(forward_klasses.begin(), forward_klasses.end(), klass3) == forward_klasses.end())
- forward_klasses.push_back(klass3);
+ forward_klasses.insert(klass3);
klass_function(inherit);
}
std::tuple<std::string, std::set<std::string>&, std::set<std::string>&
, std::string const&
, std::vector<efl::eolian::grammar::attributes::klass_def>&
- , std::vector<efl::eolian::grammar::attributes::klass_def>&
+ , std::set<efl::eolian::grammar::attributes::klass_def> const&
, std::vector<efl::eolian::grammar::attributes::klass_def>&
, std::vector<efl::eolian::grammar::attributes::klass_def>&
> attributes
{
return !(lhs == rhs);
}
+ friend inline bool operator<(klass_def const& lhs, klass_def const& rhs)
+ {
+ return lhs.eolian_name < rhs.eolian_name
+ || lhs.cxx_name < rhs.cxx_name
+ || lhs.namespaces < rhs.namespaces;
+ }
klass_def(std::string eolian_name, std::string cxx_name, std::string filename
, std::vector<std::string> namespaces