Files
EgtGeneral/CmdScanner.cpp
T

82 lines
2.1 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2013-2013
//----------------------------------------------------------------------------
// File : CmdScanner.cpp Data : 25.11.13 Versione : 1.3a1
// Contenuto : Implementazione della classe CmdScanner.
// Scansione di file di testo con codifica UTF-8 (anche con BOM)
// e quindi anche ASCII.
//
//
// Modifiche : 19.01.13 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
//--------------------------- Include ----------------------------------------
#include "stdafx.h"
#include "CmdScanner.h"
#include "/EgtDev/Include/EgnStringUtils.h"
#include "/EgtDev/Include/EgnStringConverter.h"
using namespace std ;
//----------------------------------------------------------------------------
CmdScanner::CmdScanner( void)
{
m_nLineNbr = 0 ;
}
//----------------------------------------------------------------------------
CmdScanner::~CmdScanner( void)
{
Terminate() ;
}
//----------------------------------------------------------------------------
bool
CmdScanner::Init( string sCmdFile)
{
// se già aperto, lo chiudo
Terminate() ;
// apertura del file di ingresso
m_CmdFile.open( stringtoW( sCmdFile), ios::in) ;
// reset numero linea corrente
m_nLineNbr = 0 ;
// salvo path file
m_sFName = sCmdFile ;
return ( ! m_CmdFile.fail()) ;
}
//----------------------------------------------------------------------------
bool
CmdScanner::Terminate( void)
{
if ( m_CmdFile.is_open())
m_CmdFile.close() ;
return true ;
}
//----------------------------------------------------------------------------
bool
CmdScanner::GetLine( string& sLine)
{
if ( ! m_CmdFile.is_open())
return false ;
do {
if ( ! getline( m_CmdFile, sLine))
return false ;
if ( m_nLineNbr == 0)
TrimUtf8Bom( sLine) ;
TrimLeft( sLine) ;
m_nLineNbr ++ ;
} while ( sLine.empty() || sLine.find( "//") == 0) ;
return true ;
}