summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorJörg Frings-Fürst <debian@jff-webhosting.net>2018-09-06 13:41:53 +0200
committerJörg Frings-Fürst <debian@jff-webhosting.net>2018-09-06 13:41:53 +0200
commit69dec572c9da30ae29d391966673c2c8cdacb742 (patch)
tree27ea3f5f5bbda9e362823a5e84d7e2c4c4797c8b /doc
parentcb22888f08466e46b115bdef6c4ee39b9a2a983e (diff)
parentd45dd31e35190cf08b1e716e7c3bd1468ddd5d88 (diff)
Update upstream source from tag 'upstream/3.23'
Update to upstream version '3.23' with Debian dir 8789bc8a869c3aa0e8771cab9f5620378484106c
Diffstat (limited to 'doc')
-rw-r--r--doc/Makefile.in25
-rw-r--r--doc/changelog.txt7
-rw-r--r--doc/libHX_Documentation.lyx515
-rw-r--r--doc/libHX_Documentation.pdfbin523100 -> 507683 bytes
-rw-r--r--doc/strlcpy-timing.txt109
5 files changed, 405 insertions, 251 deletions
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 50f826f..e3d240c 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.13.4 from Makefile.am.
+# Makefile.in generated by automake 1.15.1 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
+# Copyright (C) 1994-2017 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -17,7 +17,17 @@
# -*- Makefile -*-
VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
@@ -81,8 +91,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = doc
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
- $(am__dist_doc_DATA_DIST)
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/gcc4_visibility.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
@@ -90,6 +98,8 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/gcc4_visibility.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__dist_doc_DATA_DIST) \
+ $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
@@ -144,6 +154,7 @@ am__uninstall_files_from_dir = { \
am__installdirs = "$(DESTDIR)$(docdir)"
DATA = $(dist_doc_DATA)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -188,6 +199,7 @@ LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
LYX = @LYX@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
@@ -290,7 +302,6 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --foreign doc/Makefile
-.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -490,6 +501,8 @@ uninstall-am: uninstall-dist_docDATA
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am uninstall-dist_docDATA
+.PRECIOUS: Makefile
+
libHX_Documentation.pdf: libHX_Documentation.lyx
srcdir="${srcdir}" ${srcdir}/generate;
diff --git a/doc/changelog.txt b/doc/changelog.txt
index 2b68284..6ce5889 100644
--- a/doc/changelog.txt
+++ b/doc/changelog.txt
@@ -1,7 +1,10 @@
-HEAD
-====
+v3.23 (2018-08-28)
+==================
+Enhancements:
+- opt: the option parser now recognizes long option abbreviations
+- io: use modern readdir rather than readdir_r
v3.22 (2014-08-25)
diff --git a/doc/libHX_Documentation.lyx b/doc/libHX_Documentation.lyx
index 69ad84c..afaff61 100644
--- a/doc/libHX_Documentation.lyx
+++ b/doc/libHX_Documentation.lyx
@@ -1,7 +1,9 @@
-#LyX 2.0 created this file. For more info see http://www.lyx.org/
-\lyxformat 413
+#LyX 2.3 created this file. For more info see http://www.lyx.org/
+\lyxformat 544
\begin_document
\begin_header
+\save_transient_properties true
+\origin unavailable
\textclass article
\use_default_options true
\maintain_unincluded_children false
@@ -9,16 +11,18 @@
\language_package default
\inputencoding utf8
\fontencoding global
-\font_roman lmodern
-\font_sans lmss
-\font_typewriter lmtt
+\font_roman "lmodern" "default"
+\font_sans "lmss" "default"
+\font_typewriter "lmtt" "default"
+\font_math "auto" "auto"
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
-\font_sf_scale 100
-\font_tt_scale 100
-
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\use_microtype false
+\use_dash_ligatures true
\graphics default
\default_output_format default
\output_sync 0
@@ -38,16 +42,26 @@
\pdf_pdfusetitle true
\papersize a4paper
\use_geometry true
-\use_amsmath 1
-\use_esint 1
-\use_mhchem 1
-\use_mathdots 1
-\cite_engine natbib_numerical
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine natbib
+\cite_engine_type numerical
+\biblio_style plainnat
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
+\justification true
\use_refstyle 0
+\use_minted 0
\index Index
\shortcut idx
\color #008000
@@ -60,7 +74,10 @@
\tocdepth 1
\paragraph_separation indent
\paragraph_indentation default
-\quotes_language english
+\is_math_indent 0
+\math_numbering_side default
+\quotes_style english
+\dynamic_quotes 0
\papercolumns 1
\papersides 1
\paperpagestyle default
@@ -74,7 +91,7 @@
\begin_body
\begin_layout Title
-libHX 3.22
+libHX 3.23
\begin_inset Newline newline
\end_inset
@@ -228,7 +245,7 @@ Scripting-like invocation for string handling
\begin_inset space ~
\end_inset
---- automatically doing (re)allocations as needed.
+— automatically doing (re)allocations as needed.
\end_layout
\begin_layout Itemize
@@ -309,7 +326,7 @@ Getopt::Long
\begin_inset space ~
\end_inset
---- no open-coding but a single
+— no open-coding but a single
\begin_inset Quotes eld
\end_inset
@@ -346,7 +363,7 @@ configuration
files with key-value pairs, as usually foudn in
\family typewriter
-/etc\SpecialChar \slash{}
+/etc\SpecialChar breakableslash
sysconfig
\family default
.
@@ -421,7 +438,7 @@ git://libhx.git.sf.net/gitroot/libhx/libhx
\begin_inset space ~
\end_inset
---- clone URL
+— clone URL
\end_layout
\begin_layout Itemize
@@ -439,7 +456,7 @@ http://libhx.git.sf.net/
\begin_inset space ~
\end_inset
---- gitweb interface
+— gitweb interface
\end_layout
\begin_layout Itemize
@@ -457,7 +474,7 @@ http://libhx.sf.net/
\begin_inset space ~
\end_inset
---- home page (and link to tarballs)
+— home page (and link to tarballs)
\end_layout
\begin_layout Itemize
@@ -475,7 +492,7 @@ http://freecode.com/projects/libhx/
\begin_inset space ~
\end_inset
---- Freecode page (useful for automatic notification of new releases)
+— Freecode page (useful for automatic notification of new releases)
\end_layout
\begin_layout Section
@@ -550,11 +567,11 @@ GNU C Compiler 3.3.5 or newer.
\begin_inset space ~
\end_inset
---- use at your own risk.
+— use at your own risk.
\end_layout
\begin_layout Itemize
-approximately 80--160
+approximately 80–160
\begin_inset space ~
\end_inset
@@ -572,7 +589,7 @@ A C++ compiler is only needed if you want to build the C++ test programs
No external libraries are needed for compilation of libHX.
Helper files, like
\family typewriter
-libxml_\SpecialChar \-
+libxml_\SpecialChar softhyphen
helper.h
\family default
, may reference their include files, but they are not used during compilation.
@@ -932,7 +949,7 @@ dynamic_cast<>
\begin_inset space ~
\end_inset
---- Actually, it
+— Actually, it
\shape italic
is
\shape default
@@ -1102,7 +1119,7 @@ s of pointers to char
\begin_inset space ~
\end_inset
---- and only those.
+— and only those.
No integers etc.
The intention is to facilitate working with libraries that use
\family typewriter
@@ -1187,13 +1204,13 @@ status open
\begin_inset Tabular
<lyxtabular version="3" rows="7" columns="7">
<features tabularvalignment="middle">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
<row>
<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
\begin_inset Text
@@ -1552,7 +1569,7 @@ const char *
\begin_inset Text
\begin_layout Plain Layout
---
+–
\end_layout
\end_inset
@@ -1561,7 +1578,7 @@ const char *
\begin_inset Text
\begin_layout Plain Layout
---
+–
\end_layout
\end_inset
@@ -1570,7 +1587,7 @@ const char *
\begin_inset Text
\begin_layout Plain Layout
---
+–
\end_layout
\end_inset
@@ -1629,7 +1646,7 @@ const signed char *
\begin_inset Text
\begin_layout Plain Layout
---
+–
\end_layout
\end_inset
@@ -1638,7 +1655,7 @@ const signed char *
\begin_inset Text
\begin_layout Plain Layout
---
+–
\end_layout
\end_inset
@@ -1647,7 +1664,7 @@ const signed char *
\begin_inset Text
\begin_layout Plain Layout
---
+–
\end_layout
\end_inset
@@ -1706,7 +1723,7 @@ const unsigned char *
\begin_inset Text
\begin_layout Plain Layout
---
+–
\end_layout
\end_inset
@@ -1715,7 +1732,7 @@ const unsigned char *
\begin_inset Text
\begin_layout Plain Layout
---
+–
\end_layout
\end_inset
@@ -1724,7 +1741,7 @@ const unsigned char *
\begin_inset Text
\begin_layout Plain Layout
---
+–
\end_layout
\end_inset
@@ -1774,7 +1791,7 @@ const unsigned char *
\end_layout
\begin_layout Plain Layout
-\begin_inset Caption
+\begin_inset Caption Standard
\begin_layout Plain Layout
\begin_inset CommandInset label
@@ -1804,7 +1821,7 @@ signed_cast()
static_cast
\begin_inset CommandInset label
LatexCommand label
-name "sub:defs-static_cast"
+name "subsec:defs-static_cast"
\end_inset
@@ -2342,7 +2359,7 @@ Three Star Programmer
\end_inset
, having only these three type-checking cast macros was deemed sufficient.
- The only place where libHX even uses a level\SpecialChar \nobreakdash-
+ The only place where libHX even uses a level\SpecialChar nobreakdash
3 indirection is in the option
parser.
\end_layout
@@ -2359,8 +2376,8 @@ status open
\begin_inset Tabular
<lyxtabular version="3" rows="2" columns="2">
<features tabularvalignment="middle">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
<row>
<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
\begin_inset Text
@@ -2417,7 +2434,7 @@ const int *const *
\end_layout
\begin_layout Plain Layout
-\begin_inset Caption
+\begin_inset Caption Standard
\begin_layout Plain Layout
Accepted expr/target types for
@@ -2592,9 +2609,9 @@ Expands to the size needed for a buffer (including '
\backslash
0
\family default
-') to hold the base-10 string representation of a 16\SpecialChar \nobreakdash-
-, 32\SpecialChar \nobreakdash-
- or 64\SpecialChar \nobreakdash-
+') to hold the base-10 string representation of a 16\SpecialChar nobreakdash
+, 32\SpecialChar nobreakdash
+ or 64\SpecialChar nobreakdash
bit integer.
\end_layout
@@ -2716,7 +2733,7 @@ defs.h
\family default
will use GCC's
\family typewriter
-__builtin_\SpecialChar \-
+__builtin_\SpecialChar softhyphen
offsetof
\family default
if available, which does some extra sanity checks in C++ mode.
@@ -3007,9 +3024,9 @@ BUILD_BUG_ON
\family default
is meant to be used as a standalone statement, while
\family typewriter
-BUILD_\SpecialChar \-
-BUG_\SpecialChar \-
-ON_\SpecialChar \-
+BUILD_\SpecialChar softhyphen
+BUG_\SpecialChar softhyphen
+ON_\SpecialChar softhyphen
EXPR
\family default
is for when a check is to occur within an expression, that latter of which
@@ -3668,6 +3685,10 @@ n", (long)ts.tv_sec, ts.tv_nsec);
The number of combinations of a (non-zero) negative number, zero and a (non-zero
) positive number is small, so we can actually just exhaustively list them
all.
+\begin_inset Separator latexpar
+\end_inset
+
+
\end_layout
\begin_layout Standard
@@ -3676,12 +3697,12 @@ The number of combinations of a (non-zero) negative number, zero and a (non-zero
\begin_inset Tabular
<lyxtabular version="3" rows="4" columns="6">
<features tabularvalignment="middle">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
<row>
<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
\begin_inset Text
@@ -4959,7 +4980,7 @@ hash
\begin_layout Standard
To access any map-related functions,
\family typewriter
-#include <libHX\SpecialChar \slash{}
+#include <libHX\SpecialChar breakableslash
map.h>
\family default
.
@@ -4969,7 +4990,7 @@ map.h>
Structural definition
\begin_inset CommandInset label
LatexCommand label
-name "sub:maps-def"
+name "subsec:maps-def"
\end_inset
@@ -5286,7 +5307,7 @@ HX_MAPT_HASH
\begin_inset space ~
\end_inset
--- Amortized
+– Amortized
\begin_inset Formula $\mathcal{O}\left(1\right)$
\end_inset
@@ -5314,7 +5335,7 @@ HX_MAPT_RBTREE
\begin_inset space ~
\end_inset
---
+–
\begin_inset Formula $\mathcal{O}\left(\log\left(n\right)\right)$
\end_inset
@@ -5518,7 +5539,7 @@ g.
with the
\family typewriter
-HXhashmap_\SpecialChar \-
+HXhashmap_\SpecialChar softhyphen
init4
\family default
function call), or
@@ -5659,12 +5680,12 @@ HXMAP_SCKEY
Mnemonic for the combination of
\family typewriter
-HXMAP_\SpecialChar \-
+HXMAP_\SpecialChar softhyphen
SKEY
\family default
OR'ed with
\family typewriter
-HXMAP_\SpecialChar \-
+HXMAP_\SpecialChar softhyphen
CKEY
\family default
.
@@ -5689,12 +5710,12 @@ HXMAP_SCDATA
Mnemonic for the combination of
\family typewriter
-HXMAP_\SpecialChar \-
+HXMAP_\SpecialChar softhyphen
SDATA
\family default
OR'ed with
\family typewriter
-HXMAP_\SpecialChar \-
+HXMAP_\SpecialChar softhyphen
SDATA
\family default
.
@@ -5928,17 +5949,17 @@ The
\family typewriter
HXMAP_SKEY
\family default
-\SpecialChar \slash{}
+\SpecialChar breakableslash
\family typewriter
CKEY
\family default
-\SpecialChar \slash{}
+\SpecialChar breakableslash
\family typewriter
SDATA
\family default
-\SpecialChar \slash{}
+\SpecialChar breakableslash
\family typewriter
CDATA
@@ -6556,7 +6577,7 @@ node->sdata
\begin_inset CommandInset ref
LatexCommand ref
-reference "sub:maps-def"
+reference "subsec:maps-def"
\end_inset
@@ -6828,7 +6849,7 @@ struct HXmap_node
\begin_inset space ~
\end_inset
-\SpecialChar \slash{}
+\SpecialChar breakableslash
key-value pair from the map, or
\family typewriter
NULL
@@ -6984,6 +7005,10 @@ HXmap_traverse
\begin_layout Itemize
Insertion or deletion may cause internal data structure to re-layout.
+\begin_inset Separator latexpar
+\end_inset
+
+
\end_layout
\begin_deeper
@@ -7335,7 +7360,7 @@ dsize
Keys with non-unique data
\begin_inset CommandInset label
LatexCommand label
-name "sub:maps-examples-bigkey"
+name "subsec:maps-examples-bigkey"
\end_inset
@@ -7348,7 +7373,7 @@ Keys can actually store non-unique data, as long as this extra fields does
\begin_inset space ~
\end_inset
---- the parts that do uniquely identify it.
+— the parts that do uniquely identify it.
In the following example, the
\family typewriter
notes
@@ -8261,12 +8286,12 @@ HXdeque_del
\begin_layout Standard
\family typewriter
-HXdeque_\SpecialChar \-
+HXdeque_\SpecialChar softhyphen
push
\family default
and
\family typewriter
-HXdeque_\SpecialChar \-
+HXdeque_\SpecialChar softhyphen
unshift
\family default
add the data item in a new node at the end (
@@ -8301,12 +8326,12 @@ errno
\begin_layout Standard
\family typewriter
-HXdeque_\SpecialChar \-
+HXdeque_\SpecialChar softhyphen
pop
\family default
and
\family typewriter
-HXdeque_\SpecialChar \-
+HXdeque_\SpecialChar softhyphen
shift
\family default
remove the last (
@@ -8332,7 +8357,7 @@ shift
\begin_layout Standard
\family typewriter
-HXdeque_\SpecialChar \-
+HXdeque_\SpecialChar softhyphen
move
\family default
will unlink a node from its list, and reinsert it after the given target
@@ -8480,7 +8505,7 @@ HXdeque_get
\begin_inset space ~
\end_inset
---- however, since that is just what the
+— however, since that is just what the
\family typewriter
ptr
\family default
@@ -8696,7 +8721,7 @@ void *
\end_layout
\begin_layout Plain Layout
-\begin_inset Caption
+\begin_inset Caption Standard
\begin_layout Plain Layout
Example use of HXdeque to store and sort a list
@@ -8915,7 +8940,7 @@ indirect_data;
\end_layout
\begin_layout Plain Layout
-\begin_inset Caption
+\begin_inset Caption Standard
\begin_layout Plain Layout
Classic linked-list implementations with direct/indirect data blocks.
@@ -8975,7 +9000,7 @@ int
\end_layout
\begin_layout Plain Layout
-\begin_inset Caption
+\begin_inset Caption Standard
\begin_layout Plain Layout
List head (next,prev pointers) inlined into the data block
@@ -8994,8 +9019,8 @@ List head (next,prev pointers) inlined into the data block
\begin_layout Standard
At first glance, an inline list does not look much different from
\family typewriter
-struct classic_\SpecialChar \-
-direct_\SpecialChar \-
+struct classic_\SpecialChar softhyphen
+direct_\SpecialChar softhyphen
data
\family default
, it is mostly a viewpoint decision which struct is in the foreground.
@@ -9917,7 +9942,7 @@ return
\end_layout
\begin_layout Plain Layout
-\begin_inset Caption
+\begin_inset Caption Standard
\begin_layout Plain Layout
Storing strings in a HXdeque
@@ -10052,7 +10077,7 @@ return
\end_layout
\begin_layout Plain Layout
-\begin_inset Caption
+\begin_inset Caption Standard
\begin_layout Plain Layout
Storing strings in a HXlist
@@ -10082,7 +10107,7 @@ With HXlist, one needs to have a struct with a HXlist_head in it, and if
\begin_inset space ~
\end_inset
----e.
+—e.
\begin_inset space \thinspace{}
\end_inset
@@ -10094,8 +10119,8 @@ by means of wanting to store more than just one value
\begin_inset space ~
\end_inset
---- one will need to create it first, as shown, and this may lead to an
- expansion of code.
+— one will need to create it first, as shown, and this may lead to an expansion
+ of code.
\end_layout
\begin_layout Standard
@@ -10132,7 +10157,7 @@ HXdeque_push(dq, &p);
\end_layout
\begin_layout Plain Layout
-\begin_inset Caption
+\begin_inset Caption Standard
\begin_layout Plain Layout
Data can be added multiple times in a HXdeque without ill effects
@@ -13173,7 +13198,7 @@ Examples
Using HX_split5
\begin_inset CommandInset label
LatexCommand label
-name "sub:string-ex-HX_split5"
+name "subsec:string-ex-HX_split5"
\end_inset
@@ -13735,7 +13760,7 @@ HXmc_strcat(&s, ".txt");
\end_layout
\begin_layout Plain Layout
-\begin_inset Caption
+\begin_inset Caption Standard
\begin_layout Plain Layout
Improvement of string safety over time
@@ -14847,7 +14872,7 @@ user
\begin_inset space ~
\end_inset
----
+—
\family typewriter
sizeof(const char *)
\family default
@@ -14880,7 +14905,7 @@ user
\end_layout
\begin_layout Plain Layout
-\begin_inset Caption
+\begin_inset Caption Standard
\begin_layout Plain Layout
@@ -15121,7 +15146,7 @@ section
\begin_inset CommandInset ref
LatexCommand ref
-reference "sub:option-types"
+reference "subsec:option-types"
\end_inset
@@ -15129,7 +15154,7 @@ reference "sub:option-types"
\begin_inset space ~
\end_inset
---- not all constants can be used, though, and their meaning also differs
+— not all constants can be used, though, and their meaning also differs
from what
\family typewriter
HX_getopt
@@ -15142,7 +15167,7 @@ HX_shconfig
\begin_inset space ~
\end_inset
---- the two could be seen as
+— the two could be seen as
\begin_inset Quotes eld
\end_inset
@@ -15203,7 +15228,7 @@ HXTYPE_STRING
\begin_inset space ~
\end_inset
----
+—
\family typewriter
ptr
\family default
@@ -15251,7 +15276,7 @@ LLONG
\begin_inset space ~
\end_inset
---- mapping to the standard types
+— mapping to the standard types
\end_layout
\begin_layout Subsubsection
@@ -15308,7 +15333,7 @@ HXTYPE_STRP
\begin_inset space ~
\end_inset
----
+—
\family typewriter
ptr
\family default
@@ -15347,7 +15372,7 @@ HXTYPE_BOOL
\begin_inset space ~
\end_inset
----
+—
\family typewriter
ptr
\family default
@@ -15515,7 +15540,7 @@ HXTYPE_ULLONG
\begin_inset space ~
\end_inset
---- mapping to the standard types with one indirection (e.
+— mapping to the standard types with one indirection (e.
\begin_inset space \thinspace{}
\end_inset
@@ -15575,7 +15600,7 @@ HXTYPE_DOUBLE
\begin_inset space ~
\end_inset
---- mapping to the two floating-point types with one indirection (e.
+— mapping to the two floating-point types with one indirection (e.
\begin_inset space \thinspace{}
\end_inset
@@ -15927,7 +15952,7 @@ exec
expansion (wildcards, etc.) takes place.
stdin is set to
\family typewriter
-/dev\SpecialChar \slash{}
+/dev\SpecialChar breakableslash
null
\family default
.
@@ -15936,11 +15961,11 @@ null
\begin_inset space ~
\end_inset
---- as it is relevant to security
+— as it is relevant to security
\begin_inset space ~
\end_inset
---- the fmt table needs to have a key called
+— the fmt table needs to have a key called
\begin_inset Quotes eld
\end_inset
@@ -16290,7 +16315,7 @@ Hello Home
\end_layout
\begin_layout Plain Layout
-\begin_inset Caption
+\begin_inset Caption Standard
\begin_layout Plain Layout
\begin_inset CommandInset label
@@ -16339,7 +16364,7 @@ HXformat_aprintf(table, &result, "%(exec uname -s)");
\end_layout
\begin_layout Plain Layout
-\begin_inset Caption
+\begin_inset Caption Standard
\begin_layout Plain Layout
\begin_inset CommandInset label
@@ -16522,21 +16547,21 @@ HX_REALPATH_DEFAULT
A mnemonic for a set of standard flags:
\family typewriter
-HX_\SpecialChar \-
-REALPATH_\SpecialChar \-
+HX_\SpecialChar softhyphen
+REALPATH_\SpecialChar softhyphen
SELF
\begin_inset space ~
\end_inset
-| HX_\SpecialChar \-
-REALPATH_\SpecialChar \-
+| HX_\SpecialChar softhyphen
+REALPATH_\SpecialChar softhyphen
PARENT
\family default
.
Note that
\family typewriter
-HX_\SpecialChar \-
-REALPATH_\SpecialChar \-
+HX_\SpecialChar softhyphen
+REALPATH_\SpecialChar softhyphen
ABSOLUTE
\family default
, which would also be required to get libc's
@@ -16649,38 +16674,12 @@ name "sec:dir-ops1"
\begin_layout Standard
libHX provides a minimal readdir-style wrapper for cross-platform directory
traversal.
- This is needed because platforms such as do not have readdir (e.
-\begin_inset space \thinspace{}
-\end_inset
-
-g.
-\begin_inset space \space{}
-\end_inset
-
-Win32), or to work around peculiarities in the lower implementation.
- Solaris's
-\family typewriter
-struct dirent
-\family default
- for example is
-\begin_inset Quotes eld
-\end_inset
-
-too small
-\begin_inset Quotes erd
-\end_inset
-
-, that is,
-\family typewriter
-readdir
-\family default
- will cause a buffer overrun when Linux code is directly ported to it without
- anticipating for this scenario.
- libHX's
+ This is needed because the Win32 platforms does not have readdir, and there
+ is some housekeeping to do on Unixish platforms, since the
\family typewriter
-io.c
+dirent
\family default
- mitigates this.
+ structure needs allocation of a path-specific size.
\end_layout
\begin_layout Subsection
@@ -17395,11 +17394,11 @@ write
\begin_inset space ~
\end_inset
---- even more likely so with sockets
+— even more likely so with sockets
\begin_inset space ~
\end_inset
----, libHX provides two functions that calls these in a loop to retry said
+—, libHX provides two functions that calls these in a loop to retry said
operations until the full amount has been processed.
Since
\family typewriter
@@ -17539,7 +17538,7 @@ getopt
Synopsis
\begin_inset CommandInset label
LatexCommand label
-name "sub:option-synopsis"
+name "subsec:option-synopsis"
\end_inset
@@ -17899,7 +17898,7 @@ It is a sad fact that C++ has not gotten around to implement these yet.
Type map
\begin_inset CommandInset label
LatexCommand label
-name "sub:option-types"
+name "subsec:option-types"
\end_inset
@@ -17939,12 +17938,12 @@ HXTYPE_NONE
to 1.
Other rules apply when
\family typewriter
-HXOPT_\SpecialChar \-
+HXOPT_\SpecialChar softhyphen
INC
\family default
or
\family typewriter
-HXOPT_\SpecialChar \-
+HXOPT_\SpecialChar softhyphen
DEC
\family default
are specified as flags (see section
@@ -17954,7 +17953,7 @@ DEC
\begin_inset CommandInset ref
LatexCommand ref
-reference "sub:option-flags"
+reference "subsec:option-flags"
\end_inset
@@ -18196,7 +18195,7 @@ NULL
\begin_inset CommandInset ref
LatexCommand ref
-reference "sub:option-pitfalls-static"
+reference "subsec:option-pitfalls-static"
\end_inset
@@ -18243,22 +18242,22 @@ strtoul
indicates hexadecimal (16) base, and decimal (10) otherwise.
\family typewriter
-HXTYPE_\SpecialChar \-
+HXTYPE_\SpecialChar softhyphen
LLONG
\family default
,
\family typewriter
- HXTYPE_\SpecialChar \-
+ HXTYPE_\SpecialChar softhyphen
ULLONG
\family default
,
\family typewriter
- HXTYPE_\SpecialChar \-
+ HXTYPE_\SpecialChar softhyphen
INT64
\family default
and
\family typewriter
- HXTYPE_\SpecialChar \-
+ HXTYPE_\SpecialChar softhyphen
UINT64
\family default
use
@@ -18270,6 +18269,10 @@ UINT64
strtoull
\family default
, which may not be available on all platforms.
+\begin_inset Separator latexpar
+\end_inset
+
+
\end_layout
\begin_layout Standard
@@ -18285,10 +18288,10 @@ status open
\begin_inset Tabular
<lyxtabular version="3" rows="12" columns="4">
<features tabularvalignment="middle">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="bottom" width="0">
-<column alignment="center" valignment="top" width="0">
-<column alignment="center" valignment="top" width="0">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="bottom">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
<row>
<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
\begin_inset Text
@@ -19100,7 +19103,7 @@ size_t
\end_layout
\begin_layout Plain Layout
-\begin_inset Caption
+\begin_inset Caption Standard
\begin_layout Plain Layout
Integral and floating-point types for the libHX option parser
@@ -19119,12 +19122,12 @@ Integral and floating-point types for the libHX option parser
\begin_layout Standard
\family typewriter
-HXTYPE_\SpecialChar \-
+HXTYPE_\SpecialChar softhyphen
FLOAT
\family default
and
\family typewriter
-HXTYPE_\SpecialChar \-
+HXTYPE_\SpecialChar softhyphen
DOUBLE
\family default
make use of
@@ -19156,7 +19159,7 @@ long double
\begin_inset CommandInset ref
LatexCommand ref
-reference "sub:option-example-cb"
+reference "subsec:option-example-cb"
\end_inset
@@ -19167,7 +19170,7 @@ reference "sub:option-example-cb"
Flags
\begin_inset CommandInset label
LatexCommand label
-name "sub:option-flags"
+name "subsec:option-flags"
\end_inset
@@ -19243,17 +19246,17 @@ HXOPT_DEC
\begin_layout Standard
Only one of
\family typewriter
-HXOPT_\SpecialChar \-
+HXOPT_\SpecialChar softhyphen
INC
\family default
and
\family typewriter
-HXOPT_\SpecialChar \-
+HXOPT_\SpecialChar softhyphen
DEC
\family default
may be specified at a time, and they require that the base type is
\family typewriter
-HXTYPE_\SpecialChar \-
+HXTYPE_\SpecialChar softhyphen
NONE
\family default
, or they will have no effect.
@@ -19264,7 +19267,7 @@ NONE
\begin_inset CommandInset ref
LatexCommand ref
-reference "sub:option-example-incdec"
+reference "subsec:option-example-incdec"
\end_inset
@@ -19326,7 +19329,7 @@ OR
\begin_inset Quotes erd
\end_inset
-s the pointee with the specified\SpecialChar \slash{}
+s the pointee with the specified\SpecialChar breakableslash
transformed value.
\end_layout
@@ -19359,7 +19362,7 @@ AND
\begin_inset Quotes erd
\end_inset
-s the pointee with the specified\SpecialChar \slash{}
+s the pointee with the specified\SpecialChar breakableslash
transformed value.
\end_layout
@@ -19392,7 +19395,7 @@ XOR
\begin_inset Quotes erd
\end_inset
-s the pointee with the specified\SpecialChar \slash{}
+s the pointee with the specified\SpecialChar breakableslash
transformed value.
\end_layout
@@ -19403,12 +19406,12 @@ HXOPT_OR
\family default
,
\family typewriter
-HXOPT_\SpecialChar \-
+HXOPT_\SpecialChar softhyphen
AND
\family default
,
\family typewriter
-HXOPT_\SpecialChar \-
+HXOPT_\SpecialChar softhyphen
XOR
\family default
) may be specified at a time, but they can be used with any integral
@@ -19417,12 +19420,12 @@ type
\family default
(
\family typewriter
-HXTYPE_\SpecialChar \-
+HXTYPE_\SpecialChar softhyphen
UINT
\family default
,
\family typewriter
-HXTYPE_\SpecialChar \-
+HXTYPE_\SpecialChar softhyphen
ULONG
\family default
, etc.).
@@ -19433,7 +19436,7 @@ ULONG
\begin_inset CommandInset ref
LatexCommand ref
-reference "sub:option-example-mask"
+reference "subsec:option-example-mask"
\end_inset
@@ -19513,8 +19516,8 @@ iptables
\begin_inset space ~
\end_inset
---- things that look like an option take precedence over an option with
- an optional argument.
+— things that look like an option take precedence over an option with an
+ optional argument.
\begin_inset Quotes eld
\end_inset
@@ -19970,17 +19973,17 @@ HXOPT_ERR_VOID
\family default
is of type
\family typewriter
-HXTYPE_\SpecialChar \-
+HXTYPE_\SpecialChar softhyphen
NONE
\family default
,
\family typewriter
-HXTYPE_\SpecialChar \-
+HXTYPE_\SpecialChar softhyphen
VAL
\family default
or
\family typewriter
-HXTYPE_\SpecialChar \-
+HXTYPE_\SpecialChar softhyphen
SVAL
\family default
.
@@ -20036,6 +20039,30 @@ HXOPT_ERR_MIS
\end_layout
\begin_layout Description
+
+\family typewriter
+HXOPT_ERR_AMBIG
+\series medium
+
+\begin_inset Index idx
+status open
+
+\begin_layout Plain Layout
+
+\family typewriter
+\series medium
+HXOPT_ERR_AMBIG
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+ An abbreviation of a long option was ambiguous.
+\end_layout
+
+\begin_layout Description
negative
\begin_inset space ~
\end_inset
@@ -20051,7 +20078,7 @@ Pitfalls
Staticness of tables
\begin_inset CommandInset label
LatexCommand label
-name "sub:option-pitfalls-static"
+name "subsec:option-pitfalls-static"
\end_inset
@@ -20059,9 +20086,9 @@ name "sub:option-pitfalls-static"
\end_layout
\begin_layout Standard
-The following is an example of a trap regarding
+The following is an example of a possible pitfall regarding
\family typewriter
-HXTYPE_\SpecialChar \-
+HXTYPE_\SpecialChar softhyphen
STRDQ
\family default
:
@@ -20194,7 +20221,7 @@ return
\begin_layout Standard
The problem here is that
\family typewriter
-options_\SpecialChar \-
+options_\SpecialChar softhyphen
table
\family default
is, due to the
@@ -20217,7 +20244,7 @@ static
\family default
qualifier on the options table when used with
\family typewriter
-HXTYPE_\SpecialChar \-
+HXTYPE_\SpecialChar softhyphen
STRDQ
\family default
, so that it will be evaluated when it is first executed.
@@ -20226,7 +20253,7 @@ STRDQ
\begin_layout Standard
It was not deemed worthwhile to have
\family typewriter
-HXTYPE_\SpecialChar \-
+HXTYPE_\SpecialChar softhyphen
STRDQ
\family default
take an indirect HXdeque (
@@ -20338,7 +20365,7 @@ Options using a
\begin_inset space ~
\end_inset
---- by GNU standards, a negator is named
+— by GNU standards, a negator is named
\begin_inset Quotes eld
\end_inset
@@ -20377,7 +20404,7 @@ Table nesting like implemented in popt.
\begin_inset CommandInset ref
LatexCommand ref
-reference "sub:option-example-chained"
+reference "subsec:option-example-chained"
\end_inset
@@ -20616,7 +20643,7 @@ return
Verbosity levels
\begin_inset CommandInset label
LatexCommand label
-name "sub:option-example-incdec"
+name "subsec:option-example-incdec"
\end_inset
@@ -20816,7 +20843,7 @@ static const struct
Mask operations
\begin_inset CommandInset label
LatexCommand label
-name "sub:option-example-mask"
+name "subsec:option-example-mask"
\end_inset
@@ -20928,7 +20955,7 @@ net_mask |= y
Support for non-standard actions
\begin_inset CommandInset label
LatexCommand label
-name "sub:option-example-cb"
+name "subsec:option-example-cb"
\end_inset
@@ -20939,7 +20966,7 @@ name "sub:option-example-cb"
Supporting additional types or custom storage formats is easy, by simply
using
\family typewriter
-HXTYPE_\SpecialChar \-
+HXTYPE_\SpecialChar softhyphen
STRING
\family default
,
@@ -21117,7 +21144,7 @@ static const struct
Chained argument processing
\begin_inset CommandInset label
LatexCommand label
-name "sub:option-example-chained"
+name "subsec:option-example-chained"
\end_inset
@@ -21136,8 +21163,8 @@ On the first run, only
is considered, which is then used to select the next set of accepted options.
Note that
\family typewriter
-HXOPT_\SpecialChar \-
-DESTROY_\SpecialChar \-
+HXOPT_\SpecialChar softhyphen
+DESTROY_\SpecialChar softhyphen
OLD
\family default
is used here, which causes the argv that is produced by the first invocation
@@ -21157,7 +21184,7 @@ HX_getopt
\family typewriter
get_cakes
\family default
-\SpecialChar \slash{}
+\SpecialChar breakableslash
\family typewriter
get_fruit
@@ -21165,8 +21192,8 @@ get_fruit
.
\family typewriter
-HXOPT_\SpecialChar \-
-DESTROY_\SpecialChar \-
+HXOPT_\SpecialChar softhyphen
+DESTROY_\SpecialChar softhyphen
OLD
\family default
is however
@@ -21679,7 +21706,7 @@ struct HXoption
\begin_inset CommandInset ref
LatexCommand ref
-reference "sub:option-synopsis"
+reference "subsec:option-synopsis"
\end_inset
@@ -21727,7 +21754,7 @@ ptr
\begin_inset CommandInset ref
LatexCommand ref
-reference "sub:option-types"
+reference "subsec:option-types"
\end_inset
@@ -21780,7 +21807,7 @@ other
direction (actually you have to turn the array around) and stopping at
the first existing file by use of the
\family typewriter
-SHCONF_\SpecialChar \-
+SHCONF_\SpecialChar softhyphen
ONE
\family default
flag.
@@ -22208,7 +22235,7 @@ srand
\begin_inset space ~
\end_inset
---- usually this will be before a program's
+— usually this will be before a program's
\family typewriter
main
\family default
@@ -22464,8 +22491,8 @@ bool
When creating a new process with the intent of running it asynchronously
(using
\family typewriter
-HXproc_\SpecialChar \-
-run_\SpecialChar \-
+HXproc_\SpecialChar softhyphen
+run_\SpecialChar softhyphen
async
\family default
), the first three fields must be filled in by the user.
@@ -22605,7 +22632,7 @@ p_exited
\begin_inset space \space{}
\end_inset
-signalled\SpecialChar \slash{}
+signalled\SpecialChar breakableslash
terminated).
\end_layout
@@ -22629,7 +22656,7 @@ p_status
Flags
\begin_inset CommandInset label
LatexCommand label
-name "sub:proc-pflags"
+name "subsec:proc-pflags"
\end_inset
@@ -22668,8 +22695,8 @@ HXPROC_STDIN
program, that is, not inherit the stdin of the master.
Cannot be used for
\family typewriter
-HXproc_\SpecialChar \-
-run_\SpecialChar \-
+HXproc_\SpecialChar softhyphen
+run_\SpecialChar softhyphen
sync
\family default
(because there would be no one to provide data in a sync operation).
@@ -22752,19 +22779,19 @@ HXPROC_NULL_STDIN
The subprocess's stdin file descriptor shall be connected to
\family typewriter
-/dev\SpecialChar \slash{}
+/dev\SpecialChar breakableslash
null
\family default
.
\family typewriter
-HXPROC_\SpecialChar \-
+HXPROC_\SpecialChar softhyphen
STDIN
\family default
and
\family typewriter
-HXPROC_\SpecialChar \-
-NULL_\SpecialChar \-
+HXPROC_\SpecialChar softhyphen
+NULL_\SpecialChar softhyphen
STDIN
\family default
are mutually exclusive.
@@ -22789,19 +22816,19 @@ HXPROC_NULL_STDOUT
Connect the stdout file descriptor of the subprocess to
\family typewriter
-/dev\SpecialChar \slash{}
+/dev\SpecialChar breakableslash
null
\family default
, thereby essentially discarding its output.
\family typewriter
-HXPROC_\SpecialChar \-
+HXPROC_\SpecialChar softhyphen
STDOUT
\family default
and
\family typewriter
-HXPROC_\SpecialChar \-
-NULL_\SpecialChar \-
+HXPROC_\SpecialChar softhyphen
+NULL_\SpecialChar softhyphen
STDOUT
\family default
are mutuall exclusive.
@@ -22826,19 +22853,19 @@ HXPROC_NULL_STDERR
Connect the stderr file descriptor of the subprocess to
\family typewriter
-/dev\SpecialChar \slash{}
+/dev\SpecialChar breakableslash
null
\family default
, thereby essentially discarding its output.
\family typewriter
-HXPROC_\SpecialChar \-
+HXPROC_\SpecialChar softhyphen
STDERR
\family default
and
\family typewriter
-HXPROC_\SpecialChar \-
-NULL_\SpecialChar \-
+HXPROC_\SpecialChar softhyphen
+NULL_\SpecialChar softhyphen
STDERR
\family default
are mutually exclusive.
@@ -23273,7 +23300,7 @@ flags
\begin_inset CommandInset ref
LatexCommand ref
-reference "sub:proc-pflags"
+reference "subsec:proc-pflags"
\end_inset
@@ -23423,7 +23450,7 @@ letters) have no notion of signedness
\begin_inset space ~
\end_inset
---- there is no
+— there is no
\begin_inset Quotes eld
\end_inset
@@ -23500,8 +23527,8 @@ unfortunate
.
Characters, when interpreted as the 8-bit signed numeric quantity they
- are implicitly convertable to, run from 0 to 127 and \SpecialChar \nobreakdash-
-128 to \SpecialChar \nobreakdash-
+ are implicitly convertable to, run from 0 to 127 and \SpecialChar nobreakdash
+128 to \SpecialChar nobreakdash
1.
Since the
\family typewriter
@@ -23594,9 +23621,9 @@ signed char
\begin_inset Quotes erd
\end_inset
-, see above), producing 0xffffffc3 (\SpecialChar \nobreakdash-
+, see above), producing 0xffffffc3 (\SpecialChar nobreakdash
61).
- But passing \SpecialChar \nobreakdash-
+ But passing \SpecialChar nobreakdash
61 is not what was intended.
\end_layout
@@ -23619,7 +23646,7 @@ unsigned
\family typewriter
isalpha
\family default
-'s domain only goes from 0--255.
+'s domain only goes from 0–255.
The implication is that you cannot pass
\family typewriter
EOF
@@ -24313,9 +24340,9 @@ xmlNewTextNode
\family typewriter
-xml\SpecialChar \-
-New\SpecialChar \-
-Text\SpecialChar \-
+xml\SpecialChar softhyphen
+New\SpecialChar softhyphen
+Text\SpecialChar softhyphen
Node
\family default
and
@@ -24332,8 +24359,8 @@ xmlSetProp
\family typewriter
-xml\SpecialChar \-
-Set\SpecialChar \-
+xml\SpecialChar softhyphen
+Set\SpecialChar softhyphen
Prop
\family default
, respectively.
@@ -24439,15 +24466,15 @@ wxDialog
\family default
s, which includes
\family typewriter
-wxDEFAULT_\SpecialChar \-
-FRAME_\SpecialChar \-
+wxDEFAULT_\SpecialChar softhyphen
+FRAME_\SpecialChar softhyphen
STYLE
\family default
and a flag such that the dialog does not create a new window in the task
bar (
\family typewriter
-wxFRAME_\SpecialChar \-
-NO_\SpecialChar \-
+wxFRAME_\SpecialChar softhyphen
+NO_\SpecialChar softhyphen
TASKBAR
\family default
).
@@ -24718,6 +24745,8 @@ Appendix
\begin_inset CommandInset index_print
LatexCommand printindex
type "idx"
+name "Index"
+literal "true"
\end_inset
diff --git a/doc/libHX_Documentation.pdf b/doc/libHX_Documentation.pdf
index 0a1f6fb..40e8c81 100644
--- a/doc/libHX_Documentation.pdf
+++ b/doc/libHX_Documentation.pdf
Binary files differ
diff --git a/doc/strlcpy-timing.txt b/doc/strlcpy-timing.txt
new file mode 100644
index 0000000..56ed40c
--- /dev/null
+++ b/doc/strlcpy-timing.txt
@@ -0,0 +1,109 @@
+strncpy fills the buffer with \0s if there is room left, which can build up
+runtime if the buffer is much larger than the string to be copied. The turning
+point on i7-4600U is about when the buffer is 3 times larger or more than the
+string. Copying a M-char string into a buffer of size N with different
+strategies turned out as follows, not favorably for switching to memcpy
+approach:
+
+M->N: [str minus mem] (str=walltime, mem=walltime)
+
+ 3-> 4: 0.-18010833 (str=0.053766602 mem=0.071777435)
+ 3-> 8: 0.-02276861 (str=0.069214041 mem=0.071490902)
+ 3-> 16: 0.-02594396 (str=0.069160485 mem=0.071754881)
+ 3-> 32: 0.-06119749 (str=0.064986286 mem=0.071106035)
+ 3-> 64: 0.-10011776 (str=0.062121350 mem=0.072133126)
+ 3-> 80: 0.000049152 (str=0.071466420 mem=0.071417268)
+ 3-> 128: 0.-10057727 (str=0.062143411 mem=0.072201138)
+ 3-> 256: 0.006148232 (str=0.077881866 mem=0.071733634)
+ 3->1024: 0.133625167 (str=0.206994485 mem=0.073369318)
+ 3->2048: 0.335047756 (str=0.405503204 mem=0.070455448)
+ 7-> 4: 0.-28288138 (str=0.046614065 mem=0.074902203)
+ 7-> 8: 0.-20974635 (str=0.052778755 mem=0.073753390)
+ 7-> 16: 0.-06903916 (str=0.068165128 mem=0.075069044)
+ 7-> 32: 0.-11161234 (str=0.064787697 mem=0.075948931)
+ 7-> 64: 0.-12026108 (str=0.061544945 mem=0.073571053)
+ 7-> 80: 0.-01877441 (str=0.072047713 mem=0.073925154)
+ 7-> 128: 0.-11343544 (str=0.062557326 mem=0.073900870)
+ 7-> 256: 0.005472409 (str=0.079922333 mem=0.074449924)
+ 7->1024: 0.133164952 (str=0.206290338 mem=0.073125386)
+ 7->2048: 0.329050142 (str=0.403909643 mem=0.074859501)
+ 15-> 4: 0.-28134891 (str=0.046436269 mem=0.074571160)
+ 15-> 8: 0.-26808385 (str=0.047722251 mem=0.074530636)
+ 15-> 16: 0.-21857806 (str=0.052866161 mem=0.074723967)
+ 15-> 32: 0.-15183331 (str=0.058903617 mem=0.074086948)
+ 15-> 64: 0.-06020317 (str=0.068661890 mem=0.074682207)
+ 15-> 80: 0.-13077126 (str=0.061986539 mem=0.075063665)
+ 15-> 128: 0.-05110583 (str=0.069024087 mem=0.074134670)
+ 15-> 256: 0.010346893 (str=0.085920728 mem=0.075573835)
+ 15->1024: 0.130128294 (str=0.203516720 mem=0.073388426)
+ 15->2048: 0.384323201 (str=0.459435357 mem=0.075112156)
+ 31-> 4: 0.-40592735 (str=0.043398064 mem=0.083990799)
+ 31-> 8: 0.-40405756 (str=0.043312982 mem=0.083718738)
+ 31-> 16: 0.-42308714 (str=0.044729400 mem=0.087038114)
+ 31-> 32: 0.-14127856 (str=0.056652936 mem=0.070780792)
+ 31-> 64: 0.-01889875 (str=0.069010683 mem=0.070900558)
+ 31-> 80: 0.001793133 (str=0.072637736 mem=0.070844603)
+ 31-> 128: 0.-02607933 (str=0.068334098 mem=0.070942031)
+ 31-> 256: 0.018139903 (str=0.088753971 mem=0.070614068)
+ 31->1024: 0.133949645 (str=0.204402776 mem=0.070453131)
+ 31->2048: 0.398049056 (str=0.468551187 mem=0.070502131)
+ 63-> 4: 0.-40166921 (str=0.043758420 mem=0.083925341)
+ 63-> 8: 0.-40966732 (str=0.043495110 mem=0.084461842)
+ 63-> 16: 0.-43784039 (str=0.043770941 mem=0.087554980)
+ 63-> 32: 0.-31256988 (str=0.046623389 mem=0.077880377)
+ 63-> 64: 0.-13997348 (str=0.068499638 mem=0.082496986)
+ 63-> 80: 0.-13916305 (str=0.068620538 mem=0.082536843)
+ 63-> 128: 0.-08328403 (str=0.074551339 mem=0.082879742)
+ 63-> 256: 0.004095734 (str=0.087035878 mem=0.082940144)
+ 63->1024: 0.151451020 (str=0.233770899 mem=0.082319879)
+ 63->2048: 0.355839456 (str=0.438594030 mem=0.082754574)
+ 79-> 4: 0.-53092708 (str=0.045118918 mem=0.098211626)
+ 79-> 8: 0.-54340043 (str=0.043908506 mem=0.098248549)
+ 79-> 16: 0.-57213292 (str=0.043950458 mem=0.101163750)
+ 79-> 32: 0.-44929075 (str=0.047104201 mem=0.092033276)
+ 79-> 64: 0.-40841792 (str=0.060369798 mem=0.101211590)
+ 79-> 80: 0.-34512567 (str=0.072643063 mem=0.107155630)
+ 79-> 128: 0.-26004050 (str=0.081177431 mem=0.107181481)
+ 79-> 256: 0.-14164733 (str=0.093010965 mem=0.107175698)
+ 79->1024: 0.131262747 (str=0.238379553 mem=0.107116806)
+ 79->2048: 0.337908136 (str=0.444999897 mem=0.107091761)
+ 127-> 4: 0.-53463038 (str=0.044954314 mem=0.098417352)
+ 127-> 8: 0.-54030635 (str=0.044154075 mem=0.098184710)
+ 127-> 16: 0.-56778235 (str=0.044743552 mem=0.101521787)
+ 127-> 32: 0.-44858267 (str=0.047231395 mem=0.092089662)
+ 127-> 64: 0.-42149730 (str=0.059234517 mem=0.101384247)
+ 127-> 80: 0.-45513663 (str=0.062055806 mem=0.107569469)
+ 127-> 128: 0.-23468852 (str=0.083671245 mem=0.107140097)
+ 127-> 256: 0.-04999520 (str=0.102026030 mem=0.107025550)
+ 127->1024: 0.139261976 (str=0.246475516 mem=0.107213540)
+ 127->2048: 0.345950301 (str=0.453134545 mem=0.107184244)
+ 255-> 4: 0.-70209659 (str=0.044940128 mem=0.115149787)
+ 255-> 8: 0.-71166235 (str=0.044243636 mem=0.115409871)
+ 255-> 16: 0.-73994321 (str=0.044365563 mem=0.118359884)
+ 255-> 32: 0.-61137064 (str=0.047746212 mem=0.108883276)
+ 255-> 64: 0.-58453794 (str=0.059850772 mem=0.118304566)
+ 255-> 80: 0.-61859639 (str=0.062199397 mem=0.124059036)
+ 255-> 128: 0.-42561423 (str=0.081341036 mem=0.123902459)
+ 255-> 256: 0.-35252238 (str=0.127124980 mem=0.162377218)
+ 255->1024: 0.097331464 (str=0.259751271 mem=0.162419807)
+ 255->2048: 0.305789595 (str=0.468141377 mem=0.162351782)
+1023-> 4: 0.-161452842 (str=0.043764021 mem=0.205216863)
+1023-> 8: 0.-155095262 (str=0.043698735 mem=0.198793997)
+1023-> 16: 0.-153207918 (str=0.043675714 mem=0.196883632)
+1023-> 32: 0.-152565254 (str=0.047438108 mem=0.200003362)
+1023-> 64: 0.-144192775 (str=0.058773300 mem=0.202966075)
+1023-> 80: 0.-149929950 (str=0.062432021 mem=0.212361971)
+1023-> 128: 0.-132285886 (str=0.080313089 mem=0.212598975)
+1023-> 256: 0.-133526587 (str=0.108033655 mem=0.241560242)
+1023->1024: 0.-90772704 (str=0.311350193 mem=0.402122897)
+1023->2048: 0.088417585 (str=0.490594175 mem=0.402176590)
+1368-> 4: 0.-211901350 (str=0.044167308 mem=0.256068658)
+1368-> 8: 0.-203185010 (str=0.044571028 mem=0.247756038)
+1368-> 16: 0.-200207782 (str=0.044133973 mem=0.244341755)
+1368-> 32: 0.-202440240 (str=0.047977200 mem=0.250417440)
+1368-> 64: 0.-193238434 (str=0.058934429 mem=0.252172863)
+1368-> 80: 0.-200936170 (str=0.062169785 mem=0.263105955)
+1368-> 128: 0.-181397289 (str=0.081740755 mem=0.263138044)
+1368-> 256: 0.-183151788 (str=0.107983466 mem=0.291135254)
+1368->1024: 0.-142070533 (str=0.292431947 mem=0.434502480)
+1368->2048: 0.-16089517 (str=0.508519291 mem=0.524608808)