mirror of
https://github.com/reactos/reactos.git
synced 2025-07-02 07:21:23 +00:00
35 lines
753 B
C++
35 lines
753 B
C++
![]() |
//
|
||
|
// swab.cpp
|
||
|
//
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//
|
||
|
// Defines the _swab function, which copies a source buffer into a destination
|
||
|
// buffer, swapping the odd and even bytes of each word as it does so.
|
||
|
//
|
||
|
#include <corecrt_internal.h>
|
||
|
#include <stdlib.h>
|
||
|
|
||
|
|
||
|
|
||
|
extern "C" void __cdecl _swab(
|
||
|
char* source,
|
||
|
char* destination,
|
||
|
int bytes
|
||
|
)
|
||
|
{
|
||
|
_VALIDATE_RETURN_VOID(source != nullptr, EINVAL);
|
||
|
_VALIDATE_RETURN_VOID(destination != nullptr, EINVAL);
|
||
|
_VALIDATE_RETURN_VOID(bytes >= 0, EINVAL);
|
||
|
|
||
|
while (bytes > 1)
|
||
|
{
|
||
|
char const b1 = *source++;
|
||
|
char const b2 = *source++;
|
||
|
|
||
|
*destination++ = b2;
|
||
|
*destination++ = b1;
|
||
|
|
||
|
bytes -= 2;
|
||
|
}
|
||
|
}
|