| 198 | } |
| 199 | |
| 200 | virtual void endFrame() |
| 201 | { |
| 202 | char buffer[ 256 ]; |
| 203 | |
| 204 | for( U32 i = 0; i < mRecords.size(); ++ i ) |
| 205 | { |
| 206 | if( i != 0 ) |
| 207 | mStream.write( 1, "," ); |
| 208 | |
| 209 | SampleRecord& record = mRecords[ i ]; |
| 210 | if( record.mSet ) |
| 211 | { |
| 212 | if( record.mType == TypeBool ) |
| 213 | { |
| 214 | if( record.mValue.mBool ) |
| 215 | mStream.write( 4, "true" ); |
| 216 | else |
| 217 | mStream.write( 5, "false" ); |
| 218 | } |
| 219 | else if( record.mType == TypeS32 ) |
| 220 | { |
| 221 | dSprintf( buffer, sizeof( buffer ), "%d", record.mValue.mS32 ); |
| 222 | mStream.write( dStrlen( buffer ), buffer ); |
| 223 | } |
| 224 | else if( record.mType == TypeF32 ) |
| 225 | { |
| 226 | dSprintf( buffer, sizeof( buffer ), "%f", record.mValue.mF32 ); |
| 227 | mStream.write( dStrlen( buffer ), buffer ); |
| 228 | } |
| 229 | else if( record.mType == TypeString ) |
| 230 | { |
| 231 | //FIXME: does not do doubling of double quotes in the string at the moment |
| 232 | mStream.write( 1, "\"" ); |
| 233 | mStream.write( dStrlen( record.mValue.mString ), record.mValue.mString ); |
| 234 | mStream.write( 1, "\"" ); |
| 235 | } |
| 236 | else |
| 237 | AssertWarn( false, "CSVSamplerBackend::endFrame - bug: invalid sample type" ); |
| 238 | } |
| 239 | |
| 240 | record.clean(); |
| 241 | } |
| 242 | |
| 243 | newline(); |
| 244 | } |
| 245 | |
| 246 | void newline() |
| 247 | { |