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>
12#include <ROOT/RSlotStack.hxx>
13
14#include <cassert>
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 assert(fStack.size() < fSize && "Trying to put back a slot to a full stack!");
27 (void)fSize;
28 fStack.push(slot);
29}
30
32{
33 std::lock_guard<ROOT::TSpinMutex> guard(fMutex);
34 assert(!fStack.empty() && "Trying to pop a slot from an empty stack!");
35 const auto slot = fStack.top();
36 fStack.pop();
37 return slot;
38}
size_t fSize
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
std::stack< unsigned int > fStack
void ReturnSlot(unsigned int slotNumber)
TSeq< unsigned int > TSeqU
Definition TSeq.hxx:204