forked from Mirrors/openclonk
Move some C4AulDebug code into C4AulDebug
parent
8749395a18
commit
45620c2b85
|
@ -30,6 +30,7 @@
|
|||
#include <C4Include.h>
|
||||
#include <C4Game.h>
|
||||
|
||||
#include <C4AulDebug.h>
|
||||
#include <C4DefList.h>
|
||||
#include <C4Effects.h>
|
||||
#include <C4FileMonitor.h>
|
||||
|
@ -2286,7 +2287,7 @@ bool C4Game::LinkScriptEngine()
|
|||
|
||||
// Activate debugger if requested
|
||||
if (DebugPort)
|
||||
if (!::ScriptEngine.InitDebug(DebugPort, DebugPassword.getData(), DebugHost.getData(), !!DebugWait))
|
||||
if (!::C4AulDebug::InitDebug(DebugPort, DebugPassword.getData(), DebugHost.getData(), DebugWait))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
|
|
|
@ -250,7 +250,7 @@ void C4ControlScript::Execute() const
|
|||
C4Value rVal(pScript->DirectExec(pObj, szScript, "console script", false, C4AulScript::MAXSTRICT, fUseVarsFromCallerContext ? AulExec.GetContext(AulExec.GetContextDepth()-1) : NULL));
|
||||
#ifndef NOAULDEBUG
|
||||
C4AulDebug* pDebug;
|
||||
if ( (pDebug = ::ScriptEngine.GetDebugger()) )
|
||||
if ( (pDebug = C4AulDebug::GetDebugger()) )
|
||||
{
|
||||
pDebug->ControlScriptEvaluated(szScript, rVal.GetDataString().getData());
|
||||
}
|
||||
|
|
|
@ -180,7 +180,7 @@ bool Log(const char *szMessage)
|
|||
|
||||
#ifndef NOAULDEBUG
|
||||
// Pass on to debugger
|
||||
if (C4AulDebug *pDebug = ::ScriptEngine.GetDebugger())
|
||||
if (C4AulDebug *pDebug = C4AulDebug::GetDebugger())
|
||||
pDebug->OnLog(szMessage);
|
||||
#endif
|
||||
// Pass on to console
|
||||
|
|
|
@ -447,10 +447,6 @@ C4AulScriptEngine::C4AulScriptEngine():
|
|||
GlobalConstNames.Reset();
|
||||
GlobalConsts.Reset();
|
||||
GlobalConsts.SetNameList(&GlobalConstNames);
|
||||
|
||||
#ifndef NOAULDEBUG
|
||||
pDebug = NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -460,7 +456,7 @@ void C4AulScriptEngine::Clear()
|
|||
{
|
||||
#ifndef NOAULDEBUG
|
||||
// stop debugger
|
||||
delete pDebug; pDebug = NULL;
|
||||
delete C4AulDebug::GetDebugger();
|
||||
#endif
|
||||
// clear inherited
|
||||
C4AulScript::Clear();
|
||||
|
@ -526,34 +522,6 @@ void C4AulScriptEngine::CompileFunc(StdCompiler *pComp)
|
|||
pComp->Value(mkNamingAdapt(GlobalNamed, "GlobalNamed" , GlobalNamedDefault));
|
||||
}
|
||||
|
||||
bool C4AulScriptEngine::InitDebug(uint16_t iPort, const char *szPassword, const char *szHost, bool fWait)
|
||||
{
|
||||
#ifndef NOAULDEBUG
|
||||
// Create debug object
|
||||
if (!pDebug) pDebug = new C4AulDebug();
|
||||
// Initialize
|
||||
pDebug->SetPassword(szPassword);
|
||||
pDebug->SetAllowed(szHost);
|
||||
pDebug->SetEngine(&AulExec);
|
||||
if (!pDebug->Init(iPort))
|
||||
{ LogFatal("C4Aul debugger failed to initialize!"); return false; }
|
||||
// Log
|
||||
LogF("C4Aul debugger initialized on port %d", iPort);
|
||||
// Add to application
|
||||
Application.Add(pDebug);
|
||||
// Wait for connection
|
||||
if (fWait)
|
||||
{
|
||||
Log("C4Aul debugger waiting for connection...");
|
||||
while (!pDebug->isConnected())
|
||||
if (!Application.ScheduleProcs())
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
// Done
|
||||
return true;
|
||||
}
|
||||
|
||||
std::list<char*> C4AulScriptEngine::GetFunctionNames(C4AulScript * script)
|
||||
{
|
||||
std::list<char*> functions;
|
||||
|
|
|
@ -522,9 +522,6 @@ class C4AulScriptEngine : public C4AulScript
|
|||
{
|
||||
protected:
|
||||
C4AulFuncMap FuncLookUp;
|
||||
#ifndef NOAULDEBUG
|
||||
C4AulDebug *pDebug;
|
||||
#endif
|
||||
|
||||
public:
|
||||
int warnCnt, errCnt; // number of warnings/errors
|
||||
|
@ -564,11 +561,6 @@ public:
|
|||
bool DenumerateVariablePointers();
|
||||
void UnLink(); // called when a script is being reloaded (clears string table)
|
||||
|
||||
bool InitDebug(uint16_t iPort, const char *szPassword, const char *szHost, bool fWait);
|
||||
#ifndef NOAULDEBUG
|
||||
inline C4AulDebug *GetDebugger() const { return pDebug; }
|
||||
#endif
|
||||
|
||||
// Compile scenario script data (without strings and constants)
|
||||
void CompileFunc(StdCompiler *pComp);
|
||||
|
||||
|
|
|
@ -42,6 +42,33 @@ C4AulDebug::~C4AulDebug()
|
|||
{
|
||||
for (std::list<StdStrBuf*>::iterator it = StackTrace.begin(); it != StackTrace.end(); it++)
|
||||
{delete *it;}
|
||||
if (pDebug == this) pDebug = NULL;
|
||||
}
|
||||
|
||||
bool C4AulDebug::InitDebug(uint16_t iPort, const char *szPassword, const char *szHost, bool fWait)
|
||||
{
|
||||
// Create debug object
|
||||
if (!pDebug) pDebug = new C4AulDebug();
|
||||
// Initialize
|
||||
pDebug->SetPassword(szPassword);
|
||||
pDebug->SetAllowed(szHost);
|
||||
pDebug->SetEngine(&AulExec);
|
||||
if (!pDebug->Init(iPort))
|
||||
{ LogFatal("C4Aul debugger failed to initialize!"); return false; }
|
||||
// Log
|
||||
LogF("C4Aul debugger initialized on port %d", iPort);
|
||||
// Add to application
|
||||
Application.Add(pDebug);
|
||||
// Wait for connection
|
||||
if (fWait)
|
||||
{
|
||||
Log("C4Aul debugger waiting for connection...");
|
||||
while (!pDebug->isConnected())
|
||||
if (!Application.ScheduleProcs())
|
||||
return false;
|
||||
}
|
||||
// Done
|
||||
return true;
|
||||
}
|
||||
|
||||
void C4AulDebug::PackPacket(const C4NetIOPacket &rPacket, StdBuf &rOutBuf)
|
||||
|
@ -498,4 +525,6 @@ StdStrBuf C4AulDebug::FormatCodePos(C4AulScriptContext *pCtx, C4AulBCC *pCPos)
|
|||
return FormatString("%s:%d", RelativePath(pCtx->Func->pOrgScript->ScriptName), iLine);
|
||||
}
|
||||
|
||||
C4AulDebug * C4AulDebug::pDebug = NULL;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -30,10 +30,13 @@ class C4AulDebug : public C4NetIOTCP, private C4NetIO::CBClass
|
|||
public:
|
||||
C4AulDebug();
|
||||
~C4AulDebug();
|
||||
static bool InitDebug(uint16_t iPort, const char *szPassword, const char *szHost, bool fWait);
|
||||
static inline C4AulDebug *GetDebugger() { return pDebug; }
|
||||
|
||||
private:
|
||||
bool fInit, fConnected;
|
||||
class C4AulExec *pExec;
|
||||
static C4AulDebug *pDebug;
|
||||
C4NetIO::addr_t PeerAddr, AllowedAddr;
|
||||
StdCopyStrBuf Password;
|
||||
|
||||
|
|
|
@ -161,7 +161,7 @@ C4Value C4AulExec::Exec(C4AulBCC *pCPos, bool fPassErrors)
|
|||
|
||||
#ifndef NOAULDEBUG
|
||||
// Debugger pointer
|
||||
C4AulDebug * const pDebug = ::ScriptEngine.GetDebugger();
|
||||
C4AulDebug * const pDebug = C4AulDebug::GetDebugger();
|
||||
if (pDebug)
|
||||
pDebug->DebugStepIn(pCPos);
|
||||
#endif
|
||||
|
@ -882,7 +882,7 @@ C4AulBCC *C4AulExec::Call(C4AulFunc *pFunc, C4Value *pReturn, C4Value *pPars, C4
|
|||
|
||||
#ifndef NOAULDEBUG
|
||||
// Notify debugger
|
||||
if (C4AulDebug *pDebug = ::ScriptEngine.GetDebugger())
|
||||
if (C4AulDebug *pDebug = C4AulDebug::GetDebugger())
|
||||
pDebug->DebugStepIn(pSFunc->GetCode());
|
||||
#endif
|
||||
|
||||
|
@ -945,7 +945,7 @@ C4AulBCC *C4AulExec::Call(C4AulFunc *pFunc, C4Value *pReturn, C4Value *pPars, C4
|
|||
|
||||
#ifndef NOAULDEBUG
|
||||
// Notify debugger
|
||||
if (C4AulDebug *pDebug = ::ScriptEngine.GetDebugger())
|
||||
if (C4AulDebug *pDebug = C4AulDebug::GetDebugger())
|
||||
{
|
||||
// Make dummy context
|
||||
C4AulScriptContext ctx;
|
||||
|
|
Loading…
Reference in New Issue