Garmin Fleet Management Controller  2.19.0
CsvWriter.cpp
Go to the documentation of this file.
1 /*********************************************************************
2 *
3 * MODULE NAME:
4 * CsvWriter.cpp
5 *
6 * Copyright 2012 by Garmin Ltd. or its subsidiaries.
7 *---------------------------------------------------------------------
8 * $NoKeywords$
9 *********************************************************************/
10 
11 #include "stdafx.h"
12 #include "CsvWriter.h"
13 
14 CsvWriter::CsvWriter(CFile * file) :
15  m_file( file )
16  {
17 
18  }
19 
21  {
22 
23  }
24 
25 void CsvWriter::WriteValue(char * value)
26  {
27  WriteValue( value, (int) strlen( value ) );
28  }
29 
30 void CsvWriter::WriteValue(char * value, int len)
31  {
32  bool escape = ( ( 0 != strchr( value, ',' ) ) || ( 0 != strchr( value, '\n' ) ) );
33  if( escape )
34  {
35  m_file->Write( "\"", 1 );
36  }
37  int w = 0;
38  char * context = NULL;
39  char * pch = strtok_s( value, "\"" , &context);
40  while( pch != NULL )
41  {
42  m_file->Write( pch, max( len-w, len ) );
43  len += (int) strlen( pch );
44  pch = strtok_s( NULL, "\"", &context );
45  if( pch != NULL )
46  {
47  m_file->Write( "\"", 1 );
48  }
49  }
50  if( escape)
51  {
52  m_file->Write( "\"", 1 );
53  }
54  m_file->Write( ",", 1 );
55  }
56 
58  {
59  m_file->Write( "\n", 1 );
60  m_file->Flush();
61  }
62 
64  {
65  m_file->Flush();
66  }
CsvWriter(CFile *file)
Definition: CsvWriter.cpp:14
void WriteValue(char *value)
Definition: CsvWriter.cpp:25
CFile * m_file
Definition: CsvWriter.h:29
virtual ~CsvWriter()
Definition: CsvWriter.cpp:20
void Finish()
Definition: CsvWriter.cpp:63
void NewLine()
Definition: CsvWriter.cpp:57