Alien-LibJIT
view release on metacpan or search on metacpan
libjit/jit/jit-util.c view on Meta::CPAN
{
#if defined(HAVE_MEMCMP)
return memcmp(s1, s2, len);
#elif defined(HAVE_BCMP)
return bcmp(s1, s2, len);
#else
const unsigned char *str1 = (const unsigned char *)s1;
const unsigned char *str2 = (const unsigned char *)s2;
while(len > 0)
{
if(*str1 < *str2)
return -1;
else if(*str1 > *str2)
return 1;
++str1;
++str2;
--len;
}
return 0;
#endif
}
/*@
* @deftypefun {void *} jit_memchr (void *@var{str}, int @var{ch}, unsigned int @var{len})
* Search the @var{len} bytes at @var{str} for the first instance of
* the value @var{ch}. Returns the location of @var{ch} if it was found,
* or NULL if it was not found.
* @end deftypefun
@*/
void *jit_memchr(const void *str, int ch, unsigned int len)
{
#ifdef HAVE_MEMCHR
return memchr(str, ch, len);
#else
const unsigned char *s = (const unsigned char *)str;
while(len > 0)
{
if(*s == (unsigned char)ch)
{
return (void *)s;
}
++s;
--len;
}
return (void *)0;
#endif
}
/*@
* @section String operations
* @cindex String operations
*
* The following functions are provided to manipulate NULL-terminated
* strings. It is highly recommended that you use these functions in
* preference to system functions, because the corresponding system
* functions are extremely non-portable.
@*/
/*@
* @deftypefun {unsigned int} jit_strlen (const char *@var{str})
* Returns the length of @var{str}.
* @end deftypefun
@*/
unsigned int jit_strlen(const char *str)
{
#ifdef HAVE_STRLEN
return (unsigned int)(strlen(str));
#else
unsigned int len = 0;
while(*str++ != '\0')
{
++len;
}
return len;
#endif
}
/*@
* @deftypefun {char *} jit_strcpy (char *@var{dest}, const char *@var{src})
* Copy the string at @var{src} to @var{dest}. Returns @var{dest}.
* @end deftypefun
@*/
char *jit_strcpy(char *dest, const char *src)
{
#ifdef HAVE_STRCPY
return strcpy(dest, src);
#else
char ch;
char *d = dest;
while((ch = *src++) != '\0')
{
*d++ = ch;
}
*d = '\0';
return dest;
#endif
}
/*@
* @deftypefun {char *} jit_strcat (char *@var{dest}, const char *@var{src})
* Copy the string at @var{src} to the end of the string at @var{dest}.
* Returns @var{dest}.
* @end deftypefun
@*/
char *jit_strcat(char *dest, const char *src)
{
#ifdef HAVE_STRCAT
return strcat(dest, src);
#else
char ch;
char *d = dest + jit_strlen(dest);
while((ch = *src++) != '\0')
{
*d++ = ch;
}
*d = '\0';
return dest;
#endif
}
/*@
( run in 0.373 second using v1.01-cache-2.11-cpan-3d66aa2751a )