summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/u8c_abrt.324
-rw-r--r--docs/u8c_col.333
-rw-r--r--docs/u8c_dbg.318
-rw-r--r--docs/u8c_dbgprint.323
-rw-r--r--docs/u8c_end.324
-rw-r--r--docs/u8c_errhandltyp.320
-rw-r--r--docs/u8c_errtyp.330
-rw-r--r--docs/u8c_fmt.318
-rw-r--r--docs/u8c_fmttyp.345
-rw-r--r--docs/u8c_geterr.319
-rw-r--r--docs/u8c_init.319
-rw-r--r--docs/u8c_isalnum.319
-rw-r--r--docs/u8c_isalpha.319
-rw-r--r--docs/u8c_iscntrl.319
-rw-r--r--docs/u8c_isdigit.319
-rw-r--r--docs/u8c_ispunct.319
-rw-r--r--docs/u8c_isspace.319
-rw-r--r--docs/u8c_isxdigit.319
-rw-r--r--docs/u8c_print.319
-rw-r--r--docs/u8c_println.319
-rw-r--r--docs/u8c_regerrhandl.322
-rw-r--r--docs/u8c_seterr.319
-rw-r--r--docs/u8c_setfmt.318
-rw-r--r--docs/u8c_thrdsafe.322
-rw-r--r--docs/u8c_u32alloc.319
-rw-r--r--docs/u8c_u32cat.319
-rw-r--r--docs/u8c_u32cmp.319
-rw-r--r--docs/u8c_u32cp.319
-rw-r--r--docs/u8c_u32fndchr.319
-rw-r--r--docs/u8c_u32fndpat.319
-rw-r--r--docs/u8c_u32free.318
-rw-r--r--docs/u8c_u32ins.319
-rw-r--r--docs/u8c_u32substr.319
-rw-r--r--docs/u8c_u32sz.319
-rw-r--r--docs/u8c_u8alloc.318
-rw-r--r--docs/u8c_u8dec.327
-rw-r--r--docs/u8c_u8enc.327
-rw-r--r--docs/u8c_u8free.317
-rw-r--r--docs/u8c_unimax.318
-rw-r--r--docs/u8c_ver.317
-rw-r--r--docs/u8c_vfmt.320
-rw-r--r--docs/u8c_vprint.320
42 files changed, 878 insertions, 0 deletions
diff --git a/docs/u8c_abrt.3 b/docs/u8c_abrt.3
new file mode 100644
index 0000000..0445701
--- /dev/null
+++ b/docs/u8c_abrt.3
@@ -0,0 +1,24 @@
+.TH "u8c_abrt" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_abrt - Abort - Abort program with diagnostic information.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h
+# include <stdnoreturn.h>
+# include <uchar.h>
+extern noreturn bool u8c_abrt(char const * const fl,long long const ln,char const * const fn,char const * const why);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+The function \f[B]u8c_abrt\f[R] aborts the program and prints diagnostic infiormation to \f[B]stderr\f[R].
+.PP
+\f[B]__FILE__\f[R] is to be passed at \f[B]fl\f[R], \f[B](long long)__LINE__\f[R] at \f[B]ln\f[B], and \f[B]__func__\f[R] at \f[B]fn\f[R]. A standard string (\f[B]char const *\f[R]) must be passed at \f[B]why\f[R], which explains the reason for aborting.
+.PP
+All arguments are printed, in the end followed by a timestamp representing the number of seconds passed since the current epoch (as returned by \f[B]time(NULL)\f[R]).
+.SH VERSION
+.PP
+u8c 16
diff --git a/docs/u8c_col.3 b/docs/u8c_col.3
new file mode 100644
index 0000000..b0fb658
--- /dev/null
+++ b/docs/u8c_col.3
@@ -0,0 +1,33 @@
+.TH "u8c_col" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_col - Colour - Set of macros expanding to hexadecimal colour value expressions.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdint.h>
+# define u8c_col_azure (UINT32_C(0x3DA9E1))
+# define u8c_col_ash (UINT32_C(0xD2D2CC))
+# define u8c_col_black (UINT32_C(0x444747))
+# define u8c_col_blue (UINT32_C(0x3D3DE1))
+# define u8c_col_chartreuse (UINT32_C(0xA9E13D))
+# define u8c_col_cyan (UINT32_C(0x3DE1E1))
+# define u8c_col_green (UINT32_C(0x3ED13D))
+# define u8c_col_magenta (UINT32_C(0xE13DE1))
+# define u8c_col_mint (UINT32_C(0x3DE1A9))
+# define u8c_col_orange (UINT32_C(0xE1A93D))
+# define u8c_col_red (UINT32_C(0xE13D3D))
+# define u8c_col_rose (UINT32_C(0xE13DA9))
+# define u8c_col_silver (UINT32_C(0x9CA1A1))
+# define u8c_col_violet (UINT32_C(0xA93dE1))
+# define u8c_col_white (UINT32_C(0xF8F8F1))
+# define u8c_col_yellow (UINT32_C(0xE1E13D))
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+The macro set \f[B]u8c_col\f[R] contains sixteen macros expanding to hexadecimal colour value expressions of type \f[B]uint_least32_t\f[R].
+.SH VERSION
+.PP
+u8c 2
diff --git a/docs/u8c_dbg.3 b/docs/u8c_dbg.3
new file mode 100644
index 0000000..d1f95eb
--- /dev/null
+++ b/docs/u8c_dbg.3
@@ -0,0 +1,18 @@
+.TH "u8c_dbg" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_dbg - Debug - Whether or not the library is in debug mode.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+extern bool const u8c_dbg;
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+The constant \f[B]u8c_dbg\f[R] has value \f[B]false\f[R] if u8c has been compiled with debugging disabled, otherwise \f[B]true\f[R].
+.SH VERSION
+.PP
+u8c 0 (as \f[B]u8c_debug\f[R]), u8c 16
diff --git a/docs/u8c_dbgprint.3 b/docs/u8c_dbgprint.3
new file mode 100644
index 0000000..e7c609f
--- /dev/null
+++ b/docs/u8c_dbgprint.3
@@ -0,0 +1,23 @@
+.TH "u8c_dbgprint" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_dbgprint - Debug print - Print line if debug mode is enabled.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# if defined(NDEBUG)
+# define u8c_dbgprint(...) ((void)0x0)
+# else
+# include <u8c/println.h>
+# include <stdio.h>
+# define u8c_dbgprint(...) u8c_println(stderr,__VA_ARGS__)
+# endif
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+The function-like macro \f[B]u8c_dbgprint\f[R] passes it\[cq]s input to \f[B]u8c_println\f[R] (if the \f[B]NDEBUG\f[R] macro is defined, nothing is done).
+.SH VERSION
+.PP
+u8c 0
diff --git a/docs/u8c_end.3 b/docs/u8c_end.3
new file mode 100644
index 0000000..bf8c81e
--- /dev/null
+++ b/docs/u8c_end.3
@@ -0,0 +1,24 @@
+.TH "u8c_end" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_end - End - Finalise u8c and clean up.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+extern bool u8c_end(void);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+The function \f[B]u8c_end\f[R] ends the current u8c session.
+.PP
+If \f[B]u8c_end\f[R] is called before \f[B]u8c_init\f[R], \f[B]false\f[R] is returned, and nothing has happened.
+.PP
+If it is called after it has already been called, unless \f[B]u8c_init\f[R] has been called in the meantime, \f[B]false\f[R] is returned, and nothing has happened.
+.PP
+Even if \f[B]u8c_thrdsafe\f[R] evaluates to \f[B]true\f[R], this function is never thread-safe.
+.SH VERSION
+.PP
+u8c 2
diff --git a/docs/u8c_errhandltyp.3 b/docs/u8c_errhandltyp.3
new file mode 100644
index 0000000..ac7f8e2
--- /dev/null
+++ b/docs/u8c_errhandltyp.3
@@ -0,0 +1,20 @@
+.TH "u8c_errhandltyp" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_errhandltyp - Error handler type - Type to be used for error handlers passerd to \f[B]u8c_regerrhandl\f[R].
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <u8c/errtyp.h>
+typedef void (* u8c_errhandltyp)(enum u8c_errtyp);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+The type definition \f[B]u8c_errhandltyp\f[R] is for convenience.
+.PP
+It is to be the type of the error handler accepted by \f[B]u8c_regerrhandl\f[R].
+.SH VERSION
+.PP
+u8c 19
diff --git a/docs/u8c_errtyp.3 b/docs/u8c_errtyp.3
new file mode 100644
index 0000000..cd0a282
--- /dev/null
+++ b/docs/u8c_errtyp.3
@@ -0,0 +1,30 @@
+.TH "u8c_errtyp" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_errtyp - Error type - Enumeration for specifying the type of error.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+enum u8c_errtyp {
+ u8c_errtyp_badalloc,
+ u8c_errtyp_badio,
+ u8c_errtyp_u32oor,
+ u8c_errtyp_u8oor,
+ u8c_errtyp_deferr,
+ u8c_errtyp_untermin,
+ u8c_errtyp_maxerrtyp,
+ u8c_errtyp_all,
+};
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+The enumeration \f[B]u8c_errtyp\f[R] contains the various types of error to be used in u8c.
+.PP
+The member \f[B]u8c_errtyp_maxerrtyp\f[R] must \f[I]NEVER\f[R] be passed to any u8c function.
+.PP
+The member \f[B]u8c_errtyp_all\f[R] is to be passed to \f[B]u8c_regerrhandl\f[R] only.
+.SH VERSION
+.PP
+u8c 19
diff --git a/docs/u8c_fmt.3 b/docs/u8c_fmt.3
new file mode 100644
index 0000000..cbb823b
--- /dev/null
+++ b/docs/u8c_fmt.3
@@ -0,0 +1,18 @@
+.TH "u8c_fmt" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_fmt - Format - Format UTF-32 string.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stddef.h>
+# include <uchar.h>
+extern bool u8c_fmt(size_t * const outsz,char32_t const * * const out,char32_t const * const in,...);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 2
diff --git a/docs/u8c_fmttyp.3 b/docs/u8c_fmttyp.3
new file mode 100644
index 0000000..8cdea7c
--- /dev/null
+++ b/docs/u8c_fmttyp.3
@@ -0,0 +1,45 @@
+.TH "u8c_fmttyp" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_fmttyp - Format type - Format specifier to be used by \f[C]u8c_fmt\f[R] or \f[C]u8c_vfmt\f[R].
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+enum u8c_fmttyp {
+ u8c_fmttyp_bgcol,
+ u8c_fmttyp_bgcol0,
+ u8c_fmttyp_bool,
+ u8c_fmttyp_byt,
+ u8c_fmttyp_chr,
+ u8c_fmttyp_fgcol,
+ u8c_fmttyp_fgcol0,
+ u8c_fmttyp_int,
+ u8c_fmttyp_int16,
+ u8c_fmttyp_int32,
+ u8c_fmttyp_int64,
+ u8c_fmttyp_int8,
+ u8c_fmttyp_llong,
+ u8c_fmttyp_long,
+ u8c_fmttyp_sbyt,
+ u8c_fmttyp_shrt,
+ u8c_fmttyp_str,
+ u8c_fmttyp_sz,
+ u8c_fmttyp_tm,
+ u8c_fmttyp_ubyt,
+ u8c_fmttyp_uint,
+ u8c_fmttyp_uint16,
+ u8c_fmttyp_uint32,
+ u8c_fmttyp_uint64,
+ u8c_fmttyp_uint8,
+ u8c_fmttyp_ulong,
+ u8c_fmttyp_ullong,
+ u8c_fmttyp_ushrt,
+};
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 0
diff --git a/docs/u8c_geterr.3 b/docs/u8c_geterr.3
new file mode 100644
index 0000000..c74b25f
--- /dev/null
+++ b/docs/u8c_geterr.3
@@ -0,0 +1,19 @@
+.TH "u8c_geterr" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_geterr - Get error - Get last error set by \f[C]u8c_seterr\f[R].
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stddef.h>
+# include <uchar.h>
+extern bool u8c_geterr(size_t * const sz,char32_t const * * const out);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 2
diff --git a/docs/u8c_init.3 b/docs/u8c_init.3
new file mode 100644
index 0000000..0491a0b
--- /dev/null
+++ b/docs/u8c_init.3
@@ -0,0 +1,19 @@
+.TH "u8c_init" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_init - Initialise - Initialise and start an u8c session.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <u8c/errtyp.h>
+extern bool u8c_init(void);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+Even if \f[B]u8c_thrdsafe\f[R] evaluates to \f[B]true\f[R], this function is never thread-safe.
+.SH VERSION
+.PP
+u8c 2
diff --git a/docs/u8c_isalnum.3 b/docs/u8c_isalnum.3
new file mode 100644
index 0000000..c8f9dcc
--- /dev/null
+++ b/docs/u8c_isalnum.3
@@ -0,0 +1,19 @@
+.TH "u8c_isalnum" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_isalnum - Is alphanumeric - Check if a character is alphanumeric.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stdint.h>
+# include <uchar.h>
+extern bool u8c_isalnum(uint_least8_t * const res,char32_t const chr);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c X
diff --git a/docs/u8c_isalpha.3 b/docs/u8c_isalpha.3
new file mode 100644
index 0000000..c6cc372
--- /dev/null
+++ b/docs/u8c_isalpha.3
@@ -0,0 +1,19 @@
+.TH "u8c_isalpha" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_isalpha - Is alphabetic - Check if a character is alphabetic.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stdint.h>
+# include <uchar.h>
+extern bool u8c_isalpha(uint_least8_t * const res,char32_t const chr);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c X
diff --git a/docs/u8c_iscntrl.3 b/docs/u8c_iscntrl.3
new file mode 100644
index 0000000..1c27b82
--- /dev/null
+++ b/docs/u8c_iscntrl.3
@@ -0,0 +1,19 @@
+.TH "u8c_iscntrl" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_iscntrl - Is control - Check if a character is a control character.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stdint.h>
+# include <uchar.h>
+extern bool u8c_iscntrl(uint_least8_t * const res,char32_t const chr);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c X
diff --git a/docs/u8c_isdigit.3 b/docs/u8c_isdigit.3
new file mode 100644
index 0000000..6b3ec4a
--- /dev/null
+++ b/docs/u8c_isdigit.3
@@ -0,0 +1,19 @@
+.TH "u8c_isdigit" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_isdigit - Is digit - Check if a character is a dozenal digit.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stdint.h>
+# include <uchar.h>
+extern bool u8c_isdigit(uint_least8_t * const res,char32_t const chr);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c X
diff --git a/docs/u8c_ispunct.3 b/docs/u8c_ispunct.3
new file mode 100644
index 0000000..af607cb
--- /dev/null
+++ b/docs/u8c_ispunct.3
@@ -0,0 +1,19 @@
+.TH "u8c_ispunct" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_ispunct - Is punctuation - Check if a character is a punctuation mark.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stdint.h>
+# include <uchar.h>
+extern bool u8c_ispunct(uint_least8_t * const res,char32_t const chr);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c X
diff --git a/docs/u8c_isspace.3 b/docs/u8c_isspace.3
new file mode 100644
index 0000000..72ad3e1
--- /dev/null
+++ b/docs/u8c_isspace.3
@@ -0,0 +1,19 @@
+.TH "u8c_isspace" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_isspace - Is space - Check if a character is an whitespace.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stdint.h>
+# include <uchar.h>
+extern bool u8c_isspace(uint_least8_t * const res,char32_t const chr);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c X
diff --git a/docs/u8c_isxdigit.3 b/docs/u8c_isxdigit.3
new file mode 100644
index 0000000..66c7955
--- /dev/null
+++ b/docs/u8c_isxdigit.3
@@ -0,0 +1,19 @@
+.TH "u8c_isxdigit" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_isxdigit - Is hexadecimal digit - Check if a character is a hexadecimal digit.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stdint.h>
+# include <uchar.h>
+extern bool u8c_isxdigit(uint_least8_t * const res,char32_t const chr);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 16
diff --git a/docs/u8c_print.3 b/docs/u8c_print.3
new file mode 100644
index 0000000..54a7466
--- /dev/null
+++ b/docs/u8c_print.3
@@ -0,0 +1,19 @@
+.TH "u8c_print" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_print - Print - Format UTF-32 and print it to file.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stdio.h>
+# include <uchar.h>
+extern bool u8c_print(FILE * fp,char32_t const * const msg,...);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 2
diff --git a/docs/u8c_println.3 b/docs/u8c_println.3
new file mode 100644
index 0000000..72345a6
--- /dev/null
+++ b/docs/u8c_println.3
@@ -0,0 +1,19 @@
+.TH "u8c_println" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_println - Print line - Format UTF-32 and print it to file (followed by a new-line).
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stdio.h>
+# include <uchar.h>
+extern bool u8c_println(FILE * fp,char32_t const * const msg,...);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 0 (as u8c_print), u8c 2
diff --git a/docs/u8c_regerrhandl.3 b/docs/u8c_regerrhandl.3
new file mode 100644
index 0000000..7b2f824
--- /dev/null
+++ b/docs/u8c_regerrhandl.3
@@ -0,0 +1,22 @@
+.TH "u8c_regerrhandl" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_regerrhandl - Register error handler - Register error handler function to be called by \f[B]u8c_seterr\f[R].
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <u8c/errhandltyp.h>
+# include <u8c/errtyp.h>
+extern bool u8c_regerrhandl(enum u8c_errtyp typ,u8c_errhandltyp errhandl);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+Registers an error handler to be called when an error of type \f[B]typ\f[R] is detected.
+.PP
+If \f[B]u8c_errtyp_all\f[R] is passed at \f[B]typ\f[R], the error handler is registered for all error types.
+.SH VERSION
+.PP
+u8c 19
diff --git a/docs/u8c_seterr.3 b/docs/u8c_seterr.3
new file mode 100644
index 0000000..49125f5
--- /dev/null
+++ b/docs/u8c_seterr.3
@@ -0,0 +1,19 @@
+.TH "u8c_seterr" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_seterr - Set error - Set error and call error handler.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <u8c/errtyp.h>
+# include <uchar.h>
+extern bool u8c_seterr(char32_t const * const msg,enum u8c_errtyp _typ);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 10
diff --git a/docs/u8c_setfmt.3 b/docs/u8c_setfmt.3
new file mode 100644
index 0000000..105019e
--- /dev/null
+++ b/docs/u8c_setfmt.3
@@ -0,0 +1,18 @@
+.TH "u8c_setfmt" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_setfmt - Set format - Set format to be used by \f[B]u8c_fmt\f[R] and company.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stdint.h>
+extern bool u8c_setfmt(uint_least8_t const base,uint_least8_t const endian);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 16
diff --git a/docs/u8c_thrdsafe.3 b/docs/u8c_thrdsafe.3
new file mode 100644
index 0000000..b229734
--- /dev/null
+++ b/docs/u8c_thrdsafe.3
@@ -0,0 +1,22 @@
+.TH "u8c_thrdsafe" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_thrdsafe - Thread-safe - Whether or not u8c is thread-safe.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+extern bool const u8c_thrdsafe;
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+The constant \f[B]u8c_thrdsafe\f[R] evaluates to \f[B]true\f[R] if u8c is thread-safe, that is, the following functions (that othwerise wouldn't be thread-safe) may be called from multiple threads: \f[B]u8c_geterr\f[R], \f[B]u8c_regerrhandl\f[R], \f[B]u8c_seterr\f[R], and \f[B]u8c_setfmt\f[R].
+.PP
+If it evaluates to \f[B]false\f[R], the functions listed may only be called from one thread.
+.PP
+The functions \f[B]u8c_end\f[R] and \f[B]u8c_init\f[R] may never be called from more than one thread.
+.SH VERSION
+.PP
+u8c 0
diff --git a/docs/u8c_u32alloc.3 b/docs/u8c_u32alloc.3
new file mode 100644
index 0000000..8288f55
--- /dev/null
+++ b/docs/u8c_u32alloc.3
@@ -0,0 +1,19 @@
+.TH "u8c_u32alloc" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_u32alloc - UTF-32 allocate - Allocate UTF-32 string.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stddef.h>
+# include <uchar.h>
+extern bool u8c_u32alloc(char32_t * * const u32,size_t const sz);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 16
diff --git a/docs/u8c_u32cat.3 b/docs/u8c_u32cat.3
new file mode 100644
index 0000000..b600f9f
--- /dev/null
+++ b/docs/u8c_u32cat.3
@@ -0,0 +1,19 @@
+.TH "u8c_u32cat" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_u32cat - UTF-32 concatenate - Concatenate two UTF-32 strings.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stddef.h>
+# include <uchar.h>
+extern bool u8c_u32cat(size_t * const sz,char32_t const * * const out,char32_t const * const lstr,char32_t const * const rstr);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 16
diff --git a/docs/u8c_u32cmp.3 b/docs/u8c_u32cmp.3
new file mode 100644
index 0000000..c4d41bd
--- /dev/null
+++ b/docs/u8c_u32cmp.3
@@ -0,0 +1,19 @@
+.TH "u8c_u32cmp" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_u32cmp - UTF-32 compare - Compare two UTF-32 strings.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stdint.h>
+# include <uchar.h>
+extern bool u8c_u32cmp(uint_least8_t * const res,char32_t const * const lstr,char32_t const * const rstr);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 9
diff --git a/docs/u8c_u32cp.3 b/docs/u8c_u32cp.3
new file mode 100644
index 0000000..ad28884
--- /dev/null
+++ b/docs/u8c_u32cp.3
@@ -0,0 +1,19 @@
+.TH "u8c_u32cp" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_u32cp - UTF-32 copy - Copy an UTF-32 string.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stddef.h>
+# include <uchar.h>
+extern bool u8c_u32cp(size_t * const sz,char32_t const * * const out,char32_t const * const in);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 2
diff --git a/docs/u8c_u32fndchr.3 b/docs/u8c_u32fndchr.3
new file mode 100644
index 0000000..a7f688e
--- /dev/null
+++ b/docs/u8c_u32fndchr.3
@@ -0,0 +1,19 @@
+.TH "u8c_u32fndchr" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_u32fndchr - UTF-32 find character - Find the first occurence of an UTF-32 character in an UTF-32 string.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stddef.h>
+# include <uchar.h>
+extern bool u8c_u32fndchr(size_t * const pos,char32_t const * const in,char32_t const chr);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 16
diff --git a/docs/u8c_u32fndpat.3 b/docs/u8c_u32fndpat.3
new file mode 100644
index 0000000..1caf194
--- /dev/null
+++ b/docs/u8c_u32fndpat.3
@@ -0,0 +1,19 @@
+.TH "u8c_u32fndpat" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_u32fndpat - UTF-32 find pattern - Find the first occurence of an UTF-32 pattern (string) in an UTF-32 string.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stddef.h>
+# include <uchar.h>
+extern bool u8c_u32fndpat(size_t * const pos,char32_t const * const in,char32_t const * const pat);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 16
diff --git a/docs/u8c_u32free.3 b/docs/u8c_u32free.3
new file mode 100644
index 0000000..da74052
--- /dev/null
+++ b/docs/u8c_u32free.3
@@ -0,0 +1,18 @@
+.TH "u8c_u32free" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_u32free - UTF-32 free - Free UTF-32 string.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <uchar.h>
+extern bool u8c_u32free(char32_t const * * const u32);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 14
diff --git a/docs/u8c_u32ins.3 b/docs/u8c_u32ins.3
new file mode 100644
index 0000000..ea62cae
--- /dev/null
+++ b/docs/u8c_u32ins.3
@@ -0,0 +1,19 @@
+.TH "u8c_u32ins" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_u32ins - UTF-32 insert - Insert an UTF-32 string into another UTF-32 string.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stddef.h>
+# include <uchar.h>
+extern bool u8c_u32ins(size_t * const sz,char32_t const * * const out,size_t const pos,char32_t const * const str0,char32_t const * const str1);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 19
diff --git a/docs/u8c_u32substr.3 b/docs/u8c_u32substr.3
new file mode 100644
index 0000000..b35bebe
--- /dev/null
+++ b/docs/u8c_u32substr.3
@@ -0,0 +1,19 @@
+.TH "u8c_u32substr" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_u32substr - UTF-32 sub-string - Get sub-string of an UTF-32 string.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stddef.h>
+# include <uchar.h>
+extern bool u8c_u32substr(char32_t const * * const out,size_t const start,size_t const len,char32_t const * const in);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 16
diff --git a/docs/u8c_u32sz.3 b/docs/u8c_u32sz.3
new file mode 100644
index 0000000..0a7fab9
--- /dev/null
+++ b/docs/u8c_u32sz.3
@@ -0,0 +1,19 @@
+.TH "u8c_u32sz" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_u32sz - UTF-32 size - Get the size of an UTF-32 string.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stddef.h>
+# include <uchar.h>
+extern bool u8c_u32sz(size_t * sz,char32_t const * in);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 2
diff --git a/docs/u8c_u8alloc.3 b/docs/u8c_u8alloc.3
new file mode 100644
index 0000000..8fbda08
--- /dev/null
+++ b/docs/u8c_u8alloc.3
@@ -0,0 +1,18 @@
+.TH "u8c_u8alloc" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_u8alloc - UTF-8 allocate - Allocate UTF-8 string.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stddef.h>
+extern bool u8c_u8alloc(unsigned char * * const u32,size_t const sz);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 16
diff --git a/docs/u8c_u8dec.3 b/docs/u8c_u8dec.3
new file mode 100644
index 0000000..2afe4dd
--- /dev/null
+++ b/docs/u8c_u8dec.3
@@ -0,0 +1,27 @@
+.\" Automatically generated by Pandoc 2.14.0.2
+.\"
+.TH "" "" "" "" ""
+.hy
+.SH NAME
+.PP
+u8c_u8dec - UTF-8 decode - Convert an UTF-8 string to UTF-32.
+.SH DECLARATION
+.IP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stddef.h>
+# include <uchar.h>
+extern bool u8c_u8dec(size_t * const sz,char32_t const * * const out,unsigned char const * const in);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+The function \f[C]u8c_u8dec\f[R] converts the given UTF-8 string
+(\f[I]in\f[R]) to UTF-32 (\f[I]out\f[R]).
+.PP
+The size of the output string (excluding the null-terminator) is placed
+into \f[I]sz\f[R], if [\f[I]sz\f[R]] is not equal to \f[I]NULL\f[R].
+.SH VERSION
+.PP
+u8c 0
diff --git a/docs/u8c_u8enc.3 b/docs/u8c_u8enc.3
new file mode 100644
index 0000000..64feaf1
--- /dev/null
+++ b/docs/u8c_u8enc.3
@@ -0,0 +1,27 @@
+.\" Automatically generated by Pandoc 2.14.0.2
+.\"
+.TH "" "" "" "" ""
+.hy
+.SH NAME
+.PP
+u8c_u8enc - UTF-8 encode - Convert an UTF-32 string to UTF-8.
+.SH DECLARATION
+.IP
+.nf
+\f[C]
+# include <stdbool.h>
+# include <stddef.h>
+# include <uchar.h>
+extern bool u8c_u8enc(size_t * const sz,unsigned char const * * const out,char32_t const * const in);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+The function \f[C]u8c_u8enc\f[R] converts the given UTF-32 string
+(\f[B]in\f[R]) to UTF-8 (\f[B]out\f[R]).
+.PP
+The size of the output string (excluding the null-terminator) is placed
+into \f[B]sz\f[R], if [\f[B]sz\f[R]] is not equal to \f[I]NULL\f[R].
+.SH VERSION
+.PP
+u8c 0
diff --git a/docs/u8c_u8free.3 b/docs/u8c_u8free.3
new file mode 100644
index 0000000..8c2c0ba
--- /dev/null
+++ b/docs/u8c_u8free.3
@@ -0,0 +1,17 @@
+.TH "u8c_u8free" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_u8free - UTF-8 free - Free UTF-8 string and set it to \f[B]NULL\f[R].
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdbool.h>
+extern bool u8c_u8free(unsigned char const * * const u8);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 16
diff --git a/docs/u8c_unimax.3 b/docs/u8c_unimax.3
new file mode 100644
index 0000000..7b35dc9
--- /dev/null
+++ b/docs/u8c_unimax.3
@@ -0,0 +1,18 @@
+.TH "u8c_unimax" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_unimax - Unicode maximum - Maximum valid Unicode codepoint.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdint.h>
+# include <uchar.h>
+# define u8c_unimax ((char32_t)UINT32_C(0x10FFFF))
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 16
diff --git a/docs/u8c_ver.3 b/docs/u8c_ver.3
new file mode 100644
index 0000000..7c2ea39
--- /dev/null
+++ b/docs/u8c_ver.3
@@ -0,0 +1,17 @@
+.TH "u8c_ver" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_ver - Version - Version of the u8c API.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdint.h>
+# define u8c_ver (UINT64_C(/* version */))
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 0
diff --git a/docs/u8c_vfmt.3 b/docs/u8c_vfmt.3
new file mode 100644
index 0000000..9b2f626
--- /dev/null
+++ b/docs/u8c_vfmt.3
@@ -0,0 +1,20 @@
+.TH "u8c_vfmt" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_vfmt - Variadic format - Format UTF-32 string.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdarg.h>
+# include <stdbool.h>
+# include <stddef.h>
+# include <uchar.h>
+extern bool u8c_vfmt(size_t * const sz,char32_t const * * const out,char32_t const * const in,va_list args);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 2
diff --git a/docs/u8c_vprint.3 b/docs/u8c_vprint.3
new file mode 100644
index 0000000..5db1cee
--- /dev/null
+++ b/docs/u8c_vprint.3
@@ -0,0 +1,20 @@
+.TH "u8c_vprint" "3" "" "u8c" "u8c API Manual"
+.SH NAME
+.PP
+u8c_vprint - Variadic print - Format UTF-32 and print it to file.
+.SH DECLARATION
+.PP
+.nf
+\f[C]
+# include <stdarg.h>
+# include <stdbool.h>
+# include <stdio.h>
+# include <uchar.h>
+extern bool u8c_vprint(FILE * fp,char32_t const * const msg,va_list args);
+\f[R]
+.fi
+.SH DESCRIPTION
+.PP
+.SH VERSION
+.PP
+u8c 2