Skip to main content

tinyrlibc/
lib.rs

1//! A tiny C library, written in Rust.
2//!
3//! See README.md for more details.
4//!
5//! This file is Copyright (c) Jonathan 'theJPster' Pallant 2019
6//! Licensed under the Blue Oak Model Licence 1.0.0
7//!
8//! See each module for its respective license.
9
10#![cfg_attr(not(test), no_std)]
11#![allow(clippy::missing_safety_doc)]
12#![allow(unused_imports)]
13
14// Useful imports
15mod ctype;
16pub use self::ctype::*;
17
18// Stateless implementations.
19// rustfmt will keep these in alphabetical order.
20mod abs;
21mod itoa;
22mod memchr;
23mod qsort;
24mod rand_r;
25mod snprintf;
26mod strcat;
27mod strchr;
28mod strcmp;
29mod strcpy;
30mod strcspn;
31mod strlen;
32mod strncasecmp;
33mod strncmp;
34mod strncpy;
35mod strrchr;
36mod strspn;
37mod strstr;
38mod strtol;
39
40// Stateful implementations (which hence are optional).
41// rustfmt will keep these in alphabetical order.
42#[cfg(feature = "alloc")]
43mod malloc;
44#[cfg(feature = "rand")]
45mod rand;
46#[cfg(feature = "signal")]
47mod signal;
48
49// Public re-exports.
50// rustfmt will keep these in alphabetical order.
51#[cfg(feature = "abs")]
52pub use self::abs::abs;
53#[cfg(feature = "itoa")]
54pub use self::itoa::itoa;
55#[cfg(feature = "utoa")]
56pub use self::itoa::utoa;
57#[cfg(feature = "alloc")]
58pub use self::malloc::{calloc, free, malloc, realloc};
59#[cfg(feature = "memchr")]
60pub use self::memchr::memchr;
61#[cfg(feature = "qsort")]
62pub use self::qsort::qsort;
63#[cfg(feature = "rand")]
64pub use self::rand::{rand, srand};
65#[cfg(feature = "rand_r")]
66pub use self::rand_r::{rand_r, RAND_MAX};
67#[cfg(feature = "signal")]
68pub use self::signal::{abort, raise, signal};
69#[cfg(feature = "strcat")]
70pub use self::strcat::strcat;
71#[cfg(feature = "strchr")]
72pub use self::strchr::strchr;
73#[cfg(feature = "strcmp")]
74pub use self::strcmp::strcmp;
75#[cfg(feature = "strcpy")]
76pub use self::strcpy::strcpy;
77#[cfg(feature = "strcspn")]
78pub use self::strcspn::strcspn;
79#[cfg(feature = "strlen")]
80pub use self::strlen::strlen;
81#[cfg(feature = "strncasecmp")]
82pub use self::strncasecmp::strncasecmp;
83#[cfg(feature = "strncmp")]
84pub use self::strncmp::strncmp;
85#[cfg(feature = "strncpy")]
86pub use self::strncpy::strncpy;
87#[cfg(feature = "strrchr")]
88pub use self::strrchr::strrchr;
89#[cfg(feature = "strspn")]
90pub use self::strspn::strspn;
91#[cfg(feature = "strstr")]
92pub use self::strstr::strstr;
93#[cfg(feature = "atoi")]
94pub use self::strtol::atoi;
95#[cfg(feature = "isalpha")]
96pub use self::strtol::isalpha;
97#[cfg(feature = "isdigit")]
98pub use self::strtol::isdigit;
99#[cfg(feature = "isspace")]
100pub use self::strtol::isspace;
101#[cfg(feature = "isupper")]
102pub use self::strtol::isupper;
103#[cfg(feature = "strtoimax")]
104pub use self::strtol::strtoimax;
105#[cfg(feature = "strtol")]
106pub use self::strtol::strtol;
107#[cfg(feature = "strtoll")]
108pub use self::strtol::strtoll;
109#[cfg(feature = "strtoul")]
110pub use self::strtol::strtoul;
111#[cfg(feature = "strtoull")]
112pub use self::strtol::strtoull;
113#[cfg(feature = "strtoumax")]
114pub use self::strtol::strtoumax;