Files
TestEGk/TestEGk.cpp
T
2014-01-17 17:21:58 +00:00

133 lines
3.8 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2013-2013
//----------------------------------------------------------------------------
// File : TestEGk.cpp Data : 20.11.13 Versione : 1.3a1
// Contenuto : Programma di test della libreria EgtGeomKernel.
//
//
//
// Modifiche : 20.11.13 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
//--------------------------- Include ----------------------------------------
#include "stdafx.h"
#include "TegExecutor.h"
#include "/EgtDev/Include/EGnDllMain.h"
#include "/EgtDev/Include/EgnGetModuleVer.h"
#include "/EgtDev/Include/EGnStringUtils.h"
#include "/EgtDev/Include/EGnStringConverter.h"
#include "/EgtDev/Include/EGnCmdParser.h"
#include "/EgtDev/Include/ENkDllMain.h"
#include "/EgtDev/Include/EGkDllMain.h"
#include "/EgtDev/Include/EGkGeomDB.h"
#include "/EgtDev/Include/EGkGdbExecutor.h"
#include "/EgtDev/Include/EgtPointerOwner.h"
#include "/EgtDev/Include/EgtLogger.h"
#include "/EgtDev/Include/EgtIniFile.h"
//--------------------------- Define -----------------------------------------
#if defined( _WIN64)
#if defined( NDEBUG)
#define STR_EXE "TestEGkR64.exe"
#else
#define STR_EXE "TestEGkD64.exe"
#endif
#elif defined( _WIN32)
#if defined( NDEBUG)
#define STR_EXE "TestEGkR32.exe"
#else
#define STR_EXE "TestEGkD32.exe"
#endif
#endif
using namespace std ;
using namespace egtlogger ;
//----------------------------------------------------------------------------
int
wmain( int argc, wchar_t* argv[])
{
int nErr ;
int nDebug ;
string sIn ;
string sDir ;
string sFileIni ;
// se debug, imposto stampe memory leaks all'uscita
#ifdef _DEBUG
_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF) ;
#endif
// recupero il direttorio del programma e costruisco path file INI
GetModuleDirectory( NULL, sDir) ;
sFileIni = sDir + "\\TestEgk.ini" ;
// imposto direttorio di lavoro
SetCurrentDirectory( sDir) ;
// interpreto i parametri di linea
// nome file di comandi
if ( argc >= 2)
sIn = LPSTR( WtoA( argv[1])) ;
else
sIn = GetPrivateProfileStringUtf8( "General", "Batch", "In.btsc", sFileIni.c_str()) ;
// livello di debug
nDebug = GetPrivateProfileInt( "General", "Debug", 0, sFileIni.c_str()) ;
// inizializzazioni del logger
Logger logger( ( nDebug > 0 ? LL_DEBUG : LL_INFO), "TestEGk") ;
logger.AddOutputStream( cout, false, LL_INFO) ;
logger.AddOutputStream( new(nothrow) ofstream( "TestEgk.log"), true) ;
// inizio programma
LOG_DATETIME( &logger, " Start Test")
// versione del programma
{ string sVer ;
GetModuleVersion( NULL, sVer) ;
LOG_INFO( &logger, string( STR_EXE " v." + sVer).c_str())
}
// versione delle librerie
LOG_INFO( &logger, GetEGnVersion())
LOG_INFO( &logger, GetENkVersion())
LOG_INFO( &logger, GetEGkVersion())
// nessun errore
nErr = 0 ;
// creazione oggetti per esecuzione script
TegExecutor TegExec ;
PtrOwner<ICmdParser> pCmdParser( CreateCmdParser()) ;
if ( ! IsValid( pCmdParser)) {
LOG_ERROR( &logger, "Error in CreateCmdParser")
nErr = 1 ;
goto END ;
}
// inizializzazioni
TegExec.Init( &logger) ;
if ( ! pCmdParser->Init( sIn, &TegExec, &logger)) {
string sout = "Error on Parser.Init (" + sIn + ")" ;
LOG_ERROR( &logger, sout.c_str())
nErr = 2 ;
goto END ;
}
// esecuzione comandi
if ( ! pCmdParser->Run()) {
nErr = 3 ;
goto END ;
}
END :
// fine programma
LOG_DATETIME( &logger, " End Test")
return nErr ;
}