-wxString wxTextFile::Translate(const wxString& text, wxTextFileType type)
-{
- // don't do anything if there is nothing to do
- if ( type == wxTextFileType_None )
- return text;
-
- // GRG: don't do anything either if it is empty
- if ( text.IsEmpty() )
- return text;
-
- wxString eol = GetEOL(type), result;
-
- // optimization: we know that the length of the new string will be about
- // the same as the length of the old one, so prealloc memory to aviod
- // unnecessary relocations
- result.Alloc(text.Len());
-
- wxChar chLast = 0;
- for ( const wxChar *pc = text.c_str(); *pc; pc++ )
- {
- wxChar ch = *pc;
- switch ( ch ) {
- case _T('\n'):
- // Dos/Unix line termination
- result += eol;
- chLast = 0;
- break;
-
- case _T('\r'):
- if ( chLast == _T('\r') ) {
- // Mac empty line
- result += eol;
- }
- else {
- // just remember it: we don't know whether it is just "\r"
- // or "\r\n" yet
- chLast = _T('\r');
- }
- break;
-
- default:
- if ( chLast == _T('\r') ) {
- // Mac line termination
- result += eol;
-
- // reset chLast to avoid inserting another eol before the
- // next character
- chLast = 0;
- }
-
- // add to the current line
- result += ch;
- }
- }
-
- if ( chLast ) {
- // trailing '\r'
- result += eol;
- }
-
- return result;
-}
-
-#if wxUSE_TEXTFILE
-
-// ----------------------------------------------------------------------------
-// ctors & dtor
-// ----------------------------------------------------------------------------
-
-wxTextFile::wxTextFile(const wxString& strFile) : m_strFile(strFile)
-{
- m_nCurLine = 0;
- m_isOpened = FALSE;
-}
-
-wxTextFile::~wxTextFile()
-{
- // m_file dtor called automatically
-}