From 280e3abf0ceba93cd26e43c376a761dee9bcc843 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 22 Jul 2019 07:47:48 +0000 Subject: [PATCH] EgtMachKernel 2.1g3 : - aggiunta funzione lua EmtSetWarning per impostare warning da script di simulazione, stima e generazione - aggiunto parametro a EmtSetLastError per forzare uscita soft dalla funzione. --- EgtMachKernel.rc | Bin 11774 -> 11774 bytes MachMgr.h | 2 +- Machine.h | 1 + MachineLua.cpp | 34 ++++++++++++++++++++++++++++++++-- 4 files changed, 34 insertions(+), 3 deletions(-) diff --git a/EgtMachKernel.rc b/EgtMachKernel.rc index 3cc170da622e7de06214f05b93d61201e3a8226e..04ea6a2e5ded0d91b1a83b3c29207355d1d6533a 100644 GIT binary patch delta 97 zcmewt{V#gMFE&Qw&A-`fnHh~IKa|wnoW?bQ1uSxrY4Qod0+^@}R1`^_2jk{d(jGv4 NK<#LXK~l;gTmUD-Bai?9 delta 97 zcmewt{V#gMFE&P_&A-`fnHh~HKa|wnoW?bQ1uSxrY4Qod0+^@}R1`^_2jk{d(jGv4 NK<#LXK~l;gTmU8!BZvS1 diff --git a/MachMgr.h b/MachMgr.h index 7a11b29..1b9a703 100644 --- a/MachMgr.h +++ b/MachMgr.h @@ -76,7 +76,7 @@ class MachMgr : public IMachMgr int GetWarningId( int nInd) const override { if ( nInd >= int( m_Warnings.size())) return 0 ; return m_Warnings[ nInd].first ; } std::string GetWarningString( int nInd) const override - { if ( nInd >= int( m_Warnings.size())) return 0 ; return m_Warnings[ nInd].second ; } + { if ( nInd >= int( m_Warnings.size())) return "" ; return m_Warnings[ nInd].second ; } // Machines bool SetCurrMachine( const std::string& sMachineName) override ; bool GetCurrMachineName( std::string& sMachineName) const override ; diff --git a/Machine.h b/Machine.h index f8b1643..8d6c255 100644 --- a/Machine.h +++ b/Machine.h @@ -302,6 +302,7 @@ class Machine static int LuaEmtWrite( lua_State* L) ; static int LuaEmtSetOutstrokeInfo( lua_State* L) ; static int LuaEmtSetLastError( lua_State* L) ; + static int LuaEmtSetWarning( lua_State* L) ; } ; //---------------------------------------------------------------------------- diff --git a/MachineLua.cpp b/MachineLua.cpp index 8fff8ee..04f44b7 100644 --- a/MachineLua.cpp +++ b/MachineLua.cpp @@ -110,6 +110,8 @@ Machine::LuaInit( const string& sMachineName) m_LuaMgr.RegisterFunction( "EmtSetOutstrokeInfo", Machine::LuaEmtSetOutstrokeInfo) ; // registro la funzione per impostare informazioni di errore m_LuaMgr.RegisterFunction( "EmtSetLastError", Machine::LuaEmtSetLastError) ; + // registro la funzione per aggiungere informazioni di warning + m_LuaMgr.RegisterFunction( "EmtSetWarning", Machine::LuaEmtSetWarning) ; return true ; } @@ -974,11 +976,13 @@ Machine::LuaEmtSetOutstrokeInfo( lua_State* L) int Machine::LuaEmtSetLastError( lua_State* L) { - // 2 parametri : nErrId, sErrDesc + // 2 o 3 parametri : nErrId, sErrDesc [, bSoftExit = false] int nErrId ; LuaCheckParam( L, 1, nErrId) string sErrDesc ; LuaCheckParam( L, 2, sErrDesc) + bool bSoftExit = false ; + LuaGetParam( L, 3, bSoftExit) ; LuaClearStack( L) ; // verifico ci sia una macchina attiva if ( m_pMchLua == nullptr) @@ -986,5 +990,31 @@ Machine::LuaEmtSetLastError( lua_State* L) // assegno i dati bool bOk = ( m_pMchLua->m_pMchMgr != nullptr && m_pMchLua->m_pMchMgr->SetLastError( nErrId, sErrDesc)) ; string sOut = "(" + ToString( nErrId) + ") " + sErrDesc ; - return luaL_error( L, sOut.c_str()) ; + // se uscita dolce + if ( bSoftExit) { + LuaSetParam( L, true) ; + return 1 ; + } + else + return luaL_error( L, sOut.c_str()) ; +} + +//---------------------------------------------------------------------------- +int +Machine::LuaEmtSetWarning( lua_State* L) +{ + // 2 parametri : nWarnId, sWarnDesc + int nWarnId ; + LuaCheckParam( L, 1, nWarnId) + string sWarnDesc ; + LuaCheckParam( L, 2, sWarnDesc) + LuaClearStack( L) ; + // verifico ci sia una macchina attiva + if ( m_pMchLua == nullptr) + return luaL_error( L, " Unknown Machine") ; + // assegno i dati + bool bOk = ( m_pMchLua->m_pMchMgr != nullptr && m_pMchLua->m_pMchMgr->SetWarning( nWarnId, sWarnDesc)) ; + // assegno risultato + LuaSetParam( L, true) ; + return 1 ; }