Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/src/share/native/common/bionic_mbstate.h
38825 views
1
/*
2
* Copyright (C) 2014 The Android Open Source Project
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions
7
* are met:
8
* * Redistributions of source code must retain the above copyright
9
* notice, this list of conditions and the following disclaimer.
10
* * Redistributions in binary form must reproduce the above copyright
11
* notice, this list of conditions and the following disclaimer in
12
* the documentation and/or other materials provided with the
13
* distribution.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
18
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
19
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
22
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
25
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26
* SUCH DAMAGE.
27
*/
28
#ifndef _BIONIC_MBSTATE_H
29
#define _BIONIC_MBSTATE_H
30
#include <errno.h>
31
#include <wchar.h>
32
__BEGIN_DECLS
33
/*
34
* These return values are specified by POSIX for multibyte conversion
35
* functions.
36
*/
37
38
#ifdef __cplusplus
39
#define __MB_ERR_ILLEGAL_SEQUENCE static_cast<size_t>(-1)
40
#define __MB_ERR_INCOMPLETE_SEQUENCE static_cast<size_t>(-2)
41
#else
42
#define __MB_ERR_ILLEGAL_SEQUENCE (size_t)(-1)
43
#define __MB_ERR_INCOMPLETE_SEQUENCE (size_t)(-2)
44
#endif // __cplusplus
45
#define __MB_IS_ERR(rv) (rv == __MB_ERR_ILLEGAL_SEQUENCE || \
46
rv == __MB_ERR_INCOMPLETE_SEQUENCE)
47
static inline __wur size_t mbstate_bytes_so_far(const mbstate_t* ps) {
48
return
49
(ps->__seq[2] != 0) ? 3 :
50
(ps->__seq[1] != 0) ? 2 :
51
(ps->__seq[0] != 0) ? 1 : 0;
52
}
53
static inline void mbstate_set_byte(mbstate_t* ps, int i, char byte) {
54
ps->__seq[i] = (uint8_t)(byte);
55
}
56
static inline __wur uint8_t mbstate_get_byte(const mbstate_t* ps, int n) {
57
return ps->__seq[n];
58
}
59
static inline __wur size_t mbstate_reset_and_return_illegal(int _errno, mbstate_t* ps) {
60
errno = _errno;
61
#ifdef __cplusplus
62
*(reinterpret_cast<uint32_t*>(ps->__seq)) = 0;
63
#else
64
*(uint32_t*)(ps->__seq) = 0;
65
#endif // __cplusplus
66
return __MB_ERR_ILLEGAL_SEQUENCE;
67
}
68
static inline __wur size_t mbstate_reset_and_return(int _return, mbstate_t* ps) {
69
#ifdef __cplusplus
70
*(reinterpret_cast<uint32_t*>(ps->__seq)) = 0;
71
#else
72
*(uint32_t*)(ps->__seq) = 0;
73
#endif // __cplusplus
74
return _return;
75
}
76
__END_DECLS
77
#endif // _BIONIC_MBSTATE_H
78
79