~ubuntu-branches/ubuntu/gutsy/virtualbox-ose/gutsy

« back to all changes in this revision

Viewing changes to src/VBox/Runtime/string/memchr.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Steve Kowalik
  • Date: 2007-09-08 16:44:58 UTC
  • Revision ID: james.westby@ubuntu.com-20070908164458-wao29470vqtr8ksy
Tags: upstream-1.5.0-dfsg2
ImportĀ upstreamĀ versionĀ 1.5.0-dfsg2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* $Id: memchr.cpp 4071 2007-08-07 17:07:59Z vboxsync $ */
 
2
/** @file
 
3
 * innotek Portable Runtime - CRT Strings, memcpy().
 
4
 */
 
5
 
 
6
/*
 
7
 * Copyright (C) 2006-2007 innotek GmbH
 
8
 *
 
9
 * This file is part of VirtualBox Open Source Edition (OSE), as
 
10
 * available from http://www.virtualbox.org. This file is free software;
 
11
 * you can redistribute it and/or modify it under the terms of the GNU
 
12
 * General Public License as published by the Free Software Foundation,
 
13
 * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
 
14
 * distribution. VirtualBox OSE is distributed in the hope that it will
 
15
 * be useful, but WITHOUT ANY WARRANTY of any kind.
 
16
 */
 
17
 
 
18
 
 
19
/*******************************************************************************
 
20
*   Header Files                                                               *
 
21
*******************************************************************************/
 
22
#include <iprt/string.h>
 
23
 
 
24
 
 
25
/**
 
26
 * Search a memory block for a character.
 
27
 *
 
28
 * @returns Pointer to the first instance of ch in pv.
 
29
 * @returns NULL if ch wasn't found.
 
30
 * @param   pv          Pointer to the block to search.
 
31
 * @param   ch          The character to search for.
 
32
 * @param   cb          The size of the block.
 
33
 */
 
34
#ifdef _MSC_VER /* Silly 'safeness' from MS. */
 
35
# if _MSC_VER >= 1400
 
36
_CRTIMP __checkReturn _CONST_RETURN void *  __cdecl memchr( __in_bcount_opt(_MaxCount) const void * pv, __in int ch, __in size_t cb)
 
37
# else
 
38
void *memchr(const void *pv, int ch, size_t cb)
 
39
# endif
 
40
#else
 
41
void *memchr(const void *pv, int ch, size_t cb)
 
42
#endif
 
43
{
 
44
    register uint8_t const *pu8 = (uint8_t const *)pv;
 
45
    register size_t cb2 = cb;
 
46
    while (cb2-- > 0)
 
47
    {
 
48
        if (*pu8 == ch)
 
49
            return (void *)pu8;
 
50
        pu8++;
 
51
    }
 
52
    return NULL;
 
53
}
 
54