Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RSlotStack.cxx
Go to the documentation of this file.
1// Author: Enrico Guiraud, Danilo Piparo CERN 03/2017
2
3/*************************************************************************
4 * Copyright (C) 1995-2018, Rene Brun and Fons Rademakers. *
5 * All rights reserved. *
6 * *
7 * For the licensing terms see $ROOTSYS/LICENSE. *
8 * For the list of contributors see $ROOTSYS/README/CREDITS. *
9 *************************************************************************/
10
11#include <ROOT/TSeq.hxx>
13#include <TError.h> // R__ASSERT
14
15#include <mutex> // std::lock_guard
16
18{
19 for (auto i : ROOT::TSeqU(size))
20 fStack.push(i);
21}
22
24{
25 std::lock_guard<ROOT::TSpinMutex> guard(fMutex);
26 R__ASSERT(fStack.size() < fSize && "Trying to put back a slot to a full stack!");
27 fStack.push(slot);
28}
29
31{
32 std::lock_guard<ROOT::TSpinMutex> guard(fMutex);
33 R__ASSERT(!fStack.empty() && "Trying to pop a slot from an empty stack!");
34 const auto slot = fStack.top();
35 fStack.pop();
36 return slot;
37}
size_t fSize
#define R__ASSERT(e)
Definition TError.h:120
void ReturnSlot(unsigned int slotNumber)
std::stack< unsigned int > fStack
TSeq< unsigned int > TSeqU
Definition TSeq.hxx:195