//------------------------------------------------------------------------------------------------- unsigned MessageBase::encode(ostream& to) const { const std::ios::pos_type where(to.tellp()); for (Positions::const_iterator itr(_pos.begin()); itr != _pos.end(); ++itr) { #if defined POPULATE_METADATA check_set_rlm(itr->second); #endif Presence::const_iterator fpitr(_fp.get_presence().end()); if (!_fp.get(itr->second->_fnum, fpitr, FieldTrait::suppress)) // some fields are not encoded until unsuppressed (eg. checksum) { itr->second->encode(to); if (_fp.get(itr->second->_fnum, fpitr, FieldTrait::group)) encode_group(itr->second->_fnum, to); } } return to.tellp() - where; }
//------------------------------------------------------------------------------------------------- size_t MessageBase::encode(char *to) const { const char *where(to); for (Positions::const_iterator itr(_pos.begin()); itr != _pos.end(); ++itr) { #if defined POPULATE_METADATA check_set_rlm(itr->second); #endif Presence::const_iterator fpitr(_fp.get_presence().end()); if (!_fp.get(itr->second->_fnum, fpitr, FieldTrait::suppress)) // some fields are not encoded until unsuppressed (eg. checksum) { to += itr->second->encode(to); if (_fp.get(itr->second->_fnum, fpitr, FieldTrait::group)) to += encode_group(itr->second->_fnum, to); } } return to - where; }