[med-svn] [Git][med-team/libmaus2][upstream] New upstream version 2.0.657
Andreas Tille
gitlab at salsa.debian.org
Mon Aug 19 19:21:28 BST 2019
Andreas Tille pushed to branch upstream at Debian Med / libmaus2
Commits:
f9353a7e by Andreas Tille at 2019-08-19T16:17:20Z
New upstream version 2.0.657
- - - - -
29 changed files:
- ChangeLog
- autom4te.cache/output.0
- autom4te.cache/output.1
- autom4te.cache/output.2
- autom4te.cache/requests
- autom4te.cache/traces.1
- configure
- configure.ac
- src/Makefile.am
- src/Makefile.in
- src/libmaus2/aio/TempFileArray.hpp
- src/libmaus2/autoarray/AutoArray.hpp
- src/libmaus2/bambam/ReadEndsBlockIndexSet.hpp
- src/libmaus2/bambam/parallel/BlockSortControl.hpp
- src/libmaus2/bambam/parallel/FragReadEndsMergeWorkPackage.hpp
- src/libmaus2/bambam/parallel/FragReadEndsMergeWorkPackageDispatcher.hpp
- src/libmaus2/bambam/parallel/PairReadEndsMergeWorkPackage.hpp
- src/libmaus2/bambam/parallel/PairReadEndsMergeWorkPackageDispatcher.hpp
- + src/libmaus2/network/ClientSocket.hpp
- src/libmaus2/network/FtpSocket.hpp
- src/libmaus2/network/GnuTLSSocket.hpp
- src/libmaus2/network/HttpHeader.hpp
- + src/libmaus2/network/ServerSocket.hpp
- src/libmaus2/network/Socket.hpp → src/libmaus2/network/SocketBase.hpp
- src/libmaus2/network/SocketInputStreamBuffer.hpp
- src/libmaus2/rank/ImpCacheLineRank.hpp
- src/libmaus2/suffixsort/SkewSuffixSort.hpp
- src/test/testfqbgzf.cpp
- src/test/testparallelbamblocksort.cpp
Changes:
=====================================
ChangeLog
=====================================
@@ -1,3 +1,29 @@
+libmaus2 (2.0.657-1) unstable; urgency=medium
+
+ * allow limiting parallelism in fragment merging of BlockSortControl (implicitely reduces number of open files)
+
+ -- German Tischler-Höhle <germant at miltenyibiotec.de> Mon, 19 Aug 2019 14:29:09 +0200
+
+libmaus2 (2.0.656-1) unstable; urgency=medium
+
+ * refactoring socket classes
+ * refactor and guard against interupted system calls in Socket.hpp
+
+ -- German Tischler-Höhle <germant at miltenyibiotec.de> Fri, 16 Aug 2019 10:54:29 +0200
+
+libmaus2 (2.0.655-1) unstable; urgency=medium
+
+ * refactor AutoArray and avoid mismatching alloc/dealloc pairs (do not deallocate memory allocated through new [] using free)
+
+ -- German Tischler-Höhle <germant at miltenyibiotec.de> Thu, 15 Aug 2019 21:20:31 +0200
+
+libmaus2 (2.0.654-1) unstable; urgency=medium
+
+ * remove extraneous include directive in SkewSuffixSort
+ * add missing include directive in TempFileArray
+
+ -- German Tischler-Höhle <germant at miltenyibiotec.de> Tue, 13 Aug 2019 15:58:13 +0200
+
libmaus2 (2.0.653-1) unstable; urgency=medium
* add getNextReferenceLength/getNextFrontDel/getNextReferenceInterval in BamAlignmentDecoderBase/BamAlignment
=====================================
autom4te.cache/output.0
=====================================
@@ -1,6 +1,6 @@
@%:@! /bin/sh
@%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.69 for libmaus2 2.0.652.
+@%:@ Generated by GNU Autoconf 2.69 for libmaus2 2.0.656.
@%:@
@%:@ Report bugs to <tischler at mpi-cbg.de>.
@%:@
@@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='libmaus2'
PACKAGE_TARNAME='libmaus2'
-PACKAGE_VERSION='2.0.652'
-PACKAGE_STRING='libmaus2 2.0.652'
+PACKAGE_VERSION='2.0.656'
+PACKAGE_STRING='libmaus2 2.0.656'
PACKAGE_BUGREPORT='tischler at mpi-cbg.de'
PACKAGE_URL='https://github.com/gt1/libmaus2'
@@ -1609,7 +1609,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libmaus2 2.0.652 to adapt to many kinds of systems.
+\`configure' configures libmaus2 2.0.656 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1681,7 +1681,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libmaus2 2.0.652:";;
+ short | recursive ) echo "Configuration of libmaus2 2.0.656:";;
esac
cat <<\_ACEOF
@@ -1851,7 +1851,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libmaus2 configure 2.0.652
+libmaus2 configure 2.0.656
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2724,7 +2724,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libmaus2 $as_me 2.0.652, which was
+It was created by libmaus2 $as_me 2.0.656, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3072,7 +3072,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-LIBRARY_VERSION=2:652:0
+LIBRARY_VERSION=2:656:0
{ $as_echo "$as_me:${as_lineno-$LINENO}: Configuring for source in directory ${srcdir}" >&5
$as_echo "$as_me: Configuring for source in directory ${srcdir}" >&6;}
ac_aux_dir=
@@ -12628,7 +12628,7 @@ fi
# Define the identity of the package.
PACKAGE='libmaus2'
- VERSION='2.0.652'
+ VERSION='2.0.656'
cat >>confdefs.h <<_ACEOF
@@ -28157,7 +28157,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libmaus2 $as_me 2.0.652, which was
+This file was extended by libmaus2 $as_me 2.0.656, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -28224,7 +28224,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libmaus2 config.status 2.0.652
+libmaus2 config.status 2.0.656
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
=====================================
autom4te.cache/output.1
=====================================
@@ -1,6 +1,6 @@
@%:@! /bin/sh
@%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.69 for libmaus2 2.0.653.
+@%:@ Generated by GNU Autoconf 2.69 for libmaus2 2.0.657.
@%:@
@%:@ Report bugs to <tischler at mpi-cbg.de>.
@%:@
@@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='libmaus2'
PACKAGE_TARNAME='libmaus2'
-PACKAGE_VERSION='2.0.653'
-PACKAGE_STRING='libmaus2 2.0.653'
+PACKAGE_VERSION='2.0.657'
+PACKAGE_STRING='libmaus2 2.0.657'
PACKAGE_BUGREPORT='tischler at mpi-cbg.de'
PACKAGE_URL='https://github.com/gt1/libmaus2'
@@ -1609,7 +1609,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libmaus2 2.0.653 to adapt to many kinds of systems.
+\`configure' configures libmaus2 2.0.657 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1681,7 +1681,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libmaus2 2.0.653:";;
+ short | recursive ) echo "Configuration of libmaus2 2.0.657:";;
esac
cat <<\_ACEOF
@@ -1851,7 +1851,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libmaus2 configure 2.0.653
+libmaus2 configure 2.0.657
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2724,7 +2724,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libmaus2 $as_me 2.0.653, which was
+It was created by libmaus2 $as_me 2.0.657, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3072,7 +3072,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-LIBRARY_VERSION=2:653:0
+LIBRARY_VERSION=2:657:0
{ $as_echo "$as_me:${as_lineno-$LINENO}: Configuring for source in directory ${srcdir}" >&5
$as_echo "$as_me: Configuring for source in directory ${srcdir}" >&6;}
ac_aux_dir=
@@ -12628,7 +12628,7 @@ fi
# Define the identity of the package.
PACKAGE='libmaus2'
- VERSION='2.0.653'
+ VERSION='2.0.657'
cat >>confdefs.h <<_ACEOF
@@ -28157,7 +28157,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libmaus2 $as_me 2.0.653, which was
+This file was extended by libmaus2 $as_me 2.0.657, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -28224,7 +28224,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libmaus2 config.status 2.0.653
+libmaus2 config.status 2.0.657
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
=====================================
autom4te.cache/output.2
=====================================
@@ -1,6 +1,6 @@
@%:@! /bin/sh
@%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.69 for libmaus2 2.0.653.
+@%:@ Generated by GNU Autoconf 2.69 for libmaus2 2.0.657.
@%:@
@%:@ Report bugs to <tischler at mpi-cbg.de>.
@%:@
@@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='libmaus2'
PACKAGE_TARNAME='libmaus2'
-PACKAGE_VERSION='2.0.653'
-PACKAGE_STRING='libmaus2 2.0.653'
+PACKAGE_VERSION='2.0.657'
+PACKAGE_STRING='libmaus2 2.0.657'
PACKAGE_BUGREPORT='tischler at mpi-cbg.de'
PACKAGE_URL='https://github.com/gt1/libmaus2'
@@ -1609,7 +1609,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libmaus2 2.0.653 to adapt to many kinds of systems.
+\`configure' configures libmaus2 2.0.657 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1681,7 +1681,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libmaus2 2.0.653:";;
+ short | recursive ) echo "Configuration of libmaus2 2.0.657:";;
esac
cat <<\_ACEOF
@@ -1851,7 +1851,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libmaus2 configure 2.0.653
+libmaus2 configure 2.0.657
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2724,7 +2724,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libmaus2 $as_me 2.0.653, which was
+It was created by libmaus2 $as_me 2.0.657, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3072,7 +3072,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-LIBRARY_VERSION=2:653:0
+LIBRARY_VERSION=2:657:0
{ $as_echo "$as_me:${as_lineno-$LINENO}: Configuring for source in directory ${srcdir}" >&5
$as_echo "$as_me: Configuring for source in directory ${srcdir}" >&6;}
ac_aux_dir=
@@ -12628,7 +12628,7 @@ fi
# Define the identity of the package.
PACKAGE='libmaus2'
- VERSION='2.0.653'
+ VERSION='2.0.657'
cat >>confdefs.h <<_ACEOF
@@ -28157,7 +28157,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libmaus2 $as_me 2.0.653, which was
+This file was extended by libmaus2 $as_me 2.0.657, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -28224,7 +28224,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libmaus2 config.status 2.0.653
+libmaus2 config.status 2.0.657
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
=====================================
autom4te.cache/requests
=====================================
@@ -44,198 +44,198 @@
'configure.ac'
],
{
- '_LT_AC_LOCK' => 1,
- 'AM_SET_LEADING_DOT' => 1,
- 'LT_OUTPUT' => 1,
- '_LTDL_SETUP' => 1,
- 'AM_AUX_DIR_EXPAND' => 1,
- 'AC_DISABLE_STATIC' => 1,
+ 'PKG_CHECK_VAR' => 1,
+ 'AM_SANITY_CHECK' => 1,
+ '_LT_AC_LANG_F77_CONFIG' => 1,
+ 'AM_RUN_LOG' => 1,
+ 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
+ 'AC_LTDL_DLSYM_USCORE' => 1,
+ 'LT_SYS_SYMBOL_USCORE' => 1,
'AC_ENABLE_STATIC' => 1,
- 'AC_PATH_TOOL_PREFIX' => 1,
+ 'LTVERSION_VERSION' => 1,
'AM_ENABLE_STATIC' => 1,
- '_LT_AC_PROG_CXXCPP' => 1,
- '_LT_LIBOBJ' => 1,
- '_m4_warn' => 1,
- 'AM_PROG_CC_C_O' => 1,
- 'AM_PROG_LIBTOOL' => 1,
- '_LT_AC_LANG_GCJ_CONFIG' => 1,
- 'LT_LIB_DLLOAD' => 1,
- 'AM_PROG_LD' => 1,
- 'LT_PROG_GCJ' => 1,
- 'AC_PATH_MAGIC' => 1,
- 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
- '_LT_AC_LANG_C_CONFIG' => 1,
- 'AC_PROG_LD_GNU' => 1,
- '_LT_AC_LANG_GCJ' => 1,
- 'AC_CHECK_LIBM' => 1,
- 'AC_DISABLE_SHARED' => 1,
- '_AM_CONFIG_MACRO_DIRS' => 1,
- 'LT_PROG_GO' => 1,
- 'AM_RUN_LOG' => 1,
- 'AC_LTDL_PREOPEN' => 1,
- '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
+ 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
'AM_PROG_CC_STDC' => 1,
- 'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
- '_LT_AC_TRY_DLOPEN_SELF' => 1,
- 'AC_LIBTOOL_GCJ' => 1,
- 'AC_LIBLTDL_CONVENIENCE' => 1,
- 'AC_PROG_NM' => 1,
- 'AM_DISABLE_STATIC' => 1,
- 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
+ '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+ 'fp_C_PROTOTYPES' => 1,
+ 'PKG_INSTALLDIR' => 1,
+ 'AC_LIB_LTDL' => 1,
+ '_LT_DLL_DEF_P' => 1,
+ 'LTDL_INIT' => 1,
+ '_LT_COMPILER_OPTION' => 1,
+ 'LT_SYS_DLSEARCH_PATH' => 1,
+ 'AC_LTDL_SHLIBPATH' => 1,
+ 'AM_ENABLE_SHARED' => 1,
+ 'AM_CONDITIONAL' => 1,
'AM_MISSING_HAS_RUN' => 1,
- 'AC_CONFIG_MACRO_DIR' => 1,
- 'AM_C_PROTOTYPES' => 1,
- 'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
- 'LTOBSOLETE_VERSION' => 1,
- 'AC_ENABLE_SHARED' => 1,
- '_LT_PROG_ECHO_BACKSLASH' => 1,
- 'AC_PROG_LD_RELOAD_FLAG' => 1,
+ 'AC_LIBTOOL_FC' => 1,
+ 'PKG_PROG_PKG_CONFIG' => 1,
+ 'LT_INIT' => 1,
+ 'LT_SUPPORTED_TAG' => 1,
'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
- 'LTVERSION_VERSION' => 1,
- '_LT_COMPILER_BOILERPLATE' => 1,
- '_LT_PROG_F77' => 1,
- 'AC_CONFIG_MACRO_DIR_TRACE' => 1,
- '_LT_AC_LANG_RC_CONFIG' => 1,
- 'LT_PATH_NM' => 1,
- 'AC_LIBTOOL_CONFIG' => 1,
- 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
- 'm4_pattern_allow' => 1,
- '_LT_REQUIRED_DARWIN_CHECKS' => 1,
- '_LT_AC_LANG_CXX' => 1,
- '_LT_PREPARE_SED_QUOTE_VARS' => 1,
- 'PKG_CHECK_EXISTS' => 1,
- 'AC_DEPLIBS_CHECK_METHOD' => 1,
- 'AC_LIBTOOL_LANG_C_CONFIG' => 1,
- 'LTDL_INIT' => 1,
- 'LT_SYS_DLOPEN_DEPLIBS' => 1,
- 'LT_FUNC_DLSYM_USCORE' => 1,
- 'AC_PROG_LD' => 1,
- 'AM_DISABLE_SHARED' => 1,
- 'AC_LIBTOOL_PROG_CC_C_O' => 1,
+ 'include' => 1,
'_AM_PROG_TAR' => 1,
- 'PKG_INSTALLDIR' => 1,
- '_LT_PROG_CXX' => 1,
- '_AC_AM_CONFIG_HEADER_HOOK' => 1,
- 'LT_INIT' => 1,
+ 'AC_LIBTOOL_RC' => 1,
+ 'AC_PROG_LD' => 1,
+ '_LT_LIBOBJ' => 1,
+ '_LT_PREPARE_SED_QUOTE_VARS' => 1,
'LT_FUNC_ARGZ' => 1,
+ 'PKG_CHECK_MODULES' => 1,
'AC_LIBTOOL_COMPILER_OPTION' => 1,
- '_LT_AC_SYS_COMPILER' => 1,
- 'LTDL_INSTALLABLE' => 1,
+ 'LT_WITH_LTDL' => 1,
+ 'AC_LIBTOOL_DLOPEN' => 1,
+ 'AM_DISABLE_SHARED' => 1,
+ '_LT_AC_LANG_C_CONFIG' => 1,
+ 'AC_DISABLE_SHARED' => 1,
+ 'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
+ 'm4_include' => 1,
+ 'LTSUGAR_VERSION' => 1,
+ 'AM_PROG_LIBTOOL' => 1,
+ 'PKG_CHECK_MODULES_STATIC' => 1,
+ 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+ 'LT_LIB_M' => 1,
+ 'AM_PROG_CC_C_O' => 1,
'_AC_PROG_LIBTOOL' => 1,
- '_LT_AC_LANG_F77_CONFIG' => 1,
- 'm4_pattern_forbid' => 1,
- 'AC_LIBTOOL_WIN32_DLL' => 1,
- 'AM_PROG_INSTALL_SH' => 1,
+ '_LT_AC_FILE_LTDLL_C' => 1,
+ 'AM_SET_DEPDIR' => 1,
+ 'AM_SUBST_NOTMAKE' => 1,
'_LT_CC_BASENAME' => 1,
- 'AC_LTDL_DLSYM_USCORE' => 1,
- 'PKG_PROG_PKG_CONFIG' => 1,
- '_AM_DEPENDENCIES' => 1,
'AC_LIBTOOL_F77' => 1,
- 'AC_LTDL_SHLIBEXT' => 1,
- '_AM_SET_OPTION' => 1,
- 'AC_LTDL_OBJDIR' => 1,
- 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
- 'AC_LIBTOOL_LINKER_OPTION' => 1,
- 'LT_AC_PROG_SED' => 1,
- 'AC_LTDL_DLLIB' => 1,
- '_LT_AC_SHELL_INIT' => 1,
- 'LTOPTIONS_VERSION' => 1,
- '_LT_LINKER_BOILERPLATE' => 1,
- 'AM_MAKE_INCLUDE' => 1,
+ '_LT_PROG_CXX' => 1,
+ 'AC_LTDL_SYSSEARCHPATH' => 1,
'AC_PROG_LIBTOOL' => 1,
- 'LT_AC_PROG_GCJ' => 1,
- 'AC_PROG_EGREP' => 1,
- '_AM_SET_OPTIONS' => 1,
- 'AC_LIBTOOL_PICMODE' => 1,
- 'LT_AC_PROG_RC' => 1,
- 'LT_CMD_MAX_LEN' => 1,
- 'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
- '_LT_AC_LANG_CXX_CONFIG' => 1,
- '_LT_PROG_LTMAIN' => 1,
- '_AM_PROG_CC_C_O' => 1,
- 'include' => 1,
- 'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
- 'AC_LIBTOOL_DLOPEN_SELF' => 1,
- 'AM_AUTOMAKE_VERSION' => 1,
- 'LT_SUPPORTED_TAG' => 1,
- 'AX_OPENMP' => 1,
- 'AM_SUBST_NOTMAKE' => 1,
- 'AC_LIBLTDL_INSTALLABLE' => 1,
+ '_LT_AC_LANG_GCJ' => 1,
+ 'AC_PROG_NM' => 1,
+ '_LT_WITH_SYSROOT' => 1,
+ 'AC_DISABLE_STATIC' => 1,
+ 'AC_DEPLIBS_CHECK_METHOD' => 1,
+ 'AC_LIBTOOL_WIN32_DLL' => 1,
+ '_AM_DEPENDENCIES' => 1,
+ 'AM_PROG_INSTALL_STRIP' => 1,
+ 'AC_LIBTOOL_CXX' => 1,
+ '_AC_AM_CONFIG_HEADER_HOOK' => 1,
+ 'LT_PROG_GCJ' => 1,
+ 'AC_LIBTOOL_GCJ' => 1,
+ '_LT_LINKER_OPTION' => 1,
+ '_LT_AC_LOCK' => 1,
+ 'LTOBSOLETE_VERSION' => 1,
+ 'AC_LTDL_OBJDIR' => 1,
+ 'AM_SILENT_RULES' => 1,
'AM_PROG_NM' => 1,
- 'PKG_CHECK_VAR' => 1,
- 'AM_CONDITIONAL' => 1,
- '_LT_PROG_FC' => 1,
+ 'AC_ENABLE_FAST_INSTALL' => 1,
+ '_LT_PROG_ECHO_BACKSLASH' => 1,
+ '_LT_AC_LANG_GCJ_CONFIG' => 1,
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
- '_LT_AC_TAGVAR' => 1,
- 'LT_SYS_SYMBOL_USCORE' => 1,
- 'LT_WITH_LTDL' => 1,
- 'AM_SILENT_RULES' => 1,
- 'fp_C_PROTOTYPES' => 1,
+ '_AM_SET_OPTION' => 1,
+ '_LT_PROG_FC' => 1,
+ '_LT_AC_SHELL_INIT' => 1,
+ '_LT_REQUIRED_DARWIN_CHECKS' => 1,
+ 'LT_FUNC_DLSYM_USCORE' => 1,
+ 'AM_C_PROTOTYPES' => 1,
'AM_MISSING_PROG' => 1,
- 'PKG_CHECK_MODULES' => 1,
- '_LT_DLL_DEF_P' => 1,
- 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
- 'LT_LIB_M' => 1,
- 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
- 'LT_AC_PROG_EGREP' => 1,
- 'AM_SANITY_CHECK' => 1,
- '_LT_AC_CHECK_DLFCN' => 1,
- '_LT_AC_LANG_F77' => 1,
- 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
- 'AM_ENABLE_SHARED' => 1,
- 'AC_LTDL_SYSSEARCHPATH' => 1,
- '_AM_IF_OPTION' => 1,
- 'AM_PROG_INSTALL_STRIP' => 1,
'LT_PROG_RC' => 1,
- 'AC_LTDL_SHLIBPATH' => 1,
- '_LT_AC_SYS_LIBPATH_AIX' => 1,
- '_PKG_SHORT_ERRORS_SUPPORTED' => 1,
- 'AC_DEFUN_ONCE' => 1,
- 'LT_PATH_LD' => 1,
- 'AC_LIBTOOL_FC' => 1,
- 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
+ '_LT_AC_LANG_CXX_CONFIG' => 1,
+ 'AC_PATH_MAGIC' => 1,
+ 'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
+ 'LT_SYS_DLOPEN_SELF' => 1,
+ 'AC_PROG_EGREP' => 1,
+ '_LT_AC_TAGVAR' => 1,
'_LT_AC_TAGCONFIG' => 1,
- '_LT_LINKER_OPTION' => 1,
- 'AC_LIBTOOL_SETUP' => 1,
- 'LTSUGAR_VERSION' => 1,
+ 'AC_LIBLTDL_CONVENIENCE' => 1,
+ 'LT_LIB_DLLOAD' => 1,
+ 'AC_LIBTOOL_PROG_CC_C_O' => 1,
+ 'LT_AC_PROG_SED' => 1,
'_AM_AUTOCONF_VERSION' => 1,
- '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
- 'LT_CONFIG_LTDL_DIR' => 1,
- 'AC_ENABLE_FAST_INSTALL' => 1,
- 'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
- 'LTDL_CONVENIENCE' => 1,
- 'AM_INIT_AUTOMAKE' => 1,
- 'AC_WITH_LTDL' => 1,
- 'AM_SET_DEPDIR' => 1,
- 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
- 'AU_DEFUN' => 1,
- 'AC_LIBTOOL_RC' => 1,
- 'AC_LIB_LTDL' => 1,
- '_AM_SUBST_NOTMAKE' => 1,
- '_LT_PATH_TOOL_PREFIX' => 1,
- '_AM_MANGLE_OPTION' => 1,
'LT_SYS_MODULE_EXT' => 1,
- 'AC_LTDL_ENABLE_INSTALL' => 1,
- '_LT_WITH_SYSROOT' => 1,
- '_LT_COMPILER_OPTION' => 1,
- '_LT_AC_FILE_LTDLL_C' => 1,
- 'AC_DEFUN' => 1,
- 'LT_SYS_DLSEARCH_PATH' => 1,
- 'AM_DEP_TRACK' => 1,
- 'PKG_NOARCH_INSTALLDIR' => 1,
- 'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
- 'AC_LTDL_SYMBOL_USCORE' => 1,
- 'AC_DISABLE_FAST_INSTALL' => 1,
- 'LT_SYS_DLOPEN_SELF' => 1,
+ 'AC_PROG_LD_GNU' => 1,
+ '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
+ 'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
'AM_CONFIG_HEADER' => 1,
- 'PKG_CHECK_MODULES_STATIC' => 1,
- 'AC_LIBTOOL_OBJDIR' => 1,
- 'LT_LANG' => 1,
- 'LT_SYS_MODULE_PATH' => 1,
- 'AC_LIBTOOL_CXX' => 1,
- 'AC_LIBTOOL_DLOPEN' => 1,
+ '_PKG_SHORT_ERRORS_SUPPORTED' => 1,
+ 'AX_OPENMP' => 1,
+ 'AC_PROG_LD_RELOAD_FLAG' => 1,
+ 'AC_LTDL_SHLIBEXT' => 1,
+ 'AC_LTDL_SYMBOL_USCORE' => 1,
+ 'AC_CHECK_LIBM' => 1,
+ 'LT_LANG' => 1,
+ 'AC_LTDL_PREOPEN' => 1,
+ '_LT_AC_LANG_F77' => 1,
+ 'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
+ 'AC_PATH_TOOL_PREFIX' => 1,
+ 'AM_INIT_AUTOMAKE' => 1,
+ 'AC_DISABLE_FAST_INSTALL' => 1,
+ 'm4_pattern_allow' => 1,
+ 'AM_PROG_LD' => 1,
+ 'LTDL_CONVENIENCE' => 1,
+ 'LT_PROG_GO' => 1,
+ '_AM_SET_OPTIONS' => 1,
+ 'AC_LIBTOOL_LANG_C_CONFIG' => 1,
+ '_m4_warn' => 1,
+ '_AM_SUBST_NOTMAKE' => 1,
+ '_LTDL_SETUP' => 1,
+ 'AM_AUX_DIR_EXPAND' => 1,
+ 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
+ '_LT_AC_LANG_CXX' => 1,
+ 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
+ '_LT_AC_SYS_COMPILER' => 1,
+ '_LT_AC_CHECK_DLFCN' => 1,
+ 'AC_LIBLTDL_INSTALLABLE' => 1,
+ 'AC_WITH_LTDL' => 1,
+ 'PKG_CHECK_EXISTS' => 1,
+ 'LT_PATH_LD' => 1,
+ 'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
+ 'LTOPTIONS_VERSION' => 1,
+ 'LT_CMD_MAX_LEN' => 1,
+ 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
+ 'AC_DEFUN_ONCE' => 1,
+ 'AC_CONFIG_MACRO_DIR' => 1,
+ '_AM_IF_OPTION' => 1,
+ '_LT_AC_LANG_RC_CONFIG' => 1,
+ '_LT_LINKER_BOILERPLATE' => 1,
+ 'LT_AC_PROG_GCJ' => 1,
+ '_LT_AC_PROG_CXXCPP' => 1,
+ 'AC_CONFIG_MACRO_DIR_TRACE' => 1,
+ '_AM_CONFIG_MACRO_DIRS' => 1,
+ 'LT_SYS_MODULE_PATH' => 1,
+ 'AC_LIBTOOL_PICMODE' => 1,
+ '_LT_PROG_F77' => 1,
+ 'AC_LTDL_DLLIB' => 1,
+ 'AM_DEP_TRACK' => 1,
+ 'm4_pattern_forbid' => 1,
+ '_LT_PATH_TOOL_PREFIX' => 1,
+ 'LT_SYS_DLOPEN_DEPLIBS' => 1,
+ 'LT_CONFIG_LTDL_DIR' => 1,
+ 'AM_AUTOMAKE_VERSION' => 1,
+ 'AC_LIBTOOL_SETUP' => 1,
+ 'LT_OUTPUT' => 1,
+ 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
+ 'LT_AC_PROG_EGREP' => 1,
+ 'AU_DEFUN' => 1,
+ 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
+ '_AM_MANGLE_OPTION' => 1,
+ 'AM_PROG_INSTALL_SH' => 1,
+ 'AM_SET_LEADING_DOT' => 1,
+ 'PKG_NOARCH_INSTALLDIR' => 1,
+ 'LT_AC_PROG_RC' => 1,
+ '_LT_COMPILER_BOILERPLATE' => 1,
+ 'AC_DEFUN' => 1,
+ 'AM_DISABLE_STATIC' => 1,
+ 'AC_LIBTOOL_OBJDIR' => 1,
+ '_LT_AC_SYS_LIBPATH_AIX' => 1,
+ '_LT_AC_TRY_DLOPEN_SELF' => 1,
'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
- 'm4_include' => 1
+ 'AC_ENABLE_SHARED' => 1,
+ '_LT_PROG_LTMAIN' => 1,
+ 'LT_PATH_NM' => 1,
+ 'AM_MAKE_INCLUDE' => 1,
+ 'AC_LTDL_ENABLE_INSTALL' => 1,
+ 'AC_LIBTOOL_LINKER_OPTION' => 1,
+ 'AC_LIBTOOL_DLOPEN_SELF' => 1,
+ 'AC_LIBTOOL_CONFIG' => 1,
+ '_AM_PROG_CC_C_O' => 1,
+ 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
+ 'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
+ 'LTDL_INSTALLABLE' => 1
}
], 'Autom4te::Request' ),
bless( [
@@ -250,66 +250,66 @@
'configure.ac'
],
{
- 'AC_FC_PP_DEFINE' => 1,
- 'AM_POT_TOOLS' => 1,
- 'AM_MAINTAINER_MODE' => 1,
+ 'AM_EXTRA_RECURSIVE_TARGETS' => 1,
+ '_AM_MAKEFILE_INCLUDE' => 1,
+ 'AC_CONFIG_LINKS' => 1,
+ 'AM_PROG_CXX_C_O' => 1,
+ '_LT_AC_TAGCONFIG' => 1,
'AM_NLS' => 1,
- 'AM_SILENT_RULES' => 1,
- 'AC_REQUIRE_AUX_FILE' => 1,
- 'AM_PROG_FC_C_O' => 1,
+ 'AC_INIT' => 1,
+ 'm4_sinclude' => 1,
'AC_CONFIG_SUBDIRS' => 1,
- 'AH_OUTPUT' => 1,
- '_AM_COND_ELSE' => 1,
- 'AC_DEFINE_TRACE_LITERAL' => 1,
+ 'AM_PROG_F77_C_O' => 1,
'AC_CONFIG_AUX_DIR' => 1,
- 'AC_FC_FREEFORM' => 1,
- 'AC_FC_SRCEXT' => 1,
- 'AC_FC_PP_SRCEXT' => 1,
- 'AC_CONFIG_LIBOBJ_DIR' => 1,
- 'AM_XGETTEXT_OPTION' => 1,
- 'AM_PROG_MKDIR_P' => 1,
- 'AM_PROG_MOC' => 1,
- '_LT_AC_TAGCONFIG' => 1,
+ 'AM_GNU_GETTEXT' => 1,
+ 'AC_CANONICAL_SYSTEM' => 1,
'm4_include' => 1,
- 'AC_PROG_LIBTOOL' => 1,
- 'm4_sinclude' => 1,
- 'AC_SUBST_TRACE' => 1,
- 'AM_PROG_F77_C_O' => 1,
- 'AM_INIT_AUTOMAKE' => 1,
- 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
- 'AC_LIBSOURCE' => 1,
+ 'AM_MAINTAINER_MODE' => 1,
+ 'AM_PROG_LIBTOOL' => 1,
+ 'AC_DEFINE_TRACE_LITERAL' => 1,
+ 'AM_PROG_FC_C_O' => 1,
+ 'AC_CANONICAL_BUILD' => 1,
+ 'm4_pattern_forbid' => 1,
+ 'AC_CONFIG_LIBOBJ_DIR' => 1,
+ 'AC_CONFIG_FILES' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
- 'AM_PROG_AR' => 1,
'AM_AUTOMAKE_VERSION' => 1,
- 'AC_CANONICAL_SYSTEM' => 1,
+ 'AC_SUBST' => 1,
+ 'AC_LIBSOURCE' => 1,
+ 'AM_ENABLE_MULTILIB' => 1,
+ 'AH_OUTPUT' => 1,
+ '_AM_COND_ELSE' => 1,
+ '_AM_SUBST_NOTMAKE' => 1,
+ 'AC_FC_PP_SRCEXT' => 1,
+ 'AC_FC_FREEFORM' => 1,
+ 'AM_POT_TOOLS' => 1,
'LT_SUPPORTED_TAG' => 1,
- 'include' => 1,
- 'AC_CANONICAL_HOST' => 1,
- 'm4_pattern_allow' => 1,
- 'AC_CONFIG_FILES' => 1,
- 'sinclude' => 1,
- '_m4_warn' => 1,
'AM_MAKEFILE_INCLUDE' => 1,
- '_AM_COND_IF' => 1,
- '_AM_MAKEFILE_INCLUDE' => 1,
- 'AM_PATH_GUILE' => 1,
+ 'AM_PROG_AR' => 1,
+ 'AM_XGETTEXT_OPTION' => 1,
'LT_INIT' => 1,
- 'AM_EXTRA_RECURSIVE_TARGETS' => 1,
+ '_m4_warn' => 1,
+ 'AC_PROG_LIBTOOL' => 1,
+ 'AC_FC_PP_DEFINE' => 1,
+ 'AM_PROG_MOC' => 1,
+ 'm4_pattern_allow' => 1,
+ 'sinclude' => 1,
+ 'AC_CANONICAL_HOST' => 1,
+ 'AC_REQUIRE_AUX_FILE' => 1,
'AM_PROG_CC_C_O' => 1,
- 'AM_PROG_CXX_C_O' => 1,
- 'AM_PROG_LIBTOOL' => 1,
- '_AM_SUBST_NOTMAKE' => 1,
- 'AC_CANONICAL_TARGET' => 1,
- 'AC_SUBST' => 1,
- 'AC_INIT' => 1,
- 'AM_ENABLE_MULTILIB' => 1,
- 'AM_GNU_GETTEXT' => 1,
- 'm4_pattern_forbid' => 1,
- 'AC_CANONICAL_BUILD' => 1,
- 'AC_CONFIG_HEADERS' => 1,
- 'AC_CONFIG_LINKS' => 1,
+ 'AM_CONDITIONAL' => 1,
+ 'AM_INIT_AUTOMAKE' => 1,
'_AM_COND_ENDIF' => 1,
- 'AM_CONDITIONAL' => 1
+ 'AC_FC_SRCEXT' => 1,
+ 'AC_CONFIG_HEADERS' => 1,
+ 'AM_SILENT_RULES' => 1,
+ 'AC_SUBST_TRACE' => 1,
+ 'AM_PROG_MKDIR_P' => 1,
+ 'include' => 1,
+ 'AM_PATH_GUILE' => 1,
+ '_AM_COND_IF' => 1,
+ 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
+ 'AC_CANONICAL_TARGET' => 1
}
], 'Autom4te::Request' ),
bless( [
@@ -353,198 +353,198 @@
'configure.ac'
],
{
- '_LT_COMPILER_OPTION' => 1,
- '_LT_WITH_SYSROOT' => 1,
- 'LT_SYS_MODULE_EXT' => 1,
- 'AC_LTDL_ENABLE_INSTALL' => 1,
- '_AM_MANGLE_OPTION' => 1,
- '_LT_PATH_TOOL_PREFIX' => 1,
+ '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
+ 'AM_PROG_CC_STDC' => 1,
+ 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
+ 'AM_ENABLE_STATIC' => 1,
+ 'LTVERSION_VERSION' => 1,
+ 'PKG_INSTALLDIR' => 1,
+ 'fp_C_PROTOTYPES' => 1,
'AC_LIB_LTDL' => 1,
+ 'LT_SYS_DLSEARCH_PATH' => 1,
+ 'AC_LTDL_SHLIBPATH' => 1,
+ '_LT_COMPILER_OPTION' => 1,
+ 'LTDL_INIT' => 1,
+ '_LT_DLL_DEF_P' => 1,
+ '_LT_AC_LANG_F77_CONFIG' => 1,
+ 'AM_SANITY_CHECK' => 1,
+ 'PKG_CHECK_VAR' => 1,
+ 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
+ 'AM_RUN_LOG' => 1,
+ 'AC_LTDL_DLSYM_USCORE' => 1,
+ 'AC_ENABLE_STATIC' => 1,
+ 'LT_SYS_SYMBOL_USCORE' => 1,
+ 'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
+ 'include' => 1,
'AC_LIBTOOL_RC' => 1,
- '_AM_SUBST_NOTMAKE' => 1,
- 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
- 'AU_DEFUN' => 1,
- 'AM_SET_DEPDIR' => 1,
+ 'AC_PROG_LD' => 1,
+ '_AM_PROG_TAR' => 1,
+ 'PKG_CHECK_MODULES' => 1,
+ 'LT_FUNC_ARGZ' => 1,
+ '_LT_PREPARE_SED_QUOTE_VARS' => 1,
+ '_LT_LIBOBJ' => 1,
+ 'AM_CONDITIONAL' => 1,
+ 'AM_ENABLE_SHARED' => 1,
+ 'LT_INIT' => 1,
+ 'AC_LIBTOOL_FC' => 1,
+ 'PKG_PROG_PKG_CONFIG' => 1,
+ 'AM_MISSING_HAS_RUN' => 1,
+ 'LT_SUPPORTED_TAG' => 1,
'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1,
- 'AC_WITH_LTDL' => 1,
- 'LTDL_CONVENIENCE' => 1,
- 'AM_INIT_AUTOMAKE' => 1,
- '_AM_AUTOCONF_VERSION' => 1,
- 'AC_ENABLE_FAST_INSTALL' => 1,
- 'LT_CONFIG_LTDL_DIR' => 1,
- '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
- 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
+ 'AM_PROG_LIBTOOL' => 1,
+ 'LTSUGAR_VERSION' => 1,
'm4_include' => 1,
- 'LT_SYS_MODULE_PATH' => 1,
+ 'AC_LIBTOOL_COMPILER_OPTION' => 1,
'AC_LIBTOOL_DLOPEN' => 1,
+ 'LT_WITH_LTDL' => 1,
+ 'AC_DISABLE_SHARED' => 1,
+ '_LT_AC_LANG_C_CONFIG' => 1,
+ 'AM_DISABLE_SHARED' => 1,
+ 'AM_PROG_INSTALL_STRIP' => 1,
+ '_AC_AM_CONFIG_HEADER_HOOK' => 1,
'AC_LIBTOOL_CXX' => 1,
- 'LT_LANG' => 1,
- 'LT_SYS_DLOPEN_SELF' => 1,
- 'AC_DISABLE_FAST_INSTALL' => 1,
+ '_LT_AC_LOCK' => 1,
+ 'AC_LIBTOOL_GCJ' => 1,
+ '_LT_LINKER_OPTION' => 1,
+ 'LT_PROG_GCJ' => 1,
+ 'AC_LTDL_OBJDIR' => 1,
+ 'AM_PROG_NM' => 1,
+ 'AM_SILENT_RULES' => 1,
+ 'LTOBSOLETE_VERSION' => 1,
+ 'AM_PROG_CC_C_O' => 1,
+ 'LT_LIB_M' => 1,
+ 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
'PKG_CHECK_MODULES_STATIC' => 1,
- 'AC_LIBTOOL_OBJDIR' => 1,
+ '_LT_CC_BASENAME' => 1,
+ 'AM_SUBST_NOTMAKE' => 1,
+ 'AM_SET_DEPDIR' => 1,
+ '_LT_AC_FILE_LTDLL_C' => 1,
+ '_AC_PROG_LIBTOOL' => 1,
+ '_LT_WITH_SYSROOT' => 1,
+ 'AC_PROG_NM' => 1,
+ 'AC_PROG_LIBTOOL' => 1,
+ 'AC_LTDL_SYSSEARCHPATH' => 1,
+ '_LT_AC_LANG_GCJ' => 1,
+ '_LT_PROG_CXX' => 1,
+ 'AC_LIBTOOL_F77' => 1,
+ 'AC_LIBTOOL_WIN32_DLL' => 1,
+ '_AM_DEPENDENCIES' => 1,
+ 'AC_DISABLE_STATIC' => 1,
+ 'AC_DEPLIBS_CHECK_METHOD' => 1,
+ '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
+ 'AC_PROG_LD_GNU' => 1,
+ 'LT_SYS_MODULE_EXT' => 1,
+ '_AM_AUTOCONF_VERSION' => 1,
+ 'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
+ 'AX_OPENMP' => 1,
+ 'AC_PROG_LD_RELOAD_FLAG' => 1,
+ '_PKG_SHORT_ERRORS_SUPPORTED' => 1,
'AM_CONFIG_HEADER' => 1,
- 'PKG_NOARCH_INSTALLDIR' => 1,
+ 'AC_CHECK_LIBM' => 1,
+ 'LT_LANG' => 1,
'AC_LTDL_SYMBOL_USCORE' => 1,
- 'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
- 'AC_DEFUN' => 1,
- 'LT_SYS_DLSEARCH_PATH' => 1,
- '_LT_AC_FILE_LTDLL_C' => 1,
- 'AM_DEP_TRACK' => 1,
+ 'AC_LTDL_SHLIBEXT' => 1,
'AC_LIBTOOL_POSTDEP_PREDEP' => 1,
- '_LT_AC_TAGVAR' => 1,
- '_LT_PROG_FC' => 1,
- 'AM_CONDITIONAL' => 1,
- 'PKG_CHECK_VAR' => 1,
- 'AM_PROG_NM' => 1,
- 'AC_LIBLTDL_INSTALLABLE' => 1,
- 'AM_SUBST_NOTMAKE' => 1,
- 'AM_AUTOMAKE_VERSION' => 1,
- 'LT_SUPPORTED_TAG' => 1,
- 'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
- 'include' => 1,
- 'AC_LIBTOOL_DLOPEN_SELF' => 1,
- 'AX_OPENMP' => 1,
- '_AM_PROG_CC_C_O' => 1,
- '_LT_PROG_LTMAIN' => 1,
- 'LT_CMD_MAX_LEN' => 1,
- 'AC_LIBTOOL_LANG_F77_CONFIG' => 1,
+ '_LT_PROG_ECHO_BACKSLASH' => 1,
+ '_LT_AC_LANG_GCJ_CONFIG' => 1,
+ 'AC_ENABLE_FAST_INSTALL' => 1,
+ 'AC_PATH_MAGIC' => 1,
+ 'LT_PROG_RC' => 1,
'_LT_AC_LANG_CXX_CONFIG' => 1,
- '_LT_LINKER_OPTION' => 1,
+ '_LT_PROG_FC' => 1,
+ '_LT_REQUIRED_DARWIN_CHECKS' => 1,
+ '_LT_AC_SHELL_INIT' => 1,
+ 'AM_MISSING_PROG' => 1,
+ 'LT_FUNC_DLSYM_USCORE' => 1,
+ 'AM_C_PROTOTYPES' => 1,
+ '_AM_SET_OPTION' => 1,
'_LT_AC_TAGCONFIG' => 1,
- 'LTSUGAR_VERSION' => 1,
- 'AC_LIBTOOL_SETUP' => 1,
+ 'AC_LIBLTDL_CONVENIENCE' => 1,
+ '_LT_AC_TAGVAR' => 1,
+ 'AC_PROG_EGREP' => 1,
+ 'LT_SYS_DLOPEN_SELF' => 1,
+ 'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
+ 'AC_LIBTOOL_PROG_CC_C_O' => 1,
+ 'LT_LIB_DLLOAD' => 1,
+ 'LT_AC_PROG_SED' => 1,
+ 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
+ '_LT_AC_LANG_CXX' => 1,
+ 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
+ 'AM_AUX_DIR_EXPAND' => 1,
+ '_LT_AC_SYS_COMPILER' => 1,
+ 'PKG_CHECK_EXISTS' => 1,
'LT_PATH_LD' => 1,
- 'AC_DEFUN_ONCE' => 1,
- 'AC_LIBTOOL_FC' => 1,
- 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1,
- '_LT_AC_SYS_LIBPATH_AIX' => 1,
- 'AC_LTDL_SHLIBPATH' => 1,
- '_PKG_SHORT_ERRORS_SUPPORTED' => 1,
- 'AC_LTDL_SYSSEARCHPATH' => 1,
- 'AM_ENABLE_SHARED' => 1,
- 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
+ 'AC_WITH_LTDL' => 1,
+ 'AC_LIBLTDL_INSTALLABLE' => 1,
'_LT_AC_CHECK_DLFCN' => 1,
- '_LT_AC_LANG_F77' => 1,
- 'AM_PROG_INSTALL_STRIP' => 1,
- 'LT_PROG_RC' => 1,
+ 'AC_CONFIG_MACRO_DIR' => 1,
'_AM_IF_OPTION' => 1,
- 'AM_SANITY_CHECK' => 1,
- '_LT_DLL_DEF_P' => 1,
- 'LT_AC_PROG_EGREP' => 1,
- 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1,
- 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
- 'LT_LIB_M' => 1,
- 'fp_C_PROTOTYPES' => 1,
- 'PKG_CHECK_MODULES' => 1,
- 'AM_MISSING_PROG' => 1,
- 'LT_WITH_LTDL' => 1,
- 'LT_SYS_SYMBOL_USCORE' => 1,
- 'AM_SILENT_RULES' => 1,
- '_LT_AC_LANG_F77_CONFIG' => 1,
- 'LTDL_INSTALLABLE' => 1,
- '_AC_PROG_LIBTOOL' => 1,
- 'AC_LIBTOOL_WIN32_DLL' => 1,
- 'm4_pattern_forbid' => 1,
- 'AC_LIBTOOL_COMPILER_OPTION' => 1,
- 'LT_FUNC_ARGZ' => 1,
- '_LT_AC_SYS_COMPILER' => 1,
- 'PKG_INSTALLDIR' => 1,
- '_LT_PROG_CXX' => 1,
- 'LT_INIT' => 1,
- '_AC_AM_CONFIG_HEADER_HOOK' => 1,
- 'AM_DISABLE_SHARED' => 1,
- '_AM_PROG_TAR' => 1,
- 'AC_LIBTOOL_PROG_CC_C_O' => 1,
- 'AC_PROG_LD' => 1,
- 'LT_FUNC_DLSYM_USCORE' => 1,
+ '_LT_AC_LANG_RC_CONFIG' => 1,
+ 'AC_DEFUN_ONCE' => 1,
+ 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
+ 'LTOPTIONS_VERSION' => 1,
+ 'LT_CMD_MAX_LEN' => 1,
+ 'AC_LIBTOOL_LANG_RC_CONFIG' => 1,
+ 'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1,
+ 'AM_INIT_AUTOMAKE' => 1,
+ 'AC_PATH_TOOL_PREFIX' => 1,
+ '_LT_AC_LANG_F77' => 1,
+ 'AC_LTDL_PREOPEN' => 1,
+ 'LTDL_CONVENIENCE' => 1,
+ 'AM_PROG_LD' => 1,
+ 'm4_pattern_allow' => 1,
+ 'AC_DISABLE_FAST_INSTALL' => 1,
+ '_m4_warn' => 1,
+ '_AM_SET_OPTIONS' => 1,
'AC_LIBTOOL_LANG_C_CONFIG' => 1,
- 'AC_DEPLIBS_CHECK_METHOD' => 1,
- 'PKG_CHECK_EXISTS' => 1,
+ 'LT_PROG_GO' => 1,
+ '_LTDL_SETUP' => 1,
+ '_AM_SUBST_NOTMAKE' => 1,
+ 'AC_LTDL_DLLIB' => 1,
+ 'LT_CONFIG_LTDL_DIR' => 1,
+ 'AM_AUTOMAKE_VERSION' => 1,
'LT_SYS_DLOPEN_DEPLIBS' => 1,
- 'LTDL_INIT' => 1,
- 'm4_pattern_allow' => 1,
- '_LT_AC_LANG_CXX' => 1,
- '_LT_PREPARE_SED_QUOTE_VARS' => 1,
- '_LT_REQUIRED_DARWIN_CHECKS' => 1,
- 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1,
- 'AC_LIBTOOL_CONFIG' => 1,
+ '_LT_PATH_TOOL_PREFIX' => 1,
+ 'm4_pattern_forbid' => 1,
+ 'AM_DEP_TRACK' => 1,
+ 'AC_LIBTOOL_SETUP' => 1,
+ 'LT_OUTPUT' => 1,
+ 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1,
+ 'LT_AC_PROG_EGREP' => 1,
+ 'AU_DEFUN' => 1,
+ 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1,
+ '_LT_LINKER_BOILERPLATE' => 1,
+ '_LT_AC_PROG_CXXCPP' => 1,
+ 'LT_AC_PROG_GCJ' => 1,
+ 'LT_SYS_MODULE_PATH' => 1,
+ '_AM_CONFIG_MACRO_DIRS' => 1,
'AC_CONFIG_MACRO_DIR_TRACE' => 1,
'_LT_PROG_F77' => 1,
- '_LT_AC_LANG_RC_CONFIG' => 1,
- 'LT_PATH_NM' => 1,
- '_AM_SET_OPTIONS' => 1,
- 'LT_AC_PROG_RC' => 1,
'AC_LIBTOOL_PICMODE' => 1,
- 'AC_PROG_LIBTOOL' => 1,
- 'LT_AC_PROG_GCJ' => 1,
- 'AC_PROG_EGREP' => 1,
- 'AM_MAKE_INCLUDE' => 1,
- '_LT_LINKER_BOILERPLATE' => 1,
- 'LTOPTIONS_VERSION' => 1,
- '_LT_AC_SHELL_INIT' => 1,
- 'AC_LTDL_DLLIB' => 1,
- 'LT_AC_PROG_SED' => 1,
+ 'AC_LTDL_ENABLE_INSTALL' => 1,
'AC_LIBTOOL_LINKER_OPTION' => 1,
- 'AC_LTDL_OBJDIR' => 1,
- 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1,
- 'PKG_PROG_PKG_CONFIG' => 1,
- 'AC_LTDL_DLSYM_USCORE' => 1,
- '_AM_SET_OPTION' => 1,
- 'AC_LTDL_SHLIBEXT' => 1,
- 'AC_LIBTOOL_F77' => 1,
- '_AM_DEPENDENCIES' => 1,
- 'AM_PROG_INSTALL_SH' => 1,
- '_LT_CC_BASENAME' => 1,
- '_LT_AC_LANG_C_CONFIG' => 1,
- 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1,
- 'AC_PATH_MAGIC' => 1,
- 'LT_LIB_DLLOAD' => 1,
- '_LT_AC_LANG_GCJ_CONFIG' => 1,
- 'LT_PROG_GCJ' => 1,
- 'AM_PROG_LD' => 1,
- 'AM_PROG_CC_C_O' => 1,
- 'AM_PROG_LIBTOOL' => 1,
- '_LT_AC_PROG_CXXCPP' => 1,
- 'AM_ENABLE_STATIC' => 1,
- '_m4_warn' => 1,
- '_LT_LIBOBJ' => 1,
- 'AC_ENABLE_STATIC' => 1,
- 'AC_PATH_TOOL_PREFIX' => 1,
- 'LT_OUTPUT' => 1,
- '_LTDL_SETUP' => 1,
+ 'LT_PATH_NM' => 1,
+ 'AM_MAKE_INCLUDE' => 1,
+ 'AC_LIBTOOL_CONFIG' => 1,
+ 'AC_LIBTOOL_DLOPEN_SELF' => 1,
+ 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1,
+ '_AM_PROG_CC_C_O' => 1,
+ 'LTDL_INSTALLABLE' => 1,
+ 'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
'AM_SET_LEADING_DOT' => 1,
- '_LT_AC_LOCK' => 1,
- 'AC_DISABLE_STATIC' => 1,
- 'AM_AUX_DIR_EXPAND' => 1,
- 'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1,
- 'AC_PROG_LD_RELOAD_FLAG' => 1,
- '_LT_PROG_ECHO_BACKSLASH' => 1,
+ 'AM_PROG_INSTALL_SH' => 1,
+ '_AM_MANGLE_OPTION' => 1,
+ 'PKG_NOARCH_INSTALLDIR' => 1,
+ '_LT_AC_SYS_LIBPATH_AIX' => 1,
+ 'AC_LIBTOOL_OBJDIR' => 1,
+ 'AM_DISABLE_STATIC' => 1,
'_LT_COMPILER_BOILERPLATE' => 1,
- 'LTVERSION_VERSION' => 1,
- 'AM_C_PROTOTYPES' => 1,
- 'AC_CONFIG_MACRO_DIR' => 1,
+ 'LT_AC_PROG_RC' => 1,
+ 'AC_DEFUN' => 1,
+ '_LT_PROG_LTMAIN' => 1,
+ 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1,
'AC_ENABLE_SHARED' => 1,
- 'LTOBSOLETE_VERSION' => 1,
- 'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1,
- 'AM_MISSING_HAS_RUN' => 1,
- 'AC_PROG_NM' => 1,
- 'AM_DISABLE_STATIC' => 1,
- 'AC_LIBLTDL_CONVENIENCE' => 1,
- '_LT_AC_TRY_DLOPEN_SELF' => 1,
- 'AC_LIBTOOL_GCJ' => 1,
- 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1,
- 'AC_LIBTOOL_SYS_LIB_STRIP' => 1,
- 'AM_PROG_CC_STDC' => 1,
- 'LT_PROG_GO' => 1,
- '_LT_AC_PROG_ECHO_BACKSLASH' => 1,
- 'AM_RUN_LOG' => 1,
- 'AC_LTDL_PREOPEN' => 1,
- 'AC_CHECK_LIBM' => 1,
- '_LT_AC_LANG_GCJ' => 1,
- 'AC_DISABLE_SHARED' => 1,
- '_AM_CONFIG_MACRO_DIRS' => 1,
- 'AC_PROG_LD_GNU' => 1
+ '_LT_AC_TRY_DLOPEN_SELF' => 1
}
], 'Autom4te::Request' )
);
=====================================
autom4te.cache/traces.1
=====================================
@@ -4,7 +4,7 @@ m4trace:aclocal.m4:1460: -1- m4_include([m4/ltoptions.m4])
m4trace:aclocal.m4:1461: -1- m4_include([m4/ltsugar.m4])
m4trace:aclocal.m4:1462: -1- m4_include([m4/ltversion.m4])
m4trace:aclocal.m4:1463: -1- m4_include([m4/lt~obsolete.m4])
-m4trace:configure.ac:1: -1- AC_INIT([libmaus2], [2.0.653], [tischler at mpi-cbg.de], [libmaus2], [https://github.com/gt1/libmaus2])
+m4trace:configure.ac:1: -1- AC_INIT([libmaus2], [2.0.657], [tischler at mpi-cbg.de], [libmaus2], [https://github.com/gt1/libmaus2])
m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?A[CHUM]_])
m4trace:configure.ac:1: -1- m4_pattern_forbid([_AC_])
m4trace:configure.ac:1: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
=====================================
configure
=====================================
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libmaus2 2.0.653.
+# Generated by GNU Autoconf 2.69 for libmaus2 2.0.657.
#
# Report bugs to <tischler at mpi-cbg.de>.
#
@@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='libmaus2'
PACKAGE_TARNAME='libmaus2'
-PACKAGE_VERSION='2.0.653'
-PACKAGE_STRING='libmaus2 2.0.653'
+PACKAGE_VERSION='2.0.657'
+PACKAGE_STRING='libmaus2 2.0.657'
PACKAGE_BUGREPORT='tischler at mpi-cbg.de'
PACKAGE_URL='https://github.com/gt1/libmaus2'
@@ -1609,7 +1609,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures libmaus2 2.0.653 to adapt to many kinds of systems.
+\`configure' configures libmaus2 2.0.657 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1681,7 +1681,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of libmaus2 2.0.653:";;
+ short | recursive ) echo "Configuration of libmaus2 2.0.657:";;
esac
cat <<\_ACEOF
@@ -1851,7 +1851,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-libmaus2 configure 2.0.653
+libmaus2 configure 2.0.657
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2724,7 +2724,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by libmaus2 $as_me 2.0.653, which was
+It was created by libmaus2 $as_me 2.0.657, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3072,7 +3072,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-LIBRARY_VERSION=2:653:0
+LIBRARY_VERSION=2:657:0
{ $as_echo "$as_me:${as_lineno-$LINENO}: Configuring for source in directory ${srcdir}" >&5
$as_echo "$as_me: Configuring for source in directory ${srcdir}" >&6;}
ac_aux_dir=
@@ -12628,7 +12628,7 @@ fi
# Define the identity of the package.
PACKAGE='libmaus2'
- VERSION='2.0.653'
+ VERSION='2.0.657'
cat >>confdefs.h <<_ACEOF
@@ -28157,7 +28157,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by libmaus2 $as_me 2.0.653, which was
+This file was extended by libmaus2 $as_me 2.0.657, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -28224,7 +28224,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-libmaus2 config.status 2.0.653
+libmaus2 config.status 2.0.657
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
=====================================
configure.ac
=====================================
@@ -1,5 +1,5 @@
-AC_INIT(libmaus2,2.0.653,[tischler at mpi-cbg.de],[libmaus2],[https://github.com/gt1/libmaus2])
-LIBRARY_VERSION=2:653:0
+AC_INIT(libmaus2,2.0.657,[tischler at mpi-cbg.de],[libmaus2],[https://github.com/gt1/libmaus2])
+LIBRARY_VERSION=2:657:0
AC_MSG_NOTICE([Configuring for source in directory ${srcdir}])
AC_CANONICAL_SYSTEM
AC_CANONICAL_HOST
=====================================
src/Makefile.am
=====================================
@@ -1773,7 +1773,9 @@ libmaus2rmq_include_HEADERS=\
libmaus2network_includedir=$(includedir)/libmaus2/network
libmaus2network_include_HEADERS=\
- libmaus2/network/Socket.hpp \
+ libmaus2/network/SocketBase.hpp \
+ libmaus2/network/ClientSocket.hpp \
+ libmaus2/network/ServerSocket.hpp \
libmaus2/network/GetHostName.hpp \
libmaus2/network/SocketInputStreamBuffer.hpp \
libmaus2/network/SocketInputStream.hpp \
=====================================
src/Makefile.in
=====================================
@@ -4173,7 +4173,9 @@ libmaus2rmq_include_HEADERS = \
libmaus2network_includedir = $(includedir)/libmaus2/network
libmaus2network_include_HEADERS = \
- libmaus2/network/Socket.hpp \
+ libmaus2/network/SocketBase.hpp \
+ libmaus2/network/ClientSocket.hpp \
+ libmaus2/network/ServerSocket.hpp \
libmaus2/network/GetHostName.hpp \
libmaus2/network/SocketInputStreamBuffer.hpp \
libmaus2/network/SocketInputStream.hpp \
=====================================
src/libmaus2/aio/TempFileArray.hpp
=====================================
@@ -22,6 +22,7 @@
#include <libmaus2/autoarray/AutoArray.hpp>
#include <libmaus2/util/TempFileRemovalContainer.hpp>
#include <libmaus2/sorting/SortingBufferedOutputFile.hpp>
+#include <libmaus2/util/Concat.hpp>
namespace libmaus2
{
=====================================
src/libmaus2/autoarray/AutoArray.hpp
=====================================
@@ -196,6 +196,122 @@ namespace libmaus2
extern uint64_t volatile AutoArray_maxmem;
extern ::libmaus2::parallel::StdSpinLock AutoArray_lock;
+ template<typename N, alloc_type atype = alloc_type_cxx>
+ struct AutoArrayBase
+ {
+ typedef N value_type;
+
+ /**
+ * return name of value type
+ * @return name of value type
+ **/
+ static std::string getValueTypeName()
+ {
+ return ::libmaus2::util::Demangle::demangle<value_type>();
+ }
+
+ /**
+ * return name of allocation type
+ * @return name of allocation type
+ **/
+ static std::string getAllocTypeName()
+ {
+ switch ( atype )
+ {
+ case alloc_type_cxx:
+ return "alloc_type_cxx";
+ case alloc_type_c:
+ return "alloc_type_c";
+ case alloc_type_memalign_cacheline:
+ return "alloc_type_memalign_cacheline";
+ case alloc_type_memalign_pagesize:
+ return "alloc_type_memalign_pagesize";
+ case alloc_type_hugepages:
+ return "alloc_type_hugepages";
+ case alloc_type_hugepages_memalign_cacheline:
+ return "alloc_type_memalign_cacheline";
+ case alloc_type_hugepages_memalign_pagesize:
+ return "alloc_type_memalign_pagesize";
+ default:
+ return "alloc_type_unknown";
+ }
+ }
+ /**
+ * return full type name of array class
+ * @return full type name of array class
+ **/
+ static std::string getTypeName()
+ {
+ return std::string("AutoArray<") + getValueTypeName() + "," + getAllocTypeName() + ">";
+ }
+
+ /**
+ * @return size of a (level 1) cache line in bytes
+ **/
+ #if defined(LIBMAUS2_HAVE_SYSCONF) && defined(_SC_LEVEL1_DCACHE_LINESIZE)
+ static uint64_t getCacheLineSize()
+ {
+ uint64_t sclinesize = libmaus2::posix::PosixFunctions::sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
+
+ if ( sclinesize )
+ return sclinesize;
+
+ #if defined(LIBMAUS2_USE_ASSEMBLY) && defined(LIBMAUS2_HAVE_i386)
+ return ::libmaus2::util::I386CacheLineSize::getCacheLineSize();
+ #else
+ return 64ull;
+ #endif
+ }
+ #elif defined(_WIN32)
+ static uint64_t getCacheLineSize()
+ {
+ uint64_t cachelinesize = 0;
+ DWORD bufsize = 0;
+ GetLogicalProcessorInformation(0, &bufsize);
+ ::libmaus2::autoarray::AutoArray<uint8_t> Abuffer(bufsize);
+ SYSTEM_LOGICAL_PROCESSOR_INFORMATION * const buffer = reinterpret_cast<SYSTEM_LOGICAL_PROCESSOR_INFORMATION *>(Abuffer.get());
+ GetLogicalProcessorInformation(&buffer[0], &bufsize);
+
+ for (uint64_t i = 0; i != bufsize / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION); ++i)
+ {
+ if (buffer[i].Relationship == RelationCache && buffer[i].Cache.Level == 1) {
+ cachelinesize = buffer[i].Cache.LineSize;
+ break;
+ }
+ }
+
+ return cachelinesize;
+ }
+ #elif defined(__APPLE__)
+ static uint64_t getCacheLineSize()
+ {
+ uint64_t cachelinesize = 0;
+ size_t cachelinesizelen = sizeof(cachelinesize);
+ #if defined(NDEBUG)
+ sysctlbyname("hw.cachelinesize", &cachelinesize, &cachelinesizelen, 0, 0);
+ #else
+ int const sysctlretname = sysctlbyname("hw.cachelinesize", &cachelinesize, &cachelinesizelen, 0, 0);
+ assert ( ! sysctlretname );
+ #endif
+ return cachelinesize;
+ }
+ #elif defined(LIBMAUS2_USE_ASSEMBLY) && defined(LIBMAUS2_HAVE_i386)
+ static uint64_t getCacheLineSize()
+ {
+ return ::libmaus2::util::I386CacheLineSize::getCacheLineSize();
+ }
+ #else
+ static uint64_t getCacheLineSize()
+ {
+ libmaus2::exception::LibMausException se;
+ se.getStream() << "AutoArray<>::getCacheLineSize(): cache line size detection not available." << std::endl;
+ se.finish();
+ throw se;
+ }
+ #endif
+ };
+
+
#if defined(LIBMAUS2_AUTOARRAY_AUTOARRAYTRACE)
template<unsigned int n>
struct AutoArrayBackTrace
@@ -294,6 +410,297 @@ namespace libmaus2
static void erase(std::unique_ptr<N> * array, uint64_t const n);
};
+ template<typename N, alloc_type atype>
+ struct AutoArrayAllocate
+ {
+ static N * allocate(uint64_t const n);
+ };
+
+ template<typename N>
+ struct AutoArrayAllocate<N,alloc_type_cxx>
+ {
+ static N * allocate(uint64_t const n)
+ {
+ try
+ {
+ N * p = new N[n];
+
+ return p;
+ }
+ catch(std::bad_alloc const & ex)
+ {
+ ::libmaus2::exception::LibMausException se;
+ se.getStream()
+ << AutoArrayBase<N,alloc_type_cxx>::getTypeName()
+ << " failed to allocate " << n << " elements ("
+ << n*sizeof(N) << " bytes)" << "\n"
+ << "current total allocation " << AutoArray_memusage
+ << std::endl;
+ ;
+ se.finish();
+ throw se;
+ }
+ }
+
+ static void deallocate(N * array)
+ {
+ delete [] array;
+ }
+ };
+
+ template<typename N>
+ struct AutoArrayAllocate<N,alloc_type_c>
+ {
+ static N * allocate(uint64_t const n)
+ {
+ try
+ {
+ N * p = (N*)malloc(n*sizeof(N));
+
+ if ( ! p )
+ throw std::bad_alloc();
+
+ return p;
+ }
+ catch(std::bad_alloc const & ex)
+ {
+ ::libmaus2::exception::LibMausException se;
+ se.getStream()
+ << AutoArrayBase<N,alloc_type_c>::getTypeName()
+ << " failed to allocate " << n << " elements ("
+ << n*sizeof(N) << " bytes)" << "\n"
+ << "current total allocation " << AutoArray_memusage
+ << std::endl;
+ ;
+ se.finish();
+ throw se;
+ }
+ }
+
+ static void deallocate(N * array)
+ {
+ ::free(array);
+ }
+ };
+
+ template<typename N>
+ struct AutoArrayAllocate<N,alloc_type_memalign_cacheline>
+ {
+ static N * allocate(uint64_t const n)
+ {
+ try
+ {
+ N * array = NULL;
+
+ uint64_t const cachelinesize = AutoArrayBase<N,alloc_type_memalign_cacheline>::getCacheLineSize();
+
+ #if defined(_WIN32)
+ array = reinterpret_cast<N *>(_aligned_malloc( n * sizeof(N), cachelinesize ));
+ if ( ! array )
+ throw std::bad_alloc();
+ #elif defined(LIBMAUS2_HAVE_POSIX_MEMALIGN)
+ int r = posix_memalign(reinterpret_cast<void**>(&array),cachelinesize,n * sizeof(N) );
+ if ( r )
+ {
+ int const aerrno = r;
+ std::cerr << "allocation failure: " << strerror(aerrno) << " cachelinesize=" << cachelinesize << " requested size is " << n*sizeof(N) << std::endl;
+ throw std::bad_alloc();
+ }
+ #else
+ array = AlignedAllocation<N,atype>::alignedAllocate(n,cachelinesize);
+ #endif
+
+ return array;
+
+ }
+ catch(std::bad_alloc const & ex)
+ {
+ ::libmaus2::exception::LibMausException se;
+ se.getStream()
+ << AutoArrayBase<N,alloc_type_memalign_cacheline>::getTypeName()
+ << " failed to allocate " << n << " elements ("
+ << n*sizeof(N) << " bytes)" << "\n"
+ << "current total allocation " << AutoArray_memusage
+ << std::endl;
+ ;
+ se.finish();
+ throw se;
+ }
+ }
+
+ static void deallocate(N * array)
+ {
+ #if defined(_WIN32) || defined(LIBMAUS2_HAVE_POSIX_MEMALIGN)
+ free(array);
+ #else
+ AlignedAllocation<N,alloc_type_memalign_cacheline>::freeAligned(array);
+ #endif
+ }
+ };
+
+ template<typename N>
+ struct AutoArrayAllocate<N,alloc_type_memalign_pagesize>
+ {
+ static N * allocate(uint64_t const n)
+ {
+ try
+ {
+ N * array = NULL;
+
+ uint64_t const pagesize = libmaus2::util::MemoryStatistics::getPageSize();
+ #if defined(_WIN32)
+ array = reinterpret_cast<N *>(_aligned_malloc( n * sizeof(N), pagesize ));
+ if ( ! array )
+ throw std::bad_alloc();
+ #elif defined(LIBMAUS2_HAVE_POSIX_MEMALIGN)
+ int r = posix_memalign(reinterpret_cast<void**>(&array),pagesize,n * sizeof(N) );
+ if ( r )
+ {
+ int const aerrno = r;
+ std::cerr << "allocation failure: " << strerror(aerrno) << " pagesize=" << pagesize << " requested size is " << n*sizeof(N) << std::endl;
+ throw std::bad_alloc();
+ }
+ #else
+ array = AlignedAllocation<N,atype>::alignedAllocate(n,pagesize);
+ #endif
+
+ return array;
+ }
+ catch(std::bad_alloc const & ex)
+ {
+ ::libmaus2::exception::LibMausException se;
+ se.getStream()
+ << AutoArrayBase<N,alloc_type_memalign_pagesize>::getTypeName()
+ << " failed to allocate " << n << " elements ("
+ << n*sizeof(N) << " bytes)" << "\n"
+ << "current total allocation " << AutoArray_memusage
+ << std::endl;
+ ;
+ se.finish();
+ throw se;
+ }
+ }
+
+ static void deallocate(N * array)
+ {
+ #if defined(_WIN32) || defined(LIBMAUS2_HAVE_POSIX_MEMALIGN)
+ free(array);
+ #else
+ AlignedAllocation<N,alloc_type_memalign_pagesize>::freeAligned(array);
+ #endif
+ }
+ };
+
+ template<typename N>
+ struct AutoArrayAllocate<N,alloc_type_hugepages>
+ {
+ static N * allocate(uint64_t const n)
+ {
+ try
+ {
+ N * array = NULL;
+
+ array = reinterpret_cast<N *>(libmaus2::util::HugePages::getHugePageObject().malloc( n * sizeof(N), sizeof(N) ));
+ if ( ! array )
+ throw std::bad_alloc();
+
+ return array;
+ }
+ catch(std::bad_alloc const & ex)
+ {
+ ::libmaus2::exception::LibMausException se;
+ se.getStream()
+ << AutoArrayBase<N,alloc_type_hugepages>::getTypeName()
+ << " failed to allocate " << n << " elements ("
+ << n*sizeof(N) << " bytes)" << "\n"
+ << "current total allocation " << AutoArray_memusage
+ << std::endl;
+ ;
+ se.finish();
+ throw se;
+ }
+ }
+
+ static void deallocate(N * array)
+ {
+ libmaus2::util::HugePages::getHugePageObject().free(array);
+ }
+ };
+
+ template<typename N>
+ struct AutoArrayAllocate<N,alloc_type_hugepages_memalign_cacheline>
+ {
+ static N * allocate(uint64_t const n)
+ {
+ try
+ {
+ N * array = NULL;
+
+ uint64_t const cachelinesize = AutoArrayBase<N,alloc_type_hugepages_memalign_cacheline>::getCacheLineSize();
+ array = reinterpret_cast<N *>(libmaus2::util::HugePages::getHugePageObject().malloc( n * sizeof(N), cachelinesize ));
+ if ( ! array )
+ throw std::bad_alloc();
+
+ return array;
+ }
+ catch(std::bad_alloc const & ex)
+ {
+ ::libmaus2::exception::LibMausException se;
+ se.getStream()
+ << AutoArrayBase<N,alloc_type_hugepages_memalign_cacheline>::getTypeName()
+ << " failed to allocate " << n << " elements ("
+ << n*sizeof(N) << " bytes)" << "\n"
+ << "current total allocation " << AutoArray_memusage
+ << std::endl;
+ ;
+ se.finish();
+ throw se;
+ }
+ }
+
+ static void deallocate(N * array)
+ {
+ libmaus2::util::HugePages::getHugePageObject().free(array);
+ }
+ };
+
+ template<typename N>
+ struct AutoArrayAllocate<N,alloc_type_hugepages_memalign_pagesize>
+ {
+ static N * allocate(uint64_t const n)
+ {
+ try
+ {
+ N * array = NULL;
+
+ uint64_t const cachelinesize = libmaus2::util::MemoryStatistics::getPageSize();
+ array = reinterpret_cast<N *>(libmaus2::util::HugePages::getHugePageObject().malloc( n * sizeof(N), cachelinesize ));
+ if ( ! array )
+ throw std::bad_alloc();
+
+ return array;
+ }
+ catch(std::bad_alloc const & ex)
+ {
+ ::libmaus2::exception::LibMausException se;
+ se.getStream()
+ << AutoArrayBase<N,alloc_type_hugepages_memalign_pagesize>::getTypeName()
+ << " failed to allocate " << n << " elements ("
+ << n*sizeof(N) << " bytes)" << "\n"
+ << "current total allocation " << AutoArray_memusage
+ << std::endl;
+ ;
+ se.finish();
+ throw se;
+ }
+ }
+
+ static void deallocate(N * array)
+ {
+ libmaus2::util::HugePages::getHugePageObject().free(array);
+ }
+ };
+
#if defined(LIBMAUS2_AUTOARRAY_AUTOARRAYTRACE)
extern std::vector< AutoArrayBackTrace<LIBMAUS2_AUTOARRAY_AUTOARRAYTRACE> > tracevector;
extern libmaus2::parallel::StdSpinLock backtracelock;
@@ -307,10 +714,10 @@ namespace libmaus2
{
static N * reallocate(N * p, uint64_t const rn, uint64_t const n)
{
- N * np = new N[n];
+ N * np = AutoArrayAllocate<N,atype>::allocate(n);
uint64_t const tocopy = std::min(rn,n);
std::copy(p,p+tocopy,np);
- delete [] p;
+ AutoArrayAllocate<N,atype>::deallocate(p);
return np;
}
};
@@ -327,11 +734,12 @@ namespace libmaus2
}
};
+
/**
* array with automatic deallocation
*/
template<typename N, alloc_type atype = alloc_type_cxx, typename erase_type = ArrayErase<N> >
- struct AutoArray
+ struct AutoArray : public AutoArrayBase<N,atype>
{
public:
//! element type
@@ -476,7 +884,7 @@ namespace libmaus2
__sync_fetch_and_sub(&AutoArray_memusage, n * sizeof(N));
::libmaus2::exception::LibMausException se;
- se.getStream() << "libmaus2::autoarray::AutoArray<" << getValueTypeName() << ">::increaseTotalAllocation: bad allocation: AutoArray mem limit of " << AutoArray_maxmem << " bytes exceeded by new allocation of " << n*sizeof(N) << " bytes." << std::endl;
+ se.getStream() << "libmaus2::autoarray::AutoArray<" << AutoArrayBase<value_type,atype>::getValueTypeName() << ">::increaseTotalAllocation: bad allocation: AutoArray mem limit of " << AutoArray_maxmem << " bytes exceeded by new allocation of " << n*sizeof(N) << " bytes." << std::endl;
se.finish();
{
@@ -546,103 +954,7 @@ namespace libmaus2
**/
void allocateArray(uint64_t const n)
{
- try
- {
- switch ( atype )
- {
- case alloc_type_cxx:
- array = new N[n];
- break;
- case alloc_type_c:
- array = reinterpret_cast<N *>(malloc( n * sizeof(N) ));
- if ( ! array )
- throw std::bad_alloc();
- break;
- case alloc_type_memalign_cacheline:
- {
- uint64_t const cachelinesize = getCacheLineSize();
- #if defined(_WIN32)
- array = reinterpret_cast<N *>(_aligned_malloc( n * sizeof(N), cachelinesize ));
- if ( ! array )
- throw std::bad_alloc();
- #elif defined(LIBMAUS2_HAVE_POSIX_MEMALIGN)
- int r = posix_memalign(reinterpret_cast<void**>(&array),cachelinesize,n * sizeof(N) );
- if ( r )
- {
- int const aerrno = r;
- std::cerr << "allocation failure: " << strerror(aerrno) << " cachelinesize=" << cachelinesize << " requested size is " << n*sizeof(N) << std::endl;
- throw std::bad_alloc();
- }
- #else
- array = AlignedAllocation<N,atype>::alignedAllocate(n,cachelinesize);
- #endif
- break;
- }
- case alloc_type_memalign_pagesize:
- {
- uint64_t const pagesize = libmaus2::util::MemoryStatistics::getPageSize();
- #if defined(_WIN32)
- array = reinterpret_cast<N *>(_aligned_malloc( n * sizeof(N), pagesize ));
- if ( ! array )
- throw std::bad_alloc();
- #elif defined(LIBMAUS2_HAVE_POSIX_MEMALIGN)
- int r = posix_memalign(reinterpret_cast<void**>(&array),pagesize,n * sizeof(N) );
- if ( r )
- {
- int const aerrno = r;
- std::cerr << "allocation failure: " << strerror(aerrno) << " pagesize=" << pagesize << " requested size is " << n*sizeof(N) << std::endl;
- throw std::bad_alloc();
- }
- #else
- array = AlignedAllocation<N,atype>::alignedAllocate(n,pagesize);
- #endif
- break;
- }
- case alloc_type_hugepages:
- {
- array = reinterpret_cast<N *>(libmaus2::util::HugePages::getHugePageObject().malloc( n * sizeof(N), sizeof(N) ));
- if ( ! array )
- throw std::bad_alloc();
- break;
- }
- case alloc_type_hugepages_memalign_cacheline:
- {
- uint64_t const cachelinesize = getCacheLineSize();
- array = reinterpret_cast<N *>(libmaus2::util::HugePages::getHugePageObject().malloc( n * sizeof(N), cachelinesize ));
- if ( ! array )
- throw std::bad_alloc();
- break;
-
- }
- case alloc_type_hugepages_memalign_pagesize:
- {
- uint64_t const cachelinesize = libmaus2::util::MemoryStatistics::getPageSize();
- array = reinterpret_cast<N *>(libmaus2::util::HugePages::getHugePageObject().malloc( n * sizeof(N), cachelinesize ));
- if ( ! array )
- throw std::bad_alloc();
- break;
-
- }
- }
- }
- catch(std::bad_alloc const & ex)
- {
- bool topfailed = false;
- if ( system("top -b -n1") < 0 )
- {
- topfailed = true;
- }
- ::libmaus2::exception::LibMausException se;
- se.getStream()
- << getTypeName()
- << " failed to allocate " << n << " elements ("
- << n*sizeof(N) << " bytes)" << "\n"
- << "current total allocation " << AutoArray_memusage
- << (topfailed ? " (system(top -b -n1) failed)" : "") << std::endl;
- ;
- se.finish();
- throw se;
- }
+ array = AutoArrayAllocate<value_type,atype>::allocate(n);
}
public:
@@ -724,49 +1036,6 @@ namespace libmaus2
return I;
}
- /**
- * return name of value type
- * @return name of value type
- **/
- static std::string getValueTypeName()
- {
- return ::libmaus2::util::Demangle::demangle<value_type>();
- }
-
- /**
- * return name of allocation type
- * @return name of allocation type
- **/
- static std::string getAllocTypeName()
- {
- switch ( atype )
- {
- case alloc_type_cxx:
- return "alloc_type_cxx";
- case alloc_type_c:
- return "alloc_type_c";
- case alloc_type_memalign_cacheline:
- return "alloc_type_memalign_cacheline";
- case alloc_type_memalign_pagesize:
- return "alloc_type_memalign_pagesize";
- case alloc_type_hugepages:
- return "alloc_type_hugepages";
- case alloc_type_hugepages_memalign_cacheline:
- return "alloc_type_memalign_cacheline";
- case alloc_type_hugepages_memalign_pagesize:
- return "alloc_type_memalign_pagesize";
- default:
- return "alloc_type_unknown";
- }
- }
- /**
- * return full type name of array class
- * @return full type name of array class
- **/
- static std::string getTypeName()
- {
- return std::string("AutoArray<") + getValueTypeName() + "," + getAllocTypeName() + ">";
- }
/**
* compute array of prefix sums in place
@@ -888,7 +1157,7 @@ namespace libmaus2
if ( ! ostr )
{
::libmaus2::exception::LibMausException se;
- se.getStream() << "Failed to serialize " << getTypeName() << " of size " << size() << " to file " << filename << std::endl;
+ se.getStream() << "Failed to serialize " << AutoArrayBase<value_type,atype>::getTypeName() << " of size " << size() << " to file " << filename << std::endl;
se.finish();
throw se;
}
@@ -939,52 +1208,6 @@ namespace libmaus2
decreaseTotalAllocation(n);
n = rn;
increaseTotalAllocation(n);
-
- #if 0
- switch ( atype )
- {
- case alloc_type_c:
- {
- N * newarray = reinterpret_cast<N *>(realloc(array, rn * sizeof(N) ));
- if ( (! newarray) && (rn != 0) )
- {
- bool topfailed = false;
- if ( system("top -b -n1") < 0 )
- {
- topfailed = true;
- }
- ::libmaus2::exception::LibMausException se;
- se.getStream()
- << getTypeName()
- << "::resize() failed to allocate " << rn << " elements ("
- << rn*sizeof(N) << " bytes)" << "\n"
- << "current total allocation " << AutoArray_memusage
- << (topfailed ? " (system(top -b -n1) failed)" : "") << std::endl;
- ;
- se.finish();
- throw se;
- }
- decreaseTotalAllocation(n);
- n = rn;
- increaseTotalAllocation(n);
- array = newarray;
- break;
- }
- case alloc_type_cxx:
- case alloc_type_memalign_cacheline:
- case alloc_type_memalign_pagesize:
- case alloc_type_hugepages:
- case alloc_type_hugepages_memalign_cacheline:
- case alloc_type_hugepages_memalign_pagesize:
- {
- this_type C(rn,false);
- uint64_t const copy = std::min(size(),C.size());
- std::copy(begin(),begin()+copy,C.begin());
- *this = C;
- }
- break;
- }
- #endif
}
/**
@@ -997,70 +1220,6 @@ namespace libmaus2
}
private:
- /**
- * @return size of a (level 1) cache line in bytes
- **/
- #if defined(LIBMAUS2_HAVE_SYSCONF) && defined(_SC_LEVEL1_DCACHE_LINESIZE)
- static uint64_t getCacheLineSize()
- {
- uint64_t sclinesize = libmaus2::posix::PosixFunctions::sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
-
- if ( sclinesize )
- return sclinesize;
-
- #if defined(LIBMAUS2_USE_ASSEMBLY) && defined(LIBMAUS2_HAVE_i386)
- return ::libmaus2::util::I386CacheLineSize::getCacheLineSize();
- #else
- return 64ull;
- #endif
- }
- #elif defined(_WIN32)
- static uint64_t getCacheLineSize()
- {
- uint64_t cachelinesize = 0;
- DWORD bufsize = 0;
- GetLogicalProcessorInformation(0, &bufsize);
- ::libmaus2::autoarray::AutoArray<uint8_t> Abuffer(bufsize);
- SYSTEM_LOGICAL_PROCESSOR_INFORMATION * const buffer = reinterpret_cast<SYSTEM_LOGICAL_PROCESSOR_INFORMATION *>(Abuffer.get());
- GetLogicalProcessorInformation(&buffer[0], &bufsize);
-
- for (uint64_t i = 0; i != bufsize / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION); ++i)
- {
- if (buffer[i].Relationship == RelationCache && buffer[i].Cache.Level == 1) {
- cachelinesize = buffer[i].Cache.LineSize;
- break;
- }
- }
-
- return cachelinesize;
- }
- #elif defined(__APPLE__)
- static uint64_t getCacheLineSize()
- {
- uint64_t cachelinesize = 0;
- size_t cachelinesizelen = sizeof(cachelinesize);
- #if defined(NDEBUG)
- sysctlbyname("hw.cachelinesize", &cachelinesize, &cachelinesizelen, 0, 0);
- #else
- int const sysctlretname = sysctlbyname("hw.cachelinesize", &cachelinesize, &cachelinesizelen, 0, 0);
- assert ( ! sysctlretname );
- #endif
- return cachelinesize;
- }
- #elif defined(LIBMAUS2_USE_ASSEMBLY) && defined(LIBMAUS2_HAVE_i386)
- static uint64_t getCacheLineSize()
- {
- return ::libmaus2::util::I386CacheLineSize::getCacheLineSize();
- }
- #else
- static uint64_t getCacheLineSize()
- {
- libmaus2::exception::LibMausException se;
- se.getStream() << "AutoArray<>::getCacheLineSize(): cache line size detection not available." << std::endl;
- se.finish();
- throw se;
- }
- #endif
public:
N * take()
@@ -1079,34 +1238,7 @@ namespace libmaus2
{
decreaseTotalAllocation(n);
- switch ( atype )
- {
- case alloc_type_cxx:
- delete [] array;
- break;
- case alloc_type_c:
- free(array);
- break;
- case alloc_type_memalign_cacheline:
- #if defined(_WIN32) || defined(LIBMAUS2_HAVE_POSIX_MEMALIGN)
- free(array);
- #else
- AlignedAllocation<N,alloc_type_memalign_cacheline>::freeAligned(array);
- #endif
- break;
- case alloc_type_memalign_pagesize:
- #if defined(_WIN32) || defined(LIBMAUS2_HAVE_POSIX_MEMALIGN)
- free(array);
- #else
- AlignedAllocation<N,alloc_type_memalign_pagesize>::freeAligned(array);
- #endif
- break;
- case alloc_type_hugepages:
- case alloc_type_hugepages_memalign_cacheline:
- case alloc_type_hugepages_memalign_pagesize:
- libmaus2::util::HugePages::getHugePageObject().free(array);
- break;
- }
+ AutoArrayAllocate<value_type,atype>::deallocate(array);
array = 0;
n = 0;
@@ -1522,7 +1654,7 @@ namespace libmaus2
else
{
libmaus2::exception::LibMausException ex;
- ex.getStream() << "AutoArray<"<<getTypeName()<<">::at(" << i << "): index is out of bounds for array of size " << size() << std::endl;
+ ex.getStream() << "AutoArray<"<< AutoArrayBase<value_type,atype>::getTypeName()<<">::at(" << i << "): index is out of bounds for array of size " << size() << std::endl;
ex.finish();
throw ex;
}
@@ -1540,7 +1672,7 @@ namespace libmaus2
else
{
libmaus2::exception::LibMausException ex;
- ex.getStream() << "AutoArray<"<<getTypeName()<<">::at(" << i << "): index is out of bounds for array of size " << size() << std::endl;
+ ex.getStream() << "AutoArray<"<<AutoArrayBase<value_type,atype>::getTypeName()<<">::at(" << i << "): index is out of bounds for array of size " << size() << std::endl;
ex.finish();
throw ex;
}
@@ -1554,7 +1686,7 @@ namespace libmaus2
AutoArray<N,atype> & operator=(AutoArray<N,atype> const & o)
{
#if defined(AUTOARRAY_DEBUG)
- std::cerr << this << "," << getTypeName() << "::operator=(" << &o << ")" << std::endl;;
+ std::cerr << this << "," << AutoArrayBase<value_type,atype>::getTypeName() << "::operator=(" << &o << ")" << std::endl;;
#endif
if ( this != &o )
=====================================
src/libmaus2/bambam/ReadEndsBlockIndexSet.hpp
=====================================
@@ -33,12 +33,8 @@ namespace libmaus2
{
namespace bambam
{
- struct ReadEndsBlockIndexSet
+ struct ReadEndsBlockIndexSetBase
{
- typedef ReadEndsBlockIndexSet this_type;
- typedef libmaus2::util::unique_ptr<this_type>::type unique_ptr_type;
- typedef libmaus2::util::shared_ptr<this_type>::type shared_ptr_type;
-
typedef libmaus2::index::ExternalMemoryIndexDecoder<
libmaus2::bambam::ReadEndsBase,
libmaus2::bambam::ReadEndsContainerBase::baseIndexShift,
@@ -54,55 +50,124 @@ namespace libmaus2
return numblocks;
}
- std::vector<ReadEndsBlockDecoderBaseCollectionInfoBase> const info;
- uint64_t const numblocks;
- std::vector<uint64_t> O;
- libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type> indexstreams;
- libmaus2::autoarray::AutoArray<index_decoder_pointer_type> indexes;
-
- ReadEndsBlockIndexSet(std::vector<ReadEndsBlockDecoderBaseCollectionInfoBase> const & rinfo)
- : info(rinfo), numblocks(computeNumBlocks(rinfo)), O(rinfo.size()), indexstreams(rinfo.size()), indexes(numblocks)
+ static std::vector<uint64_t> computeO(std::vector<ReadEndsBlockDecoderBaseCollectionInfoBase> const & info)
{
+ std::vector<uint64_t> O(info.size());
+
for ( uint64_t i = 1; i < O.size(); ++i )
- O[i] = O[i-1] + rinfo[i-1].indexoffset.size();
+ O[i] = O[i-1] + info[i-1].indexoffset.size();
- for ( uint64_t i = 0; i < rinfo.size(); ++i )
+ return O;
+ }
+
+ static libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type>::unique_ptr_type openIndexStreams(
+ std::vector<ReadEndsBlockDecoderBaseCollectionInfoBase> const & info
+ )
+ {
+ libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type>::unique_ptr_type indexstreams(
+ new libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type>(info.size())
+ );
+
+ for ( uint64_t i = 0; i < info.size(); ++i )
{
libmaus2::aio::InputStreamInstance::unique_ptr_type tptr(
- new libmaus2::aio::InputStreamInstance(rinfo[i].indexfilename)
+ new libmaus2::aio::InputStreamInstance(info[i].indexfilename)
);
- indexstreams[i] = UNIQUE_PTR_MOVE(tptr);
+ (*indexstreams)[i] = UNIQUE_PTR_MOVE(tptr);
+ }
- for ( uint64_t j = 0; j < rinfo[i].indexoffset.size(); ++j )
+ return indexstreams;
+ }
+
+ static uint64_t getBaseBlockSize()
+ {
+ return libmaus2::bambam::ReadEndsContainerBase::baseIndexStep;
+ }
+
+ static libmaus2::autoarray::AutoArray<index_decoder_pointer_type>::unique_ptr_type openIndexes(
+ std::vector<ReadEndsBlockDecoderBaseCollectionInfoBase> const & info,
+ libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type>::unique_ptr_type & indexstreams,
+ uint64_t const numblocks,
+ std::vector<uint64_t> const & O
+ )
+ {
+ libmaus2::autoarray::AutoArray<index_decoder_pointer_type>::unique_ptr_type indexes(
+ new libmaus2::autoarray::AutoArray<index_decoder_pointer_type>(numblocks)
+ );
+
+ for ( uint64_t i = 0; i < indexstreams->size(); ++i )
+ {
+ std::istream & str = *((*indexstreams)[i]);
+
+ for ( uint64_t j = 0; j < info[i].indexoffset.size(); ++j )
{
- indexstreams[i]->clear();
- indexstreams[i]->seekg(rinfo[i].indexoffset[j]);
+ str.clear();
+ str.seekg(info[i].indexoffset[j]);
index_decoder_pointer_type iptr(
- new index_decoder_type(*(indexstreams[i]))
+ new index_decoder_type(str)
);
- indexes[O[i] + j] = UNIQUE_PTR_MOVE(iptr);
+ (*indexes)[O[i] + j] = UNIQUE_PTR_MOVE(iptr);
}
}
+
+ return indexes;
}
+ };
- uint64_t size() const
+ struct ReadEndsBlockIndexSetData : public ReadEndsBlockIndexSetBase
+ {
+ typedef ReadEndsBlockIndexSetData this_type;
+ typedef libmaus2::util::unique_ptr<this_type>::type unique_ptr_type;
+ typedef libmaus2::util::shared_ptr<this_type>::type shared_ptr_type;
+
+ private:
+ index_decoder_type & operator[](uint64_t i)
{
- return numblocks;
+ return *((*indexes)[i]);
}
- index_decoder_type & operator[](uint64_t i)
+ public:
+ std::vector<ReadEndsBlockDecoderBaseCollectionInfoBase> const info;
+ uint64_t const numblocks;
+ std::vector<uint64_t> const O;
+
+ private:
+ libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type>::unique_ptr_type indexstreams;
+ libmaus2::autoarray::AutoArray<index_decoder_pointer_type>::unique_ptr_type indexes;
+ libmaus2::parallel::StdMutex mutex;
+
+ public:
+ ReadEndsBlockIndexSetData(std::vector<ReadEndsBlockDecoderBaseCollectionInfoBase> const & rinfo)
+ : info(rinfo), numblocks(computeNumBlocks(rinfo)), O(computeO(rinfo)), indexstreams(openIndexStreams(rinfo)), indexes(openIndexes(rinfo,indexstreams,numblocks,O)), mutex()
+ {
+ }
+
+ uint64_t size() const
{
- return *(indexes[i]);
+ return numblocks;
}
std::pair<uint64_t,uint64_t> getOffset(uint64_t const block, uint64_t const subblock)
{
- return (*this)[block][subblock];
+ std::pair<uint64_t,uint64_t> P;
+ {
+ libmaus2::parallel::ScopeStdMutex smutex(mutex);
+ P = (*this)[block][subblock];
+ }
+ return P;
}
+ };
- static uint64_t getBaseBlockSize()
+ struct ReadEndsBlockIndexSet : public ReadEndsBlockIndexSetBase
+ {
+ typedef ReadEndsBlockIndexSet this_type;
+ typedef libmaus2::util::unique_ptr<this_type>::type unique_ptr_type;
+ typedef libmaus2::util::shared_ptr<this_type>::type shared_ptr_type;
+
+ ReadEndsBlockIndexSetData & data;
+
+ ReadEndsBlockIndexSet(ReadEndsBlockIndexSetData & rdata) : data(rdata)
{
- return libmaus2::bambam::ReadEndsContainerBase::baseIndexStep;
}
std::pair<uint64_t,uint64_t> merge(
@@ -119,29 +184,29 @@ namespace libmaus2
exp += V[i].second-V[i].first;
}
- libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type> datastreams(info.size());
- libmaus2::autoarray::AutoArray<libmaus2::lz::SnappyInputStream::unique_ptr_type> zdatastreams(size());
+ libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type> datastreams(data.info.size());
+ libmaus2::autoarray::AutoArray<libmaus2::lz::SnappyInputStream::unique_ptr_type> zdatastreams(data.size());
libmaus2::bambam::ReadEnds R;
- for ( uint64_t i = 0; i < info.size(); ++i )
+ for ( uint64_t i = 0; i < data.info.size(); ++i )
{
// open data stream
libmaus2::aio::InputStreamInstance::unique_ptr_type tptr(
- new libmaus2::aio::InputStreamInstance(info[i].datafilename)
+ new libmaus2::aio::InputStreamInstance(data.info[i].datafilename)
);
datastreams[i] = UNIQUE_PTR_MOVE(tptr);
// set up uncompressors
- for ( uint64_t j = 0; j < info[i].indexoffset.size(); ++j )
+ for ( uint64_t j = 0; j < data.info[i].indexoffset.size(); ++j )
{
- uint64_t const blockid = O[i] + j;
+ uint64_t const blockid = data.O[i] + j;
uint64_t const vlow = V[blockid].first;
uint64_t const vhigh = V[blockid].second;
uint64_t const subblockid = vlow / getBaseBlockSize();
if ( vlow < vhigh )
{
- std::pair<uint64_t,uint64_t> const zoffset = getOffset(blockid,subblockid);
+ std::pair<uint64_t,uint64_t> const zoffset = data.getOffset(blockid,subblockid);
libmaus2::lz::SnappyInputStream::unique_ptr_type zptr(
new libmaus2::lz::SnappyInputStream(
@@ -234,29 +299,29 @@ namespace libmaus2
exp += V[i].second-V[i].first;
}
- libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type> datastreams(info.size());
- libmaus2::autoarray::AutoArray<libmaus2::lz::SnappyInputStream::unique_ptr_type> zdatastreams(size());
+ libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type> datastreams(data.info.size());
+ libmaus2::autoarray::AutoArray<libmaus2::lz::SnappyInputStream::unique_ptr_type> zdatastreams(data.size());
libmaus2::bambam::ReadEnds R;
- for ( uint64_t i = 0; i < info.size(); ++i )
+ for ( uint64_t i = 0; i < data.info.size(); ++i )
{
// open data stream
libmaus2::aio::InputStreamInstance::unique_ptr_type tptr(
- new libmaus2::aio::InputStreamInstance(info[i].datafilename)
+ new libmaus2::aio::InputStreamInstance(data.info[i].datafilename)
);
datastreams[i] = UNIQUE_PTR_MOVE(tptr);
// set up uncompressors
- for ( uint64_t j = 0; j < info[i].indexoffset.size(); ++j )
+ for ( uint64_t j = 0; j < data.info[i].indexoffset.size(); ++j )
{
- uint64_t const blockid = O[i] + j;
+ uint64_t const blockid = data.O[i] + j;
uint64_t const vlow = V[blockid].first;
uint64_t const vhigh = V[blockid].second;
if ( vlow < vhigh )
{
uint64_t const subblockid = vlow / getBaseBlockSize();
- std::pair<uint64_t,uint64_t> const zoffset = getOffset(blockid,subblockid);
+ std::pair<uint64_t,uint64_t> const zoffset = data.getOffset(blockid,subblockid);
libmaus2::lz::SnappyInputStream::unique_ptr_type zptr(
new libmaus2::lz::SnappyInputStream(
@@ -367,29 +432,29 @@ namespace libmaus2
exp += V[i].second-V[i].first;
}
- libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type> datastreams(info.size());
- libmaus2::autoarray::AutoArray<libmaus2::lz::SnappyInputStream::unique_ptr_type> zdatastreams(size());
+ libmaus2::autoarray::AutoArray<libmaus2::aio::InputStreamInstance::unique_ptr_type> datastreams(data.info.size());
+ libmaus2::autoarray::AutoArray<libmaus2::lz::SnappyInputStream::unique_ptr_type> zdatastreams(data.size());
libmaus2::bambam::ReadEnds R;
- for ( uint64_t i = 0; i < info.size(); ++i )
+ for ( uint64_t i = 0; i < data.info.size(); ++i )
{
// open data stream
libmaus2::aio::InputStreamInstance::unique_ptr_type tptr(
- new libmaus2::aio::InputStreamInstance(info[i].datafilename)
+ new libmaus2::aio::InputStreamInstance(data.info[i].datafilename)
);
datastreams[i] = UNIQUE_PTR_MOVE(tptr);
// set up uncompressors
- for ( uint64_t j = 0; j < info[i].indexoffset.size(); ++j )
+ for ( uint64_t j = 0; j < data.info[i].indexoffset.size(); ++j )
{
- uint64_t const blockid = O[i] + j;
+ uint64_t const blockid = data.O[i] + j;
uint64_t const vlow = V[blockid].first;
uint64_t const vhigh = V[blockid].second;
if ( vlow < vhigh )
{
uint64_t const subblockid = vlow / getBaseBlockSize();
- std::pair<uint64_t,uint64_t> const zoffset = getOffset(blockid,subblockid);
+ std::pair<uint64_t,uint64_t> const zoffset = data.getOffset(blockid,subblockid);
libmaus2::lz::SnappyInputStream::unique_ptr_type zptr(
new libmaus2::lz::SnappyInputStream(
=====================================
src/libmaus2/bambam/parallel/BlockSortControl.hpp
=====================================
@@ -420,6 +420,8 @@ namespace libmaus2
int verbose;
+ uint64_t const fragmergepar;
+
void freeBuffers()
{
fragmentBufferFreeListPreSort.reset();
@@ -466,6 +468,7 @@ namespace libmaus2
libmaus2::parallel::SimpleThreadPool & rSTP,
std::istream & in,
int const level,
+ uint64_t const rfragmergepar,
std::string const & rtempfileprefix,
std::string const & rhash,
bool const rfixmates = true,
@@ -546,7 +549,8 @@ namespace libmaus2
unmergeFragReadEndsRegions(0),
unmergePairReadEndsRegions(0),
hash(rhash),
- verbose(0)
+ verbose(0),
+ fragmergepar(rfragmergepar)
{
STP.registerDispatcher(GICRPDid,&GICRPD);
STP.registerDispatcher(GIBDWPDid,&GIBDWPD);
@@ -1284,7 +1288,9 @@ namespace libmaus2
}
}
- void enqueMergeFragReadEndsLists()
+ void enqueMergeFragReadEndsLists(
+ libmaus2::parallel::StdSemaphore::shared_ptr_type psem
+ )
{
if ( verbose )
{
@@ -1329,11 +1335,14 @@ namespace libmaus2
libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
std::cerr << "\t\t(enque FragReadEndsMergeWorkPackage)\n";
}
+ libmaus2::bambam::ReadEndsBlockIndexSetData::shared_ptr_type setData(
+ new libmaus2::bambam::ReadEndsBlockIndexSetData(*MI)
+ );
for ( uint64_t i = 0; i < SMI.size(); ++i )
{
ReadEndsMergeRequest req(Pdupbitvec.get(),MI,SMI[i]);
FragReadEndsMergeWorkPackage * package = fragReadEndsMergeWorkPackages.getPackage();
- *package = FragReadEndsMergeWorkPackage(req,0/*prio*/,FREMWPDid);
+ *package = FragReadEndsMergeWorkPackage(req,setData,psem,0/*prio*/,FREMWPDid);
package->subid = i;
STP.enque(package);
}
@@ -1344,7 +1353,9 @@ namespace libmaus2
}
}
- void enqueMergePairReadEndsLists()
+ void enqueMergePairReadEndsLists(
+ libmaus2::parallel::StdSemaphore::shared_ptr_type psem
+ )
{
if ( verbose )
{
@@ -1389,11 +1400,14 @@ namespace libmaus2
libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
std::cerr << "\t\t(enque PairReadEndsMergeWorkPackage)\n";
}
+ libmaus2::bambam::ReadEndsBlockIndexSetData::shared_ptr_type setData(
+ new libmaus2::bambam::ReadEndsBlockIndexSetData(*MI)
+ );
for ( uint64_t i = 0; i < SMI.size(); ++i )
{
ReadEndsMergeRequest req(Pdupbitvec.get(),MI,SMI[i]);
PairReadEndsMergeWorkPackage * package = pairReadEndsMergeWorkPackages.getPackage();
- *package = PairReadEndsMergeWorkPackage(req,0/*prio*/,PREMWPDid);
+ *package = PairReadEndsMergeWorkPackage(req,setData,psem,0/*prio*/,PREMWPDid);
package->subid = i;
STP.enque(package);
}
@@ -1784,6 +1798,13 @@ namespace libmaus2
void mergeReadEndsLists(std::ostream & metricsstr, std::string const progname)
{
+ // set up semaphore to limit parallelism
+ libmaus2::parallel::StdSemaphore::shared_ptr_type psem(
+ new libmaus2::parallel::StdSemaphore
+ );
+ for ( uint64_t i = 0; i < fragmergepar; ++i )
+ psem->post();
+
// set up duplicate data structure
uint64_t const ureadsParsed = static_cast<uint64_t>(readsParsed);
libmaus2::bitio::BitVector::unique_ptr_type Tdupbitvec(new libmaus2::bitio::BitVector(ureadsParsed));
@@ -1797,7 +1818,7 @@ namespace libmaus2
libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
std::cerr << "\n\t(call enqueMergeFragReadEndsLists)\n";
}
- enqueMergeFragReadEndsLists();
+ enqueMergeFragReadEndsLists(psem);
if ( verbose )
{
libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
@@ -1809,7 +1830,7 @@ namespace libmaus2
libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
std::cerr << "\t(call enqueMergePairReadEndsLists)\n";
}
- enqueMergePairReadEndsLists();
+ enqueMergePairReadEndsLists(psem);
if ( verbose )
{
libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
=====================================
src/libmaus2/bambam/parallel/FragReadEndsMergeWorkPackage.hpp
=====================================
@@ -21,6 +21,7 @@
#include <libmaus2/parallel/SimpleThreadWorkPackage.hpp>
#include <libmaus2/bambam/parallel/ReadEndsMergeRequest.hpp>
+#include <libmaus2/bambam/ReadEndsBlockIndexSet.hpp>
namespace libmaus2
{
@@ -35,6 +36,8 @@ namespace libmaus2
typedef libmaus2::util::shared_ptr<this_type>::type shared_ptr_type;
ReadEndsMergeRequest REQ;
+ libmaus2::bambam::ReadEndsBlockIndexSetData::shared_ptr_type setData;
+ libmaus2::parallel::StdSemaphore::shared_ptr_type psem;
FragReadEndsMergeWorkPackage() : libmaus2::parallel::SimpleThreadWorkPackage(), REQ()
{
@@ -42,11 +45,13 @@ namespace libmaus2
}
FragReadEndsMergeWorkPackage(
ReadEndsMergeRequest const & rREQ,
+ libmaus2::bambam::ReadEndsBlockIndexSetData::shared_ptr_type rsetData,
+ libmaus2::parallel::StdSemaphore::shared_ptr_type rpsem,
uint64_t const rpriority,
uint64_t const rdispatcherid,
uint64_t const rpackageid = 0
)
- : libmaus2::parallel::SimpleThreadWorkPackage(rpriority,rdispatcherid,rpackageid), REQ(rREQ)
+ : libmaus2::parallel::SimpleThreadWorkPackage(rpriority,rdispatcherid,rpackageid), REQ(rREQ), setData(rsetData), psem(rpsem)
{
}
@@ -58,6 +63,8 @@ namespace libmaus2
{
libmaus2::parallel::SimpleThreadWorkPackage::operator=(O);
REQ = O.REQ;
+ setData = O.setData;
+ psem = O.psem;
}
return *this;
}
=====================================
src/libmaus2/bambam/parallel/FragReadEndsMergeWorkPackageDispatcher.hpp
=====================================
@@ -61,17 +61,23 @@ namespace libmaus2
virtual void dispatch(libmaus2::parallel::SimpleThreadWorkPackage * P, libmaus2::parallel::SimpleThreadPoolInterfaceEnqueTermInterface & /* tpi */)
{
+ FragReadEndsMergeWorkPackage * BP = NULL;
+ bool gotsem = false;
+
try
{
- FragReadEndsMergeWorkPackage * BP = dynamic_cast<FragReadEndsMergeWorkPackage *>(P);
+ BP = dynamic_cast<FragReadEndsMergeWorkPackage *>(P);
assert ( BP );
+ BP->psem->wait();
+ gotsem = true;
+
if ( verbose )
{
libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
std::cerr << "FragReadEndsMergeWorkPackageDispatcher package " << P << " instantiating ReadEndsBlockIndexSet" << std::endl;
}
- ReadEndsBlockIndexSet fragindexset(*(BP->REQ.MI));
+ ReadEndsBlockIndexSet fragindexset(*(BP->setData));
if ( verbose )
{
libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
@@ -119,6 +125,10 @@ namespace libmaus2
}
mergeFinishedInterface.fragReadEndsMergeWorkPackageFinished(BP);
+
+ BP->psem->post();
+ gotsem = false;
+
packageReturnInterface.fragReadEndsMergeWorkPackageReturn(BP);
if ( verbose )
@@ -129,6 +139,9 @@ namespace libmaus2
}
catch(std::exception const & ex)
{
+ if ( BP && gotsem )
+ BP->psem->post();
+
libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
std::cerr << "FragReadEndsMergeWorkPackageDispatcher package " << P << " exception: " << ex.what() << std::endl;
throw;
=====================================
src/libmaus2/bambam/parallel/PairReadEndsMergeWorkPackage.hpp
=====================================
@@ -21,6 +21,7 @@
#include <libmaus2/bambam/parallel/ReadEndsMergeRequest.hpp>
#include <libmaus2/parallel/SimpleThreadWorkPackage.hpp>
+#include <libmaus2/bambam/ReadEndsBlockIndexSet.hpp>
namespace libmaus2
{
@@ -35,18 +36,22 @@ namespace libmaus2
typedef libmaus2::util::shared_ptr<this_type>::type shared_ptr_type;
ReadEndsMergeRequest REQ;
+ libmaus2::bambam::ReadEndsBlockIndexSetData::shared_ptr_type setData;
+ libmaus2::parallel::StdSemaphore::shared_ptr_type psem;
- PairReadEndsMergeWorkPackage() : libmaus2::parallel::SimpleThreadWorkPackage(), REQ()
+ PairReadEndsMergeWorkPackage() : libmaus2::parallel::SimpleThreadWorkPackage(), REQ(), setData()
{
}
PairReadEndsMergeWorkPackage(
ReadEndsMergeRequest const & rREQ,
+ libmaus2::bambam::ReadEndsBlockIndexSetData::shared_ptr_type rsetData,
+ libmaus2::parallel::StdSemaphore::shared_ptr_type rpsem,
uint64_t const rpriority,
uint64_t const rdispatcherid,
uint64_t const rpackageid = 0
)
- : libmaus2::parallel::SimpleThreadWorkPackage(rpriority,rdispatcherid,rpackageid), REQ(rREQ)
+ : libmaus2::parallel::SimpleThreadWorkPackage(rpriority,rdispatcherid,rpackageid), REQ(rREQ), setData(rsetData), psem(rpsem)
{
}
@@ -58,6 +63,8 @@ namespace libmaus2
{
libmaus2::parallel::SimpleThreadWorkPackage::operator=(O);
REQ = O.REQ;
+ setData = O.setData;
+ psem = O.psem;
}
return *this;
}
=====================================
src/libmaus2/bambam/parallel/PairReadEndsMergeWorkPackageDispatcher.hpp
=====================================
@@ -64,17 +64,23 @@ namespace libmaus2
virtual void dispatch(libmaus2::parallel::SimpleThreadWorkPackage * P, libmaus2::parallel::SimpleThreadPoolInterfaceEnqueTermInterface & /* tpi */)
{
+ PairReadEndsMergeWorkPackage * BP = NULL;
+ bool gotsem = false;
+
try
{
- PairReadEndsMergeWorkPackage * BP = dynamic_cast<PairReadEndsMergeWorkPackage *>(P);
+ BP = dynamic_cast<PairReadEndsMergeWorkPackage *>(P);
assert ( BP );
+ BP->psem->wait();
+ gotsem = true;
+
if ( verbose )
{
libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
std::cerr << "PairReadEndsMergeWorkPackageDispatcher package " << P << " instantiating ReadEndsBlockIndexSet" << std::endl;
}
- ReadEndsBlockIndexSet pairindexset(*(BP->REQ.MI));
+ ReadEndsBlockIndexSet pairindexset(*(BP->setData));
if ( verbose )
{
libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
@@ -123,6 +129,10 @@ namespace libmaus2
}
mergeFinishedInterface.pairReadEndsMergeWorkPackageFinished(BP);
+
+ BP->psem->post();
+ gotsem = false;
+
packageReturnInterface.pairReadEndsMergeWorkPackageReturn(BP);
if ( verbose )
@@ -133,6 +143,9 @@ namespace libmaus2
}
catch(std::exception const & ex)
{
+ if ( BP && gotsem )
+ BP->psem->post();
+
libmaus2::parallel::ScopeStdSpinLock slock(libmaus2::aio::StreamLock::cerrlock);
std::cerr << "PairReadEndsMergeWorkPackageDispatcher exception: " << ex.what() << std::endl;
throw;
=====================================
src/libmaus2/network/ClientSocket.hpp
=====================================
@@ -0,0 +1,92 @@
+/*
+ libmaus2
+ Copyright (C) 2009-2019 German Tischler
+ Copyright (C) 2011-2013 Genome Research Limited
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#if ! defined(LIBMAUS2_CLIENTSOCKET_HPP)
+#define LIBMAUS2_CLIENTSOCKET_HPP
+
+#include <libmaus2/network/SocketBase.hpp>
+
+namespace libmaus2
+{
+ namespace network
+ {
+ struct ClientSocket : public SocketBase
+ {
+ typedef ClientSocket this_type;
+ typedef ::libmaus2::util::unique_ptr<this_type>::type unique_ptr_type;
+
+ ClientSocket(unsigned short port, char const * hostname)
+ : SocketBase()
+ {
+ setAddress(hostname, remaddr);
+ remaddr.sin_port = htons(port);
+ remaddrset = true;
+
+ while ( ::connect(getFD(),reinterpret_cast<const sockaddr *>(&remaddr),sizeof(remaddr)) != 0 )
+ {
+ int const error = errno;
+
+ switch ( error )
+ {
+ case EINTR:
+ case EAGAIN:
+ break;
+ default:
+ {
+ ::libmaus2::exception::LibMausException se;
+ se.getStream() << "ClientSocket: connect() failed with error " << strerror(error) << std::endl;
+ se.finish();
+ throw se;
+ }
+ }
+ }
+ }
+
+ static SocketBase::unique_ptr_type baseCast(ClientSocket::unique_ptr_type & C)
+ {
+ int const fd = C->getFD();
+ C->releaseFD();
+
+ try
+ {
+ SocketBase::unique_ptr_type ptr ( new SocketBase(fd) );
+ return ptr;
+ }
+ catch(...)
+ {
+ ::close(fd);
+ throw;
+ }
+ }
+
+ static SocketBase::unique_ptr_type baseAlloc(unsigned short const port, char const * const hostname)
+ {
+ ClientSocket::unique_ptr_type ptr ( new ClientSocket(port,hostname) );
+ SocketBase::unique_ptr_type baseptr = baseCast(ptr);
+ return baseptr;
+ }
+
+ static SocketBase::unique_ptr_type baseAlloc(unsigned short const port, std::string const & hostname)
+ {
+ SocketBase::unique_ptr_type baseptr = baseAlloc(port,hostname.c_str());
+ return baseptr;
+ }
+ };
+ }
+}
+#endif
=====================================
src/libmaus2/network/FtpSocket.hpp
=====================================
@@ -22,7 +22,8 @@
#include <libmaus2/LibMausConfig.hpp>
#include <libmaus2/network/FtpUrl.hpp>
-#include <libmaus2/network/Socket.hpp>
+#include <libmaus2/network/ClientSocket.hpp>
+#include <libmaus2/network/ServerSocket.hpp>
#include <libmaus2/network/SocketInputStream.hpp>
#include <libmaus2/util/stringFunctions.hpp>
=====================================
src/libmaus2/network/GnuTLSSocket.hpp
=====================================
@@ -25,7 +25,7 @@
#endif
#include <libmaus2/network/GnuTLSInit.hpp>
-#include <libmaus2/network/Socket.hpp>
+#include <libmaus2/network/ClientSocket.hpp>
#include <libmaus2/network/SocketInputOutputInterface.hpp>
#if defined(LIBMAUS2_HAVE_GNUTLS)
=====================================
src/libmaus2/network/HttpHeader.hpp
=====================================
@@ -22,7 +22,7 @@
#include <libmaus2/LibMausConfig.hpp>
#include <libmaus2/network/HttpAbsoluteUrl.hpp>
-#include <libmaus2/network/Socket.hpp>
+#include <libmaus2/network/ClientSocket.hpp>
#include <libmaus2/network/GnuTLSSocket.hpp>
#include <libmaus2/network/SocketInputStream.hpp>
#include <libmaus2/util/stringFunctions.hpp>
=====================================
src/libmaus2/network/ServerSocket.hpp
=====================================
@@ -0,0 +1,229 @@
+/*
+ libmaus2
+ Copyright (C) 2009-2019 German Tischler
+ Copyright (C) 2011-2013 Genome Research Limited
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+#if ! defined(LIBMAUS2_SERVERSOCKET_HPP)
+#define LIBMAUS2_SERVERSOCKET_HPP
+
+#include <libmaus2/network/SocketBase.hpp>
+
+namespace libmaus2
+{
+ namespace network
+ {
+ struct ServerSocket : public SocketBase
+ {
+ typedef ServerSocket this_type;
+ typedef ::libmaus2::util::unique_ptr<this_type>::type unique_ptr_type;
+
+ sockaddr_in recadr;
+
+ unsigned short getPort() const
+ {
+ return ntohs(recadr.sin_port);
+ }
+
+ static unique_ptr_type allocateServerSocket(
+ unsigned short & port,
+ unsigned int const backlog,
+ std::string const & hostname,
+ unsigned int tries)
+ {
+ unique_ptr_type ptr(allocateServerSocket(port,backlog,hostname.c_str(),tries));
+ return ptr;
+ }
+
+ static unique_ptr_type allocateServerSocket(
+ unsigned short & port,
+ unsigned int const backlog,
+ char const * hostname,
+ unsigned int tries)
+ {
+ for ( unsigned int i = 0; i < tries; ++i )
+ {
+ try
+ {
+ return unique_ptr_type ( new this_type(port,backlog,hostname) );
+ }
+ catch(std::exception const & ex)
+ {
+ // std::cerr << ex.what() << std::endl;
+ port++;
+ }
+ }
+
+ ::libmaus2::exception::LibMausException ex;
+ ex.getStream() << "Failed to allocate ServerSocket (no ports available)";
+ ex.finish();
+ throw ex;
+ }
+
+ ServerSocket(unsigned short rport, unsigned int backlog, char const * hostname)
+ : SocketBase()
+ {
+ memset(&recadr,0,sizeof(recadr));
+
+ setAddress(hostname, recadr);
+ recadr.sin_port = htons(rport);
+
+ while ( ::bind ( getFD(), reinterpret_cast<struct sockaddr *>(&recadr), sizeof(recadr) ) != 0 )
+ {
+ int const error = errno;
+
+ switch ( error )
+ {
+ case EINTR:
+ case EAGAIN:
+ break;
+ case EADDRINUSE:
+ throw std::runtime_error("bind: address is already in use.");
+ default:
+ {
+ ::libmaus2::exception::LibMausException se;
+ se.getStream() << "ServerSocket: bind() failed with error " << strerror(error) << std::endl;
+ se.finish();
+ throw se;
+ }
+ }
+ }
+
+ while ( ::listen ( getFD(), backlog ) != 0 )
+ {
+ int const error = errno;
+
+ switch ( error )
+ {
+ case EINTR:
+ case EAGAIN:
+ break;
+ default:
+ {
+ ::libmaus2::exception::LibMausException se;
+ se.getStream() << "ServerSocket: listen() failed with error " << strerror(error) << std::endl;
+ se.finish();
+ throw se;
+ }
+ }
+ }
+ }
+
+ ~ServerSocket()
+ {
+ }
+
+ SocketBase::unique_ptr_type accept()
+ {
+ sockaddr_in aadr;
+
+ #if defined(LIBMAUS2_HAVE_SOCKLEN_T)
+ socklen_t
+ #else
+ int
+ #endif
+ len = sizeof(aadr);
+
+ int accfd;
+
+ while ( (accfd = ::accept(getFD(),reinterpret_cast<struct sockaddr *>(&aadr),&len)) < 0 )
+ {
+ int const error = errno;
+
+ switch ( error )
+ {
+ case EINTR:
+ case EAGAIN:
+ break;
+ default:
+ {
+ ::libmaus2::exception::LibMausException se;
+ se.getStream() << "ServerSocket::accept: accept() failed with error " << strerror(errno) << std::endl;
+ se.finish();
+ throw se;
+ }
+ }
+ }
+
+ try
+ {
+ SocketBase::unique_ptr_type ptr(new SocketBase(accfd,&aadr));
+ return ptr;
+ }
+ catch(...)
+ {
+ ::close(accfd);
+ throw;
+ }
+ }
+
+ SocketBase::shared_ptr_type acceptShared()
+ {
+ SocketBase::unique_ptr_type uptr(accept());
+ SocketBase * ptr = uptr.release();
+ SocketBase::shared_ptr_type sptr(ptr);
+ return sptr;
+ }
+
+ bool waitForConnection(unsigned int const t)
+ {
+ int r = -1;
+
+ while ( r < 0 )
+ {
+ fd_set fds;
+ FD_ZERO(&fds);
+ FD_SET(getFD(),&fds);
+ struct timeval timeout = {
+ static_cast<long>(t),
+ static_cast<long>(0)
+ };
+
+ r = ::select(getFD()+1,&fds,0,0,&timeout);
+
+ if ( r < 0 )
+ {
+ int const error = errno;
+
+ switch ( error )
+ {
+ case EINTR:
+ case EAGAIN:
+ break;
+ default:
+ {
+ ::libmaus2::exception::LibMausException se;
+ se.getStream() << "ServerSocket::waitForConnection: select failed on socket with error " << strerror(error) << std::endl;
+ se.finish();
+ throw se;
+ }
+ }
+ }
+ }
+
+ if ( r == 0 )
+ {
+ return false;
+ }
+ else
+ {
+ assert ( r > 0 );
+ return true;
+ }
+ }
+ };
+ }
+}
+#endif
=====================================
src/libmaus2/network/Socket.hpp → src/libmaus2/network/SocketBase.hpp
=====================================
@@ -1,6 +1,6 @@
/*
libmaus2
- Copyright (C) 2009-2013 German Tischler
+ Copyright (C) 2009-2019 German Tischler
Copyright (C) 2011-2013 Genome Research Limited
This program is free software: you can redistribute it and/or modify
@@ -16,9 +16,10 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#if ! defined(LIBMAUS2_SOCKETBASE_HPP)
+#define LIBMAUS2_SOCKETBASE_HPP
-#if ! defined(LIBMAUS2_SOCKET_HPP)
-#define LIBMAUS2_SOCKET_HPP
+#include <libmaus2/LibMausWindows.hpp>
#if defined(LIBMAUAS2_HAVE_UNISTD_H)
#include <unistd.h>
@@ -48,7 +49,9 @@
#include <sys/ioctl.h>
#endif
+#if defined(LIBMAUS2_HAVE_LIBGEN_H)
#include <libgen.h>
+#endif
#if defined(LIBMAUS2_HAVE_NETDB_H)
#include <netdb.h>
@@ -66,27 +69,20 @@
#include <sys/resource.h>
#endif
-#include <libmaus2/LibMausWindows.hpp>
-
+#include <cerrno>
#include <climits>
#include <cstdlib>
#include <cstring>
-#include <cerrno>
#include <iostream>
#include <set>
+#include <stdexcept>
#include <libmaus2/exception/LibMausException.hpp>
-#include <libmaus2/util/unique_ptr.hpp>
-#include <libmaus2/util/shared_ptr.hpp>
#include <libmaus2/network/GetHostName.hpp>
#include <libmaus2/network/SocketInputOutputInterface.hpp>
-#include <stdexcept>
-
#include <libmaus2/posix/PosixFunctions.hpp>
-
-#if defined(__APPLE__)
-#include <netinet/tcp.h>
-#endif
+#include <libmaus2/util/unique_ptr.hpp>
+#include <libmaus2/util/shared_ptr.hpp>
namespace libmaus2
{
@@ -111,7 +107,7 @@ namespace libmaus2
{
if ( fd != -1 )
{
- close(fd);
+ ::close(fd);
fd = -1;
}
}
@@ -140,25 +136,31 @@ namespace libmaus2
{
while ( len )
{
- ::libmaus2::ssize_t wr = ::libmaus2::posix::PosixFunctions::write ( fd, data, len );
+ ::libmaus2::ssize_t const wr = ::libmaus2::posix::PosixFunctions::write ( fd, data, len );
if ( wr < 0 )
{
- if ( errno == EINTR )
- {
- std::cerr << "write interrupted by signal." << std::endl;
- }
- else
+ int const error = errno;
+
+ switch ( error )
{
- ::libmaus2::exception::LibMausException se;
- se.getStream() << "SocketBase::write() to " << getStringAddr() << " failed: " << strerror(errno);
- se.finish();
- throw se;
+ case EINTR:
+ case EAGAIN:
+ break;
+ default:
+ {
+ ::libmaus2::exception::LibMausException se;
+ se.getStream() << "SocketBase::write() to " << getStringAddr() << " failed: " << strerror(errno);
+ se.finish();
+ throw se;
+ }
}
}
-
- data += wr;
- len -= wr;
+ else
+ {
+ data += wr;
+ len -= wr;
+ }
}
}
@@ -176,13 +178,27 @@ namespace libmaus2
data += red;
len -= red;
}
- else if ( red < 0 && errno == EINTR )
+ else if ( red == 0 )
{
- std::cerr << "read interrupted by signal." << std::endl;
+ len = 0;
}
else
{
- len = 0;
+ int const error = errno;
+
+ switch ( error )
+ {
+ case EINTR:
+ case EAGAIN:
+ break;
+ default:
+ {
+ ::libmaus2::exception::LibMausException se;
+ se.getStream() << "SocketBase::read() to " << getStringAddr() << " failed: " << strerror(errno);
+ se.finish();
+ throw se;
+ }
+ }
}
}
@@ -203,13 +219,27 @@ namespace libmaus2
data += red;
len -= red;
}
- else if ( red < 0 && errno == EINTR )
+ else if ( red == 0 )
{
- std::cerr << "read interrupted by signal." << std::endl;
+ len = 0;
}
else
{
- len = 0;
+ int const error = errno;
+
+ switch ( error )
+ {
+ case EINTR:
+ case EAGAIN:
+ break;
+ default:
+ {
+ ::libmaus2::exception::LibMausException se;
+ se.getStream() << "SocketBase::readPart() to " << getStringAddr() << " failed: " << strerror(errno);
+ se.finish();
+ throw se;
+ }
+ }
}
}
@@ -349,16 +379,6 @@ namespace libmaus2
cleanup();
}
- bool hasData()
- {
- fd_set readfds;
- FD_ZERO(&readfds);
- FD_SET(fd,&readfds);
- struct timeval tv = { 0,0 };
- int selok = ::select(fd+1,&readfds,0,0,&tv);
- return selok > 0;
- }
-
int getFD() const
{
return fd;
@@ -372,204 +392,6 @@ namespace libmaus2
}
};
-
- struct ClientSocket : public SocketBase
- {
- typedef ClientSocket this_type;
- typedef ::libmaus2::util::unique_ptr<this_type>::type unique_ptr_type;
-
- ClientSocket(unsigned short port, char const * hostname)
- : SocketBase()
- {
- setAddress(hostname, remaddr);
- remaddr.sin_port = htons(port);
- remaddrset = true;
-
- if ( connect(getFD(),reinterpret_cast<const sockaddr *>(&remaddr),sizeof(remaddr)) != 0 )
- {
- ::libmaus2::exception::LibMausException se;
- se.getStream() << "connect() failed: " << strerror(errno);
- se.finish();
- throw se;
- }
- }
-
- static SocketBase::unique_ptr_type baseCast(ClientSocket::unique_ptr_type & C)
- {
- int const fd = C->getFD();
- C->releaseFD();
-
- try
- {
- SocketBase::unique_ptr_type ptr ( new SocketBase(fd) );
- return ptr;
- }
- catch(...)
- {
- close(fd);
- throw;
- }
- }
-
- static SocketBase::unique_ptr_type baseAlloc(unsigned short const port, char const * const hostname)
- {
- ClientSocket::unique_ptr_type ptr ( new ClientSocket(port,hostname) );
- SocketBase::unique_ptr_type baseptr = baseCast(ptr);
- return baseptr;
- }
-
- static SocketBase::unique_ptr_type baseAlloc(unsigned short const port, std::string const & hostname)
- {
-
- SocketBase::unique_ptr_type baseptr = baseAlloc(port,hostname.c_str());
- return baseptr;
- }
- };
-
- struct ServerSocket : public SocketBase
- {
- typedef ServerSocket this_type;
- typedef ::libmaus2::util::unique_ptr<this_type>::type unique_ptr_type;
-
- sockaddr_in recadr;
-
- unsigned short getPort() const
- {
- return ntohs(recadr.sin_port);
- }
-
- static unique_ptr_type allocateServerSocket(
- unsigned short & port,
- unsigned int const backlog,
- std::string const & hostname,
- unsigned int tries)
- {
- unique_ptr_type ptr(allocateServerSocket(port,backlog,hostname.c_str(),tries));
- return ptr;
- }
-
- static unique_ptr_type allocateServerSocket(
- unsigned short & port,
- unsigned int const backlog,
- char const * hostname,
- unsigned int tries)
- {
- for ( unsigned int i = 0; i < tries; ++i )
- {
- try
- {
- return unique_ptr_type ( new this_type(port,backlog,hostname) );
- }
- catch(std::exception const & ex)
- {
- // std::cerr << ex.what() << std::endl;
- port++;
- }
- }
-
- ::libmaus2::exception::LibMausException ex;
- ex.getStream() << "Failed to allocate ServerSocket (no ports available)";
- ex.finish();
- throw ex;
- }
-
- ServerSocket(unsigned short rport, unsigned int backlog, char const * hostname)
- : SocketBase()
- {
- memset(&recadr,0,sizeof(recadr));
-
- setAddress(hostname, recadr);
- recadr.sin_port = htons(rport);
-
- if ( bind ( getFD(), reinterpret_cast<struct sockaddr *>(&recadr), sizeof(recadr) ) != 0 )
- {
- if ( errno == EADDRINUSE )
- throw std::runtime_error("bind: address is already in use.");
-
- // cleanup();
- ::libmaus2::exception::LibMausException se;
- se.getStream() << "bind() failed: " << strerror(errno);
- se.finish();
- throw se;
- }
-
- if ( listen ( getFD(), backlog ) != 0 )
- {
- // cleanup();
- ::libmaus2::exception::LibMausException se;
- se.getStream() << "listen() failed: " << strerror(errno);
- se.finish();
- throw se;
- }
- }
-
- ~ServerSocket()
- {
- }
-
- SocketBase::unique_ptr_type accept()
- {
- sockaddr_in aadr;
-
- #if defined(LIBMAUS2_HAVE_SOCKLEN_T)
- socklen_t
- #else
- int
- #endif
- len = sizeof(aadr);
-
- int afd = ::accept(getFD(),reinterpret_cast<struct sockaddr *>(&aadr),&len);
-
- if ( afd < 0 )
- {
- ::libmaus2::exception::LibMausException se;
- se.getStream() << "accept() failed: " << strerror(errno);
- se.finish();
- throw se;
- }
- else
- {
- return SocketBase::unique_ptr_type(new SocketBase(afd,&aadr));
- }
- }
-
- SocketBase::shared_ptr_type acceptShared()
- {
- SocketBase::unique_ptr_type uptr(accept());
- SocketBase * ptr = uptr.release();
- SocketBase::shared_ptr_type sptr(ptr);
- return sptr;
- }
-
- bool waitForConnection(unsigned int const t)
- {
- fd_set fds;
- FD_ZERO(&fds);
- FD_SET(getFD(),&fds);
- struct timeval timeout = {
- static_cast<long>(t),
- static_cast<long>(0)
- };
-
- int const r = ::select(getFD()+1,&fds,0,0,&timeout);
-
- if ( r < 0 )
- {
- ::libmaus2::exception::LibMausException se;
- se.getStream() << "select failed on socket." << std::endl;
- se.finish();
- throw se;
- }
- else if ( r == 0 )
- {
- return false;
- }
- else
- {
- return true;
- }
- }
- };
}
}
#endif
=====================================
src/libmaus2/network/SocketInputStreamBuffer.hpp
=====================================
@@ -21,7 +21,7 @@
#include <streambuf>
#include <istream>
-#include <libmaus2/network/Socket.hpp>
+#include <libmaus2/network/SocketInputOutputInterface.hpp>
namespace libmaus2
{
=====================================
src/libmaus2/rank/ImpCacheLineRank.hpp
=====================================
@@ -25,7 +25,6 @@
#include <libmaus2/select/ESelectBase.hpp>
#include <libmaus2/bitio/getBit.hpp>
#include <libmaus2/aio/SynchronousGenericOutput.hpp>
-#include <libmaus2/network/Socket.hpp>
namespace libmaus2
{
=====================================
src/libmaus2/suffixsort/SkewSuffixSort.hpp
=====================================
@@ -23,7 +23,6 @@
#include <libmaus2/autoarray/AutoArray.hpp>
#include <libmaus2/aio/SynchronousGenericInput.hpp>
#include <libmaus2/aio/SynchronousGenericOutput.hpp>
-#include <libmaus2/aio/OutputBuffer8.hpp>
#include <libmaus2/util/GetFileSize.hpp>
#include <limits>
=====================================
src/test/testfqbgzf.cpp
=====================================
@@ -21,8 +21,6 @@
#include <libmaus2/lz/BgzfDeflateParallel.hpp>
#include <libmaus2/util/TempFileRemovalContainer.hpp>
#include <libmaus2/fastx/StreamFastQReader.hpp>
-#include <libmaus2/network/Socket.hpp>
-#include <libmaus2/network/SocketInputStream.hpp>
struct PatternBuffer : public libmaus2::util::PushBuffer<libmaus2::fastx::StreamFastQReader::pattern_type>
{
=====================================
src/test/testparallelbamblocksort.cpp
=====================================
@@ -88,6 +88,7 @@ int parallelbamblocksort(libmaus2::util::ArgInfo const & arginfo,
int const templevel = arginfo.getValue<int>("level",1);
std::string const hash = arginfo.getValue<std::string>("hash","crc32prod");
std::string const filehash = arginfo.getValue<std::string>("filehash","md5");
+ uint64_t const fragmergepar = arginfo.getValue<uint64_t>("fragmergepar",numlogcpus);
std::string const sinputformat = arginfo.getUnparsedValue("inputformat","bam");
libmaus2::bambam::parallel::BlockSortControlBase::block_sort_control_input_enum inform = libmaus2::bambam::parallel::BlockSortControlBase::block_sort_control_input_bam;
@@ -111,7 +112,7 @@ int parallelbamblocksort(libmaus2::util::ArgInfo const & arginfo,
libmaus2::parallel::SimpleThreadPool STP(numlogcpus);
typename libmaus2::bambam::parallel::BlockSortControl<order_type,create_dup_mark_info>::unique_ptr_type VC(
new libmaus2::bambam::parallel::BlockSortControl<order_type,create_dup_mark_info>(
- inform,STP,in,templevel,tmpfilebase,hash,fixmates,dupmarksupport
+ inform,STP,in,templevel,fragmergepar,tmpfilebase,hash,fixmates,dupmarksupport
)
);
VC->enqueReadPackage();
View it on GitLab: https://salsa.debian.org/med-team/libmaus2/commit/f9353a7e6bc7ae75a85377db3005b6f5e171c109
--
View it on GitLab: https://salsa.debian.org/med-team/libmaus2/commit/f9353a7e6bc7ae75a85377db3005b6f5e171c109
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20190819/63ffdf75/attachment-0001.html>
More information about the debian-med-commit
mailing list