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;
}
Exemple #2
0
		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;
			}
		}