diff --git a/.gitignore b/.gitignore
index 372ffe6..4a68951 100644
--- a/.gitignore
+++ b/.gitignore
@@ -69,6 +69,8 @@ configure~
/install-sh
/missing
/stamp-h1
+*.tar.gz
+*.zip
# Generated pkg-config file
unicorn.pc
@@ -77,5 +79,5 @@ unicorn.pc
*.pyc
# Generated files
-*.tar.gz
-*.zip
+unicorn.c
+unicorn.h
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 597c0ea..01ab7af 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.22)
-project(unicorn VERSION 1.0.2 LANGUAGES C)
+project(unicorn VERSION 1.0.3 LANGUAGES C)
include(CheckIncludeFile)
diff --git a/README.md b/README.md
index 67c3b42..9d7469a 100644
--- a/README.md
+++ b/README.md
@@ -61,7 +61,7 @@ It's written in C99 and only requires a few features from libc which are listed
## MISRA C:2012 Compliance
-Unicorn honors all Mandatory, most Required, and most Advisory rules defined by MIRSA C:2012.
+Unicorn honors all Mandatory, most Required, and most Advisory rules defined by MIRSA C:2012 and its amendments.
Deviations are [documented here](https://RailgunLabs.com/unicorn/manual/misra-compliance/).
You are encouraged to audit Unicorn and verify its level of conformance is acceptable.
diff --git a/configure.ac b/configure.ac
index 77f647d..8e1d281 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-AC_INIT([unicorn], [1.0.2])
+AC_INIT([unicorn], [1.0.3])
AM_INIT_AUTOMAKE([foreign])
AC_PROG_CC
AC_PROG_CPP
diff --git a/generate.pyz b/generate.pyz
index 135fcad..c00abbd 100755
--- a/generate.pyz
+++ b/generate.pyz
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
# Unicorn - Embeddable Unicode Library
-# Copyright (c) 2021-2024 Railgun Labs, LLC - All Rights Reserved
+# Copyright (c) 2021-2025 Railgun Labs, LLC - All Rights Reserved
#
# All information contained herein is and remains the property of Railgun Labs.
# The intellectual and technical concepts contained herein are proprietary to
@@ -144,7 +144,7 @@ def cL(fi,struct,function):
for eo in ek.keys():
source+=' {'
for eC in eJ:
- source+='UINT32_C({0}),'.format(eo.eB[eC.id])
+ source+='{0}u,'.format(eo.eB[eC.id])
size+=eC.ea.c()
source+='},\n'
source+=' };\n\n'
@@ -153,7 +153,7 @@ def cL(fi,struct,function):
if index%8==0:
source+='\n'
source+=' '
- source+='UINT16_C(%d), '%value
+ source+='%d, '%value
size+=2
source+='\n'
source+=' };\n\n'
@@ -162,7 +162,7 @@ def cL(fi,struct,function):
if index%8==0:
source+='\n'
source+=' '
- source+='UINT16_C(%d), '%value
+ source+='%d, '%value
size+=2
source+='\n'
source+=' };\n\n'
@@ -753,9 +753,9 @@ class cU(Feature):
source+='UNICHAR_C(0x{:04X}), '.format(eS)
size+=4
source+='};\n\n'
- header=f'#define CASING_IN_TABLE(C) (((C) & UINT16_C({dI})) == UINT16_C({dI}))\n'
- header+='#define GET_CASED_VALUE(C) ((C) & UINT16_C(0x3FFF))\n'
- header+=f'#define CASING_DIFF INT32_C({ey})\n'
+ header=f'#define CASING_IN_TABLE(C) (((C) & (uint16_t){dI}) == (uint16_t){dI})\n'
+ header+='#define GET_CASED_VALUE(C) ((C) & (uint16_t)0x3FFF)\n'
+ header+=f'#define CASING_DIFF {ey}\n'
header+='extern const unichar unicorn_simple_case_mappings[{0}];\n'.format(len(et))
assert len(et)<65535,'cannot use unsigned 16-bit integer anymore'
fg=cL(eG,'CharCaseData','unicorn_get_character_casing')
@@ -778,8 +778,8 @@ class cm(Feature):
mappings=fg['characterFlags']
file.close()
dX=fi.get(dW[0])
- header+='#define IS_CASED UINT32_C({0})\n'.format(u)
- header+='#define IS_CASE_IGNORABLE UINT32_C({0})\n'.format(v)
+ header+='#define IS_CASED {0}u\n'.format(u)
+ header+='#define IS_CASE_IGNORABLE {0}u\n'.format(v)
for fb,flags in mappings.items():
fi.eb(int(fb,16),dX,flags)
return fe(source=source,header=header,size=size)
@@ -829,8 +829,8 @@ class cp(Feature):
fi.eb(fb,dX,cf)
for fb,offset in aw:
fi.set(fb,ay,offset)
- header+='#define UNICORN_CHAR_NEEDS_NORMALIZATION UINT32_C({0})\n'.format(ce)
- header+='#define UNICORN_CHAR_CHANGES_WHEN_CASEFOLDED UINT32_C({0})\n'.format(cf)
+ header+='#define UNICORN_CHAR_NEEDS_NORMALIZATION {0}u\n'.format(ce)
+ header+='#define UNICORN_CHAR_CHANGES_WHEN_CASEFOLDED {0}u\n'.format(cf)
fd='#define UNICORN_FEATURE_CASEFOLD_DEFAULT\n'
return fe(source,header,fd,size)
class az(Feature):
@@ -966,7 +966,7 @@ class ds(Feature):
if index%8==0:
source+='\n'
source+=' '
- source+='UINT8_C(0x{:02X}), '.format(eS)
+ source+='(uint8_t)0x{:02X}, '.format(eS)
source+='\n'
source+='};\n\n'
if fh.optimize==er.el:
@@ -1017,7 +1017,7 @@ class aL(Feature):
header+=' unichar codepoint;\n'
header+=' unichar composed_codepoint;\n'
header+='};\n'
- header+='#define CHAR_IS_COMPOSABLE UINT32_C({0})\n'.format(cd)
+ header+='#define CHAR_IS_COMPOSABLE {0}u\n'.format(cd)
header+='extern const struct CanonicalCompositionPair uni_canonical_comp_pairs[{0}];\n'.format(len(ct))
header+='\n'
fd='#define UNICORN_FEATURE_NFC\n'
@@ -1138,7 +1138,7 @@ class aV(Feature):
for dR,en in enumerate(dO):
if dR%4==0:
source+='\n '
- source+='UINT32_C(0x{:08X}), '.format(en)
+ source+='0x{:08X}u, '.format(en)
size+=4
source+='};\n\n'
source+='const struct CollationNode unicorn_collation_mappings_trie[] = {\n'
@@ -1147,20 +1147,20 @@ class aV(Feature):
ep=len(eN.eF)<<24|eN.ev
aT=eN.dY
aU=eN.cy
- source+=f' {{ UINT32_C({ep}), UINT16_C({aT}), UINT16_C({aU}) }},\n'
+ source+=f' {{ {ep}u, {aT}, {aU} }},\n'
size+=8
source+='};\n\n'
header=fg.header
header+=aP
header+='#define UNICORN_MAX_COLLATION {0}\n'.format(de+1)
- header+='#define INLINE_CE_FLAG UINT32_C({0})\n'.format(db)
- header+='#define IN_WEIGHT_TABLE_FLAG UINT32_C({0})\n'.format(cv)
- header+='#define IN_TRIE_FLAG UINT32_C({0})\n'.format(cw)
- header+='#define CONTINUATION_FLAG UINT32_C({0})\n'.format(cx)
+ header+='#define INLINE_CE_FLAG {0}u\n'.format(db)
+ header+='#define IN_WEIGHT_TABLE_FLAG {0}u\n'.format(cv)
+ header+='#define IN_TRIE_FLAG {0}u\n'.format(cw)
+ header+='#define CONTINUATION_FLAG {0}u\n'.format(cx)
header+='#define LONGEST_INITIAL_SUBSTRING {0}\n'.format(aQ)
- header+='#define UNICORN_IN_COLLATION_TABLE(NODE) ((NODE)->collation_mappings_offset > UINT16_C(0))\n'
- header+='#define GET_NODE_CODE_POINT(NODE) ((NODE)->codepoint_and_childcount & UINT32_C(0x1FFFFF))\n'
- header+='#define GET_NODE_CHILD_COUNT(NODE) ((NODE)->codepoint_and_childcount >> UINT32_C(24))\n'
+ header+='#define UNICORN_IN_COLLATION_TABLE(NODE) ((NODE)->collation_mappings_offset > (uint16_t)0)\n'
+ header+='#define GET_NODE_CODE_POINT(NODE) ((NODE)->codepoint_and_childcount & 0x1FFFFFu)\n'
+ header+='#define GET_NODE_CHILD_COUNT(NODE) ((NODE)->codepoint_and_childcount >> 24u)\n'
header+='struct CollationNode {\n'
header+=' uint32_t codepoint_and_childcount;\n'
header+=' uint16_t collation_mappings_offset;\n'
@@ -1297,7 +1297,7 @@ def be(args,ff):
header+='#define UNICODE_VERSION_MINOR {0}\n'.format(dj[1])
header+='#define UNICODE_VERSION_PATCH {0}\n'.format(dj[2])
if fh.optimize==er.el:
- header+='#define UNICORN_OPTIMIZE_FOR_SPEED\n'
+ header+='#define UNICORN_OPTIMIZE_FOR_SPEED // cppcheck-suppress misra-c2012-2.5\n'
else:
header+='#define UNICORN_OPTIMIZE_FOR_SIZE\n'
if fh.algorithms.dU&ed.bq:
@@ -1432,7 +1432,7 @@ def main(args):
file=ff.open('code.h')
bj=file.read().decode('utf-8-sig')
file.close()
- copyright='/*\n * Unicorn: Embeddable Unicode algorithms software library.\n * Copyright (c) 2024 Railgun Labs, LLC\n *\n * This file is part of Unicorn, distributed under the Railgun\n * Limited Public License. For the full terms see the included\n * LICENSE file. If you did not receive a LICENSE file then\n * contact us at .\n */\n\n// The Unicorn source code has been amalgamated into a monolithic source\n// and header file. As part of the amalgamation process all code comments\n// and extraneous white space have been removed.\n//\n// The amalgamation is intended for consumption, not development. The\n// unamalgamated source code can be obtained by purchasing a license\n// from Railgun Labs at https://RailgunLabs.com/unicorn/license.\n\n'
+ copyright='/*\n * Unicorn: Embeddable Unicode algorithms software library.\n * Copyright (c) 2025 Railgun Labs, LLC\n *\n * This file is part of Unicorn, distributed under a non-commercial use software\n * license. For the full terms see the included LICENSE file. If you did not\n * receive a LICENSE file or you would like to purchase a commercial license,\n * contact us at .\n */\n\n// The Unicorn source code has been amalgamated into a monolithic source\n// and header file. As part of the amalgamation process all code comments\n// and extraneous white space have been removed.\n//\n// The amalgamation is intended for consumption, not development. The\n// unamalgamated source code can be obtained by purchasing a license\n// from Railgun Labs at https://RailgunLabs.com/unicorn/license.\n\n'
filename=os.path.join(args.output_dir,'unicorn.c')
fp=open(filename,'w',encoding='utf-8',newline='\n')
fp.write(copyright)
diff --git a/man/uni_big.3 b/man/uni_big.3
index b825777..3126c35 100644
--- a/man/uni_big.3
+++ b/man/uni_big.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
UNI_BIG \- big endian byte order
.SH LIBRARY
@@ -7,7 +7,7 @@ Embeddable Unicode Algorithms (libunicorn, -lunicorn)
.nf
.B #include
.PP
-.B #define UNI_BIG 0x10
+.B #define UNI_BIG 0x10u
.fi
.SH DESCRIPTION
Text attribute bit flag that indicates the text is encoded in big endian byte order.
diff --git a/man/uni_caseconv.3 b/man/uni_caseconv.3
index 6f11975..f9a9d72 100644
--- a/man/uni_caseconv.3
+++ b/man/uni_caseconv.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_caseconv \- perform case conversion
.SH LIBRARY
diff --git a/man/uni_caseconvchk.3 b/man/uni_caseconvchk.3
index a608060..c73c28c 100644
--- a/man/uni_caseconvchk.3
+++ b/man/uni_caseconvchk.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_caseconvchk \- check case status
.SH LIBRARY
diff --git a/man/uni_casefold.3 b/man/uni_casefold.3
index d79c117..75c1b63 100644
--- a/man/uni_casefold.3
+++ b/man/uni_casefold.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_casefold \- perform case folding
.SH LIBRARY
diff --git a/man/uni_casefoldchk.3 b/man/uni_casefoldchk.3
index 34de8ac..8de202a 100644
--- a/man/uni_casefoldchk.3
+++ b/man/uni_casefoldchk.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_casefoldchk \- check case fold status
.SH LIBRARY
diff --git a/man/uni_casefoldcmp.3 b/man/uni_casefoldcmp.3
index 9312098..a7ffb12 100644
--- a/man/uni_casefoldcmp.3
+++ b/man/uni_casefoldcmp.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_casefoldcmp \- case-insensitive string comparison
.SH LIBRARY
diff --git a/man/uni_ccc.3 b/man/uni_ccc.3
index 6e9b704..17afcdc 100644
--- a/man/uni_ccc.3
+++ b/man/uni_ccc.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_ccc \- canonical combining class
.SH LIBRARY
diff --git a/man/uni_collate.3 b/man/uni_collate.3
index c31e242..727b404 100644
--- a/man/uni_collate.3
+++ b/man/uni_collate.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_collate \- compare strings for sorting
.SH LIBRARY
diff --git a/man/uni_compress.3 b/man/uni_compress.3
index 07a2313..2603f44 100644
--- a/man/uni_compress.3
+++ b/man/uni_compress.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_compress \- compress text
.SH LIBRARY
diff --git a/man/uni_convert.3 b/man/uni_convert.3
index c13f57e..78af6bd 100644
--- a/man/uni_convert.3
+++ b/man/uni_convert.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_convert \- convert encoding forms
.SH LIBRARY
diff --git a/man/uni_decompress.3 b/man/uni_decompress.3
index 40cd344..5b892ca 100644
--- a/man/uni_decompress.3
+++ b/man/uni_decompress.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_decompress \- decompress text
.SH LIBRARY
diff --git a/man/uni_encode.3 b/man/uni_encode.3
index ebeb7dc..2a6aa25 100644
--- a/man/uni_encode.3
+++ b/man/uni_encode.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_encode \- encode a scalar value
.SH LIBRARY
diff --git a/man/uni_gc.3 b/man/uni_gc.3
index bc293f4..792971c 100644
--- a/man/uni_gc.3
+++ b/man/uni_gc.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_gc \- general category
.SH LIBRARY
diff --git a/man/uni_getucdversion.3 b/man/uni_getucdversion.3
index 87cff6f..9029834 100644
--- a/man/uni_getucdversion.3
+++ b/man/uni_getucdversion.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_getucdversion \- unicode standard version
.SH LIBRARY
diff --git a/man/uni_getversion.3 b/man/uni_getversion.3
index 446d2c0..f6cdc5a 100644
--- a/man/uni_getversion.3
+++ b/man/uni_getversion.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_getversion \- library version
.SH LIBRARY
diff --git a/man/uni_is.3 b/man/uni_is.3
index 094c620..7ed4642 100644
--- a/man/uni_is.3
+++ b/man/uni_is.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_is \- binary property value
.SH LIBRARY
diff --git a/man/uni_little.3 b/man/uni_little.3
index 5d78c76..c8d7b02 100644
--- a/man/uni_little.3
+++ b/man/uni_little.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
UNI_LITTLE \- little endian byte order
.SH LIBRARY
@@ -7,7 +7,7 @@ Embeddable Unicode Algorithms (libunicorn, -lunicorn)
.nf
.B #include
.PP
-.B #define UNI_LITTLE 0x20
+.B #define UNI_LITTLE 0x20u
.fi
.SH DESCRIPTION
Text attribute bit flag that indicates the text is encoded in little endian byte order.
diff --git a/man/uni_native.3 b/man/uni_native.3
index 384759e..8257ff2 100644
--- a/man/uni_native.3
+++ b/man/uni_native.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
UNI_NATIVE \- native endian byte order
.SH LIBRARY
diff --git a/man/uni_next.3 b/man/uni_next.3
index b1e534a..6dc5706 100644
--- a/man/uni_next.3
+++ b/man/uni_next.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_next \- decode a scalar value
.SH LIBRARY
@@ -59,7 +59,7 @@ int main(void)
}
else
{
- printf("U+%04X\n", cp); // print scalar
+ printf("U+%04X\\n", cp); // print scalar
}
}
return 0;
diff --git a/man/uni_nextbrk.3 b/man/uni_nextbrk.3
index 4b88be9..b5aed6e 100644
--- a/man/uni_nextbrk.3
+++ b/man/uni_nextbrk.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_nextbrk \- compute next boundary
.SH LIBRARY
@@ -39,7 +39,7 @@ int main(void)
unisize index = 0;
while (uni_nextbrk(UNI_GRAPHEME, string, -1, UNI_UTF8, &index) == UNI_OK)
{
- printf("%d\n", index); // prints '1', '2', '3', '4', 7', '10'
+ printf("%d\\n", index); // prints '1', '2', '3', '4', 7', '10'
}
return 0;
}
diff --git a/man/uni_norm.3 b/man/uni_norm.3
index fa2b78d..386d604 100644
--- a/man/uni_norm.3
+++ b/man/uni_norm.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_norm \- normalize text
.SH LIBRARY
diff --git a/man/uni_normchk.3 b/man/uni_normchk.3
index 5957cfc..a292350 100644
--- a/man/uni_normchk.3
+++ b/man/uni_normchk.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_normchk \- normalization check
.SH LIBRARY
diff --git a/man/uni_normcmp.3 b/man/uni_normcmp.3
index 41308d3..31f4b9c 100644
--- a/man/uni_normcmp.3
+++ b/man/uni_normcmp.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_normcmp \- canonical equivalence
.SH LIBRARY
diff --git a/man/uni_normqchk.3 b/man/uni_normqchk.3
index 85db3d3..85c0c59 100644
--- a/man/uni_normqchk.3
+++ b/man/uni_normqchk.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_normqchk \- normalization quick check
.SH LIBRARY
diff --git a/man/uni_nulify.3 b/man/uni_nulify.3
index ce86a07..b551477 100644
--- a/man/uni_nulify.3
+++ b/man/uni_nulify.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
UNI_NULIFY \- null terminated output
.SH LIBRARY
@@ -7,7 +7,7 @@ Embeddable Unicode Algorithms (libunicorn, -lunicorn)
.nf
.B #include
.PP
-.B #define UNI_NULIFY 0x80
+.B #define UNI_NULIFY 0x80u
.fi
.SH DESCRIPTION
Text attribute bit flag that indicates that the output buffer must be null terminated by the implementation.
diff --git a/man/uni_numval.3 b/man/uni_numval.3
index 4df6162..3e591e3 100644
--- a/man/uni_numval.3
+++ b/man/uni_numval.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_numval \- numeric property
.SH LIBRARY
diff --git a/man/uni_prev.3 b/man/uni_prev.3
index a98cfc8..bf54c24 100644
--- a/man/uni_prev.3
+++ b/man/uni_prev.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_prev \- decode the previous scalar value
.SH LIBRARY
diff --git a/man/uni_prevbrk.3 b/man/uni_prevbrk.3
index 4779f3b..f55dde1 100644
--- a/man/uni_prevbrk.3
+++ b/man/uni_prevbrk.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_prevbrk \- compute preceding boundary
.SH LIBRARY
diff --git a/man/uni_scalar.3 b/man/uni_scalar.3
index 10b867d..d5c0f42 100644
--- a/man/uni_scalar.3
+++ b/man/uni_scalar.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
UNI_SCALAR \- unicode scalar value
.SH LIBRARY
@@ -7,7 +7,7 @@ Embeddable Unicode Algorithms (libunicorn, -lunicorn)
.nf
.B #include
.PP
-.B #define UNI_SCALAR 0x1
+.B #define UNI_SCALAR 0x1u
.fi
.SH DESCRIPTION
Text attribute bit flag that indicates the text is encoded as Unicode scalar values.
diff --git a/man/uni_seterrfunc.3 b/man/uni_seterrfunc.3
index 9082d27..8858525 100644
--- a/man/uni_seterrfunc.3
+++ b/man/uni_seterrfunc.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_seterrfunc \- receive diagnostic events
.SH LIBRARY
diff --git a/man/uni_setmemfunc.3 b/man/uni_setmemfunc.3
index 55de3ff..6b23f80 100644
--- a/man/uni_setmemfunc.3
+++ b/man/uni_setmemfunc.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_setmemfunc \- custom memory allocator
.SH LIBRARY
diff --git a/man/uni_sortkeycmp.3 b/man/uni_sortkeycmp.3
index 274b182..836c1d2 100644
--- a/man/uni_sortkeycmp.3
+++ b/man/uni_sortkeycmp.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_sortkeycmp \- compare sort keys
.SH LIBRARY
diff --git a/man/uni_sortkeymk.3 b/man/uni_sortkeymk.3
index 6cd8055..406e246 100644
--- a/man/uni_sortkeymk.3
+++ b/man/uni_sortkeymk.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_sortkeymk \- make sort key
.SH LIBRARY
diff --git a/man/uni_tolower.3 b/man/uni_tolower.3
index 2c0693f..b4356c4 100644
--- a/man/uni_tolower.3
+++ b/man/uni_tolower.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_tolower \- simple lower case mapping
.SH LIBRARY
diff --git a/man/uni_totitle.3 b/man/uni_totitle.3
index 13405e4..216fe76 100644
--- a/man/uni_totitle.3
+++ b/man/uni_totitle.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_totitle \- simple title case mapping
.SH LIBRARY
diff --git a/man/uni_toupper.3 b/man/uni_toupper.3
index 540effb..47ff7a1 100644
--- a/man/uni_toupper.3
+++ b/man/uni_toupper.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_toupper \- simple upper case mapping
.SH LIBRARY
diff --git a/man/uni_trust.3 b/man/uni_trust.3
index 4954d76..8a03b43 100644
--- a/man/uni_trust.3
+++ b/man/uni_trust.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
UNI_TRUST \- well-formed text
.SH LIBRARY
@@ -7,7 +7,7 @@ Embeddable Unicode Algorithms (libunicorn, -lunicorn)
.nf
.B #include
.PP
-.B #define UNI_TRUST 0x40
+.B #define UNI_TRUST 0x40u
.fi
.SH DESCRIPTION
Text attribute bit flag that indicates that the encoded text is well-formed.
diff --git a/man/uni_utf16.3 b/man/uni_utf16.3
index 6040ed3..b01c254 100644
--- a/man/uni_utf16.3
+++ b/man/uni_utf16.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
UNI_UTF16 \- UTF-16 encoding form
.SH LIBRARY
@@ -7,7 +7,7 @@ Embeddable Unicode Algorithms (libunicorn, -lunicorn)
.nf
.B #include
.PP
-.B #define UNI_UTF16 0x4
+.B #define UNI_UTF16 0x4u
.fi
.SH DESCRIPTION
Text attribute bit flag that indicates the text is encoded as UTF-16.
diff --git a/man/uni_utf32.3 b/man/uni_utf32.3
index fef746d..8d0d653 100644
--- a/man/uni_utf32.3
+++ b/man/uni_utf32.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
UNI_UTF32 \- UTF-32 encoding form
.SH LIBRARY
@@ -7,7 +7,7 @@ Embeddable Unicode Algorithms (libunicorn, -lunicorn)
.nf
.B #include
.PP
-.B #define UNI_UTF32 0x8
+.B #define UNI_UTF32 0x8u
.fi
.SH DESCRIPTION
Text attribute bit flag that indicates text is encoded as UTF-32.
diff --git a/man/uni_utf8.3 b/man/uni_utf8.3
index 78b941d..4e5f9a5 100644
--- a/man/uni_utf8.3
+++ b/man/uni_utf8.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
UNI_UTF8 \- UTF-8 encoding form
.SH LIBRARY
@@ -7,7 +7,7 @@ Embeddable Unicode Algorithms (libunicorn, -lunicorn)
.nf
.B #include
.PP
-.B #define UNI_UTF8 0x2
+.B #define UNI_UTF8 0x2u
.fi
.SH DESCRIPTION
Text attribute bit flag that indicates the text is encoded as UTF-8.
diff --git a/man/uni_validate.3 b/man/uni_validate.3
index 1f3edcf..fa4c59d 100644
--- a/man/uni_validate.3
+++ b/man/uni_validate.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uni_validate \- validate text
.SH LIBRARY
diff --git a/man/uniattr.3 b/man/uniattr.3
index d33bd2e..97031b4 100644
--- a/man/uniattr.3
+++ b/man/uniattr.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uniattr \- text attributes
.SH LIBRARY
diff --git a/man/unibp.3 b/man/unibp.3
index eca4f6d..34e6cf4 100644
--- a/man/unibp.3
+++ b/man/unibp.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
unibp \- binary properties
.SH LIBRARY
diff --git a/man/unibreak.3 b/man/unibreak.3
index 05d6754..4bf6a33 100644
--- a/man/unibreak.3
+++ b/man/unibreak.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
unibreak \- detectable text elements
.SH LIBRARY
diff --git a/man/unicaseconv.3 b/man/unicaseconv.3
index 19b2da6..e0c19d7 100644
--- a/man/unicaseconv.3
+++ b/man/unicaseconv.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
unicaseconv \- case conversion operations
.SH LIBRARY
diff --git a/man/unicasefold.3 b/man/unicasefold.3
index abb4837..6cb318c 100644
--- a/man/unicasefold.3
+++ b/man/unicasefold.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
unicasefold \- case folding operations
.SH LIBRARY
diff --git a/man/unichar.3 b/man/unichar.3
index e98d606..884c6db 100644
--- a/man/unichar.3
+++ b/man/unichar.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
unichar \- code point
.SH LIBRARY
diff --git a/man/unicorn.3 b/man/unicorn.3
index 70c6dab..f76aeeb 100644
--- a/man/unicorn.3
+++ b/man/unicorn.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
unicorn.h \- public interface for the Unicorn library
.SH LIBRARY
diff --git a/man/unierrfunc.3 b/man/unierrfunc.3
index ad76f82..1a955ed 100644
--- a/man/unierrfunc.3
+++ b/man/unierrfunc.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
unierrfunc \- diagnostic function
.SH LIBRARY
diff --git a/man/unigc.3 b/man/unigc.3
index 672a094..9a144fe 100644
--- a/man/unigc.3
+++ b/man/unigc.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
unigc \- general category
.SH LIBRARY
diff --git a/man/unimemfunc.3 b/man/unimemfunc.3
index f797f2a..b1c3581 100644
--- a/man/unimemfunc.3
+++ b/man/unimemfunc.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
unimemfunc \- memory allocation function
.SH LIBRARY
diff --git a/man/uninormchk.3 b/man/uninormchk.3
index 1cf09b5..7690d6b 100644
--- a/man/uninormchk.3
+++ b/man/uninormchk.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uninormchk \- quick check constants
.SH LIBRARY
diff --git a/man/uninormform.3 b/man/uninormform.3
index dee57e4..f42d99f 100644
--- a/man/uninormform.3
+++ b/man/uninormform.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uninormform \- unicode normalization forms
.SH LIBRARY
diff --git a/man/unisize.3 b/man/unisize.3
index f2dc9a8..71848e6 100644
--- a/man/unisize.3
+++ b/man/unisize.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
unisize \- code unit count
.SH LIBRARY
diff --git a/man/unistat.3 b/man/unistat.3
index 83822e4..ce39555 100644
--- a/man/unistat.3
+++ b/man/unistat.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
unistat \- status code
.SH LIBRARY
diff --git a/man/unistrength.3 b/man/unistrength.3
index 1f31423..b208b6f 100644
--- a/man/unistrength.3
+++ b/man/unistrength.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
unistrength \- collation comparison levels
.SH LIBRARY
diff --git a/man/uniweighting.3 b/man/uniweighting.3
index 2e885f5..2162e16 100644
--- a/man/uniweighting.3
+++ b/man/uniweighting.3
@@ -1,4 +1,4 @@
-.TH "UNICORN" "3" "Dec 18th 2024" "Unicorn 1.0.2"
+.TH "UNICORN" "3" "Jan 19th 2025" "Unicorn 1.0.3"
.SH NAME
uniweighting \- collation weighting algorithm
.SH LIBRARY
diff --git a/misra-compliance.html b/misra-compliance.html
new file mode 100644
index 0000000..e2f572b
--- /dev/null
+++ b/misra-compliance.html
@@ -0,0 +1,263 @@
+Misra C Compliance ReportMisra C Compliance Report
+Project: Unicorn
+Project version: 1.0.3
+Guidelines: Misra C 2012
+Checking tool: Cppcheck Premium 24.11.0
+Date: 19 January 2025
+Result: Compliant
+
+Violations
+Guideline | Category | Compliance |
+
+Dir 1.1 | Required | Not executed |
+Dir 2.1 | Required | Not executed |
+Dir 3.1 | Required | Not executed |
+Dir 4.1 | Required | Not executed |
+Dir 4.2 | Advisory | Not executed |
+Dir 4.3 | Required | Compliant |
+Dir 4.4 | Advisory | Compliant |
+Dir 4.5 | Advisory | Compliant |
+Dir 4.6 | Advisory | Compliant |
+Dir 4.7 | Required | Not executed |
+Dir 4.8 | Advisory | Not executed |
+Dir 4.9 | Advisory | Compliant |
+Dir 4.10 | Required | Not executed |
+Dir 4.11 | Required | Not executed |
+Dir 4.12 | Required | Not executed |
+Dir 4.13 | Advisory | Not executed |
+Rule 1.1 | Required | Compliant |
+Rule 1.2 | Advisory | Compliant |
+Rule 1.3 | Required | Compliant |
+Rule 1.4 | Required | Compliant |
+Rule 1.5 | Required | Compliant |
+Rule 2.1 | Required | Compliant |
+Rule 2.2 | Required | Compliant |
+Rule 2.3 | Advisory | Compliant |
+Rule 2.4 | Advisory | Compliant |
+Rule 2.5 | Advisory | Compliant |
+Rule 2.6 | Advisory | Compliant |
+Rule 2.7 | Advisory | Compliant |
+Rule 2.8 | Advisory | Compliant |
+Rule 3.1 | Required | Compliant |
+Rule 3.2 | Required | Compliant |
+Rule 4.1 | Required | Compliant |
+Rule 4.2 | Advisory | Compliant |
+Rule 5.1 | Required | Compliant |
+Rule 5.2 | Required | Compliant |
+Rule 5.3 | Required | Compliant |
+Rule 5.4 | Required | Compliant |
+Rule 5.5 | Required | Compliant |
+Rule 5.6 | Required | Compliant |
+Rule 5.7 | Required | Compliant |
+Rule 5.8 | Required | Compliant |
+Rule 5.9 | Advisory | Compliant |
+Rule 6.1 | Required | Compliant |
+Rule 6.2 | Required | Compliant |
+Rule 6.3 | Required | Compliant |
+Rule 7.1 | Required | Compliant |
+Rule 7.2 | Required | Compliant |
+Rule 7.3 | Required | Compliant |
+Rule 7.4 | Required | Compliant |
+Rule 7.5 | Mandatory | Compliant |
+Rule 7.6 | Required | Compliant |
+Rule 8.1 | Required | Compliant |
+Rule 8.2 | Required | Compliant |
+Rule 8.3 | Required | Compliant |
+Rule 8.4 | Required | Compliant |
+Rule 8.5 | Required | Compliant |
+Rule 8.6 | Required | Compliant |
+Rule 8.7 | Advisory | Compliant |
+Rule 8.8 | Required | Compliant |
+Rule 8.9 | Advisory | Compliant |
+Rule 8.10 | Required | Compliant |
+Rule 8.11 | Advisory | Compliant |
+Rule 8.12 | Required | Compliant |
+Rule 8.13 | Advisory | Compliant |
+Rule 8.14 | Required | Compliant |
+Rule 8.15 | Required | Compliant |
+Rule 8.16 | Advisory | Compliant |
+Rule 8.17 | Advisory | Compliant |
+Rule 9.1 | Mandatory | Compliant |
+Rule 9.2 | Required | Compliant |
+Rule 9.3 | Required | Compliant |
+Rule 9.4 | Required | Compliant |
+Rule 9.5 | Required | Compliant |
+Rule 9.6 | Required | Compliant |
+Rule 9.7 | Mandatory | Compliant |
+Rule 10.1 | Required | Compliant |
+Rule 10.2 | Required | Compliant |
+Rule 10.3 | Required | Compliant |
+Rule 10.4 | Required | Compliant |
+Rule 10.5 | Advisory | Compliant |
+Rule 10.6 | Required | Compliant |
+Rule 10.7 | Required | Compliant |
+Rule 10.8 | Required | Compliant |
+Rule 11.1 | Required | Compliant |
+Rule 11.2 | Required | Compliant |
+Rule 11.3 | Required | Compliant |
+Rule 11.4 | Advisory | Compliant |
+Rule 11.5 | Advisory | Compliant |
+Rule 11.6 | Required | Compliant |
+Rule 11.7 | Required | Compliant |
+Rule 11.8 | Required | Compliant |
+Rule 11.9 | Required | Compliant |
+Rule 11.10 | Required | Compliant |
+Rule 12.1 | Advisory | Compliant |
+Rule 12.2 | Required | Compliant |
+Rule 12.3 | Advisory | Compliant |
+Rule 12.4 | Advisory | Compliant |
+Rule 12.5 | Mandatory | Compliant |
+Rule 12.6 | Required | Compliant |
+Rule 13.1 | Required | Compliant |
+Rule 13.2 | Required | Compliant |
+Rule 13.3 | Advisory | Compliant |
+Rule 13.4 | Advisory | Compliant |
+Rule 13.5 | Required | Compliant |
+Rule 13.6 | Mandatory | Compliant |
+Rule 14.1 | Required | Compliant |
+Rule 14.2 | Required | Compliant |
+Rule 14.3 | Required | Compliant |
+Rule 14.4 | Required | Compliant |
+Rule 15.1 | Advisory | Compliant |
+Rule 15.2 | Required | Compliant |
+Rule 15.3 | Required | Compliant |
+Rule 15.4 | Advisory | Compliant |
+Rule 15.5 | Advisory | Compliant |
+Rule 15.6 | Required | Compliant |
+Rule 15.7 | Required | Compliant |
+Rule 16.1 | Required | Compliant |
+Rule 16.2 | Required | Compliant |
+Rule 16.3 | Required | Compliant |
+Rule 16.4 | Required | Compliant |
+Rule 16.5 | Required | Compliant |
+Rule 16.6 | Required | Compliant |
+Rule 16.7 | Required | Compliant |
+Rule 17.1 | Required | Compliant |
+Rule 17.2 | Required | Compliant |
+Rule 17.3 | Mandatory | Compliant |
+Rule 17.4 | Mandatory | Compliant |
+Rule 17.5 | Advisory | Compliant |
+Rule 17.6 | Mandatory | Compliant |
+Rule 17.7 | Required | Compliant |
+Rule 17.8 | Advisory | Compliant |
+Rule 17.9 | Mandatory | Compliant |
+Rule 17.10 | Required | Compliant |
+Rule 17.11 | Advisory | Compliant |
+Rule 17.12 | Advisory | Compliant |
+Rule 17.13 | Required | Compliant |
+Rule 18.1 | Required | Compliant |
+Rule 18.2 | Required | Compliant |
+Rule 18.3 | Required | Compliant |
+Rule 18.4 | Advisory | Compliant |
+Rule 18.5 | Advisory | Compliant |
+Rule 18.6 | Required | Compliant |
+Rule 18.7 | Required | Compliant |
+Rule 18.8 | Required | Compliant |
+Rule 18.9 | Required | Compliant |
+Rule 18.10 | Mandatory | Compliant |
+Rule 19.1 | Mandatory | Compliant |
+Rule 19.2 | Advisory | Compliant |
+Rule 20.1 | Advisory | Compliant |
+Rule 20.2 | Required | Compliant |
+Rule 20.3 | Required | Compliant |
+Rule 20.4 | Required | Compliant |
+Rule 20.5 | Advisory | Compliant |
+Rule 20.6 | Required | Compliant |
+Rule 20.7 | Required | Compliant |
+Rule 20.8 | Required | Compliant |
+Rule 20.9 | Required | Compliant |
+Rule 20.10 | Advisory | Compliant |
+Rule 20.11 | Required | Compliant |
+Rule 20.12 | Required | Compliant |
+Rule 20.13 | Required | Compliant |
+Rule 20.14 | Required | Compliant |
+Rule 21.1 | Required | Compliant |
+Rule 21.2 | Required | Compliant |
+Rule 21.3 | Required | Compliant |
+Rule 21.4 | Required | Compliant |
+Rule 21.5 | Required | Compliant |
+Rule 21.6 | Required | Compliant |
+Rule 21.7 | Required | Compliant |
+Rule 21.8 | Required | Compliant |
+Rule 21.9 | Required | Compliant |
+Rule 21.10 | Required | Compliant |
+Rule 21.11 | Required | Compliant |
+Rule 21.12 | Advisory | Compliant |
+Rule 21.13 | Mandatory | Compliant |
+Rule 21.14 | Required | Compliant |
+Rule 21.15 | Required | Compliant |
+Rule 21.16 | Required | Compliant |
+Rule 21.17 | Required | Compliant |
+Rule 21.18 | Mandatory | Compliant |
+Rule 21.19 | Mandatory | Compliant |
+Rule 21.20 | Mandatory | Compliant |
+Rule 21.21 | Required | Compliant |
+Rule 21.22 | Mandatory | Compliant |
+Rule 21.23 | Required | Compliant |
+Rule 21.24 | Required | Compliant |
+Rule 21.25 | Required | Compliant |
+Rule 21.26 | Required | Compliant |
+Rule 22.1 | Required | Compliant |
+Rule 22.2 | Mandatory | Compliant |
+Rule 22.3 | Required | Compliant |
+Rule 22.4 | Mandatory | Compliant |
+Rule 22.5 | Mandatory | Compliant |
+Rule 22.6 | Mandatory | Compliant |
+Rule 22.7 | Required | Compliant |
+Rule 22.8 | Required | Compliant |
+Rule 22.9 | Required | Compliant |
+Rule 22.10 | Required | Compliant |
+Rule 22.11 | Required | Compliant |
+Rule 22.12 | Mandatory | Compliant |
+Rule 22.13 | Required | Compliant |
+Rule 22.14 | Mandatory | Compliant |
+Rule 22.15 | Required | Compliant |
+Rule 22.16 | Required | Compliant |
+Rule 22.17 | Required | Compliant |
+Rule 22.18 | Required | Compliant |
+Rule 22.19 | Required | Compliant |
+Rule 22.20 | Mandatory | Compliant |
+Rule 23.1 | Advisory | Compliant |
+Rule 23.2 | Required | Compliant |
+Rule 23.3 | Advisory | Compliant |
+Rule 23.4 | Required | Compliant |
+Rule 23.5 | Advisory | Compliant |
+Rule 23.6 | Required | Compliant |
+Rule 23.7 | Advisory | Compliant |
+Rule 23.8 | Required | Compliant |
+
+
+
diff --git a/unicorn.bin b/unicorn.bin
index 38cd624..690e2df 100644
Binary files a/unicorn.bin and b/unicorn.bin differ