//----------------------------------------------------------------------------------------- void process_ordering(MessageSpecMap& mspec) { for (const auto& pp : mspec) { FieldTraitOrder mo; for (const auto& ii : pp.second._fields.get_presence()) mo.insert({&ii}); unsigned cnt(0); for (auto *ii : mo) ii->_pos = ++cnt; } }
//----------------------------------------------------------------------------------------- void process_ordering(MessageSpecMap& mspec) { for (MessageSpecMap::const_iterator mitr(mspec.begin()); mitr != mspec.end(); ++mitr) { FieldTraitOrder mo; for (Presence::const_iterator flitr(mitr->second._fields.get_presence().begin()); flitr != mitr->second._fields.get_presence().end(); ++flitr) mo.insert(FieldTraitOrder::value_type(&*flitr)); unsigned cnt(0); for (FieldTraitOrder::iterator fto(mo.begin()); fto != mo.end(); ++fto) (*fto)->_pos = ++cnt; } }
//----------------------------------------------------------------------------------------- void process_message_group_ordering(const GroupMap& gm) { for (const auto& pp : gm) { FieldTraitOrder go; for (const auto& ii : pp.second._fields.get_presence()) go.insert({&ii}); unsigned gcnt(0); for (auto *ii : go) ii->_pos = ++gcnt; if (!pp.second._groups.empty()) process_message_group_ordering(pp.second._groups); } }
//----------------------------------------------------------------------------------------- void process_message_group_ordering(const GroupMap& gm) { for (GroupMap::const_iterator gitr(gm.begin()); gitr != gm.end(); ++gitr) { FieldTraitOrder go; for (Presence::const_iterator flitr(gitr->second._fields.get_presence().begin()); flitr != gitr->second._fields.get_presence().end(); ++flitr) go.insert(FieldTraitOrder::value_type(&*flitr)); unsigned gcnt(0); for (FieldTraitOrder::iterator fto(go.begin()); fto != go.end(); ++fto) (*fto)->_pos = ++gcnt; if (!gitr->second._groups.empty()) process_message_group_ordering(gitr->second._groups); } }