Example #1
0
unsigned _position(Env& env) {
    //if (not has_elements<Code>(env,2)) return 1;
   
    Code first = pop<Code>(env);
    Code second = pop<Code>(env);

    if (first->get_stack().size() == 0) {
	if (equal_to(first,second))
	    push(env, 0);
	else
	    push(env,-1);

	return 1;
    }

    const CodeArray& stack = first->get_stack();
    for (int i = stack.size()-1;i >= 0; --i) {
	if (equal_to(stack[i], second)) {
	    push<int>(env, stack.size()-i-1);
	    return stack.size() * second->len();
	}
    }

    push<int>(env, -1);
    return stack.size() * second->len();
}
Example #2
0
unsigned _null(Env& env) {
    //if (not has_elements<Code>(env,1)) return 1;
    Code first = pop<Code>(env);

    push(env, equal_to(nil, first));
    return 1;
}
 bool match_element(size_t pos, uint16_t typenr,
                    const std::type_info* rtti) const override {
   CAF_REQUIRE(typenr != 0 || rtti != nullptr);
   auto uti = m_elements[pos]->ti;
   if (uti->type_nr() != typenr) {
     return false;
   }
   return typenr != 0 || uti->equal_to(*rtti);
 }
Example #4
0
//inline void check_reduced(Reducer<typename C::iterator> (*search_n)(Reducer<typename C::iterator>, Reducer<typename C::iterator>, Size, T, equal_to), typename C::difference_type expect, C c, Size size, T const& value, int len)
inline void check_reduced_std(typename C::difference_type expect, C c, Size size, T const& value, int len)
{
	int count = 0;
	auto result = std::search_n(
		Reducer<typename C::iterator>(sprout::begin(c)),
		Reducer<typename C::iterator>(len == 0 ? sprout::end(c) : sprout::begin(c) + len),
		size,
		value,
		equal_to(count)
		);
	print(expect, sprout::distance(Reducer<typename C::iterator>(sprout::begin(c)), result), count);
}
Example #5
0
bool not_equal_to(const T& t, const U& u) {
  return !equal_to(t, u);
}