OpenClonk
C4AulParseError Class Reference

#include <C4Aul.h>

Inheritance diagram for C4AulParseError:
[legend]
Collaboration diagram for C4AulParseError:
[legend]

Public Member Functions

 C4AulParseError (C4ScriptHost *pScript, const char *pMsg)
 
 C4AulParseError (class C4AulParse *state, const char *pMsg)
 
 C4AulParseError (C4AulScriptFunc *Fn, const char *SPos, const char *pMsg)
 
const char * what () const noexcept override
 

Protected Attributes

StdCopyStrBuf sMessage
 

Detailed Description

Definition at line 52 of file C4Aul.h.

Constructor & Destructor Documentation

◆ C4AulParseError() [1/3]

C4AulParseError::C4AulParseError ( C4ScriptHost pScript,
const char *  pMsg 
)

Definition at line 203 of file C4AulParse.cpp.

204 {
205  // compose error string
206  sMessage.Copy(pMsg);
207  if (pScript)
208  {
209  // Script name
210  sMessage.AppendFormat(" (%s)",
211  pScript->ScriptName.getData());
212  }
213 }
StdCopyStrBuf sMessage
Definition: C4Aul.h:44
StdCopyStrBuf ScriptName
Definition: C4ScriptHost.h:58
void AppendFormat(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O
Definition: StdBuf.cpp:190
const char * getData() const
Definition: StdBuf.h:442
void Copy()
Definition: StdBuf.h:467

References StdStrBuf::AppendFormat(), StdStrBuf::Copy(), StdStrBuf::getData(), C4ScriptHost::ScriptName, and C4AulError::sMessage.

Here is the call graph for this function:

◆ C4AulParseError() [2/3]

C4AulParseError::C4AulParseError ( class C4AulParse state,
const char *  pMsg 
)

Definition at line 196 of file C4AulParse.cpp.

197 {
198  // compose error string
199  sMessage.Copy(pMsg);
200  state->AppendPosition(sMessage);
201 }

References StdStrBuf::Copy(), and C4AulError::sMessage.

Here is the call graph for this function:

◆ C4AulParseError() [3/3]

C4AulParseError::C4AulParseError ( C4AulScriptFunc Fn,
const char *  SPos,
const char *  pMsg 
)

Definition at line 215 of file C4AulParse.cpp.

216 {
217  // compose error string
218  sMessage.Copy(pMsg);
219  if (!Fn) return;
220  sMessage.Append(" (");
221  // Show function name
222  if (Fn->GetName())
223  sMessage.AppendFormat("in %s", Fn->GetName());
224  if (Fn->GetName() && Fn->pOrgScript && SPos)
225  sMessage.Append(", ");
226  // Exact position
227  if (Fn->pOrgScript && SPos)
228  sMessage.AppendFormat("%s:%d:%d)",
230  SGetLine(Fn->pOrgScript->GetScript(), SPos),
231  SLineGetCharacters(Fn->pOrgScript->GetScript(), SPos));
232  else
233  sMessage.AppendChar(')');
234 }
int SGetLine(const char *szText, const char *cpPosition)
Definition: Standard.cpp:479
int SLineGetCharacters(const char *szText, const char *cpPosition)
Definition: Standard.cpp:491
const char * GetName() const
Definition: C4AulFunc.h:56
C4ScriptHost * pOrgScript
const char * GetScript() const
Definition: C4ScriptHost.h:53
void AppendChar(char cChar)
Definition: StdBuf.h:588
void Append(const char *pnData, size_t iChars)
Definition: StdBuf.h:519

References StdStrBuf::Append(), StdStrBuf::AppendChar(), StdStrBuf::AppendFormat(), StdStrBuf::Copy(), StdStrBuf::getData(), C4AulFunc::GetName(), C4ScriptHost::GetScript(), C4AulScriptFunc::pOrgScript, C4ScriptHost::ScriptName, SGetLine(), SLineGetCharacters(), and C4AulError::sMessage.

Here is the call graph for this function:

Member Function Documentation

◆ what()

const char * C4AulError::what ( ) const
overridenoexceptinherited

Definition at line 59 of file C4Aul.cpp.

60 {
61  return sMessage ? sMessage.getData() : "(unknown error)";
62 }

References StdStrBuf::getData(), and C4AulError::sMessage.

Referenced by C4PropList::Call(), C4AulFunc::CheckParTypes(), C4AulExec::DirectExec(), C4AulScriptEngine::Link(), C4AulParse::Parse_Script(), C4AulCompiler::PreparseAstVisitor::visit(), and C4AulCompiler::ConstantResolver::visit().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ sMessage

StdCopyStrBuf C4AulError::sMessage
protectedinherited

Definition at line 44 of file C4Aul.h.

Referenced by C4AulExecError::C4AulExecError(), C4AulParseError(), and C4AulError::what().


The documentation for this class was generated from the following files: