<commit_before>#ifndef _PNMC_MC_UNITS_POST_LIVE_HH_
#define _PNMC_MC_UNITS_POST_LIVE_HH_

#include <functional> // hash
#include <iosfwd>

#include <boost/dynamic_bitset.hpp>

#include "sdd/values/flat_set.hh"
#include "sdd/values_manager.hh"

namespace pnmc { namespace mc { namespace units {

/*------------------------------------------------------------------------------------------------*/

struct post_live
{
  /// @brief Target place.
  const unsigned int place;

  /// @brief Transition index.
  const unsigned int transition;

  /// @brief The bitset to update.
  boost::dynamic_bitset<>& bitset;

  /// @brief Constructor.
  post_live(unsigned int place, unsigned int transition, boost::dynamic_bitset<>& bitset);

  /// @brief Apply this operation.
  sdd::values::flat_set<unsigned int>
  operator()(const sdd::values::flat_set<unsigned int>&) const noexcept;
};

/// @brief Equality of two post_live.
bool
operator==(const post_live& lhs, const post_live& rhs) noexcept;

/// @brief Textual output of a post.
std::ostream&
operator<<(std::ostream&, const post_live&);

/*------------------------------------------------------------------------------------------------*/

}}} // namespace pnmc::mc::units

namespace std {<commit_msg>Comment.<commit_after>#ifndef _PNMC_MC_UNITS_POST_LIVE_HH_
#define _PNMC_MC_UNITS_POST_LIVE_HH_

#include <functional> // hash
#include <iosfwd>

#include <boost/dynamic_bitset.hpp>

#include "sdd/values/flat_set.hh"
#include "sdd/values_manager.hh"

namespace pnmc { namespace mc { namespace units {

/*------------------------------------------------------------------------------------------------*/

struct post_live
{
  /// @brief Target place.
  const unsigned int place;

  /// @brief Transition index.
  const unsigned int transition;

  /// @brief The bitset to update.
  boost::dynamic_bitset<>& bitset;

  /// @brief Constructor.
  post_live(unsigned int place, unsigned int transition, boost::dynamic_bitset<>& bitset);

  /// @brief Apply this operation.
  sdd::values::flat_set<unsigned int>
  operator()(const sdd::values::flat_set<unsigned int>&) const noexcept;
};

/// @brief Equality of two post_live.
bool
operator==(const post_live& lhs, const post_live& rhs) noexcept;

/// @brief Textual output of a post_live.
std::ostream&
operator<<(std::ostream&, const post_live&);

/*------------------------------------------------------------------------------------------------*/

}}} // namespace pnmc::mc::units

namespace std {
{'fraction_non_alphanumeric': 0.2710843373493976, 'fraction_numerical': 0.0, 'mean_word_length': 2.2604712041884816, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1430007', 'n_tokens_mistral': 731, 'n_tokens_neox': 718, 'n_words': 184}