mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-29 11:53:23 +08:00

[+] variable for PyThread_StateSave git-svn-id: https://pykd.svn.codeplex.com/svn@69451 9b283d60-5439-405e-af05-b73fd8c4d996
71 lines
1.5 KiB
C++
71 lines
1.5 KiB
C++
#pragma once
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
// --> call back
|
|
// { PyThread_StateSave state( winext->getThreadState() );
|
|
// do_callback();
|
|
// }
|
|
//
|
|
// Ĺńëč ęîëáĺę áűë âűçâŕí č ďđč ýňîě ó ňĺęůĺăî ďîňîęŕ ńîőđŕíĺí ęîíňĺęńň ( áűë âűçîâ setExecutionStatus )
|
|
// ňî ďĺđĺä âűďîëíĺíčĺě ďčňîíîâńęîăî ęîäŕ íóćíî âîńńňŕíîâčňü ęîíňĺęńň, ŕ ďîńëĺ âîçâđŕňŕ óďđŕâëĺíč˙,
|
|
// ńíîâŕ ńîőđŕíčňü ĺăî
|
|
|
|
class PyThread_StateSave {
|
|
|
|
public:
|
|
|
|
PyThread_StateSave( PyThreadState **state )
|
|
: m_state(NULL)
|
|
{
|
|
if ( *state != NULL )
|
|
{
|
|
m_state = state;
|
|
PyEval_RestoreThread( *m_state );
|
|
}
|
|
}
|
|
|
|
~PyThread_StateSave() {
|
|
if (m_state)
|
|
*m_state =PyEval_SaveThread();
|
|
}
|
|
|
|
private:
|
|
|
|
PyThreadState **m_state;
|
|
};
|
|
|
|
// { PyThread_StateRestore state;
|
|
// long_or_block_opreration();
|
|
// }
|
|
|
|
class PyThread_StateRestore {
|
|
|
|
public:
|
|
|
|
explicit PyThread_StateRestore() {
|
|
m_state = &m_ownState;
|
|
*m_state =PyEval_SaveThread();
|
|
}
|
|
|
|
PyThread_StateRestore( PyThreadState **state ) {
|
|
if ( *state != NULL )
|
|
{
|
|
m_state = state;
|
|
*m_state =PyEval_SaveThread();
|
|
}
|
|
}
|
|
|
|
~PyThread_StateRestore() {
|
|
PyEval_RestoreThread( *m_state );
|
|
}
|
|
|
|
private:
|
|
|
|
PyThreadState **m_state;
|
|
|
|
PyThreadState *m_ownState;
|
|
|
|
};
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|