Program Listing for File make_module_mask.hpp¶
↰ Return to documentation for file (include/sgpl/introspection/make_module_mask.hpp)
#pragma once
#ifndef SGPL_INTROSPECTION_MAKE_MODULE_MASK_HPP_INCLUDE
#define SGPL_INTROSPECTION_MAKE_MODULE_MASK_HPP_INCLUDE
#include <cassert>
#include <vector>
#include "../program/GlobalAnchorIterator.hpp"
#include "../program/Program.hpp"
#include "get_module_length.hpp"
#include "get_module_pos.hpp"
namespace sgpl {
template<typename Spec>
std::vector<char> make_module_mask(
const sgpl::Program<Spec>& program, const size_t module_idx
) {
const size_t module_pos = sgpl::get_module_pos( program, module_idx );
const size_t module_length = sgpl::get_module_length( program, module_idx );
std::vector< char > instructionwise_is_module( module_pos, false );
const std::vector< char > module( module_length, true );
instructionwise_is_module.insert(
std::end(instructionwise_is_module), std::begin(module), std::end(module)
);
instructionwise_is_module.resize( program.size(), false );
assert( instructionwise_is_module.size() == program.size() );
return instructionwise_is_module;
}
} // namespace sgpl
#endif // #ifndef SGPL_INTROSPECTION_MAKE_MODULE_MASK_HPP_INCLUDE