size_t find_token_pos(const std::type_info* type_token) { for (size_t i = m_cache_begin; i != m_cache_end; advance_(i)) { if (m_cache[i].first == type_token) { return i; } } return m_cache_end; }
uint64_t get_cache_entry(const std::type_info* type_token, const Tuple& value) { CAF_REQUIRE(type_token != nullptr); if (value.dynamically_typed()) { return m_dummy.second; // all groups enabled } size_t i = find_token_pos(type_token); // if we didn't found a cache entry ... if (i == m_cache_end) { // ... 'create' one (override oldest element in cache if full) advance_(m_cache_end); if (m_cache_end == m_cache_begin) { advance_(m_cache_begin); } m_cache[i].first = type_token; idx_token_type idx_token; m_cache[i].second = calc_bitmask(m_cases, idx_token, *type_token, value); } return m_cache[i].second; }
bool SequenceArbiter<Traits>::validate(const std::size_t line, const SequenceType sequenceNumber) { return advance_(line, sequenceNumber); }
static const_iterator find_next_start(const_iterator it, const_iterator end, delimiter_type const& delim) { return advance_(it, delim); }
static ss_bool_t test_end_token_advance(const_iterator &it, const_iterator end, delimiter_type const& delim) { return is_equal_(delim, it) ? (it = advance_(it, delim), true) : false; }