00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "stdgeorges.h"
00027 #include "nel/misc/file.h"
00028 #include "nel/misc/i_xml.h"
00029 #include "nel/misc/o_xml.h"
00030 #include "nel/georges/form_file.h"
00031
00032 namespace NLGEORGES
00033 {
00034
00036
00038
00039 CFormFile::CFormFile()
00040 {
00041 }
00042
00043 CFormFile::~CFormFile()
00044 {
00045 }
00046
00047 void CFormFile::serial( NLMISC::IStream& s )
00048 {
00049 s.xmlPush( "File_of_forms" );
00050 s.serialCheck( (uint32)'FORM' );
00051 s.serialVersion( 0 );
00052 s.serialCont( lform );
00053 s.xmlPop();
00054 }
00055
00056 void CFormFile::Load( const CStringEx _sxfullname )
00057 {
00058 NLMISC::CIFile fileIn;
00059 fileIn.open( CStringEx( _sxfullname ) );
00060 NLMISC::CIXml input;
00061 input.init( fileIn );
00062 serial( input );
00063 }
00064
00065 void CFormFile::Save( const CStringEx _sxfullname )
00066 {
00067 lform.front().SetDate( "Temporary out of date" );
00068 NLMISC::COFile fileOut;
00069 fileOut.open( CStringEx( _sxfullname ) );
00070 NLMISC::COXml output;
00071 output.init( &fileOut );
00072 serial( output );
00073 output.flush();
00074 fileOut.close();
00075 }
00076
00077 void CFormFile::GetForm( CForm& _f ) const
00078 {
00079 _f = lform.front();
00080 }
00081
00082 void CFormFile::GetForm( CForm& _f, const CStringEx& _sxdate ) const
00083 {
00084 std::list< CForm >::const_iterator cit = lform.begin();
00085 _f = *cit;
00086 while( (cit != lform.end())&&( _sxdate <= cit->GetDate() ) )
00087 _f += *(++cit);
00088 }
00089
00090 void CFormFile::SetForm( CForm& _f )
00091 {
00092 if( lform.empty() )
00093 {
00094 lform.push_front( _f );
00095 return;
00096 }
00097
00098 if( ( !_f.GetModified() )||( _f == lform.front() ) )
00099 return;
00100
00101 CForm f = lform.front();
00102 f -= _f;
00103 lform.pop_front();
00104 lform.push_front( f );
00105 lform.push_front( _f );
00106 }
00107
00108 }