/***********************************************************************1* *2* This software is part of the ast package *3* Copyright (c) 1985-2011 AT&T Intellectual Property *4* and is licensed under the *5* Eclipse Public License, Version 1.0 *6* by AT&T Intellectual Property *7* *8* A copy of the License is available at *9* http://www.eclipse.org/org/documents/epl-v10.html *10* (with md5 checksum b35adb5213ca9657e911e9befb180842) *11* *12* Information and Software Systems Research *13* AT&T Research *14* Florham Park NJ *15* *16* Glenn Fowler <[email protected]> *17* David Korn <[email protected]> *18* Phong Vo <[email protected]> *19* *20***********************************************************************/21#pragma prototyped2223/*24* Glenn Fowler25* AT&T Research26*27* copy table with element size n28* indexed by CC_ASCII to table29* indexed by CC_NATIVE30*/3132#include <ast.h>33#include <ccode.h>3435void*36ccnative(void* b, const void* a, size_t n)37{38#if CC_ASCII == CC_NATIVE39return memcpy(b, a, n * (UCHAR_MAX + 1));40#else41register int c;42register const unsigned char* m;43register unsigned char* cb = (unsigned char*)b;44register unsigned char* ca = (unsigned char*)a;4546m = CCMAP(CC_ASCII, CC_NATIVE);47if (n == sizeof(char))48for (c = 0; c <= UCHAR_MAX; c++)49cb[c] = ca[m[c]];50else51for (c = 0; c <= UCHAR_MAX; c++)52memcpy(cb + n * c, ca + n * m[c], n);53return b;54#endif55}565758