Stroika Library 3.0d18
 
Loading...
Searching...
No Matches
Activity.cpp
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3 */
4#include "Stroika/Foundation/StroikaPreComp.h"
5
6#include <list>
7
8#include "Activity.h"
9
10using namespace Stroika::Foundation;
12using namespace Stroika::Foundation::Execution;
13
14/*
15 ********************************************************************************
16 ****************** Execution::CaptureCurrentActivities *************************
17 ********************************************************************************
18 */
19Containers::Stack<Activity<>> Execution::CaptureCurrentActivities ()
20{
21 list<Activity<>> rv;
22 // no locks needed because thread local
23 for (const Private_::Activities_::StackElt_* si = Private_::Activities_::sTop_; si != nullptr; si = si->fPrev) {
24 AssertNotNull (si->fActivity);
25 rv.push_front (Activity<>{si->fActivity->AsString ()}); // push_front to reverse the list
26 }
28 for (auto i = rv.begin (); i != rv.end (); ++i) {
29 result.Push (*i);
30 }
31 return result;
32}
33
34/*
35 ********************************************************************************
36 ********************** Execution::AnyCurrentActivities *************************
37 ********************************************************************************
38 */
39bool Execution::AnyCurrentActivities ()
40{
41 return Private_::Activities_::sTop_ != nullptr;
42}
#define AssertNotNull(p)
Definition Assertions.h:333
nonvirtual void Push(ArgByValueType< value_type > item)
Definition Stack.inl:59