SequenceT Intersperse(const typename SequenceT::value_type & elem, const SequenceT & sequence) { if( sequence.size() <= 1 ) return sequence; SequenceT newSequence; for( const typename SequenceT::value_type & t : sequence ) { newSequence.push_back(t); newSequence.push_back(elem); } // Remove the last occurence of elem from the end of the new sequence. newSequence.pop_back(); return newSequence; }
void SaveData(SequenceT& buf) const { switch (_type) { case OBJTYPE_INTEGER: buf.append((typename SequenceT::value_type const*)&_i, sizeof(uint32_t)); break; case OBJTYPE_REAL: case OBJTYPE_UNREAL: buf.append((typename SequenceT::value_type const*)&_f, sizeof(float)); break; case OBJTYPE_STRING: buf.append(_s); buf.push_back('\0'); break; default: throw base::exception("Unexpected data type: %d.", _type); break; } }