Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
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: 14256
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: Wed Apr 30 01:05:19 CEST 2025

Total time taken to generate the page: 0.01263 seconds