xref: /reactos/sdk/lib/ucrt/convert/swab.cpp (revision 04e0dc4a)
1 //
2 // swab.cpp
3 //
4 //      Copyright (c) Microsoft Corporation. All rights reserved.
5 //
6 // Defines the _swab function, which copies a source buffer into a destination
7 // buffer, swapping the odd and even bytes of each word as it does so.
8 //
9 #include <corecrt_internal.h>
10 #include <stdlib.h>
11 
12 
13 
_swab(char * source,char * destination,int bytes)14 extern "C" void __cdecl _swab(
15     char* source,
16     char* destination,
17     int   bytes
18     )
19 {
20     _VALIDATE_RETURN_VOID(source      != nullptr, EINVAL);
21     _VALIDATE_RETURN_VOID(destination != nullptr, EINVAL);
22     _VALIDATE_RETURN_VOID(bytes >= 0,             EINVAL);
23 
24     while (bytes > 1)
25     {
26         char const b1 = *source++;
27         char const b2 = *source++;
28 
29         *destination++ = b2;
30         *destination++ = b1;
31 
32         bytes -= 2;
33     }
34 }
35