| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        reader.cpp
 
- // Purpose:     Life! pattern reader (writer coming soon)
 
- // Author:      Guillermo Rodriguez Garcia, <guille@iies.es>
 
- // Modified by:
 
- // Created:     Jan/2000
 
- // Copyright:   (c) 2000, Guillermo Rodriguez Garcia
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- // ==========================================================================
 
- // headers, declarations, constants
 
- // ==========================================================================
 
- // For compilers that support precompilation, includes "wx/wx.h".
 
- #include "wx/wxprec.h"
 
- #ifdef __BORLANDC__
 
-     #pragma hdrstop
 
- #endif
 
- #ifndef WX_PRECOMP
 
-     #include "wx/wx.h"
 
- #endif
 
- #include "wx/txtstrm.h"
 
- #include "reader.h"
 
- // ==========================================================================
 
- // LifeReader
 
- // ==========================================================================
 
- #define LIFE_CHECKVAL( msg )                                        \
 
-     if (!m_ok)                                                      \
 
-     {                                                               \
 
-         wxMessageBox( msg, _("Error"), wxICON_EXCLAMATION | wxOK ); \
 
-         return;                                                     \
 
-     }
 
- LifeReader::LifeReader(wxInputStream& is)
 
- {
 
-     wxBufferedInputStream buff_is(is);
 
-     wxTextInputStream     text_is(buff_is);
 
-     wxString              line, rest;
 
-     // check stream
 
-     m_ok = is.IsOk();
 
-     LIFE_CHECKVAL(_("Couldn't read any data"));
 
-     // read signature
 
-     m_ok = text_is.ReadLine().Contains(wxT("#Life 1.05"));
 
-     LIFE_CHECKVAL(_("Error reading signature. Not a Life pattern?"));
 
-     // read description
 
-     m_description = wxEmptyString;
 
-     line = text_is.ReadLine();
 
-     while (buff_is.IsOk() && line.StartsWith(wxT("#D"), &rest))
 
-     {
 
-         m_description += rest.Trim(false);
 
-         m_description += wxT("\n");
 
-         line = text_is.ReadLine();
 
-     }
 
-     m_ok = buff_is.IsOk();
 
-     LIFE_CHECKVAL(_("Unexpected EOF while reading description"));
 
-     // read rules
 
-     m_ok = line.StartsWith(wxT("#N"));
 
-     LIFE_CHECKVAL(_("Sorry, non-conway rules not supported yet"));
 
-     // read shape
 
-     while (buff_is.IsOk())
 
-     {
 
-         line = ( text_is.ReadLine() ).Trim();
 
-         if (!line.empty())
 
-         {
 
-             if (line.StartsWith(wxT("#P "), &rest))
 
-                 m_shape.Add(rest);
 
-             else
 
-                 m_shape.Add(line);
 
-         }
 
-     }
 
- }
 
 
  |