added api calls needed by core

--HG--
branch : refac-jit
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/branches/refac-jit%402375
This commit is contained in:
David Anderson 2008-07-07 05:28:42 +00:00
parent 31dd23fbd9
commit 492c913aa9
3 changed files with 32 additions and 0 deletions

View File

@ -829,6 +829,26 @@ namespace SourcePawn
const cell_t *params,
unsigned int num_params,
cell_t *result) =0;
/**
* @brief Returns whether a context is in an error state.
*
* This should only be used inside natives to determine whether
* a prior call failed.
*/
virtual int GetLastNativeError() =0;
/**
* @brief Returns the local parameter stack, starting from the
* cell that contains the number of parameters passed.
*
* Local parameters are the parameters passed to the function
* from which a native was called (and thus this can only be
* called inside a native).
*
* @return Parameter stack.
*/
virtual cell_t *GetLocalParams() =0;
};

View File

@ -759,3 +759,13 @@ int DebugInfo::LookupLine(ucell_t addr, uint32_t *line)
}
#undef USHR
int BaseContext::GetLastNativeError()
{
return m_ctx.n_err;
}
cell_t *BaseContext::GetLocalParams()
{
return (cell_t *)(m_pPlugin->memory + m_ctx.frm + (2 * sizeof(cell_t)));
}

View File

@ -88,6 +88,8 @@ public: //IPluginContext
int BindNativeToIndex(uint32_t index, SPVM_NATIVE_FUNC native);
int Execute(IPluginFunction *function, const cell_t *params, unsigned int num_params, cell_t *result);
IPluginRuntime *GetRuntime();
int GetLastNativeError();
cell_t *GetLocalParams();
public:
bool IsInExec();
private: