Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
	bool SequenceArbiter<Traits>::validate(const std::size_t line, const SequenceType sequenceNumber)
	{
        return advance_(line, sequenceNumber);
    }
Ejemplo n.º 4
0
 static const_iterator find_next_start(const_iterator it, const_iterator end, delimiter_type const& delim)
 {
     return advance_(it, delim);
 }
Ejemplo n.º 5
0
 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;
 }