//----------------------------------------------------------------------------------------- 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 (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); } }