EgtMachKernel 2.2d3 :
- modifiche per consentire richiami incrociati tra funzioni lua di macchina senza distruggere riferimento a macchina e variabili globali.
This commit is contained in:
+37
-10
@@ -107,6 +107,7 @@ Machine::LuaInit( const string& sMachineName)
|
||||
m_LuaMgr.RegisterFunction( "EmtAddLinearMove", Machine::LuaEmtAddLinearMove) ;
|
||||
m_LuaMgr.RegisterFunction( "EmtAddArcMove", Machine::LuaEmtAddArcMove) ;
|
||||
// registro le funzioni di lettura entità CL per lua
|
||||
m_LuaMgr.RegisterFunction( "EmtGetMoveType", Machine::LuaEmtGetMoveType) ;
|
||||
m_LuaMgr.RegisterFunction( "EmtGetAxesPos", Machine::LuaEmtGetAxesPos) ;
|
||||
// registro le funzioni di scrittura part program per lua
|
||||
m_LuaMgr.RegisterFunction( "EmtWrite", Machine::LuaEmtWrite) ;
|
||||
@@ -143,14 +144,15 @@ Machine::LuaExistsFunction( const string& sFun) const
|
||||
if ( nOldCtx != m_pMchMgr->GetContextId())
|
||||
ExeSetCurrentContext( m_pMchMgr->GetContextId()) ;
|
||||
// imposto l'oggetto corrente per Lua
|
||||
Machine* pOldMchLua = m_pMchLua ;
|
||||
m_pMchLua = const_cast<Machine*>( this) ;
|
||||
// verifico esistenza della funzione
|
||||
bool bOk = m_LuaMgr.ExistsFunction( sFun) ;
|
||||
// ripristino contesto originale
|
||||
if ( nOldCtx != m_pMchMgr->GetContextId())
|
||||
ExeSetCurrentContext( nOldCtx) ;
|
||||
// reset dell'oggetto corrente per Lua
|
||||
m_pMchLua = nullptr ;
|
||||
// ripristino dell'oggetto corrente per Lua
|
||||
m_pMchLua = pOldMchLua ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
@@ -169,17 +171,18 @@ Machine::LuaCallFunction( const string& sFun, bool bSetModifiedOff)
|
||||
ExeDisableModified() ;
|
||||
}
|
||||
// imposto l'oggetto corrente per Lua
|
||||
Machine* pOldMchLua = m_pMchLua ;
|
||||
m_pMchLua = this ;
|
||||
// eseguo la funzione
|
||||
bool bOk = m_LuaMgr.CallFunction( sFun, 0) ;
|
||||
// reset dell'oggetto corrente per Lua
|
||||
m_pMchLua = nullptr ;
|
||||
// ripristino gestione segnalazione modifiche progetto
|
||||
if ( bSetModifiedOff && bOldMod)
|
||||
ExeEnableModified() ;
|
||||
// ripristino contesto originale
|
||||
if ( nOldCtx != m_pMchMgr->GetContextId())
|
||||
ExeSetCurrentContext( nOldCtx) ;
|
||||
// ripristino dell'oggetto corrente per Lua
|
||||
m_pMchLua = pOldMchLua ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
@@ -192,14 +195,15 @@ Machine::LuaCreateGlobTable( const string& sName)
|
||||
if ( nOldCtx != m_pMchMgr->GetContextId())
|
||||
ExeSetCurrentContext( m_pMchMgr->GetContextId()) ;
|
||||
// imposto l'oggetto corrente per Lua
|
||||
Machine* pOldMchLua = m_pMchLua ;
|
||||
m_pMchLua = this ;
|
||||
// eseguo la funzione
|
||||
bool bOk = ::LuaCreateGlobTable( m_LuaMgr.GetLuaState(), sName) ;
|
||||
// ripristino contesto originale
|
||||
if ( nOldCtx != m_pMchMgr->GetContextId())
|
||||
ExeSetCurrentContext( nOldCtx) ;
|
||||
// reset dell'oggetto corrente per Lua
|
||||
m_pMchLua = nullptr ;
|
||||
// ripristino dell'oggetto corrente per Lua
|
||||
m_pMchLua = pOldMchLua ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
@@ -212,17 +216,39 @@ Machine::LuaResetGlobVar( const string& sName)
|
||||
if ( nOldCtx != m_pMchMgr->GetContextId())
|
||||
ExeSetCurrentContext( m_pMchMgr->GetContextId()) ;
|
||||
// imposto l'oggetto corrente per Lua
|
||||
Machine* pOldMchLua = m_pMchLua ;
|
||||
m_pMchLua = this ;
|
||||
// eseguo la funzione
|
||||
bool bOk = ::LuaResetGlobVar( m_LuaMgr.GetLuaState(), sName) ;
|
||||
// ripristino contesto originale
|
||||
if ( nOldCtx != m_pMchMgr->GetContextId())
|
||||
ExeSetCurrentContext( nOldCtx) ;
|
||||
// reset dell'oggetto corrente per Lua
|
||||
m_pMchLua = nullptr ;
|
||||
// ripristino dell'oggetto corrente per Lua
|
||||
m_pMchLua = pOldMchLua ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Machine::LuaChangeNameGlobVar( const string& sOldName, const string& sNewName)
|
||||
{
|
||||
// imposto contesto corretto
|
||||
int nOldCtx = ExeGetCurrentContext() ;
|
||||
if ( nOldCtx != m_pMchMgr->GetContextId())
|
||||
ExeSetCurrentContext( m_pMchMgr->GetContextId()) ;
|
||||
// imposto l'oggetto corrente per Lua
|
||||
Machine* pOldMchLua = m_pMchLua ;
|
||||
m_pMchLua = this ;
|
||||
// eseguo la funzione
|
||||
bool bExists = ::LuaChangeNameGlobVar( m_LuaMgr.GetLuaState(), sOldName, sNewName) ;
|
||||
// ripristino contesto originale
|
||||
if ( nOldCtx != m_pMchMgr->GetContextId())
|
||||
ExeSetCurrentContext( nOldCtx) ;
|
||||
// ripristino dell'oggetto corrente per Lua
|
||||
m_pMchLua = pOldMchLua ;
|
||||
return bExists ;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool
|
||||
Machine::LuaLoadMachine( const string& sFile)
|
||||
@@ -237,6 +263,7 @@ Machine::LuaLoadMachine( const string& sFile)
|
||||
// disabilito gestione segnalazione modifiche progetto
|
||||
SetModifiedOff modOff ;
|
||||
// imposto l'oggetto corrente per Lua
|
||||
Machine* pOldMchLua = m_pMchLua ;
|
||||
m_pMchLua = this ;
|
||||
// carico la macchina
|
||||
bool bOk = m_LuaMgr.ExecFile( sFile) ;
|
||||
@@ -252,8 +279,8 @@ Machine::LuaLoadMachine( const string& sFile)
|
||||
// ripristino contesto originale
|
||||
if ( nOldCtx != m_pMchMgr->GetContextId())
|
||||
ExeSetCurrentContext( nOldCtx) ;
|
||||
// reset dell'oggetto corrente per Lua
|
||||
m_pMchLua = nullptr ;
|
||||
// ripristino dell'oggetto corrente per Lua
|
||||
m_pMchLua = pOldMchLua ;
|
||||
return bOk ;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user