14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------*
24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  pendian.c  *
34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Copyright 2007, 2008 Nuance Communciations, Inc.                               *
54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the 'License');          *
74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  you may not use this file except in compliance with the License.         *
84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  You may obtain a copy of the License at                                  *
104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0                           *
114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software      *
134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  distributed under the License is distributed on an 'AS IS' BASIS,        *
144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  See the License for the specific language governing permissions and      *
164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  limitations under the License.                                           *
174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/
194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "pendian.h"
264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectvoid swap_byte_order(void *buffer, size_t count, size_t itemSize)
284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{
294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  char *data = (char *) buffer;
304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  register char *p, *q, c;
314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /* Process every item */
334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  while (count > 0)
344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  {
354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    p = data;
364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    q = data + itemSize - 1;
374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    while (p < q)
394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    {
404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project      c = *p;
414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project      *p++ = *q;
424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project      *q-- = c;
434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    }
444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    /* Prepare for next pass */
464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    data += itemSize;
474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    count--;
484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  }
494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
50