U++ framework
Do not panic. Ask here before giving up.

Home » Community » U++ community news and announcements » get_i
Re: get_i [message #54268 is a reply to message #54267] Wed, 17 June 2020 13:03 Go to previous messageGo to previous message
mirek is currently offline  mirek
Messages: 14291
Registered: November 2005
Ultimate Member
So I started looking into eliminating all instances of Expand macro usage and identified that following helpers could be quite useful:

template <class I, class V>
void iter_set(I t, V&& v)
{
	*t++ = v;
}

template <class I, class V, typename... Args>
void iter_set(I t, V&& v, Args&& ...args)
{
	*t++ = v;
	iter_set(t, args...);
}

template <class C, typename... Args>
C gather(Args&& ...args)
{
	C x;
	x.SetCount(sizeof...(args));
	iter_set(x.begin(), args...);
	return x;
}

template <class I, class V>
void iter_get(I s, V& v)
{
	v = *s++;
}

template <class I, class V, typename... Args>
void iter_get(I s, V& v, Args& ...args)
{
	v = *s++;
	iter_get(s, args...);
}

template <class C, typename... Args>
int scatter(int n, const C& c, Args& ...args)
{
	if(n < sizeof...(args))
		return 0;
	iter_get(c.begin(), args...);
	return sizeof...(args);
}

template <class C, typename... Args>
int scatter(const C& c, Args& ...args)
{
	return scatter(c.GetCount(), c, args...);
}


Usage example:

template <typename... Args>
String Format(const char *fmt, const Args& ...args)
{
	return Format(fmt, gather<Vector<Value>>(args...));
}


But I guess this would work even better if containers interface was amended to be more "std" (Vector::Vector(int count), size() synonyme for GetCount), so I guess that needs a bit more work...

Mirek
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: ide: Assist parsing now parallel and some of it background
Next Topic: 2020.1 officially released
Goto Forum:
  


Current Time: Sun Jun 21 07:28:58 GMT+2 2026

Total time taken to generate the page: 0.00709 seconds