]> git.ipfire.org Git - thirdparty/openssl.git/blame - include/crypto/ctype.h
include/crypto: add a few missing #pragma once directives
[thirdparty/openssl.git] / include / crypto / ctype.h
CommitLineData
a1df06b3
P
1/*
2 * Copyright 2017 The OpenSSL Project Authors. All Rights Reserved.
3 *
48f4ad77 4 * Licensed under the Apache License 2.0 (the "License"). You may not use
a1df06b3
P
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
8 */
9
10/*
11 * This version of ctype.h provides a standardised and platform
12 * independent implementation that supports seven bit ASCII characters.
13 * The specific intent is to not pass extended ASCII characters (> 127)
14 * even if the host operating system would.
15 *
16 * There is EBCDIC support included for machines which use this. However,
17 * there are a number of concerns about how well EBCDIC is supported
18 * throughout the rest of the source code. Refer to issue #4154 for
19 * details.
20 */
ae4186b0
DMSP
21#ifndef OSSL_CRYPTO_CTYPE_H
22# define OSSL_CRYPTO_CTYPE_H
80ce21fe 23# pragma once
a1df06b3
P
24
25# define CTYPE_MASK_lower 0x1
26# define CTYPE_MASK_upper 0x2
27# define CTYPE_MASK_digit 0x4
28# define CTYPE_MASK_space 0x8
29# define CTYPE_MASK_xdigit 0x10
30# define CTYPE_MASK_blank 0x20
31# define CTYPE_MASK_cntrl 0x40
32# define CTYPE_MASK_graph 0x80
33# define CTYPE_MASK_print 0x100
34# define CTYPE_MASK_punct 0x200
35# define CTYPE_MASK_base64 0x400
36# define CTYPE_MASK_asn1print 0x800
37
38# define CTYPE_MASK_alpha (CTYPE_MASK_lower | CTYPE_MASK_upper)
39# define CTYPE_MASK_alnum (CTYPE_MASK_alpha | CTYPE_MASK_digit)
40
41/*
42 * The ascii mask assumes that any other classification implies that
43 * the character is ASCII and that there are no ASCII characters
44 * that aren't in any of the classifications.
45 *
46 * This assumption holds at the moment, but it might not in the future.
47 */
48# define CTYPE_MASK_ascii (~0)
49
50# ifdef CHARSET_EBCDIC
51int ossl_toascii(int c);
52int ossl_fromascii(int c);
53# else
54# define ossl_toascii(c) (c)
55# define ossl_fromascii(c) (c)
56# endif
57int ossl_ctype_check(int c, unsigned int mask);
58int ossl_tolower(int c);
59int ossl_toupper(int c);
60
48102247 61int ascii_isdigit(const char inchar);
62
a1df06b3
P
63# define ossl_isalnum(c) (ossl_ctype_check((c), CTYPE_MASK_alnum))
64# define ossl_isalpha(c) (ossl_ctype_check((c), CTYPE_MASK_alpha))
65# ifdef CHARSET_EBCDIC
66# define ossl_isascii(c) (ossl_ctype_check((c), CTYPE_MASK_ascii))
67# else
68# define ossl_isascii(c) (((c) & ~127) == 0)
69# endif
70# define ossl_isblank(c) (ossl_ctype_check((c), CTYPE_MASK_blank))
71# define ossl_iscntrl(c) (ossl_ctype_check((c), CTYPE_MASK_cntrl))
72# define ossl_isdigit(c) (ossl_ctype_check((c), CTYPE_MASK_digit))
73# define ossl_isgraph(c) (ossl_ctype_check((c), CTYPE_MASK_graph))
74# define ossl_islower(c) (ossl_ctype_check((c), CTYPE_MASK_lower))
75# define ossl_isprint(c) (ossl_ctype_check((c), CTYPE_MASK_print))
76# define ossl_ispunct(c) (ossl_ctype_check((c), CTYPE_MASK_punct))
77# define ossl_isspace(c) (ossl_ctype_check((c), CTYPE_MASK_space))
78# define ossl_isupper(c) (ossl_ctype_check((c), CTYPE_MASK_upper))
79# define ossl_isxdigit(c) (ossl_ctype_check((c), CTYPE_MASK_xdigit))
80# define ossl_isbase64(c) (ossl_ctype_check((c), CTYPE_MASK_base64))
81# define ossl_isasn1print(c) (ossl_ctype_check((c), CTYPE_MASK_asn1print))
82
83#endif