mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-21 03:31:40 +00:00
Added 'specialized' versions of set_to for char*, signed char* and unsigned char* 'In' parameters.
svn-id: r29523
This commit is contained in:
parent
31180e7981
commit
cec8b98201
@ -53,8 +53,29 @@ Out copy_if(In first, In last, Out dst, Op op) {
|
||||
return dst;
|
||||
}
|
||||
|
||||
// TODO: this is can be slower than memset for most normal data
|
||||
// maybe specialize the template for char, short, int, long, long long
|
||||
// Our 'specialized' 'set_to' template for char, signed char and unsigned char arrays.
|
||||
// Since C++ doesn't support partial specialized template functions (currently) we
|
||||
// are going this way...
|
||||
// With this we assure the usage of memset for those, which should be
|
||||
// faster than a simple loop like for the generic 'set_to'.
|
||||
template<class Value>
|
||||
signed char *set_to(signed char *first, signed char *last, Value val) {
|
||||
memset(first, (val & 0xFF), last - first);
|
||||
return last;
|
||||
}
|
||||
|
||||
template<class Value>
|
||||
unsigned char *set_to(unsigned char *first, unsigned char *last, Value val) {
|
||||
memset(first, (val & 0xFF), last - first);
|
||||
return last;
|
||||
}
|
||||
|
||||
template<class Value>
|
||||
char *set_to(char *first, char *last, Value val) {
|
||||
memset(first, (val & 0xFF), last - first);
|
||||
return last;
|
||||
}
|
||||
|
||||
template<class In, class Value>
|
||||
In set_to(In first, In last, Value val) {
|
||||
while (first != last)
|
||||
|
Loading…
x
Reference in New Issue
Block a user