blob: 7e9b54d88101b3c6f69cba4deab8232d07af3f40 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
/**
* @mainpage
*
* @section libusual libusual
*
* libusual is utility library.
*
* Unlike APR or GLIB which create their own API world, libusual
* tries to use standardized API's whenever possible.
*
* Goals for portability APIs:
* - Follow modern POSIX, BSD, glibc. Make the APIs available everywhere.
* - If compat is impossible, allow the user code to compile - eg. UNIX
* sockets on win32.
* - Assume cooparating user:
* - libusual needs to implement only API that are used and useful. No need try to provide full POSIX.
* - user code survives gracefully when libusual provides less functionality.
*
* Goals for new APIs:
* - Simple, clear API
* - Simple, clear implementation.
* - It is preferable to have simple code which can be copied and modified
* for some special case than complex code that tries to handle
* everything at once.
*
* @section antimake Antimake build system.
*
* <a href="mk/">Build system demos and docs</a>.
*
* @section modules Module list.
*
* <table>
* <tr><th colspan=2> Compat includes </th></tr>
* <tr><td> <usual/base.h> </td><td> Base C environment </td></tr>
* <tr><td> <usual/ctype.h> </td><td> ctype compat </td></tr>
* <tr><td> <usual/getopt.h> </td><td> Command line argument processing </td></tr>
* <tr><td> <usual/err.h> </td><td> Error handling for command-line tools </td></tr>
* <tr><td> <usual/netdb.h> </td><td> Async DNS lookup </td></tr>
* <tr><td> <usual/pthread.h> </td><td> Pthreads compat </td></tr>
* <tr><td> <usual/signal.h> </td><td> Signal compat </td></tr>
* <tr><td> <usual/socket.h> </td><td> Socket compat and helper functions </td></tr>
* <tr><td> <usual/string.h> </td><td> String compat and helper functions </td></tr>
* <tr><td> <usual/time.h> </td><td> Time compat and helper functions </td></tr>
* <tr><td> <usual/fnmatch.h> </td><td> fnmatch compat </td></tr>
* <tr><th colspan=2> Data Structures </th></tr>
* <tr><td> <usual/aatree.h> </td><td> Binary Tree </td></tr>
* <tr><td> <usual/cbtree.h> </td><td> Crit-Bit Tree </td></tr>
* <tr><td> <usual/hashtab-impl.h> </td><td> Hash table </td></tr>
* <tr><td> <usual/heap.h> </td><td> Binary heap </td></tr>
* <tr><td> <usual/list.h> </td><td> Double-linked list </td></tr>
* <tr><td> <usual/mbuf.h> </td><td> Memory buffer </td></tr>
* <tr><td> <usual/mdict.h </td><td> Minimal dict </td></tr>
* <tr><td> <usual/shlist.h> </td><td> Double-linked list for shared mem </td></tr>
* <tr><td> <usual/statlist.h> </td><td> List with stats </td></tr>
* <tr><td> <usual/strpool.h> </td><td> Refcounted strings </td></tr>
* <tr><th colspan=2> Data Processing </th></tr>
* <tr><td> <usual/bits.h> </td><td> Bit arithmetic </td></tr>
* <tr><td> <usual/bytemap.h> </td><td> Byte processing </td></tr>
* <tr><td> <usual/cfparser.h> </td><td> Config parser </td></tr>
* <tr><td> <usual/endian.h> </td><td> Endianess conversion </td></tr>
* <tr><td> <usual/misc.h> </td><td> Misc arithmetic </td></tr>
* <tr><td> <usual/regex.h> </td><td> POSIX regex compat </td></tr>
* <tr><td> <usual/pgutil.h> </td><td> PostgreSQL data formats </td></tr>
* <tr><td> <usual/utf8.h> </td><td> Low-level UTF8 handling </td></tr>
* <tr><th colspan=2> Non-cryptographic hashing </th></tr>
* <tr><td> <usual/hashing/crc32.h> </td><td> CRC32 </td></tr>
* <tr><td> <usual/hashing/lookup3.h> </td><td> Jenkins' lookup3 hash </td></tr>
* <tr><td> <usual/hashing/siphash.h> </td><td> Siphash </td></tr>
* <tr><td> <usual/hashing/memhash.h> </td><td> In-memory hashing </td></tr>
* <tr><td> <usual/hashing/spooky.h> </td><td> Jenkins' SpookyHash for 64-bit CPUs </td></tr>
* <tr><td> <usual/hashing/xxhash.h> </td><td> XXHash for 32-bit CPUs </td></tr>
* <tr><th colspan=2> Cryptography </th></tr>
* <tr><td> <usual/crypto/csrandom.h> </td><td> Cryptographically Secure Randomness </td></tr>
* <tr><td> <usual/crypto/digest.h> </td><td> Common API for cryptographic message digests </td></tr>
* <tr><td> <usual/crypto/hmac.h> </td><td> HMAC with digest </td></tr>
* <tr><td> <usual/crypto/md5.h> </td><td> MD5 hash </td></tr>
* <tr><td> <usual/crypto/sha1.h> </td><td> SHA1 hash </td></tr>
* <tr><td> <usual/crypto/sha256.h> </td><td> SHA256/224 hashes </td></tr>
* <tr><td> <usual/crypto/sha512.h> </td><td> SHA512/384 hashes </td></tr>
* <tr><td> <usual/crypto/sha3.h> </td><td> SHA3/SHAKE hashes </td></tr>
* <tr><td> <usual/crypto/keccak.h> </td><td> Keccak sponge API </td></tr>
* <tr><td> <usual/crypto/keccak_prng.h> </td><td> PRNG based on Keccak </td></tr>
* <tr><th colspan=2> Memory Allocation </th></tr>
* <tr><td> <usual/cxalloc.h> </td><td> Context Allocator framework </td></tr>
* <tr><td> <usual/cxextra.h> </td><td> Extra allocators </td></tr>
* <tr><td> <usual/mempool.h> </td><td> Simple append-only memory pool </td></tr>
* <tr><td> <usual/slab.h> </td><td> Slab allocator for same-size objects </td></tr>
* <tr><th colspan=2> OS support </th></tr>
* <tr><td> <usual/event.h> </td><td> libevent compat </td></tr>
* <tr><td> <usual/daemon.h> </td><td> Process daemonization </td></tr>
* <tr><td> <usual/fileutil.h> </td><td> Various file I/O tools </td></tr>
* <tr><td> <usual/logging.h> </td><td> Logging framework for daemons </td></tr>
* <tr><td> <usual/pgsocket.h> </td><td> Async Postgres connection framework </td></tr>
* <tr><td> <usual/safeio.h> </td><td> Safety wrappers around OS I/O </td></tr>
* </table>
*/
|