Program Listing for File TemporaryThreadIdxOverride.hpp

Return to documentation for file (include/dish2/config/TemporaryThreadIdxOverride.hpp)

#pragma once
#ifndef DISH2_CONFIG_TEMPORARYTHREADIDXOVERRIDE_HPP_INCLUDE
#define DISH2_CONFIG_TEMPORARYTHREADIDXOVERRIDE_HPP_INCLUDE

#include <utility>

#include "thread_idx.hpp"

namespace dish2 {

class TemporaryThreadIdxOverride {

  size_t thread_idx_bak;

public:

  TemporaryThreadIdxOverride(const size_t temporary_override)
  : thread_idx_bak( std::exchange(dish2::thread_idx, temporary_override) )
  {}

  ~TemporaryThreadIdxOverride() { dish2::thread_idx = thread_idx_bak; }

};

} // namespace dish2

#endif // #ifndef DISH2_CONFIG_TEMPORARYTHREADIDXOVERRIDE_HPP_INCLUDE