Пример #1
0
void NetworkChangeNotification::deserialize(const Bytes& bytes, const Bytes::size_type length) {
    Bytes::size_type idx{0};
    if (bytes.empty()
        || bytes.size() < length
        || get_type() != static_cast<Notification::Type>(bytes[idx++])) {
        throw std::runtime_error("Notification deserialization failed.");
    }
    check_idx(idx, length);
    idx += decode_int<decltype(m_iface_index)>(m_iface_index, bytes.data() + idx, length - idx);
    check_idx(idx, length);
    m_change_type = static_cast<net::NetworkChangeNotifier::ChangeType>(bytes[idx++]);
}
Пример #2
0
int main()
{
    {
        typedef double T;
        typedef std::array<T, 3> C;
        C c = {1, 2, 3.5};
        C::reference r1 = c[0];
        assert(r1 == 1);
        r1 = 5.5;
        assert(c.front() == 5.5);

        C::reference r2 = c[2];
        assert(r2 == 3.5);
        r2 = 7.5;
        assert(c.back() == 7.5);
    }
    {
        typedef double T;
        typedef std::array<T, 3> C;
        const C c = {1, 2, 3.5};
        C::const_reference r1 = c[0];
        assert(r1 == 1);
        C::const_reference r2 = c[2];
        assert(r2 == 3.5);
    }

#if TEST_STD_VER > 11
    {
        typedef double T;
        typedef std::array<T, 3> C;
        constexpr C c = {1, 2, 3.5};

        constexpr T t1 = c[0];
        static_assert (t1 == 1, "");

        constexpr T t2 = c[2];
        static_assert (t2 == 3.5, "");
    }
#endif

#if TEST_STD_VER > 14
    {
        static_assert (check_idx(0, 1), "");
        static_assert (check_idx(1, 2), "");
        static_assert (check_idx(2, 3.5), "");
    }
#endif
}
Пример #3
0
int idaapi type_builder_t::visit_expr(cexpr_t *e)
{
	// check if the expression being visited is variable
	if(e->op == cot_var)
	{
		// get the variable name
		char expr_name[MAXSTR];
		e->print1(expr_name, MAXSTR, NULL);
        tag_remove(expr_name, expr_name, 0);

		// check for the target variable
		if(!strcmp(expr_name, highl_expr_name))
		{
			struct_filed str_fld;
			
			if(check_memptr(str_fld))
				structure.push_back(str_fld);
			else if(check_idx(str_fld))
				structure.push_back(str_fld);
			else if(check_ptr(str_fld))
				structure.push_back(str_fld);

		}
	}

	return 0;
}
Пример #4
0
jd_var *jd_array_get(jd_array *jda, int idx) {
  return ELT(jda, check_idx(jda, idx));
}
Пример #5
0
int main(int, char**)
{
    {
        typedef double T;
        typedef std::array<T, 3> C;
        C c = {1, 2, 3.5};
        C::reference r1 = c[0];
        assert(r1 == 1);
        r1 = 5.5;
        assert(c.front() == 5.5);

        C::reference r2 = c[2];
        assert(r2 == 3.5);
        r2 = 7.5;
        assert(c.back() == 7.5);
    }
    {
        typedef double T;
        typedef std::array<T, 3> C;
        const C c = {1, 2, 3.5};
        C::const_reference r1 = c[0];
        assert(r1 == 1);
        C::const_reference r2 = c[2];
        assert(r2 == 3.5);
    }
    { // Test operator[] "works" on zero sized arrays
        typedef double T;
        typedef std::array<T, 0> C;
        C c = {};
        C const& cc = c;
        static_assert((std::is_same<decltype(c[0]), T &>::value), "");
        static_assert((std::is_same<decltype(cc[0]), const T &>::value), "");
        if (c.size() > (0)) { // always false
          C::reference r1 = c[0];
          C::const_reference r2 = cc[0];
          ((void)r1);
          ((void)r2);
        }
    }
    { // Test operator[] "works" on zero sized arrays
        typedef double T;
        typedef std::array<const T, 0> C;
        C c = {{}};
        C const& cc = c;
        static_assert((std::is_same<decltype(c[0]), const T &>::value), "");
        static_assert((std::is_same<decltype(cc[0]), const T &>::value), "");
        if (c.size() > (0)) { // always false
          C::reference r1 = c[0];
          C::const_reference r2 = cc[0];
          ((void)r1);
          ((void)r2);
        }
    }
#if TEST_STD_VER > 11
    {
        typedef double T;
        typedef std::array<T, 3> C;
        constexpr C c = {1, 2, 3.5};

        constexpr T t1 = c[0];
        static_assert (t1 == 1, "");

        constexpr T t2 = c[2];
        static_assert (t2 == 3.5, "");
    }
#endif

#if TEST_STD_VER > 14
    {
        static_assert (check_idx(0, 1), "");
        static_assert (check_idx(1, 2), "");
        static_assert (check_idx(2, 3.5), "");
    }
#endif

  return 0;
}