xref: /reactos/sdk/lib/ucrt/mbstring/mbsninc.cpp (revision fe93a3f9)
1 /***
2 *mbsninc.c - Increment MBCS string pointer by specified char count.
3 *
4 *       Copyright (c) Microsoft Corporation. All rights reserved.
5 *
6 *Purpose:
7 *       Increment MBCS string pointer by specified char count.
8 *
9 *******************************************************************************/
10 #ifndef _MBCS
11     #error This file should only be compiled with _MBCS defined
12 #endif
13 
14 #include <corecrt_internal_mbstring.h>
15 #include <mbstring.h>
16 #include <stddef.h>
17 
18 /***
19 *_mbsninc - Increment MBCS string pointer by specified char count.
20 *
21 *Purpose:
22 *       Increment the supplied string pointer by the specified number
23 *       of characters.  MBCS characters are handled correctly.
24 *
25 *Entry:
26 *       const unsigned char *string = pointer to string
27 *       unsigned int ccnt = number of char to advance the pointer
28 *
29 *Exit:
30 *       Returns pointer after advancing it.
31 *       Returns pointer to end of string if string is not ccnt chars long.
32 *       Returns nullptr is supplied pointer is nullptr.
33 *
34 *Exceptions:
35 *
36 *******************************************************************************/
37 
38 extern "C" unsigned char * __cdecl _mbsninc_l(
39         const unsigned char *string,
40         size_t ccnt,
41         _locale_t plocinfo
42         )
43 {
44     if (string == nullptr)
45         return nullptr;
46 
47     return const_cast<unsigned char*>(string) + (unsigned int)_mbsnbcnt_l(string, ccnt, plocinfo);
48 }
49 
50 extern "C" unsigned char * (__cdecl _mbsninc)(
51         const unsigned char *string,
52         size_t ccnt
53         )
54 {
55     return _mbsninc_l(string, ccnt, nullptr);
56 }
57