libjmmcg  release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
thread_api_traits_impl.hpp
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright © 2004 by J.M.McGuiness, coder@hussar.me.uk
3 **
4 ** This library is free software; you can redistribute it and/or
5 ** modify it under the terms of the GNU Lesser General Public
6 ** License as published by the Free Software Foundation; either
7 ** version 2.1 of the License, or (at your option) any later version.
8 **
9 ** This library is distributed in the hope that it will be useful,
10 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
11 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 ** Lesser General Public License for more details.
13 **
14 ** You should have received a copy of the GNU Lesser General Public
15 ** License along with this library; if not, write to the Free Software
16 ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 */
18 
19 namespace jmmcg { namespace LIBJMMCG_VER_NAMESPACE { namespace ppd {
20 
21 // Implementation details..... Don't look below here!!! ;)
22 
23 // "api_threading_traits" implementation...
24 
25  template<generic_traits::api_type API_, typename Mdl_> inline bool __fastcall
26  api_threading_traits<API_, Mdl_>::is_running(api_params_type &parms) noexcept(true) {
27  if (parms.id && parms.id!=get_current_thread_id()) {
28  const typename api_params_type::suspend_count prev_count=suspend(parms);
29  resume(parms);
30  return !prev_count;
31  } else {
32  return static_cast<bool>(parms.id);
33  }
34  }
35 
36 } } }