[med-svn] [ngs-sdk] 01/05: Imported Upstream version 1.2.4
Andreas Tille
tille at debian.org
Mon Jun 6 10:55:54 UTC 2016
This is an automated email from the git hooks/post-receive script.
tille pushed a commit to branch master
in repository ngs-sdk.
commit 97eabb44a9bb4ed84d62afc5ba9d77d3ad6ac91e
Author: Andreas Tille <tille at debian.org>
Date: Mon Jun 6 12:41:32 2016 +0200
Imported Upstream version 1.2.4
---
.gitignore | 9 +
Makefile => CHANGES | 56 +-
CHANGES.md | 16 +
Makefile | 1 -
configure | 2 +-
ngs-bam/setup/install.perl | 5 +-
ngs-bam/setup/package.prl | 2 +-
ngs-java/Makefile.java | 17 +-
ngs-java/build.xml | 30 +-
ngs-java/examples/Makefile | 17 +-
ngs-java/examples/examples/DumpReferenceFASTA.java | 132 +++
ngs-java/examples/expected.txt | 531 +++++++++
ngs-java/gov/nih/nlm/ncbi/ngs/DownloadManager.java | 143 +++
ngs-java/gov/nih/nlm/ncbi/ngs/LMProperties.java | 202 ++++
.../gov/nih/nlm/ncbi/ngs/LibDependencies.java | 12 +-
ngs-java/gov/nih/nlm/ncbi/ngs/LibManager.java | 1136 +++++++-------------
ngs-java/gov/nih/nlm/ncbi/ngs/LibPathIterator.java | 32 +-
.../gov/nih/nlm/ncbi/ngs/LibVersionChecker.java | 206 ++++
ngs-java/gov/nih/nlm/ncbi/ngs/Logger.java | 21 +-
ngs-java/gov/nih/nlm/ncbi/ngs/Manager.java | 20 +-
ngs-java/gov/nih/nlm/ncbi/ngs/NGS.java | 12 +
ngs-java/gov/nih/nlm/ncbi/ngs/Version.java | 16 +-
.../ngs/error/LibraryIncompatibleVersionError.java | 54 +-
.../nih/nlm/ncbi/ngs/error/LibraryLoadError.java | 80 ++
.../nlm/ncbi/ngs/error/LibraryNotFoundError.java | 26 +-
.../ngs/error/cause/ConnectionProblemCause.java | 27 +-
.../ngs/error/cause/DownloadDisabledCause.java | 27 +-
.../ncbi/ngs/error/cause/InvalidLibraryCause.java | 29 +-
.../nlm/ncbi/ngs/error/cause/JvmErrorCause.java | 29 +-
.../nlm/ncbi/ngs/error/cause/LibraryLoadCause.java | 14 +-
.../nlm/ncbi/ngs/error/cause/OutdatedJarCause.java | 16 +-
.../ngs/error/cause/PrereleaseReqLibCause.java | 27 +-
.../ncbi/ngs/error/cause/UnsupportedArchCause.java | 28 +-
ngs-java/ngs/ReadCollection.java | 2 +
ngs-java/setup/package.prl | 2 +-
ngs-python/build.xml | 19 +-
ngs-python/examples/AlignSliceTest.py | 3 +
ngs-python/examples/AlignSliceTest26.py | 3 +
ngs-python/examples/AlignTest.py | 3 +
ngs-python/examples/AlignTest26.py | 3 +
.../{AlignTest.py => DumpReferenceFASTA.py} | 76 +-
ngs-python/examples/FragTest.py | 3 +
ngs-python/examples/FragTest26.py | 3 +
ngs-python/examples/PileupTest.py | 3 +
ngs-python/examples/PileupTest26.py | 3 +
ngs-python/examples/RefTest.py | 3 +
ngs-python/examples/RefTest26.py | 3 +
ngs-python/ngs/Alignment.py | 2 +-
ngs-python/ngs/LibManager.py | 2 +-
ngs-python/ngs/Pileup.py | 2 +-
ngs-python/ngs/PileupEvent.py | 4 +-
ngs-python/ngs/ReadCollection.py | 14 +-
ngs-python/ngs/Refcount.py | 27 +-
ngs-python/ngs/Reference.py | 2 +-
ngs-python/ngs/Statistics.py | 2 +-
ngs-python/setup/package.prl | 2 +-
ngs-sdk/dispatch/PackageItf.cpp | 7 +
ngs-sdk/dispatch/version.h | 2 +-
ngs-sdk/examples/DumpReferenceFASTA.cpp | 5 +-
ngs-sdk/examples/Makefile | 104 +-
ngs-sdk/examples/expected.txt | 531 +++++++++
ngs-sdk/language/c++/ReferenceSequence.cpp | 12 +-
ngs-sdk/language/python/Makefile | 1 -
.../language/python/py_AlignmentIteratorItf.cpp | 26 +-
ngs-sdk/language/python/py_AlignmentItf.cpp | 621 ++++++++++-
ngs-sdk/language/python/py_ErrorMsg.cpp | 27 -
ngs-sdk/language/python/py_ErrorMsg.hpp | 307 ------
ngs-sdk/language/python/py_FragmentIteratorItf.cpp | 26 +-
ngs-sdk/language/python/py_FragmentItf.cpp | 135 ++-
.../language/python/py_PileupEventIteratorItf.cpp | 26 +-
ngs-sdk/language/python/py_PileupEventItf.cpp | 324 +++++-
ngs-sdk/language/python/py_PileupIteratorItf.cpp | 26 +-
ngs-sdk/language/python/py_PileupItf.cpp | 108 +-
ngs-sdk/language/python/py_ReadCollectionItf.cpp | 405 ++++++-
.../language/python/py_ReadGroupIteratorItf.cpp | 26 +-
ngs-sdk/language/python/py_ReadGroupItf.cpp | 54 +-
ngs-sdk/language/python/py_ReadIteratorItf.cpp | 26 +-
ngs-sdk/language/python/py_ReadItf.cpp | 216 +++-
.../language/python/py_ReferenceIteratorItf.cpp | 26 +-
ngs-sdk/language/python/py_ReferenceItf.cpp | 378 ++++++-
.../language/python/py_ReferenceSequenceItf.cpp | 135 ++-
ngs-sdk/language/python/py_StatisticsItf.cpp | 162 ++-
ngs-sdk/language/python/py_StringItf.cpp | 27 +-
ngs-sdk/{ => ngs}/win/stdbool.h | 0
ngs-sdk/setup/package.prl | 2 +-
ngs-sdk/win/.gitignore | 1 -
ngs-sdk/win/build.xml | 67 ++
ngs-sdk/win/libadapter.files | 35 +
ngs-sdk/win/libadapter.vcxproj | 64 --
ngs-sdk/win/libdispatch.files | 54 +
ngs-sdk/win/libdispatch.vcxproj | 84 --
ngs-sdk/win/libngs-c++.files | 23 +
ngs-sdk/win/libngs-c++.vcxproj | 53 -
ngs-sdk/win/libtest_engine.files | 18 +
ngs-sdk/win/libtest_engine.vcxproj | 42 -
ngs-sdk/win/ngs-sdk.files | 79 ++
ngs-sdk/win/ngs-sdk.vcxproj | 124 ---
ngs-sdk/win/ngs-test.files | 6 +
ngs-sdk/win/vs2010/.gitignore | 4 +
.../libngs-adapt-c++-4ff9a6f5.ipch | Bin 0 -> 524288 bytes
ngs-sdk/win/{ => vs2010}/lib-project.props | 7 +
ngs-sdk/win/vs2010/libadapter.vcxproj | 27 +
.../win/{ => vs2010}/libadapter.vcxproj.filters | 0
ngs-sdk/win/vs2010/libdispatch.vcxproj | 27 +
.../win/{ => vs2010}/libdispatch.vcxproj.filters | 0
ngs-sdk/win/vs2010/libngs-c++.vcxproj | 27 +
.../win/{ => vs2010}/libngs-c++.vcxproj.filters | 0
ngs-sdk/win/vs2010/libtest_engine.vcxproj | 26 +
.../{ => vs2010}/libtest_engine.vcxproj.filters | 0
ngs-sdk/win/{ => vs2010}/ngs-common.props | 21 +-
ngs-sdk/win/{ => vs2010}/ngs-sdk.sln | 0
ngs-sdk/win/vs2010/ngs-sdk.vcxproj | 55 +
ngs-sdk/win/{ => vs2010}/ngs-sdk.vcxproj.filters | 0
ngs-sdk/win/{ => vs2010}/ngs-test.vcxproj | 52 +-
ngs-sdk/win/{ => vs2010}/ngs-test.vcxproj.filters | 0
ngs-sdk/win/vs2013/.gitignore | 4 +
ngs-sdk/win/{ => vs2013}/lib-project.props | 7 +
ngs-sdk/win/vs2013/libadapter.vcxproj | 9 +
.../win/{ => vs2013}/libadapter.vcxproj.filters | 200 ++--
ngs-sdk/win/vs2013/libdispatch.vcxproj | 9 +
.../win/{ => vs2013}/libdispatch.vcxproj.filters | 0
ngs-sdk/win/vs2013/libngs-c++.vcxproj | 9 +
.../win/{ => vs2013}/libngs-c++.vcxproj.filters | 0
ngs-sdk/win/vs2013/libtest_engine.vcxproj | 8 +
.../{ => vs2013}/libtest_engine.vcxproj.filters | 98 +-
ngs-sdk/win/{ => vs2013}/ngs-common.props | 44 +-
ngs-sdk/win/{ => vs2013}/ngs-sdk.sln | 250 ++---
ngs-sdk/win/vs2013/ngs-sdk.vcxproj | 37 +
ngs-sdk/win/{ => vs2013}/ngs-sdk.vcxproj.filters | 486 ++++-----
ngs-sdk/win/{ => vs2013}/ngs-test.vcxproj | 36 +-
ngs-sdk/win/{ => vs2013}/ngs-test.vcxproj.filters | 34 +-
131 files changed, 6527 insertions(+), 2506 deletions(-)
diff --git a/.gitignore b/.gitignore
index 999e61d..917c802 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,12 @@
\#*
.\#*
._*
+
+*.suo
+OUTDIR
+*.ipch
+
+/.cproject
+/.project
+/.pydevproject
+.idea/
diff --git a/Makefile b/CHANGES
similarity index 52%
copy from Makefile
copy to CHANGES
index 222ca76..72dafdf 100644
--- a/Makefile
+++ b/CHANGES
@@ -22,43 +22,21 @@
#
# ===========================================================================
-# default response to "make"
-default: subdirs
-# the sub-directories
-SUBDIRS = \
- ngs-sdk \
- ngs-java \
- ngs-python \
- ngs-bam
-
-SUBDIRS_CLN = \
- $(addsuffix _cln,$(SUBDIRS))
-
-SUBDIRS_INST = \
- $(addsuffix _inst,$(SUBDIRS))
-
-SUBDIRS_TST = \
- $(addsuffix _test,$(SUBDIRS))
-
-subdirs: $(SUBDIRS)
-
-clean: $(SUBDIRS_CLN)
-
-test: $(SUBDIRS_TST)
-
-install: $(SUBDIRS_INST)
-
-$(SUBDIRS):
- @ $(MAKE) -C $@
-
-$(SUBDIRS_CLN):
- @ $(MAKE) -C $(subst _cln,,$@) clean
-
-$(SUBDIRS_INST):
- @ $(MAKE) -s --no-print-directory -C $(subst _inst,,$@) install
-
-$(SUBDIRS_TST):
- @ $(MAKE) -C $(subst _test,,$@) test
-
-.PHONY: $(SUBDIRS) $(SUBDIRS_CLN) $(SUBDIRS_INST)
+The NCBI NGS Software Development Kit
+Contact: sra-tools at ncbi.nlm.nih.gov
+
+NCBI External Developer Release: NGS SDK 1.2.4
+May 25, 2016
+
+ build: MSVS 2013 toolset (12.0) is now supported across all repositories
+ doc, ngs: updated javadoc to include throws and other missing tags
+ examples, ngs: added DumpReferenceFASTA.py example
+ htsjdk: added code to HTS-JDK to avoid involving NGS unless we are sure that it is being requested
+ ngs, ngs-engine: Added filtering to NGS of secondary alignments that do not have primary alignments
+ ngs, test: ngs-python: fixed bug in String processing for Python 3.*
+ ngs-engine: ncbi-ngs engine was updated: fixed a bug that made NGS read iterator return 0 reads on WGS accessions.
+ ngs: Improved native library load in ngs-java, enhanced its error reporting and added a mode to disable auto-download of native libraries
+ ngs: Python code will check for the latest version of the libraries and update if newer ones are available
+ ngs: check for the latest version of the libraries and update if newer ones are available
+ ngs: simplified ngs-python bindings
diff --git a/CHANGES.md b/CHANGES.md
new file mode 100644
index 0000000..e33438f
--- /dev/null
+++ b/CHANGES.md
@@ -0,0 +1,16 @@
+# NCBI External Developer Release:
+
+## NGS SDK 1.2.4
+**May 25, 2016**
+
+ **build**: MSVS 2013 toolset (12.0) is now supported across all repositories
+ **doc, ngs**: updated javadoc to include throws and other missing tags
+ **examples, ngs**: added DumpReferenceFASTA.py example
+ **htsjdk**: added code to HTS-JDK to avoid involving NGS unless we are sure that it is being requested
+ **ngs, ngs-engine**: Added filtering to NGS of secondary alignments that do not have primary alignments
+ **ngs, test**: ngs-python: fixed bug in String processing for Python 3.*
+ **ngs-engine**: ncbi-ngs engine was updated: fixed a bug that made NGS read iterator return 0 reads on WGS accessions.
+ **ngs**: Improved native library load in ngs-java, enhanced its error reporting and added a mode to disable auto-download of native libraries
+ **ngs**: Python code will check for the latest version of the libraries and update if newer ones are available
+ **ngs**: check for the latest version of the libraries and update if newer ones are available
+ **ngs**: simplified ngs-python bindings
diff --git a/Makefile b/Makefile
index 222ca76..7321ef4 100644
--- a/Makefile
+++ b/Makefile
@@ -30,7 +30,6 @@ SUBDIRS = \
ngs-sdk \
ngs-java \
ngs-python \
- ngs-bam
SUBDIRS_CLN = \
$(addsuffix _cln,$(SUBDIRS))
diff --git a/configure b/configure
index 727531b..125e578 100755
--- a/configure
+++ b/configure
@@ -41,7 +41,7 @@ if [ "$FILENAME" != configure -a ! -s configure ]
echo configure: error: configure should be run as ./configure
else
cd $CURDIR
- for D in ngs-sdk ngs-java ngs-python ngs-bam
+ for D in ngs-sdk ngs-java ngs-python
do
if [ -d $D ]
then echo "CONFIGURING $D"
diff --git a/ngs-bam/setup/install.perl b/ngs-bam/setup/install.perl
index fa2bae6..4ca5c20 100644
--- a/ngs-bam/setup/install.perl
+++ b/ngs-bam/setup/install.perl
@@ -7,7 +7,10 @@ require 'install.prl';
use Config;
use Cwd "abs_path";
use File::Copy "copy";
-use File::Copy::Recursive qw(dircopy);
+
+#use File::Copy::Recursive qw(dircopy);
+#WILL FAIL IN FUNCTION TRYING TO USE dircopy - THEY ARE NOT CALLED IN ngs-bam
+
use File::Path "make_path";
use FindBin qw($Bin);
use Getopt::Long "GetOptions";
diff --git a/ngs-bam/setup/package.prl b/ngs-bam/setup/package.prl
index 7c01c26..30b6f30 100644
--- a/ngs-bam/setup/package.prl
+++ b/ngs-bam/setup/package.prl
@@ -1,6 +1,6 @@
################################################################################
sub PACKAGE { 'ngs-bam' }
-sub VERSION { '1.2.3' }
+sub VERSION { '1.2.4' }
sub PACKAGE_TYPE { 'L' }
sub PACKAGE_NAME { 'NGS-BAM' }
sub PACKAGE_NAMW { 'NGS_BAM' }
diff --git a/ngs-java/Makefile.java b/ngs-java/Makefile.java
index 0e0e89d..4c7e25d 100644
--- a/ngs-java/Makefile.java
+++ b/ngs-java/Makefile.java
@@ -190,14 +190,29 @@ $(CLSDIR)/ngs-java-itf: $(CLSDIR)/ngs-java-api $(ITF_SRC_PATH)
# NCBI engine bindings
NCBI_SRC = \
+ DownloadManager \
FileCreator \
- Logger \
HttpManager \
+ LibDependencies \
LibManager \
LibPathIterator \
+ LibVersionChecker \
+ LMProperties \
+ Logger \
Manager \
NGS \
Version \
+ error/LibraryLoadError \
+ error/LibraryNotFoundError \
+ error/LibraryIncompatibleVersionError \
+ error/cause/ConnectionProblemCause \
+ error/cause/DownloadDisabledCause \
+ error/cause/InvalidLibraryCause \
+ error/cause/JvmErrorCause \
+ error/cause/LibraryLoadCause \
+ error/cause/OutdatedJarCause \
+ error/cause/PrereleaseReqLibCause \
+ error/cause/UnsupportedArchCause \
NCBI_SRC_PATH = \
$(addprefix $(SRCDIR)/gov/nih/nlm/ncbi/ngs/,$(addsuffix .java,$(NCBI_SRC)))
diff --git a/ngs-java/build.xml b/ngs-java/build.xml
index e9310f3..6d5dc34 100644
--- a/ngs-java/build.xml
+++ b/ngs-java/build.xml
@@ -1,13 +1,20 @@
<project>
<!-- This file is currently for use on Windows; Linux/Mac builds are run via gmake -->
- <property environment="env"/>
- <property name="vdb.build" value="Debug" />
- <property name="vdb.platform" value="x64" />
- <property name="vdb.dir" value="${env.USERPROFILE}\win\cl\${vdb.platform}\${vdb.build}\bin" />
- <property name="build.dir" value="${env.USERPROFILE}\ncbi-outdir\ngs-java" />
+ <property name="Platform" value="x64" />
+ <property name="Configuration" value="Debug" />
+ <property name="Output" value="${basedir}\..\..\OUTDIR" />
+ <property name="MSVS" value="2013" />
- <property name="classes.dir" value="${build.dir}\cls" />
+ <condition property="PlatformToolset" value="v100" else="v120">
+ <equals arg1="${MSVS}" arg2="2010"/>
+ </condition>
+ <property name="vdb.dir" value="${Output}\ncbi-vdb\win\${PlatformToolset}\${Platform}\${Configuration}\bin" />
+ <property name="ngs.dir" value="${Output}\ngs-sdk\win\${PlatformToolset}\${Platform}\${Configuration}\bin" />
+
+ <property name="build.dir" value="${Output}\ngs-java" />
+
+ <property name="classes.dir" value="${build.dir}\cls" />
<target name="clean">
<delete dir="${build.dir}"/>
@@ -43,6 +50,9 @@
<jar destfile="${build.dir}\jar\ngs-examples.jar" basedir="${classes.dir}" includes="examples\**" />
</target>
+ <condition property="JVMbits" value="64" else="32">
+ <equals arg1="${Platform}" arg2="x64"/>
+ </condition>
<macrodef name="run-example">
<attribute name="class" />
@@ -53,11 +63,13 @@
<pathelement location="${build.dir}\jar\ngs-examples.jar" />
<pathelement location="${build.dir}\jar\ngs-java.jar" />
</classpath>
- <sysproperty key="java.library.path" path="${vdb.dir}" />
+ <sysproperty key="java.library.path" path="${vdb.dir};${ngs.dir}" />
<sysproperty key="vdb.System.loadLibrary" value="1" />
<sysproperty key="vdb.log" value="FINEST" />
+ <jvmarg value="-d${JVMbits}" />
<args />
</java>
+ <!-- TODO: use fc to diff output against expected -->
</sequential>
</macrodef>
@@ -104,4 +116,6 @@
</run-example>
</target>
-</project>
\ No newline at end of file
+ <target name="build" depends="jar"/>
+
+</project>
diff --git a/ngs-java/examples/Makefile b/ngs-java/examples/Makefile
index a4f916e..b56b848 100644
--- a/ngs-java/examples/Makefile
+++ b/ngs-java/examples/Makefile
@@ -25,6 +25,8 @@
default: std
+#DEBUGGING = -d
+
TARGETS = \
NGS-JavaTest.jar
@@ -36,18 +38,19 @@ clean:
.PHONY: default std $(TARGETS)
NGS_EXAMPLES = \
- PileupTest \
- AlignTest \
AlignSliceTest \
+ AlignTest \
+ DumpReferenceFASTA \
FragTest \
- RefTest \
+ PileupTest \
ReadGroupTest \
+ RefTest \
NGS_EXAMPLES_PATH = \
$(addprefix examples/,$(addsuffix .java,$(NGS_EXAMPLES)))
NGS-JavaTest.jar: $(NGS_EXAMPLES_PATH)
- javac $^ -d .
+ javac $(DEBUGGING) $^ -d .
( jar cf $@ `find examples -name "*.class"`; chmod -x,o-w $@ ) || ( rm -f $@ && false )
# ===========================================================================
@@ -70,6 +73,9 @@ run_frag: NGS-JavaTest.jar
run_align: NGS-JavaTest.jar
java $(JAVAFLAGS) examples.AlignTest ERR225922 10000 2 $(REDIRECT)
+run_dump: NGS-JavaTest.jar
+ java $(JAVAFLAGS) examples.DumpReferenceFASTA SRR520124 1 $(REDIRECT)
+
run_align_slice: NGS-JavaTest.jar
java $(JAVAFLAGS) examples.AlignSliceTest SRR1121656 1 1 9999 $(REDIRECT)
@@ -82,7 +88,8 @@ run_ref: NGS-JavaTest.jar
run_read_group: NGS-JavaTest.jar
java $(JAVAFLAGS) examples.ReadGroupTest SRR1121656 $(REDIRECT)
-ALL_TESTS = run_frag run_align run_align_slice run_pileup run_ref run_read_group
+ALL_TESTS = run_frag run_align run_align_slice \
+ run_pileup run_ref run_read_group run_dump
run_all: $(ALL_TESTS)
diff --git a/ngs-java/examples/examples/DumpReferenceFASTA.java b/ngs-java/examples/examples/DumpReferenceFASTA.java
new file mode 100644
index 0000000..d892b56
--- /dev/null
+++ b/ngs-java/examples/examples/DumpReferenceFASTA.java
@@ -0,0 +1,132 @@
+/*===========================================================================
+*
+* PUBLIC DOMAIN NOTICE
+* National Center for Biotechnology Information
+*
+* This software/database is a "United States Government Work" under the
+* terms of the United States Copyright Act. It was written as part of
+* the author's official duties as a United States Government employee and
+* thus cannot be copyrighted. This software/database is freely available
+* to the public for use. The National Library of Medicine and the U.S.
+* Government have not placed any restriction on its use or reproduction.
+*
+* Although all reasonable efforts have been taken to ensure the accuracy
+* and reliability of the software and data, the NLM and the U.S.
+* Government do not and cannot warrant the performance or results that
+* may be obtained by using this software or data. The NLM and the U.S.
+* Government disclaim all warranties, express or implied, including
+* warranties of performance, merchantability or fitness for any particular
+* purpose.
+*
+* Please cite the author in any work or product based on this material.
+*
+* ===========================================================================
+*
+*/
+
+
+package examples;
+
+
+import ngs.ErrorMsg;
+import ngs.ReadCollection;
+import ngs.Reference;
+import ngs.ReferenceIterator;
+
+
+public class DumpReferenceFASTA
+{
+ private static void process ( Reference ref )
+ throws ErrorMsg
+ {
+ long len = ref . getLength ();
+
+ int line = 0;
+
+ System.out.println ( ">" + ref . getCanonicalName () );
+ try
+ {
+ for ( long offset = 0; offset < len; offset += 5000 )
+ {
+ String chunk = ref . getReferenceChunk ( offset, 5000 );
+ int chunk_len = chunk . length ();
+ for ( int chunk_idx = 0; chunk_idx < chunk_len; )
+ {
+ int endIndex = chunk_idx + 70 - line;
+ if ( endIndex > chunk_len )
+ endIndex = chunk_len;
+ String chunk_line
+ = chunk . substring ( chunk_idx, endIndex );
+ line += chunk_line . length ();
+ chunk_idx += chunk_line . length ();
+
+ System.out.print ( chunk_line );
+ if ( line >= 70 )
+ {
+ System.out.println ();
+ line = 0;
+ }
+ }
+ }
+ }
+ catch ( ErrorMsg x )
+ {
+ }
+ }
+
+
+ private static void run ( ReadCollection run, String reference )
+ throws ErrorMsg
+ {
+ Reference ref = run . getReference ( reference );
+ process ( ref );
+ }
+
+
+ private static void run ( ReadCollection run )
+ throws ErrorMsg
+ {
+ ReferenceIterator refs = run . getReferences ();
+ while ( refs . nextReference () )
+ {
+ process ( refs );
+ System.out.println();
+ }
+ }
+
+ public static void main ( String [] args )
+ {
+ boolean failure = true;
+
+ if ( args.length < 1 || args.length > 2 )
+ {
+ System.out.print
+ ( "Usage: DumpReferenceFASTA accession [ reference ]\n" );
+ }
+ else try
+ {
+ String acc = args[0];
+ // open requested accession using SRA implementation of the API
+ ReadCollection run
+ = gov.nih.nlm.ncbi.ngs.NGS.openReadCollection ( acc );
+ if ( args.length == 2 )
+ run ( run, args[1] );
+ else
+ run ( run );
+ failure = false;
+ }
+ catch ( ErrorMsg x )
+ {
+ System.err.println ( x.toString () );
+ x.printStackTrace ();
+ }
+ catch ( Exception x )
+ {
+ System.err.println ( x.toString () );
+ x.printStackTrace ();
+ }
+
+ if ( failure)
+ System.exit ( 10 );
+ }
+}
diff --git a/ngs-java/examples/expected.txt b/ngs-java/examples/expected.txt
index a96757b..92a9151 100644
--- a/ngs-java/examples/expected.txt
+++ b/ngs-java/examples/expected.txt
@@ -113,3 +113,534 @@ Statistics for group <NA12891.unmapped.ILLUMINA.bwa.CEU.high_coverage.20120522>
SPOT_COUNT: 37468817
SPOT_MAX: 1211849353
SPOT_MIN: 1098855607
+>1
+AGGGGCCTGCCCGACGGGCGGGCCTTTCGGGGCGCAGGACGGCTGTCCGGGGTCTCCCCGGCCGCCTGCC
+TTGGGAGAGCTGCCGGATCCCCTTTTTTCCAGTCCCCTTACGGAGGTTTCCTCATGTGCCCCGCTTCGCG
+CCGTTCCCGGCCTGCCATCGACATGACCCTGATCGAGCGCCTGGACACGCTGGCCGGCGCCGCCATCGCG
+CGGCTGCCCGATGTGGCCTATCCGCTGATCACCAAGCTGACATCCGCCCGCCTGCTGGCCCCCGCCCGCC
+TGCCGTCCGACGTCGTCACCATCGGCAGCGAGGTGCTCTATCACGACGATCAGGGCGCGCGGGACCGGCG
+CGTGACCCTGTCCTGGCCCGAAGATGCCGACATCAGCCGCCGATCCGTGTCGATCCTGACCCCGGTGGGC
+GTGGCGCTGCTGGGCCTGTCGGCGGGCGACCGGTTCCAGTGGCAGACGCGGGCCGGAGAGCGGCGCAGCC
+TCACCGTGCTGCAGGTCGGGTCGGAGCCGCGGCCCGGGACGACCCCGGCCGCGCCGCGGCCCGGGCTGTC
+CTGAGCGCCGGGACGGGAGCCTACCATGTCGCATCGGAAGATCCCCCGCTACTGTGCCGGATGCGGCGCG
+GCCATTCCCCGGGCCGCCGCCGGACGCTGTCCCTTCTGCCGGGTCGAGTTCGCCCCGGCCGGGGGCGGCG
+CCCGGCCCCCCTCGCCGGGGGGGGCCGGCGATCCCTATCGGCCGCCCTGCCGGACGCGGCGGGGCCGCGC
+CGCCTCTGCCCGCGGGGCGGCCATGATCCGGCTGCGCCCGCTGATCGCGCCCGCGCTGCTGTTGCTCGGC
+ATCGCCGGCATCACCTTCGCGCAGGCCGAGGCGGGCCGGCGCTTCGGCATCGCGCCGCTCGGCCGGAATG
+GCCGGAACGCCCTGCAGATGGCGGCCTATCTCGGCCTCGCCTGGCTTCTCAGCCGGACCTTCGGCCAGCT
+GCTGGCCCGCCTGCGGCCGCAGAGCCGCCCGCTGCCGAAGCTGCTCGGCGATCTGGTCTCGGCCCTTCTG
+TTCCTGACGGCGATCGTCTCGGGGATCCTGCTCATCCTAGGCCACGGTGCCGGCAGCGCGCTGGCGGGGT
+CGGGGGTGGTGCTGGCCCTGTTCGGCTTCGCGATCCGCAATGTGGTGGCCGATACGCTCTCGGGGATCGC
+CTTGGGCCTCGAGGCGCCGTTCCGCATCGGCGACTGGGTCGATATCGAGGGGCTGGGCCGCGGCCGGGTG
+GTCGAGATCGGCTGGCGCACCACGCGGCTTCTGACGCGCGACTCGACCTATGTGATCCTGCCCAACAGCC
+AGGTCTCGCGGCAACGCATCGTCAACTACAGCGCGCCCCGGTCCGAGTTCCGGGCGCAGATGGAGATCAA
+GCTGGGACATGCCACCCCGGCAGCCGAAGGGGCGGACCTCCTGCATAAGGCGCTGCGGGAGGCGCCGCTG
+ATCCGCCAGTCGCCCGCGCCCGACGTGCGCATCCAGGCCATCGAGCCCGATGGGGTGCGGTATGCGCTGC
+GCTACTGGCTGGGCCGGTTCGATCACGAATGGGAGTGCCGCGATGCGATCTGGCGCGAGGTGGATGCGGC
+ACTCCGCCGGGCCGGGATCCCGCTGGCGCAGCCCCCCGTCGCCCTGCTCTGCGCCCGTGAGGGAGGCGCG
+ACACCGGGGGCAGGGATGCCGGCCGGCGTCCCCGTCGCCCTGCGCTGACGCCCGGGCAGACGGGCCCGTC
+GGGGGGCGGCGGCAAGACATGCGACCGGACCTCCTTGGCTCCTGCCTCCTCGAGCGCGGCCTGCACCGCC
+TCGAGCGTCTACAGGACCCGCGCGTGCCGGTCGCCCCGGGCACCGATCCAGGTGGCCCCGCGCGAGGTCT
+CGCGCCGGACGGCTTGGCATGGGCCCGCACATCGGCTAGGTCCGTCCCACTCGTCAGGACCCGGGTGCGA
+TCCCCGGGTGGCTCCTCCGGCCGCCGATCCGCCGGACAACCCACCAGCACCAGCAGGAACATCCGCCGGC
+GCGCAGGTCCGGGCCGGCGGGGAACGGGACATTCATGATTTCATTCGCCACCTATCGCCAGCAATGGCTG
+GGCCATGTGCGGGGCGACCTGCTCTCGGGGCTCGTCGTGGCGCTGGCCCTCATTCCCGAGGCCATCGCCT
+TCTCGATCATCGCGGGCGTCGATCCGAAGGTCGGGCTCTATGCCTCCTTCTCGATCGCCGTCGTCACCGC
+CATCGCGGGCGGACGGCCCGGGATGATCTCGGCCGCCACCGCGGCGACCGCCGTGCTGATGGTGACCCTC
+GTGCGCGACCACGGGCTCCAGTATCTGCTGGCCGCCACCGTGCTTGCGGGGCTGATCCAGATCGCGCTCG
+GGCTCCTGAAGCTCGGCTTCGTCATGCGCTATGTCTCGCGCTCGGTGATGACGGGCTTCGTCAATGCGCT
+GGCGATCCTGATCTTCCTTGCGCAATTGCCCGAGCTCGACCCGCGGGCCGTGCCGCCGCTGACCTATCTC
+CTCGTGGCGGCAGGCCTGGCCATCATCTATCTCTTCCCGCGCCTCACCCGCGCCGTGCCCTCGCCGCTCG
+TCACCATCATCGTGCTGACGGCGCTGACGCTCGGCCTCGGGCTCGACGTGCGGACGGTGGGCGACATGGG
+CGCGCTGCCCGACACGCTGCCCGTCTTCCTGATCCCGGACATTCCCCTGACCTTCGAGACGCTGCGGATC
+ATCCTGCCCCCGGCCACAGCCGTGGCGGTGGTGGGGCTTCTGGAAAGCCTGATGACGCAGACCCTCGTCG
+ACGAGCTGACCGACACCCGCTCGAGCCGCAATCAGGAATGTATCGGGCAGGGGCTGGCCAACGCCGCCAC
+CGGCTTCATCGGCGGCATGGCGGGCTGCGCCATGATCGGCCAGTCGATGATCAACGTGAAGTCGGGCGGG
+CGCGGGCGGCTGTCCTGCTTCGTGGCGGGCGTGTTCCTGCTGATCCTCGTCGTGGGGCTCGGCGATGTCG
+TCAGCCGGATCCCGATGGCCGCGCTCGTCGCCATCATGATCATGGTCTCGATCGGCACCTTCTCCTGGTC
+GTCCCTCAAGGCGCTGCGCACCCATCCCCGGTCCTCCTCCGTGGTGATGCTGGCGACGGTGGCGACCGTG
+GTCTGGACCCACAATCTGGCCTTGGGCGTCCTCGTGGGCGTGCTGCTCTCGGGGATCTTCTTCGCCGCCA
+AGATTGCGCAGCTCTTCGCGGTCAGCTCCGAACTCTCGGCCTGCGGGCGCGCGCGGACCTACCGGGTCGA
+GGGCCAGCTCTTCTACGGCTCGGTCGAGGATTTCATGGCCGCCTTCGACTTCCGCGAGCCGCTCGAGCGC
+GTCACCATCGACGTGAGCCGCGCCCATATCTGGGACATCTCTTCGGTGCAGGCGCTGGACATGGCGGTGC
+TGAAGTTCCGCCGCGAGGGGGCCGAGGTGCGGATCGTGGGCATGAACGAGGCCTCCGAGACTCTCGTCGA
+CCGGCTGGCCCTGCACGACAGGCCGGGGGCCCTGGACCGGCTCACGGCCCATTGAGAGGGAGGACGACAT
+GACCGACAGGATCATGGCACTGGTGGACGGCTCGGGCTTCTCGCGCAGCGTCTGCCTTCATGCGGCCTGG
+CTCGCGCAGAGGCTGGAGCTTCCGGTGGACCTGCTGCATGTGCTGGGCCGCCGCGAGGCCGCCGATCGGG
+GCGATCTGTCGGGCGCGCTGCAGCTCGGCGCCCGCACCGCCCTGCTCGAGGAACTGGCCGCGCTCGATGC
+CGAGCGGGCGCGGCTCGCGCAGGCGCAGGGGCGGGCGATCCTCGAGGATGCGCAGGCGATCCTGGCCGCC
+GAGAGCGTGGAGACCACGCCCCATCTGCGGCAGGGAGACCTGATCGACACGGTGGCCGGGTTCGAGCGCT
+CGGGGCGGGCGCTGGTGGTTGGCAAGCGCGGCAGGGCCGCGGGCTTCGCCAGCGCCCATCTCGGCTCCAA
+TCTCGAGCGCCTCCTGCGCGCCTCGAAGCTGCCGGTCCTCATCGTGCCCGCGGACTGCCGGCCGGTGCGC
+AAGGTGCTGGTGGCCCATGACGGCGGCAGAAGCGCCCGCGGGGCGATCGAGCGGATGGCGGCAAGCCCGG
+TCTTCCGCGGCCTTGCGATCACGCTGGCCTGCGCGGGCGGCGAGGAGGCCCGCGCGACGCTCGAGCGCGC
+CCGCGGCACGCTGCTGGCCGCGGGGCTGGCGGCCGAGACCTGCCTCCTGTCCGGCGCGCCCGAGGTGGCG
+CTCGAGCGGAAGATCGAGGCCGAGGGCTTCGACCTTCTGGTGATGGGCGCCTATGGCCACAGCCGCATCC
+GCACCCTGATCATCGGCTCGACCACCACCGCCCTGATCCGCGCCTGCACGGTCCCGATGCTCGTCTACCG
+CTGACCGGGGCGCGACAGGGCGGCCTGCCGTTTCTCGGCGGGCCGCCGGTCAGGCGCTCCCGGCCTTTCA
+AGCCATCGACCCGAAGAGGCTCCTATCCCGGAAAGAGGCGGGCCCGCCGGCCTACCCGGCCATCAGTCTG
+GACAGGCTCGGCCACTGGAACACCAGCACGCCGCCCATCACCGTCGCGGCCCCCAGCACCCGCCACAGAT
+CCAGTGGCTTCCCCGCCAGCCCCATCAGTCCGAACCTGTCGATCAGGAGCGAGGTGAGGAGCTGCCCCGC
+GACAACCGCGATCATGAAGCCCGCGGCACCCATCGTCGGCATCAGGAGGATCGCGCCGGTGACGTAGACT
+ATCCCCACCAGCCCGCCGATCCAGATCCAGGATGGCTGCGCCAGGGCCATGCCCAGATCCGGCACGGGCA
+CCCGCATGGCCAGCAGCACCGGCAGGATGCAGATCAGGCTGACCAGCAATGAGGCAACCGCAGCCCAGAG
+GGGATGCCCCAGCGCACGGCCGAGCGCGGCATTGGCGCCGCCCTGAAGCGGCACGAGCGCACCCGAGACG
+AGCGCGAGGCAGGACAGGACAAGCAGGGGCATTCCGATCTCCTTTTCTCTGCCGCCGGTATAGGCCCCGC
+ATCGGATGAATTTGAAATTCGACCTTGCTTCCCTATCATGCAGCATATGAATAATCTTCGTGCGGTCGAT
+CTGAACCTTCTTGTCGTGCTGGATGCCCTTCTGGCGGAGCGCCATCTGTCGCGGGCGGCGGCTCGGCTGA
+ACATGAGCCAGCCTGCGGTCAGCCATGCGCTCGCCCGGCTGCGGCATCTGCTGGGCGATCCGCTGTTCCG
+GCGCGAGGGCGGTCGGATGGTGCCCACGCTGCGCGCGCAGGCGCTGGCCCCGCCGCTGGCCGAGGCTCTT
+GCGCAGATCCGCAGCGTGCTCGGGCCCGATGCGTTTGACCCGGCCGCGCCGCATGTGTTTCGCCTGACCA
+TGTCGGATTACGGCGCGGGGCTGGTGTTGCCGGGCCTGATGCGGCAGCTGCGCCGGATCGCACCGGAGAT
+CCGGCTGGTGGTCACCCAGAAGAGCCGGGAGGCGATGATCGAGGCCGTGAGCGAAGGCGAGGCCGATCTT
+GCGCTCGGCGTCTTTCCCGGGCTGCCGCCGCAGCTCGAGGCGGAGCTCTTGCTGACCGACCGCTATATAT
+GCCTGCTGGACCCGGCCCATCAGCCCGTCCGGTCCGGCGGCCTGACTGCGGAAGCCTTCTGGTCGGCTCC
+GCATGCCCATGTGGCGGTGCAGGGTGACTTCACCACGGAAATCGATCTGCATCTGAAGGATCGGGGCGGT
+CCCCGGCGCCTTGCGCTGATCCTGCCGCACTGGAGCATCGCACCCAAGGTCATCGCCGGCACGGATCTGA
+TCCTGACCGTTGCCAGCCGTGCCGTGCCCGCAGCGCCGGAGCCGCTGATTGTCACGGCGCCCCCCGTTCC
+GTTGCCTCCGATCCCGTTCAGCGCGATCCACGCCAGACGCCGCAAGGCCGATCCGGCGCTCAGATGGCTG
+ATCGCCCGGCTGCGGGAGGTCGTTGGCGAAGAGGCGGGAACCGCCGTGGCATGAGCCGCGAAGAAGGCCC
+CGAACTCACGCCGAAGACGAGCTCGGCCGCGATCAGCGTCCGCCAGGCGAAGGCCCAGCCGATCTTGAGG
+CCGGTCAGGATGCTCGGGAAGGCCGCCGGGATCAGGATCTTGGTGATGAAGCCCCAGCCCTTCAGCCCGT
+AGTTATGTCGTCCTGCCGCCCCCGCGCCACGAGGGCCGGATAAGCGCGGGCTCGCCCTTCGCGCAGCTCC
+AGAAGGCGGGAATGCCGACTGCCATCATGGCCGACATTCAGCGCCAGAGAAACGAGGATGCCCGGGAAGC
+CGTGCTCCATGCCATCCGCGGCGAGGTGGCGCGGGCGTGGCTCGGATTGCACAGCTCCGTGCGCGAGCGG
+ACCGGGATTGTGGTTCTGACCAACCGCGTCCGGGGGAAGTGAATGCCGCGATCCGCGACGAGCTGAAGGG
+GGAACATCGGCTCGGCGCTCAGGATGTAACGGTCGCCAGTCTCACGCCGCTCTCGCTCACCCGCGCCGAA
+GCGCGCGAGGCGGCCAGCTACAAGGCTGGTGATGTGGTGATCTCGGTGCGCAGCGTAGAGGGGTTGGAGC
+GGGACAAACTCTACCGGGTTACATCCACCCTGGTCAACCTCGTCTCAAGGAGAGCTGCAGCCCGATCAGC
+AAGGCCTGCACTCTCTGTTCGCCCGCGCGAGGACAGTCAACTGAGCGGGCGGAGATTGGGCGTCCTATCG
+GACCATGCACGGCTGCGACATAACCGGCTCGGCGAGAAGGGCGGGGCGCCCGCGGCGCCGGGACGAGAGG
+GTATCATGGCTCCGGTCACCTCCGCTTGCGGACGGAACTAGAGCCGTGGACCGGCAACGCCGGGGTCACG
+CCCAGATCCCTCGAGGCCAATACCGCGCGGGTTCTCTCCGGGCAATCCGGCGAGGTAAGCCGCGACCTGC
+GACCGCGACCGCGATATATCGGCGAGCCTGCGATCGAGCTTTGCCAGTTCATCCGTGAGGCGGGCGCGCA
+GCCGCTCGCAAGGATGGAACGTCGGCTCGGGGCTGATGATGCAGGGCAGCAGGTCGCGCATTGCCTCGAC
+CGTGAGCCCGGCCTCGGCCAGCTGTCGGATCATGCAAGCCTGCTCCAGATCGGCCGGGCCATAGTCGCGG
+TAGCCGCTTCCCGTCCGATGCGGACGCAGAAGCCCTTCCGCCTCGTAGAAGCGTAGCATTCGGACGCTGA
+TGCCACTGCGGTCGGATACATCGCCGATCTTCACCACGCTCTCCTTCTTGGGACTTGACCCTGACAACGG
+TGTCAGAGTGCAAAAGGAGTGCCGACACATCAAGTCGGAGAAGAAGCAATGTCGAAGATCGAACATGTCC
+ATCACAAGGGCGCGCGTGTGGGCTATCGTGACGACGGGGAAGGCAAGCCGCTCATCCTCGTCCACGGGAC
+CGGGGGAGACGGCGAGGCCAACTTTGATGGCCTTCTGCCGCATCTGTCGCGGCGGCGCGTGCTGCGGCCA
+GACTATGCCGGATCCGGACTCACAGTGGATGCCGCCGAAGTGCTGACGGTCGATCATCTGGTGCATCAGG
+TCATCGCCACCGTGGACCATGCGGGGATCGACAGTTTCGATCTGGCAGGCTTTTCTCTCGGCTCTGCCGT
+CGCGGTCCGGCTCGCCGCCCTGCATCCCGGGAGGGTCGACAGGCTCGTGCTGATTGGAGGGTTCATTCAC
+GCGGCCGACCCGCGCTCACGTCTGCAGTTCAAGCTCTGGGCGGACCTCGCCCGGAAAGATCCTGCCACCC
+TTGCGCGGCTCATGATGCTGACCGGTTTCAGCTACGCCTTCCTGTCGGCGATCACCGACTTGGATTCGGT
+GATCGCCGGCATGGTATCGGGCGGCAACTGGGAGGGAGTTGCGCGACAGGCGGAGCTGGATCTGCGAGTT
+GATGTCTCTCGTGAGCTCGGCCGTGTCAAAGCTCCAACCCTCGTGATCGGCAACCGGTGCGATCAGATGG
+TGGATCCGGCGGCTTCGATCGCGCTCGCTGCGGGCATAGCGGATGCCACCCTCGCTTGGCTTGAGGGGCC
+GCATCTTGCGTTGATGGAACGACCGGACGTCGCGGCGGACCTTTTGATGCGTCATCTGGCTGACTGAGCT
+CACCGCCTCGAGGGGCGCTGCAGCCCGATGGGCGAGGGCCGCGCTCTCAGCTCACGCGCGGGAGGATCGT
+CACCCGAAAGCCCGACACATCGGCCGACCTCCGATAGCGGGGTGCGGGCGTTTTCCTGAAGCGCTTCGAG
+GATTGCGCTGTCAAGGCGGTCGAGCTCACTGGTCGGCATGTTCCACCACGGATTCCGTTAACTCATCGGA
+AGTGTGCCAAAAACGCCGATGAATTGCCATTCCCGGCATGCGTTCGGCAAGGGACACTCTAGAAAGGACA
+TCAGGAGATTAGCATGGGGCGTCGTTTCGTTATGGTGCCGGGCATCGGGGGATCCGGCCCTGAGCATTGG
+CAGAGCCATTGGGAAAGTCTCTATCCGAACACCCTCCGGATAGAGCCGAATTCCTGGGATGAGCCCGACC
+TTGCGGACTGGTTCGCCGCCCTGGACCGGGCGGTCGCCGCAGCACCTTATCCGCCGGTGCTGGTATGCCA
+TTCGCTCGGGTGCCTGCTCTTTGCCCACTGGCGTGCGGCGTCGTCCCGTGCCATCGCCGCGGCATTTCTT
+GTTGCCGTGCCGGACCCGAGCGGGCCGGCTTTCCCGGCGCAGGCAAAGGCATTCGGAGCGCTACCTGCAA
+CGGGGTTTGGTGAGCGGCCGGTGTTGGCCGTCGCAAGTGAGAACGATCCCTATGATCCGGAGGCGAGTGC
+GATAGCCTGGGCTGTCAGACAAGGCGCCTGGCCGCGTCGTCTCGGCCCAAGGGGCCATTTGAACGAGGCG
+TCGAACATCGGCGCCTGGCCCGAAGGCCAAGAGCTTCTGGCAGATTTCCTGGACAAGATCGGAGAGTAGC
+CATGGACGTTGCAACTGCATTGCTGAGCTTTTCCATTGCAGCGGCTTTGCTGACGATCACACCGGGGCTC
+GATACAGCCCTCGTTCTGCGGACGGCGGCGGTCGAGGGGCCGCGCCGGGCGATGCTGGCGGGGGCAGGGG
+TGGTGACCGGGGTGCTGGCATGGGGATTGATTGCGGCTTTGGGGCTCGGTGCTGTGCTGGCCGTGTCGGA
+ACTGGCTTACCGTTGTCTTCAGCTTGCCGGCGCGGCCTACCTGATCTGGCTGGGTATCGGGATGTTGCGG
+GGAGCGTTGCGTGCGCGAGAGCCGGGCCTGCCCAAGGTCATGGCGCCTTCCGCACCAAATTGGTTCCTGC
+GCGGGGTAATGACCAACCTTCTTAACCCCAAGGTCGGTGTCTTCTATATCAGCTTCCTGCCGCAGTTTCT
+GCCCGTGGGCGTTTCGGTGGTGCCGTTCAGCGTCCTGCTCGCGGGGATACACGCGTCGATGGGGCTGATC
+TTTTTTGCAGCGCTGACTGCCGCGACAGTGCCGTTTCAGAATGCCCTGAACGGCCCTCGCCTGCCTCGGC
+TCCTCGACGGGGTCACCGGCAGTGTCTTGATCGGGTTCGCCCTGCGACTGCTGACGGAGCGGCGCGTGGG
+ATGACCTCAGCTCTCGATCCGACGCTGCAACTGACCGGGCGTGATCCCATGGGCGGCCTGAAAGGCGGCC
+ACGAAGCCGCTCGCTGTGGCGTAGCCGGCAGCATGGGCTGCATGTTGCACGCTCTTGCCGGCCATCAACG
+GGGCAATTGCGCGTGCCAACCGCAGGTCTCGCATCCAGGTGGTCCAGCTCTGCCCGGTGTCGCGACGGGC
+GAGCCGTTGCAGGCTGCGCCGCGACAGCGCCAGTGCCGCGGCCCAGTGGTCGAGCGAATGGTCGGCCCCA
+TCGAGATGTGCCAGAGCGATACGACGCAGGCGCGGGTCGGTTGGTAGCGGCAGCGTGGGCGCGGGGGCGG
+GGCGCGCAAGCCGGTCCCACAGCACGGCCGTCAGCCGGGCGAAGGCGGGCTCTTGCCGGTCGGCGCGGCT
+GGACCCTGCGAGAGTGCGGAGAAGTTCGGCCTCCAGCGCTTCGAGAGGGAAAGGTGTGGGGGCCTTGGGC
+AGTGGCGCCGCGGCGGGTCGGGTGTAGAGGCTGACCGATTTCCGCGCGCCCTCGGCCCGGATGCGGTGGC
+GGTGCGTCGGTGGAAGCCAGATCGCCATGCCGGGAGAGAGAAGATGCAGCCGGCCTCCTGTCTCGACCGT
+CACCGGCCGGTCCGGGCACCAGGCGAGCTGCCCGCGCCAGTGCGCATGCGCCTCGGGCATTGTGCCGGGT
+GTGAAGCTCGTGATCCTGCCGATCACCGGGCTTCCATCCTCGGCAAATCCTCCGATCTCATCGCGCTGCA
+TGCTGGCACCTCCGGGGTATCATCTGGCACCGGGGCAACACATTTTTCCAGCGCTTCCGTCACGATCGCG
+CGGAGGCGGAGCGGAGGACCGTATGGATATGGCGACAATCGCGCTGCTCGCGGGCGCAGGGCTGCTCGGC
+GGGCTGTGCAATGCGATCGCGGGCGGCGGCACGTTTTTTACCTTCCCGGCGCTGCTGGCCGTGGGGCTGC
+CGCCGGTGACGGCGGGCGCAACCAGCGCAGTGGCGATCTGGCCCGGCCATGCGGCCAGCCTGATCGGCGA
+AGGCGCGGTGCTGCGTCAGGACCTGATCGCGCGGCCCGGGCGCGTCACGGTGTTTGCGCTGGCCTCGGCG
+GCGGGGGCCGGGCTGTTGCTGCTGTCGGGAGATGCACTGTTCCGGCAGTTGGTCCCCTGGCTGCTGCTTT
+TCGCGACGCTGCTGTTTGCGGCAGGGCCCATGCTCAACCGCTGGCTTGCCCGCTGCGGGGTGTCGATCGG
+GCCAGTCAGCGCCGCGTGCGCCGAGGGGGGCGTGGCCCTTTATGGTGGCTACTTTGGGGCAGGGCTGGGG
+GTGCTGCTGCTGGCGCTGCTGACCGTGACGGGAGACGACGATCTGAAGCGGCTGAACGTGGTCAAGAATG
+CTCTGGCGACACTTGCGACCAGTATCGCCGTCCTGATCTTCGCCTTTGGCGGCGCGGTCGTCTGGGGGCC
+GGCTGCCCTGGTCTTCCTGGGGGCGACGGCAGGTGGTGTCATCGGTGGCCGGCTGGCGCGCCGGGTGAAC
+CCGCAAACCCTGCGCGCCGCGATCGTCTGCCTCGGCCTGTTGCTGGTCTGGCACTACGCGTGAGCCCGGG
+TCGAGGCGCGGAACGCCTCGCGCAGGGCCGTGGTAATCCGCCCCACGGGCCATGTGCTGTGCTTGCCGGG
+GCGGTCGAGCGACCACGGGACGAAGCTCGACCGACGTGCCCGTGACGAAGACCTCGTCCGCTGCATCCAG
+ATCGTCGAGGCTGACGGTTCCTTCATGAACCGACAGGCCGAGGCCACGCGCAAGGTCGAAGACATGGCGC
+TTGGTCAGGCTGTCGAGAAAGCATGTAGGAAGGGGAGACAGAAGCCTGCCATTCCGGACAAGGACGATGT
+TCGTCACCGTGGTTTCGGCGACATGGCCTGCCATATCCAGCATGAGGGCATCGTCATGTCCGCTACGGGC
+AGCTGCGGCCCGCGACAAGGTTCCGGTCATGTAGAGCCCCGAGCATTTCGACGCCGTCGGCGCCGTATCG
+GGCGCGGGGCGCCGCCAATCCGACAGAACCAGGCGCAATCCGCCGGTCCCGTCCCCAAGGGCGGTCTCCA
+CCGGCCAGTCCCAGGCCGCGATGGCGGTATGGATCCGGCACCCCTGTGCGGAAACGGTGACGCTTTCACT
+GCCGCGCCAGGCGATCGCCCGAACATAGGCGTCCTTCAGTCCGCCAGCCCAAAGCACGGCCTCGGCGGCG
+GCCTGAAGATCATCGACCAGCCATGGCAGCGTGTAGCCGAGAAGTTCGGTCGAGCGCTGCAGGCATCGGA
+AATGCTCCTTGCCCAGAAACAGACGACCGTCATAGGCGCGGATAATCGCGTTTCAGCGGCGTCGACGACA
+ATCCGCGTGCCCCCGTTACCTTATAAGCGGTGCCCAGCATATAGGGTCGCCAGAGCACGGTCCGACCCAT
+GTCTGCCGCGATGGCCTCGATCCGCTGCGCCGCGAAGAAGGCGTAGCCGGACGAGAAGCCGAACCAGAAC
+TCGAGGGAACTAATAGCTCTTCGCCGTCCCAGTAATCGACCGCATCCGCGTTTCGGAAGGAACTGGCAAC
+CCGGCGCTTTGCCTTGTCACCTCCGTGCGCAGCGCCCGCGAAGACTGTCAGCTTGCCGCTGTCGGGATGC
+CTGGCATGGGTTTCAAGGTCAGTTCGGGAAAGTCTTGCCATTCTTCGGGTCTCCTTCTCCGTCCGCGTTA
+GCGGTCGGGGCTGACTGTCATGCGGCAGCATGGCTGCTCGCAATTGAGGAATCTTCCGGAGGTCCTGAGG
+ATTTCGCGGCGACGAACACAGAGAGGAATTCTCAATATCCGCTGAGGGATCCGAAATTCATGGCTCTGGT
+CACGAGGCGCATTCTCTGGGGGAACACACCGGAGGTGACCATGAACCCGCGATGCACGGCAAATCCAGCG
+CAAGAGCACGACAAAGATAGTCTTGCATCAGGCCCGGCTCTGCCGCCGCGCCGCTTTCGGGCCTTTCACC
+GCTTGAGCGACAGGGAGTTGAAATATCTGGGATTGGATCGCCAAAATCTGCCGATCTTCAATCCTGTTCA
+GGCCATTCGCCGAGACGACCTGTTCTAGCGCGATGCGGGCAGGTCTGGCGTATCATGCAAGCAGATCAGT
+GTTTGCATCCCCGTGGCGACATGTTTGCGGCGTTCTCCATCAACGCCCCATACATCGAGCTGGCAGATGG
+TCAGTGTGCGACCATTCTTGATCACGCGGCCGACAGCCTCGGTAAAATCTCCTTGCGCCGGGCTGATCAG
+GTTCAGTTTGAACTCGACCGTCAGGACCGTACTGCCTTCGGGGAAGAGGAGGAAATGAGCGTAACCGCCT
+GCGCTGTCGGCGATGGCCGATGTTCCGGCGGCATGGAAGTAGCCATGCTGCTGCGTGAGTTCTTGGCGGA
+ACGGGAGACCTCGAGCCGCTACATGATGGTCGAAGCCTTTGTCCAGATCGACAAGGAGGAGATCGACCCC
+ATTCTAAGCATAGCCACGAAAGCCGCCTGATCATGCCCTCAGGCCATCCGGATAATCATACCAGCTTGAC
+GGACGTGCCCCCCCGTCATTGCCTAGGCCGTTCCCAGGGGGCTCCATCGCCTTTCTCCCTCGGCACCACC
+AGTGCGCGACCGGAGTCCGGGTGAGGCAGCTTCAGCATCGGCAGGTCGTAGATGCGCTGCAGGCGGACGG
+GCTGCATGATGTCGGCGACAGGGCCGCTGTCGAGGATCTTGCCGGCCCGCAGCGCCACGAGATCGTCGCA
+GAAGCGCCCGGCAAGGTTCACGTCGTGCAGCACCATCACCACAGTGAGCCCCTGCCGGCGGTTGAGCCCG
+CGAAGGAGCGACAACACCTCGATCTGATGCGCGGGATCGAGCGCGGAGGTGGGCTCGTCCAGGAGGAGGC
+AACCCGCCCCCTGCGCGAGGAGCATGGCGATCCGGGCCCGCTGCCGCTCGCCGCCCGAAAGGGTCTCCAC
+GGGGCTTTCGGCCTGGTCGGCGAGGCCTGCCTGGCGCAGGGCGTCCTGCTGGCGGGCGCGGTCCTCGGCG
+CCGAAGCGGCCGAAGGCGCCGTGCCAGGGAAAGCGGCCGAGCGCCACCAGCTCGGCGACCGTCAGGCCGG
+GGACGTGGGGCGGCGTCTGCGGCAGATGCGCCAGTTGCCGGGCAAAGTCGCTGGCGGCATAGGCGGCCAG
+AGGTCGACCGCGAAACAGGACTTGCCCGGCGGAGGGCGCGAGCTGCCGCGTCATCAGGCGCATGAGGGTC
+GATTTCCCCGAGCCGTTAGGCCCGAGGATGCCGGTCACGGAGCCGCGGGCGATGCGGAGATCCAGCCCCT
+CAAGGAGTTGCTGACCGGCGATTTGCACGCTCGCCTGACGGAGGTCGAATTCTGGAGAGCTGTGGGTCAT
+GGATGTCCTTCGCCGTGACGGGGCAGGGAGCCTTCCGCTGCGCGGCATCAAGCGGCACGCTTGCGGAGTT
+GCCAGAGAAAGAAGGGGCCGCCCAGGAGCGCTGCGAGCAGGCCGGGCGAGATTGGCCAAGGCCAGGCCAG
+CAGCCCGCCCACCCATTGCGCAAGGACCATGACCGAGGCGCCGGTCGCGACCGAAGCGAGGGCCGCCGGC
+GCGGTGGCGCGGAACCCCATTGTCGCCACGAGATGGGGTACGATCAGGCCGACGAAGCTGATCGGACCGA
+GGGCGATCGTGCCCGCGGCAGCGGCAAGAGACGCGAGCGCAAGCCCCGCAGCGCGGGCGGGCGTCACGGC
+CAGCCCGCGCCCTGCGGCGACCGCCTCGTCGAGCGCGAGCAGGTCGAACCAGCGCCGCAGGAGGAGCGCC
+ACCGCCAGTACCGCGATCGCCACGCTCCAGGCCAGCAGAGCCTGGGCGAGGCTCGCGCTGCCGGTGGACC
+CGGAGAACCAGCTGAGGAGCGCTGCGCCTTTCGGCCCGCCCGAGGCCAGCACCAGCGTCAGAAGCGCCTG
+CGCCGTGCTGCCGAACCCCACGCCGATCAGCAGCAGACGCGAGGTCGCAAACCGGACCCGCGCGGCCAGC
+AGCGTCACCAGCGCCAGCGTCGCTCCTGCGCCTGTGGCCGTCAGGGCGAAGCGCGAGACGAGCCCGCTTT
+CCGGCAGGAAGACCATGGCCAGCGCGAAGGCAAGGCCCGCCCCATGCCCGACGCCGAGGAGGTCGGGGCT
+CGTCAGCGGGTTGCGCAGGAGGCGCTGGAGCAGAAGGCCCGAGAGCGCAAGACAGGCGCCTGCGCCGGCC
+GCGAGCAGCAGCGGCGGCAGGCGCCAGCGCAGGACGGCGGCCAGATCCCTGGCCGTGGTGAGGTGCAGGC
+CGGCTTCCGAGCGACCGATCAGCAGCGCGAGGGCGAGCAGGACAGGCACGGCAAGCGCCAAAGGAAGCAG
+TGCCCGCATCGGACGCCGGGGCCGGGCGAGCGCCGGCGGTTCGGGGCGCGCGGGAAGATCCGGGCTTCGC
+GATCCGAGCGACAGAAAAACGAGAAGCGGTCCAATGAAGAGGCCTGACGCCGCGCCGACCGGGACGTCCC
+CGGCAAGACCCGAGAGCAGCCGCGCCGTCTGGTCGGCAAGCAGCAGCAGGACCGCGCCCCAGAGTCCCGC
+GCGGGGCAGGTCGGGCCGGGAGCGACCCCCAGACCTGCCGCCCAGGCCGCGGGCGAGCGCGGGGCCCGCG
+AGCCCCACGAAGCCGATCAGGCCCACCGTCGCCACCACCGAAGCCGTGATCCAGGCCGCGGCGGCGAGCA
+GCAGGAGCTTGGTCCGGCGCACGGAGAGGCCGAGGCCCTCTGCGGTCTCCTCGCCCAGCATCAGAAGCTG
+GAGCGGCCGGTGCATCAGCCACAGCGCCCCCGCCACGGGGGCGGTCTGCGCGAGAAGGCCGAGGCCGGGT
+TGCCAGCCGGCCTGCGCCAGCGAGCCGGCCTGCCATGTCAGCAGCTCCTGCAGGAAATCGTGGTTGAAGA
+GGACGAGAAGCGCATGGGCGGCCGCGGCGCAGAGATTGACCATCACGCCGGCGAGCACCAGCGCCTGACT
+GTGCAGGCCGCGGCCCCATGCAACGGCCAGCACCAGGATCAGCGCCCCCGCGGCTCCGGTCAGGGCAAGG
+AGCCCCGGCGCGGCCTGCCAGAGAGCCGGAGCCAGCAGCAGCCCTGCGGCCAGTGCCAGCGAGGCGCCAC
+CCGAGATGCCGAGGAGCCCGGGTTCGGCCAGCGGGTTGGCGAAGATGCGCTGGCAGACCTCGCCCGCCAT
+CGAGAGAAGGAACCCCGCGAGAAGCGCCATGGCGAGGCGCGGCAGGCTGCTCTGGGTCAGCACGAGCCGG
+GCGAGCCCGTCGCCCGCCAGCGCCTCGGGCAAGAGGGGCAGCAGACCTTGCAGCGTGAGCGCGCCGGCGA
+GGAGAAGGAGAAGCGTGCGCGCCATGGATCAGCCTTGCATGAGGGCCGCGGCGACCGTTTCGGCCAGATG
+CCGGGCCGAGAGCAGCGCGCCCTGCGGATAGAAGCTGCCGATCCAGTGCGCACGCCCCGACGCGACGGCG
+GGCACCGCGCGCCAGAGGGCGCTCGCCCGCAGCATCCGCTCGGTCCGCGGCCGCATCGAGGCGATCTCGA
+CCAGCAGGATGGTGGCGTCTTCCAGCCGGATCAGCTCCTCGAGAGAGGCGCGGTAGGTGCCGAGCGCAGT
+GACCGGGCCCGTCCAGGCGTTGGCGAGGCCCATCCGCGCCAGCACCGCGTCGGGCAGGCTGCCACGACCG
+TAGAGGGTGAAGAGCCGCCCCGAGAGGTCGGGGACGCAGACGAGGACGGAGCCGCGGTCCGCCGGCACAC
+GCCGGTCCTCGGTCGTCAGGACCGCCTCCGTCCCGGCCACAAGCCGTGCAGCGCTGTCCGGCGCGAGGCC
+TGCGGTGGCGGCCATCTGGCGCGCGAGATCGGCGGCGAGATCGAGCCGGCTGCCATCCGTCTCGGTCGGC
+ACGATCTCCACCGGGGCGATTGCGGCGATGCGCGGCGTCATCATCAGCGCCGAGGCCGGCGCGATGATCC
+TGTCGGGCGCGAGCCGCGCCAGATATTCGAGGTTGATCTCCCAGAAGGGCCCGATGTCGACCACGCCCGG
+CGGCAGGTCGAACGGCATGCGGCTGGCGAAATAGCCGCTGTCCGAGATCGCGAGCGGCGGTCGGTCGAGC
+GCGATCAGCGTCTCGGCCGCTGCCCAGTCGATGACGGCCAGCCGTGGGCCGGCCGTCGCCCGCGCAGGGA
+CGGGGAGGGTCAGGGCCACAAGGCCCGCGAGGAGAGGACGGCGCGAGATCATGGGAGGACGACGGAGACG
+GCGGGCCGCCTCCGTCCGGATCCGTCAGAAGCCGATGGCGATCTTGGCCGTGACCATCCGCCGGTCGCCC
+TCGTAGCAGGAATAGGCGCTGGCGCAGGTGGTGAAGTACTCCTTGTCCGTCAGGTTCGTCACATTGAGCG
+CCAGCCGCGCGGTCTCGCTCAGCGCATAGCTCGCGCCGAGGTCGATCACCGTCCGGCCATCCACCTTGAT
+CGTATTGCCGTTGTCGCCGAAGCTCGTGCCCACATGGCGCAGCCCGCCGCCGAGCGAGAGGCCGTCCAGC
+GCGCCCGCGCCGAAGCTGTAGTTCAACCAGAGCGACGCCTGCGACTTCGGCACCAGCGCGGGGCGGTTGC
+CCTCGTTGCCGGCATTGTCCTCGGTGATCTCGACATCGCTGTAGCTGTAGTTCGCCGCAATGTCCCAGCC
+CGAGCCGAGCGAGGCCTTGCCCTCGACCTCGATCCCGCGCGAACGGATCTCGCCTGTGGCGATGTTGTAG
+CCGGTCGAGATGCCGCCCGGCCCCAGTTCGGGCGTGAGCACGTTCGACTTGGTGATGTCGAACAGCGCCA
+CTGTCAGCAGCGCGTCCGTGCCCGAGGGCTGATACTTCGCTCCCAGCTCCCATTGCTGGCCGCGGGTGGG
+ATCGAAGGTACGGCCGTCCGAGCCGAGGCCCGCGTTCGGCAGGAAGCTCTCGGAATAGCTGAGGTAGGGG
+ACGAGGCCCGAATCCGTCAGGTAGCTCACCCCCACCCGGCCCGAGAAATTGTCGAGATCGACCTCGCGCG
+CGGTTCCGGTCAGGTGGTCGTCGGTTCTGGTGCTGAGCCAGTCCTGACGCCCGCCCAGCGTGAAGAGGAA
+GCGATCCAGCCGGATTTCGTCCTGAACGTAGAGACCCGTCTGGCGATACTCTTCGGTGTAGTCATAGGCC
+ACGGTCGTGGGGGTGGGAACGTCCACGCCATAGACGGGCGCATAGGGATCGAGCGAGGGCGCGGTGCCGT
+TCCAGCGGCGCGCGTCCGTGTCGCTGCGCGAATGGTCGAGCCCGATCAGCAGCTTGTGCGAGAGCCGCCC
+GGTCTGGAACTCGCCCAGGAGGTTGGTGTCGACCGCAAGGCTGTCGAGGCTTTCCGAGAAGCGCCGCGCC
+TGCCGCGTGAGGCCGGTGGCATCCGCCCCGATCATGGCGATCATGTCGAGATCGAAGTCCACGCGCCCGT
+AACGCAGGTTCTGGCGCACCGTCCAGCCATTGTCCATCCGGTGGCTGAACTCGTAGCCCAGCGTCTTCTG
+GTCCTGCTCGCTCCGCGAGAAGTTCGGGTCGCCCACGAGGATGTCGGTCGGCGTGAAGAAGATCGCCGTG
+CCGCCCGAGCGGTCGCGCAGCGCCTGCGCCGTGACGGTCAGGCTGGTGGCGTCGGTGGGTGCCCAGGTGA
+TCGAGGGCGCCAGCATCAGCCGGTCGTCCTTCATCCGCGTGCCGTCGCCGTAGGAAAATTGCGTGTTCCC
+GTCGCGCGCCACGCCGACCAGCCGGTAGGAGAGCGTCTTGTCCTCGGTGAGCGCGCCCCCGAAATCGACC
+GCCGCCTGCGTCGTGGCGAAGCTGCCGTAGGAAAGTTCGGCCTCGCGCAGCGGTTCGGTGACCGGCCGCT
+TCGAGGTCTTGCCGACCACGCCGCCCGCATCGGACTGCCCATAGAGGGCCGAGGACGGCCCGCGCAGCAC
+TTCGATCGTCTCGAGCTGGTGCGGATCGGTGCGGAAATGGCTGTAGTTCGAGGCGATCTGGCGCAGCCCG
+TCGAGATAGGCGCTGGAGGACTGGCCGTTGAAGCCGCGCAGCATGATCCATTCGAAGCCCTTGGGGTCCG
+GGCCGTAGGTTTCGATGTTGACGCCCGGCACATAGCGCAGCGCCTCGGTGACCGAGCGGGCGCCCTGCGC
+CTCCAGCTGGCGCGGGCCGATCACGCTGACCGACTGCGGCACTTCCAGAACGGGCGTGCCGCTCTTGCTG
+GCCGTGCCGCTGGCGCCCGCGACGAAGCTCGTGGCCCCGTTGCCGTCGCCCGCCACCCGGATCCGCTCGA
+GCATCACGCCGGCCGAGCCGTCCGCCGCGCCCGCGGGGATGCGCTGGAAGACGTGGATCGTGCCCGCATT
+GGCGAAGCGCCACGAGAGGCCGGTGCCCGCAAGCAGCGTCTCCATCGCCGCCTCGACGCTCATCGCGCCC
+TGCACCGGATTGCCCCGCACCGCCACAGCGCCCTCGTCGGGCATCACGATCGAGAGCCCGGCCACGCGGC
+CGATGTCATTGACCGCCCGCGTCACGGGTTTCGCCGGAATGTCGAACCGGTGCGGCACGCCTTGCGCCAG
+CACGGGGAGCGCCGCTCCGCAGAGAAGCGCGGTCGTCAGCAGCCGGGCCATACGGCCGGTCCGCCAGGGG
+AGAAGAGACTGCCCTCGCATGGAATATCCTTTGTCCTTCGTCACGGTGAGCACGGATGGCGAAGGTTCGG
+GCTTTCCATGCACTCATCAGGTTCACGTCCCGGGGCGGGGATCACTGAACCGACGGGCGCATCTTTTTCT
+CGGATGGCCCCTAGGGGCGCAGGATCCGGACGGATCCGGGCAGGCGGGTGATGGTCAGCCCCACCGTGTC
+GCGCAACGACTCGAGCGCCGCCTCGGGATGATCGAGATCGAGGCTGCCGGACACCCGCCTGTCTCCGAGG
+TCGCGCGAGGCAATGAGGATGTGCCCCGGCAGATAGCGCTCCAGCGTGGCGACCAGATCGCCGAGCCGCA
+TCCGGTAGAAGGCGAACCTGCCGTCCTGCCAGCCCGATGCTTCGGCCAGGTCCACGGCTTCCACGGAAGG
+CCGACCCGGGCCGTCGACGCTGAACTGCTCGCCCGGGACCAGCGGCTGCTCGACCGGCAGACCGGGATAG
+CGGACGCTCACGCGGCCTTGCCTGAGGACGATCTGGCCGCCGTCCTCCAGCAGCCGGACGTCGAAGACGG
+TGCCATGCACGGTGACCTCGCCCTTGCCGAAGCGCACACGGAACGGTCGCGGCGATCTGGTGACCTCGAA
+CGAGGCCGCTCCGCGCAGCAGCCGCAGAAGGCGGTCGGGACCGTCCATGTCGACGCGGATCGCGCTGTCC
+GCGTCGAGGAGCACCCGGCTGCCGTCGGGCAACGAGACGCTGCGGCGCTCGCCCCGGGCGCTCGCGTAAT
+CCGCTCCGAGATCCTGCAGGAGATGGGGCTGGCGCAGCCAGAGGCCGCCAAGGCCGATCGCCAGGGCCAG
+CACCGCCACAGTTCCGCCGCGCAGAACGCGCCGCCGCCGGGCGCCCCGGTCCATCGCCGCCAGATAGACC
+GAGAGCGCCCCGGCCTCGGCTTCGGCAAGCCGCTCGCCGGGCGCGCGCGTCTCGCCCCAGAGCGCTTCGA
+CCTCGGCCCAGGCGGCGACATGCGCGGGATCCTCCTCGAGCCAGACCTGCAGTTCGCGCTTCGACAGCGC
+GCGGCCGCGCAGGCGGACAAAGAGGTCACGGGCTTTCGCGCGCTGCGGCTCGGTCGGGTGGCGATCCCCA
+GTCAAGCCCCGACCTCTGCGGCGGCGGCGCAGGCGGCGACGGCCTTGGCCATGTGCTTGGCCACCGCGCG
+CTCCGACATGCCGAAAGCTCCGGCGATTTCGGAAAAGCTCCGGCCATGGACGCGGTTGAGCAGGAAGATG
+TGCCGGGTCTTCTCCGGCAGGGCGAGCAGAGCCAGATCGATCCGCTGCAGCGCGTCGCGGGCGCCCATCG
+CGTCTTCCGCCGAGGGCGCATGCAGACCCTCGTCGCGTCGGGCGGCCTCGGCCAGCAGCCGCGCCCGGGC
+CTGCTCCGCGCGCAGGTGATCGACGGCCGCGTTGCGCGCGCAGCGACTGAGATAGGCCGCAGGCTCCCCG
+TTCAGCCGCGTGGCACGCTCCCACAGACGCAGGAAGATGTCATGGACGATGTCACGCGCGAGGCTCGCGC
+AGCCGATCCGGCGGGCGATCTGCCGCTCCATCCGCTCGCGTTCCGAGACGTAGAGCTGAAGGAGGTGTTC
+GGACTGCACTGTGCGGGCCTGACTGTGAAGAGACGCGGCACCTTAAGGCCGCATGGAACTCCCGACAATA
+TCGCTCGGCCATTCTGTCGTGGGCGTCCCGCGTTGCTTCTGCCGCCTGTCGGCAGATCCACTGGTCGGTC
+AGAACGCTCTGTGTCCCAACGATGGTGGTTAACGCTTCGGTGCTAACGACCACGCCATATGGGTCTGGAG
+CCTAAGACGCTCCACAATAAGCGGCGTCTCCGCCACAGCGCGGACGCTCGTTCAGACAGGACTTCGCATA
+GAACCCGAAAGACCACGGTGCCGATCTCAGGGGTGGCCATTCCTGCCTGGGGATGGACAGCGCTTAACCC
+CTCCTGTGCTCTGCGCCTGCCGCCACCTCGACGGTCACATGCTCCATCCCGGTCGTCTCGCGCACGCGGC
+CTTTCACGGCGCGGCGCACGTCGTCCGCCACCGCGCCCGGCGCGAGCTCGATCTCCAGCGTGGCCATGGG
+CCGCTCCTGAGTGATCGACCAGGCGTGGACGTGATAGGCGCGGGCCACTCCGGGCAGCGTGGCTTCGAGG
+TCGGTCGCGACGGCGCGGGCGTCGAAGCCCGCCGGCGCGCCTTCGAGCAGGATATGGCCGCTCTCGCGCA
+CCACGGACCACGCCGAGCGCAGGATGAGGAGAGCAACCAGCACGGACAGGATCGGGTCGATGGGGGTCCA
+GCCTGTCCAGATGATGATGAGCGAGGCCGCAATCGCCGCAACCGAGCCGAGCAGATCTCCCATGACGTGC
+AGGGCGGCGGCACGGACGTTGAGGTTGTCGCCCTCTGCGCGGCTGAGCACCCAGAAAGCCAGAACGTTCA
+CCACGAGTCCCCCCACGGCGACCCAGAGCATCAGCCCGCCCAGCACCCCGTGCGGGTCGCGCAGGCGCTG
+GATGGCCTCGAAGACGATCCACCCCGCGATGGCGAACAGCGTGACCCCGTTCACGAAGGCGGCCAGCACC
+GAGAAGCGGTCGAAGCCGTAGGTCCGCTTCCAATCCGCCGGTCGCCGCGCCAGCCGGAAGGCGAACCAAG
+CCAGCAGAAGCGAGGCGAAGTCGGTCAGCATGTGGCCCGCATCGGCCAGAAGCGCGAGCGATCCGGAGAT
+GAGCCCGCCGATGACCTCGGCCCCCATGAAGCCGCCCGTCAGGGCTGCGGCGATGAGGATGGCGCGTTCC
+TTGGAGCGGCGCGCCTCGGGCGTGTCATTGGCCGAGAGGGTCGGACCGTGCGAATGCCCCGCATGTCCAT
+GTCGATGTGCGTGCCCATGCCCGTGTGCATGATCGTGCCCGTGACTGTGATCGTGTCCCATCACCGCACC
+TCCGCCCGAAGGCCCTTGTCAGCCGGGCGCGTGACGTGCGCGTTTATCCCGTGGTGGAGTGTGGGGGCAT
+CGAAGCCCGGCAGGTCAGGGCTGCGGAGGTGGTGGTCGGTCATGGCAGTGCTCTTGATTCGTCTCGTCCC
+CATGGTAGATACGATCTACAGCCACTGTAGCTTCAAGGGGTGATCGCGATGCAGGGCCATTCCATCGGTG
+CGCTGTCCAAGCGCACGGGCGTAAATGTGACGACGATCCGCTACTATGAGGGGCGTGGTCTTTTGCCCGA
+TCCCGGCCGCACGGGCGGGGGGCAGCGCCGCTACGGCGATGCCGAGCTGGACCGGTTGTCCTTTATCGCC
+CATGCCCGGCAGCTTGGATTCGACCTCGACGCCATTGCCGAACTGATCGCGTTGCAGGAGACACCCCATG
+CTGCCCATGGCGACGCGCACCGCATCGCGAAGGAACGGATTATCGAAATCCGGGATCGGATCGCGCGGTT
+GCGGCGGCTGGAGGCTGAACTAGTGCGCGTCGTGAAGACCTGCGACGGTCAGTCCGATGGGCAACCCTGC
+CGGGTGCTGCATGCCCTGGCCGACCATCAGGCGTGCGAAGGCGAGCACTGAGACCTGCTTGGGGTCACAA
+AGAGGTTCTGAACGTGAACACGTCGCGTGTCAGGGTGAACGCCCGGCCGGAGCATGCGCCAAGCGGCCAT
+TGTGGACGACACTCGGTAGCTCTTATCGCTCTTCCCTATCGTAAACGGTTCCGCTCGAGCAGATAGCGGC
+CTGGAGGCTTGCCGACCATCTTTCGAAACATGGTCACGAAACTGCTGGCGCTTTCATAGCCGAGATCGAT
+GGCGATGGCCTGAACCGACTGACCAGCGCTCAGGCGCCGCAAGGCAAGCACGATATGCAACTGTCGGCGC
+CAGCGGCCGAAACTCATGCCCACCTCGTCGGCCAAAAGACGGCTCAGGCTGCGCTCGCTGAGCGCGACGC
+GGGAGGCCCACTCCGCGACGCTCGCGTGATCCGCGGGCGCCGCGATCAACAGGTCGGTGAGCTTCTTCAG
+GCGCGGATCGCCGGGGATGGGCAGGCAGAGATCCTCGACCGGTGCCACAGCCAGCTCATCGAAGAGAACG
+GACACGATCCGCCCATCCGGGCCGTCGACGTCATAGAGGTCCGGCAGAGCGTTTGCCCGCATCAGCAACT
+CGCGGAAAAACCGCGACACCGCGATCGTGCAGCAATCTTTCGGCAGGTTCGCGGAGTCGGGAGGATCAAT
+GAAAAGAGAGAGACACTCCACCTCGCCCGAGCCGAAAACGGAATGGGGCAGCCCGCTGGGAATCCACACG
+GCGCATTGCGGCGGTACGATCCAGACTGCGCCGTCGACCTCGCAATTGACGACGCCCCGCACCGTGAAAA
+GCAGTTGCGCCTTTTGGTGATGGTGCCGGGGCGATTGCTCCAGGGCGTCAAGGGTGGCGACCGCGTTGGC
+GGCCACCAACGCACGCGGGATCTCGTCGACATAGGCGAGCCAGTCGCGACGGACGTCCAGATACATCTCA
+GACCTCGGCATTTTCAGATCAGGCCGGATTGAAACATATCGTGGCAGGGTTGCGCAATGACGCCACGTGC
+CGGCTGGCGTATCTGGTGATCGCGCTCCGTTACTGGAGGGGCAGAGCTGACCTGCCAGACACATAGGCAC
+AGGAGTTTCCACGTGATCGACAATGCCCCGGTTAAGCTCGCGCTCGCATGGCTCATCCCGGCAGTTGGTG
+CCGCACTCTTTGTCACGATCCAGTGCTTTTCCTATCTGAACGTCTATGTCGGCAGCGGCGGGACGATGCA
+GGCCATGACGTTCGATCCCGCCTCCTTGTGGGGCGTGTCCATTTTCTATGGCGCCTGGGTCCTCCCGCCC
+TTGCTGGCGCTGGCCGCAAGGCGCGCGACCGACTGGGCGATGCTCGTCTTCGGCGGTCTGCTGTTCATCA
+TGAGCACGCTCGCTGGCGTCTTCGATGGCTTGCGCGATGGCGGCCATCTTGTGGGTCTGGAACTGCTGGC
+TGTCACGCTGCCGGGTGTGGTCGCGCTTCTCTTTACATGGCGGCACATTCGTTCGACCTGAAACCGTCCA
+TTCTCGCCGGGAGACGACACATGCCCTTGGATATCACGAATTTTCCGCTTGTCTGGATGAGCTATGACGA
+AGCGCCCGATCACAACCACGACGAGGATTTCGCGGCACTCGAGGCGTGCTTCAAACGCGGCGCACCGTTT
+GTGATCCTGAGCGATAATGCTCCGACCGAAGACGAACAGCACGACCATAGCCAGGAAGAAAGGAAGCGCA
+CTGCGCTGTGGATGAAGAAGCACAAGGCCGAATTGCGGACGCTGGTGCGGGCGATGATCGTGATTGAGCC
+GAGCGCCGGCAAGCGTCTGGCCTTCAAGACTTTCGGCGCGGTCTTTTCCAAATTCTGGGGTTTTCCGTTG
+CGGATTGCAGTGACTCGCAAAGAGGCGATGGACGTCGCCGAGAACCTGCTATCAGAGGGCGCGGGGTCTA
+CAACATTCTGAAGAACAGCTGCGTGGACCGCGCGACGATGGTTTTCTGAAGATTGCAAGTTTCGCTCGAG
+CTTTGGTCGATCGGGCTATGGCGCAGTGGCCCGCCCCCATGGGGTGGTACGGTTTTAAGTGCATGACAGG
+TCTCGGCGCCACGGTTGAGGTGGCCGGCGTAGAGGGTGCGGTTGGCGAAGCCGGCCACTGCACGGCCAGT
+GGCGACGGGGGACGGTGGCCCAGCGATGAATGCGGGCGCCTCGTGTTGTAATGCTGGCGCCAGGTCTTGA
+TCACGATCCGGGCTTCGGCCAGGCTGTAGAAGATCCGTCCGTTCAACGTCGCGGCCGTGGCCACCGCCCG
+CAAGATCGCGGCCCTGATCTGGCAGTTGCTGACGAAGGAGCCCCCGTATCGCTGGGCGCGTCCCGCCTTC
+GTGGCCGTGAAGATGCGCAAGCTGGAGTTGCGTGCCGTCGCCGCCAGGGCTCACGCGCCAGCGGGTCCCA
+GCCGCGACTACTGGATCAAGGAGATCCAGCATCGGGAAATCGAACTGGTCGCACAGGCCGAACTTGCTTA
+CGCGCAGATGGTCGGGGCATGGAAGGACAAGCCGCCTAAGCCGCAGGGAGGATGAGAAAGGGGCTGTTCA
+ACAACGTCCGTGTCGATGGCTACACGCCCATCCTCGAGGAAGAGGCCGAAGGCATCCCAGCGGTTCAGGA
+CGTAGCGGAACGCCTTCGCCAGATCGCTCTTGCCCGAGATATAGTCGAGGTTCTCCTCGGCCCAGACCTT
+GAATGCCTTGACCTTCGGGCGGCTGTGCGCCTGCCGGACAGCGTGGCGCTCGTCGGCACTGCGGCCGTTG
+ATCTGCGCTTCGATGTCGTAGAGCGCTCCGATCCGGTCCACCGCCTCACGGGCGATGTCCGAGCCGGTCT
+CTTTCTCGACCTCGAAGAAGGCCCTTCGCAGATGCGCCCAACAGGCTGCTTCCTAGAATGGGCCGCGCCG
+TTCCCCTCCGCAAGATAAAGATCCCTGAGGCCGGCGTTAGCATCGGCCTGCAGGATCCCATTGCCGGCCC
+CGAGGTGCTTTTGCGGGTGCTGGCCCTTGCGATCGGGCGAGAAGTGATAGGCCACGGCCGGTGGCGTGGC
+TCTCGACCAGGGCCGTTGGTCGCGGACATAGGCCCAGATCCGCCCCTCCTTCACGCCCTTGCCAAGCTCG
+CCCTTCATCGCTCTCTCTTTTTGCAACTGACACCCCCATGACGGGCGAGGGAAGGCGGATGTGACATCGA
+GGAGCGAGCATCCCCATGCGCAAACGGCTTGACCGGAACGGCCCCGTCACCGAAGTCCTGACCCTAATGC
+GGCGCCGGAAAGCGGACCCAGCCGGTGAAGGAATAGCGGTCGAGCTCGGGATAACCCGCCCAGACATCGC
+GGCCCAACGTGTCGGCGATGACCCGTGCATTGCGGAAGGCGCCAAAGCAGGACATGAGCTTGATCGGCCC
+CTCACGCTCGCGCCAGCCCTCGTCCACGAGATACCGGGCAAAGTTGCGGCCCGAGATCGGGCGTACGAAA
+TCGGGGGCTCCGTCGCCACTCACATCGACGCTGGCGAAGATGGTGTTGCCCGCGCCATGCCCGGCGATGG
+TGTCCACCGATTCCTCGCGCCCCGGCGCCATCAGCGGGCGGCCCTCGCCTTCGCCCTCGCCGAAATCCAG
+CCGCATCGCGTATTTGTACCCGCCCGGGCGCCTCTGGAATCCGTTGGCGCTGGTTTCGGCCTCGGGCTGC
+GGCGCCATCACCAGAAGGCGCTCGTTCTCGCCCACCGCGCCGCGCGTGTCGACCGCCGGGGTGATCAGGT
+GCAGTTCGTCCTCGCCGATGGGCACCGGAATGATCTTGGCGTTTATCTTGCCCAGATAGGCGCCCGACAT
+CAGGATCCCGCCACCCGCGCCGGCGCCAAAGCCCACCGCCATGCTGACGATGTTCCCGGTCGAGAAGAAC
+GGCTGCTGATAGGCGACCGAGGTGACCCCGGCCGAGGCGGCGGCCCCGGTCAGCCCGCCGATGGCGCCCG
+AGGTGATGAGGCCGACGCGGGTGATCGCCGCCTGCGACCAGCCCGCGTTCAGCGCCCCGCGCATCGCGAC
+CCGGCCCGCCGCGCCGCCCAGGCCCGCGCCGACCGCGCCCCCCACCGCGCCGCTCAGCAGGTCGATGCCG
+ACCCGCGCGCCGGTGATCTTCTGGCCCGAGATCGCGGCACTGGTCAGATCCCCCGCGACCGAGCCCACGG
+CACCCGCCAGCGCGCCCGCGCCGATGCTGGCGGCCACGCATTCGGTGCCAAAGACCGCCGCCGCGGCTGC
+GCCCGCGACCCCGCCGGTCAGCACGGTTGCGCCGATGCCGACGATGGCCCCGGCGATCAGCCCCACGATC
+TCTTCCCAGCTCTGGCCCAGCGGGTCGGAGTTCGCGATCGGGTTGCCCATGGCATAGGCGTACCGGTTCA
+TGGTGATGCGCGGATCGAGCGACAAGAAGCGCATGGTTTCCGGGTTGTACCAGCGCGCCCTGAGATAGGT
+CAGGTTGCTGACCGGGTCGGTGAACTGCGAATTCCAGTTGAAGCTGTTGGCGCGGTCGAGCGCGGATTGC
+GGTGTGACCGTGCCATAGGCCGAGATGGCCAGAGCGTTGCTGCTGGCCGAGGTGCGGTGCACATAGACCG
+ATTTCGACGCCGCCGCATAGGCGGTGACCGATCCGGCGCTGACCCGCGCGACGGGCATCTGTCCCGCCCA
+CATGAGCCCGTGCCATTCCGGCGTGCCCGACTGGGCATTCGCCGCCACGCTCACCATGGTCCCGGCCAGC
+GGATAGAACCTGTCCTCGGTGCTGCCGTCGATCACCGAGGCCAGCGCGCCCTGCGGACCATAGCTGTTGG
+ACATCGAGGGCCCCGAGGCCATGCCGACATTGGTCAGCCGGTCGAGCGGGTCGAAGCCATAGGTCGACCC
+GTCCACGTCCCTGACCATGCGGCCATTGGCGTCATAGGCGGCAGCGCCCGAGGTGATCTGGTTCAGAGCG
+TTGTAGGCAAAGCTCTCCTGCTGGCCGTTCCGGGTGCGGGTCAGCACATTGGCGGCGCCATCGTAGGCAT
+AGCTTACCTGGGTCGGCGACCCGCCGCCGGACGGGGCCAGCGTGATCCCCACCAGCTGCTTCAGGCCGTC
+ATAGCTCATCGTCTTCGCGACGTTCACCGAAGGATCGGTGTTCACAGCCGAGGCGAGCGTCAGCGACACC
+AGGTTCCGCCAGCCGTCGCGGGTGGCGGCGGCGCTCAGGACGCCGATGCCCGCGCCGTCGGTGACCGCGA
+CGCTGTCGTTTGCCCCGAATCCGTCATAGCCGAACTGCGTGGTCTGCGCCGTCGCGCCGCCCAGCACCTG
+TTTCAACAACACGCCGTTGGCGTGGTTGGCCGTGCCCCAGGTGTTGCTCAGTGTGACCCCGCCCATGGTC
+TGCGCGATGATCTGGTTCAGGGTGTTGTACGAATAGCTTGCCGCGGTGCCATCGGGCAGGGTCATCGACA
+CCACCCGGCTGGTGGCGTCCTTGGTCAGCGACAGCGTCTTGCCATCGGGATAGGTCACGGACGAGGCCGT
+GCCGTCCAGAGAGTAGGCATAGCGCAAGGTGCCGCTCGGATCGGTGATATGGTCGATCCTGCCATTCGAA
+AGATAGGCGAAGGTGCGCGTCTGCCCGTTTGTGGTCTCGCTCAGCACCTGGCCTGCGGCGTCGTAGGCAT
+AGGTCGTCTGGGTGCCGTCATAGCGGGTGCGGCTTTGCAGGGCGCTGTCGGTCGTGTAGCTCAGCCGTTC
+GATCTGCCCGGCCTGGTTCCGGATCTCGATCAGGTTGCCGACCGGATCATAGGTCAGCGTCTCGCTGACA
+ACGAGGGGCTGCGCCGCGCCGTTATAGCTGACGTTGCGGGTGACAAGGATCGGATTGCCGTTCAGGTCGC
+GCTGCGTGGTGGTGCAGCGCGTCGCCTGCAACGCGGCGGTCGCGGGGGTGCCGGTGAAATCCACAACTTC
+GGAATTGCCGTCCGGCGTATAGGCGAAGGTCTTGACCGAATTCTGCACAACGTTGCCGCCGGTGATGCTG
+AAATGCGTTTCGGTCACCACTTGGCCAAAGCCGTCATAGGCCGAGGTCACGCGCTGCACCTGGCCCGCCT
+GGGGTGAGCCGCTGTCGGCATGGGTGTCGGTTTGGATCGTGTTGCCCAGCCCGTCACGGGTGATGACCGT
+GCGAAGATCGCCGTTCATCGAGGTGCTGACCGTTCGGGCCGCGTCATCGAAGATGGTCGTGCTCTGATTG
+CCCAGGGCATCGGCCAGGGCGATCTGACGTCCCAGCGCGTCATAGCTGATCGTCAGGGTCTGTTCGGTGG
+CGTCGGTCTCGCTCGCCTTCAGATCCAGCGCATTGAAACTCACGCGGCGCAGGGTACGCGACAGGCTGGG
+CGTCGATTGGGTTGGATCGCCATTGTCCATCATCAGGACGGCGCGCCCCTTTGCATCGTAGGTCGTGCAG
+AGGACATAGCCGTTGGACTGGGTCACGGTGCTGGTGTTGGTGCCGCCGCCACCGTTTCCGGCCAGAGTGT
+AGGCATGGGTCGTGACATCGCCCAGCGGGTCGGTTTCCTGCATCAGGCGCGCCAGCGGGTCGTAGGCATA
+GCTGCGCCGCGCGCCGCCGGGTTTGGTCTGGCTCAGGCAGGGTCCGCCCGGCAGGCGCATGTCGAAGACC
+GCGACCCGGGTGTGGCCGTTGGCGTCAGTCGTGTCGACGGTCAGCTGATGCGACGCGGCATCGTAGCTGT
+AGGAGGTCTGTTCGCCGACCGAAGCGACCGACCCCTCGGGACCGCTGTAGCCCTGGGCCCAGGTCAGGGT
+CCAGCCGGTCTGGCAGCCCCGGGGATCGAACTGGAAGGTCTTGGTCTTGTAGGGGGCGAAACTGCCCGCG
+CCCGCCGCCTGGGTAGAGACGGTGGTGGCGGCGATGGATTTCTGGTCGGCCGTCAGCCCATAGTCGATCC
+GCGTCGTCTGGCCGGTGACCGCATCGACGTAGTCGGTTCGCTGCGGCATCTCGCCTCCCCACGCGACCTG
+GAGAAAGCTGTGCGTCCGCTGGCCGGTCAGCCGGGGTCTGCCGCTGCTCAGGTCGTACTGGCTGCTCGAC
+GTGATCTTTCCATAAAGATCATAGGCGACATCTGCCTGCGAATTGTCGGACCACGTGCCGCCCGCCGCGT
+CATAGACGCTGTGCACCGTCGTCACCGGTTTGTTCATGTTCACGCTTCGCGCATGGGCGTCGGTGACGAT
+GTCGTAGGTATAGGAGGTGCGGTGCGCCTCTTGCGCATGGCCGTTTGCGTCCACCAGATAGGCATGCTCC
+GTCAGCGGGCAGTGCAGGTAGTTGAAGAACACCCGGTTGGCGGCAATGAGTGCGCCGCCCGCGTCGCGGC
+GCTGTTCCAGCACGTCGTACTGGTAGGCGGTGTTGTTGCTGTCCATGAGCCCGTCCGAGGCCGTTCCCAT
+CCGGTACCCCGCGGTTGCCCCGGTATAGGTATTGCCGCCCGATGCGGTGCCATAGCTGTAGTCGCTCCGG
+TCCAGGAACGCGCCGCCCGGTCCGGTCCGGGTCATCGACTGCACGGCCGGGCGGGTGCCGGAATTCCCTC
+CGGCGTCGATGTAGCGGAGGCCGGTGTAGGCCAGCGTCGTTGTCATCCCGGTGGGATAGGTGATCGCGCC
+GACGACCGTCGTGCCCGAGGCCGAGGCATAGCTGAAGGCGGTGACCGCGCCGATCTGGTTGGTGACATGC
+TGTACACCCTGGCTCGAAAACGCCACGGTCACGCTCGATCCGTCGGGCAGGGTCAGCACGATCGTGCCGC
+CGGAATAGCCGAACGTGACAACCTGGCCGAAACTGTCGGTGATGCTGGCTAGGCTGTTCTGGAACACGTC
+GCCCAGCGGGTTGGTATAGGCATAGCGCAGCATGTTGCCGTAAAGGTCGGCATGCGCGATCAGCTTGCCC
+GTGGCGTCGAAATAGCTGATCGATCCGTCGTCATAGCGCAGCATGAACCCGTATGTCCCGCCGCCGCCCG
+GAACGGGCTGCGGCGGGACGACGGTCTGGAACAGGCGCCCATGGTCGTTCAGATAACGCAGGCCGGATTG
+ATAGCCCGAACTGTCGGTCCAGCTGGGGTCAATGACAAAGGTCTTGCCCTCGACCGTCAGCGATTGCCCG
+GCGGCGACGAAGGGCAGCCCCCAGCCCCAGCCCTGCGGCAGGCCCAGCTGGCCCGACGCCCCCGCGGAAT
+AGCCCAGCGTCAGCGACAGGCCGATGGCGTCGGTGATCCCGCGCAACTGCACCAGCGGCAGCGACACCAC
+CAGCGACCCGGTATTCCTGTTGATGTATTCGTTGCTTTGCAGCGACTGGTTATAGGCCTGCGAGCCCTGA
+TATTGCGACGACGTCATGACATGCTCCCTGGGTCCGGTTTCACGCCTTGGGGCGCCCGGCTATGGAAAAC
+GGGGCCGCGGCCTACGGACAGGCCGCAGCGATTGTCAGAATGTCGGTGGGATGCGCGCGATCAGTTGTGC
+GCGCCGGGCTCGAAAATCATGTAGAGGGGGCCCTGGCTGCCGGAATCCCATGTCAACTTGGTCGAGTTGC
+ACAGGTGCCCGGTCGAGCAGATGTAGGTGTCGGGCGAGGCGTTGTCGATTTCGATATGGTTCGAGCTGAA
+GATCGGATGCGACATGTGCGCCTGCACCGAGCCGGAATAGCCGCCCGCCGAGGCCGAATAGCTCAGGATC
+CAGGTCGAGGTATCGGTGGCGCAGGTATCGCCGCCCGACGACGAGCCTTTTTCCTCGACATAGCCCACGG
+AAACGCAGGAAACGCCTGCCTGGCTGGCCACGACCGAAGCATCGTGGCCGATATCGTTCATGCAATGATC
+CGCGCTGCCACCGGCGGTGAAGCTGAAGGTAATGGGTTGCGCGGGCGTGACCGCGAGATAGACGCAGGCG
+TTCATATTCGCGCCGGCCCCCGCAAGGGCGGCGGTCCCGGTCATGACCATCAATGCGCAACCGGCGGCAA
+GAAATAGCACTCTCATGGGACTCTCCACTTACTGGACGCCGGCCCGAAATCAGTCCGGCGATACAACCAC
+GAGTTGCATTCCGCTTCGATTCGCACAACAATTATTCGTGAAGTGCGGCGGCTCTGTTGCACAATTCGGG
+TAAAAGGCGTGCTTCCCCTTTCCCCGGACGGACCTATCCTTTGGCCTCTGTTATGGGCGTGCCGAGTGCG
+GTGAAGCCGTTGAGGACGGCAACCCTGACCTGGAATTCGGCGACCTGACGGTCGAACTCGCGCGCGGAGA
+GGCGCTGGCTCAAGAGCTTGGCGCGGTGCATCTTGGTCTCAGCGCAGCTTCTGCGGTGATACCCGCTCCA
+TCGTCGCCAGATGGTCCTGCCGAGCCGATTCGAGGTCCGCAGGATCTCGTTGCGGGCCATGGCCCCAGCG
+GTGTCGGGCTTCCATGGTTCGGCGTTCTTGCGCGGTGGGATGACGCAATCGGCACCGCCGAGATCGTCCG
+CGCCACCTGACGTCAGGGGAACAGGCAGTCACGCCTCTAGGTGACTTTCTGCAACCACGCGGTTGTCGCT
+GGGCGTGAGATTGCCCTAAATTGGCTTTGAAGTGCAGTAACTCGTAGAATCTCCAACTTGGGGGAGATGG
+ATTGTTATACTACAGGATGCACATGAAGATGGCGGAGATGTTTTCTTCGCTCAAAATTTACGGCACATTC
+AGGCCTGAGGATGGGGTTTATGTAATTCTCATTCCTGGCACAATTGGAATCGCAGTTATCGGGATAATCA
+GCTCATTCATTTTTGTGCCAAGAGGGCTGCAATTTCTGTTACTTCCGCCATTCCCCGCAGGCGCTGCCAT
+TTACCTGTTTATGTGCCACAGGAAAGCGAACCGGAAGTGAAATCATGGCAACCAGTTCTGTGACCGGTTG
+GTTGGCGTTCAGGCCGATCGACAAATTTTAACGTTCAACCCTCGAAATAGAGCCGCCTCATCTCAAGTCC
+GGTCGGATCCATACGTTGATGAACCCCGTATCCAGCGCAACGAATGGTTCGAGTTCAATTTCAATGCGCG
+AAGCCTCCCAGCAACCAAGATAATGGAATATAAGCTTGTTCTGACGGTGCAGCGCCGTCGAAACTTCCGA
+TCCATTGATTAATACGATCGCGACATTATTCTCCGGCACGTTCGTTTTGTCACTTACGTCGACGCCGTAC
+TCCTTGAGCGAACGATCGACGCGGGTGTACTGGCCCACGACGCAGATCGTGCCGGTTTCGGACAGACGAA
+CTCTGGTTGCCCCCGCCTCCGCCTCCGTCGCCAGCCAGTCGAGGAGAGCCGCGGCCGAAGTCATTTTGGG
+CGCGGTGACCTGCGCGTGCGCAGCCAGCGGGAATATGCCGCCCGCTACAACGGCGGCACAACAGCACTTT
+ATCAAATGGCGCAACCGAGACCTTTCCCCACATGCCATCACATCATCTTCCGCCGTGAGAGCTCGGCTCA
+ACCACCTGGCCAGCCATCGTGGCATATAGTTCATTGGGATCCTCGCACGAAAATGCCGCCGACCACGCCG
+AAGTCAAGGCGCTTGACGAGCTTGTGGGTTTGGCCGGATCGTTACCCGAGGTCGCATGGAGAATGATCTC
+GCGGGCACCTCTTCTGACCGCTCCTGCCAGCATGTCGTAACGGCGGGCGAGGTGTGCCATCTTCTCGGCC
+CGCGCCTCGCTCTCCTCCTGCCGGTCGATCCGCACCATCTCGTTGATGGAACGCTGGACGTCGGCTTCGA
+GGTGCGCAAGCCGGCTGGCGATCTTGCCCTTGGTGAAGTTGCAGTCGCGGTTGTTGAACGCCTTGAACTT
+GCTCCCGTCGATGGCAACGCAGTCGCCCTTCAGCACGCCGATCCGGCAGCAGAGCTCGATGAATTGCGCG
+CAGGTCTTGCGGATGGCAACGGCGTTGTCGCGCCGGAAGTCGGCGATGGTCTTGTGGTCGGGCACATCAC
+TTCGACGTTCCAGCCAGCCTCCCGCTCCAGGCGGCGGCTCGACGGGATACGGTTGAGGTATCAATATATG
+AACAGCTTGAGCAAAACTGCCGGGTGATACCCCGGCCGACCGGTGCGTGCCGTAGCCGATCGGACGAAGC
+CGAGCGAAGGAAGTTCCAACTCCCCGACGAAAAGATCGACGACACGGGCGAGGGCGTCCTCGCTGATCCA
+ATCCTCAAGCCGGTCCGGGAACAGCAACGTCTGGCTGCGCTCGACCCCCTCGATGAATCCCGCCATCCCG
+AACCCCTGTCGACCTCGGAAAGTCTACCACACACAGGAGTTTCCACACAGCCTCGGCCGGCCTTGCCTAG
+CGTCCTGCTTGCCGGCCCCCACATCGCGCCGGTGTATCGACCCAGCGGAATCTGCACAGGTCAATCCGCT
+AAGGCGAATGATTAAGCGGGAGTGTTCATGTCCAGCGCCAGATGCGGGCGGCGATAAGGATTTGGGATCC
+GCATCAAATGTCCTCCAGCACCATTGAGGTATCCGCGCCCGCGCCGCCTCCCAACCGACAATTAATTGGC
+GCGTTGATCTGCCTCGGCGGCGCCAATGGTTCTCAGCGTTTCACCCAGCTCAGGAGCTGAAAAGTAGTAT
+TCGGATGAAAGGCGGAATGCCGTGACCCAAGGCTGCGGCTTATGATATATGAAATCGAACCTGATATTCT
+CATCGGGTGCGCTTAACTTAGAAAGCGAAATGTCCGCTGGAATTACAAAGCATGTTTGATATGCGTAAAC
+GTGGAATTCGTATCCCACATGGCAGGCCTGCGCTCTTGGTCCAGAAAAGTTAAGGTGTGCCTCTGCAACG
+CGTTCCGAGAAATAGCCGGAGTGCGAAAAAACTCTTTGATCCGCTTTTCGCGCAAGAAAATGATCCAGCG
+CCACCAAGAATGGGGAGGCAATCAGCATCGTGATTGCGATTTGTTTTGTGGTCGGCGCTGAAAGATTAAT
+CATTCATGCGACCGCAAAGATAACATGTTAATCGGGGGTGTGTTCTCCTAAGGTGACAAAACTGTTGTTT
+GGGCCTCAAGGATTCCTTGCGGAGCAGGTGCAGCGGATCGGCGAAGCCTTCGATCCGCGCCTCACGGATG
+CGACATAACCGGCTCGGCGAGAAGGGCGAGGCGCCCGCGGCGCCGGGACGAGAGGGTATCATGGCTCCGG
+TCACCTCCGCTTGCGGACGGAACTGGAGCCGTGGACCGGCAACGCCGGGGTCACGCCCAGATCCCTCGAG
+GCCAATGCCGCGCGGGTTCTCTCCGGGCAATCCGGCGAGGTAAGCCGCGACCTGCGACCGCGATATATCG
+GCGAGCCTGCGATCGAGCTTTGCCAGTTCATCCGTGAGGCGGGCGCGCAGCCGCTCGCAAGGATGGAACG
+TCGGCTCGGGGCTGATGATGCAGGGCAGCAGGTCGCGCATTGCCTCGACCGTGAGCCCGGCATCGGCCAG
+TTGTCGGATCATGCAAGCCTGCTCCAGATCAGCGGGGCTACCCGCGAGCTTCTCGGCTGGCACCTGTCGC
+GCTCGGGCAAGGCCTCCACGGCCGCGAGCCCGCTGGAACATGCGCTGATCAACCGGTTCGGCACACTCGG
+CCGTCCTCGGCACGACAGGGCACGACCGGACAGCTCAGCGCATAGTCGTCCTTGGAGGGCGGCTGCGTGG
+CGGTCATGAGACCCTGCATTCCGGTGCCCGCCGTCACCATGTCGGTCGCGGTGCCGCCGGTCACGCAACC
+GGAGAGCGTCAGCGCCGCCGCCAGAGCGGTTACGGTCTTAGCGATCTTCGTCATTCCTTAACCTTACTCG
+TTGATTTTATTACATAATTATCATTATCGGCTCGACGGTTGTAAGCGCAAAGTAGAATTGTCGCATCCAA
+GCAAAGTAGAACTGTCGCCTCTTCCTGTCGGGACAATGGAGGATCGGCGGCATGGGATGGGTGCTGATGA
+GCGAGCGCGAACTGAACCGCATCGAGATCCTGTCGAAGGTGCTCGATCGGAGGATGACGACGACGGAAGC
+CTCGGTTCTGCTGGCGATCGGCCCGCGTCAGGTGCAGCGTCTGCTGCGACGGTTGCGCGAGGACGGCGCG
+GCGGCAACGCGGCACGGGTTGCGCGGGCGACCGTCGAACCACCGCCTCTCGCCGGGATTGCGGGACCTTG
+CGCTGGCCCTCGTGCGGGAGACCTACGTCGATTTCGGCCCCACGCTCGCGGCCGAGAAGCTGGCCGAGCG
+CGACGGCCTGCATGTGTCGCGGGAGACGCTGCGGAAGTGGATGGTCGAGGATGGGCTCTGGCTGTCGCGT
+CCTCAGCGCCGGAGGTTTCACCAGCCGCGGCTGCGGCGCGAGCACCTGGGCGAACTGGTTCAGATAGACG
+GGTCCGATCATCATTGGTTCGAGGATCGCGCACCAGCCTGCACGCTGCTCGTCTTCATCGACGACGCGAC
+GAGCCGGCTGATGGAGATGCGCTTCGTGCCCTCCGAGAGCACCTTCGCCTATTTCGCGGCGCTGGAGTGC
+TACCTGACGCGGCACGGCAGGCCCACGGCTTTCTACTCCGACAAGCATTCGGTCTTCCGCGTGGCGAGGC
+AGGACGCGCGGACCGGCCATGGCATGACGCAGTTCGGCCGGGCGCTGGCCGAGTTGAACATCGAGATCCT
+CTGCGCCAACTCCTCGCAGGCCAAGGGCCGGGTCGAGCGGGCGAACCGCACCTTGCAGGACCGGCTGGTC
+AAGGAGATGCGGCTTGGGCAGGGCATTCCAGCGACATGGGAGGGCCGGGAACGCCTTCCTGCCCGGCTTC
+ATCGAGCGGCACAACGCGCAGTTCGCCGGACGATCCCGGCCGTACCGAGGGCCGAGAAGCGGTTCGTCAG
+CGCGATACGGATATGGATTTCAGCGGCCCGGCGGTCCGGTCATCAACCGCTCAACGCCTTCGGCACGGCC
+GGGATCGTCCGCGGGGCGTGAAGTCGAAGGGGGAAGGGGCGAGCGTGCCTCAAGCCGCTGTTGTGCAACA
+ACGCCGGTCCGGGTCGGAGCCCGGCCGGGTGCGGAGCGGCTGCAACGGACCGTGCCATAAAGGCCACGCC
+ACGGGGCTATTCGCGGGATCTGCCGGGCGCTCTTGTCTTGCCGTCCCCCGGGGCCTACCTTCGCCGCATG
+TTGACGCTCCTTCATATGGCCGGAGTCCGGGCCTTCTGCGGTTCGCCGCTCACGCATGCTCTGCCCCGGG
+CAGAGGCGGTCAACCGCTGACGCCTCTTCCCGGGGCGCGTCGTCTTCCCAGATCCGGATCTGCCAGGCGG
+ACATCGTCCGCAAGGAGCCCTCATGCTTCCCCGTCCGAAATCCCGGCGCCCGAGGGCGCGGGGCGCGTCC
+TGCATGGGTCCGGCCCCGCGCCGGGCCGGAATGCCCGGGCCGCGCTGACCGGCTGAGGCGCGCGGCCTGA
diff --git a/ngs-java/gov/nih/nlm/ncbi/ngs/DownloadManager.java b/ngs-java/gov/nih/nlm/ncbi/ngs/DownloadManager.java
new file mode 100644
index 0000000..3081b89
--- /dev/null
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/DownloadManager.java
@@ -0,0 +1,143 @@
+/*===========================================================================
+*
+* PUBLIC DOMAIN NOTICE
+* National Center for Biotechnology Information
+*
+* This software/database is a "United States Government Work" under the
+* terms of the United States Copyright Act. It was written as part of
+* the author's official duties as a United States Government employee and
+* thus cannot be copyrighted. This software/database is freely available
+* to the public for use. The National Library of Medicine and the U.S.
+* Government have not placed any restriction on its use or reproduction.
+*
+* Although all reasonable efforts have been taken to ensure the accuracy
+* and reliability of the software and data, the NLM and the U.S.
+* Government do not and cannot warrant the performance or results that
+* may be obtained by using this software or data. The NLM and the U.S.
+* Government disclaim all warranties, express or implied, including
+* warranties of performance, merchantability or fitness for any particular
+* purpose.
+*
+* Please cite the author in any work or product based on this material.
+*
+* ==============================================================================
+*
+*/
+
+
+package gov.nih.nlm.ncbi.ngs;
+
+class DownloadManager {
+ enum DownloadResult {
+ SUCCESS,
+ FAILED,
+ UNSUPPORTED_OS
+ }
+
+ DownloadManager(LMProperties properties) {
+ this.properties = properties;
+ }
+
+ String getLatestVersion(String libname) {
+ Logger.finest(
+ ">> Checking the latest version of " + libname + " library...");
+
+ String request = "cmd=vers&libname=" + libname;
+
+ for (SratoolkitCgis cgis = new SratoolkitCgis(properties); ; ) {
+ String spec = cgis.nextSpec();
+ if (spec == null) {
+ break;
+ }
+
+ try {
+ String latest = HttpManager.post(spec, request);
+ latest = latest.trim();
+ Logger.info
+ ("The latest version of " + libname + " = " + latest);
+ return latest;
+ } catch (HttpException e) {
+ Logger.finest(e);
+ }
+ }
+
+ Logger.info("Cannot check the latest version of " + libname);
+ return null;
+ }
+
+ /** Fetches the library from NCBI and writes it using fileCreator */
+ DownloadResult downloadLib(FileCreator fileCreator, String libname, Version version) {
+ String request = "cmd=lib&version=1.0&libname=" + libname;
+
+ try {
+ request += "&" + osProperties();
+ } catch (Exception e) {
+ Logger.warning("Cannot download library: " + e.getMessage());
+ return DownloadResult.FAILED;
+ }
+
+ for (SratoolkitCgis cgis = new SratoolkitCgis(properties); ; ) {
+ String spec = cgis.nextSpec();
+ if (spec == null) {
+ break;
+ }
+ int code = HttpManager.post(spec, request, fileCreator, libname);
+ if (code == 200) {
+ return DownloadResult.SUCCESS;
+ } else if (code == 412) {
+ Logger.warning("Cannot download library: " + code);
+ return DownloadResult.UNSUPPORTED_OS;
+ } else {
+ Logger.warning("Cannot download library: " + code);
+ }
+ }
+ return DownloadResult.FAILED;
+ }
+
+ private String osProperties()
+ throws Exception
+ {
+ String request = "os_name=";
+ String name = System.getProperty("os.name");
+ if (name == null) {
+ throw new Exception("Cannot detect OS");
+ }
+ request += name + "&bits=" + LibManager.detectJVM().intString();
+ String arch = System.getProperty("os.arch");
+ if (arch != null) {
+ request += "&os_arch=" + arch;
+ }
+ String version = System.getProperty("os.version");
+ if (version != null) {
+ request += "&os_version=" + version;
+ }
+ return request;
+ }
+
+ private static class SratoolkitCgis {
+ private SratoolkitCgis(LMProperties properties) {
+ spec = properties.getProperty("/servers/sratookit-cgi");
+ if (spec != null) {
+ Logger.warning("Use " + spec + " from " + properties.cfgFilePath());
+ } else {
+ spec = "http://trace.ncbi.nlm.nih.gov/Traces/sratoolkit/sratoolkit.cgi";
+ }
+
+ done = false;
+ }
+
+ private String nextSpec() {
+ if (!done) {
+ done = true;
+ return spec;
+ } else {
+ return null;
+ }
+ }
+
+ private String spec;
+ private boolean done;
+ }
+
+ private LMProperties properties;
+}
diff --git a/ngs-java/gov/nih/nlm/ncbi/ngs/LMProperties.java b/ngs-java/gov/nih/nlm/ncbi/ngs/LMProperties.java
new file mode 100644
index 0000000..6f1ef5e
--- /dev/null
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/LMProperties.java
@@ -0,0 +1,202 @@
+/*===========================================================================
+*
+* PUBLIC DOMAIN NOTICE
+* National Center for Biotechnology Information
+*
+* This software/database is a "United States Government Work" under the
+* terms of the United States Copyright Act. It was written as part of
+* the author's official duties as a United States Government employee and
+* thus cannot be copyrighted. This software/database is freely available
+* to the public for use. The National Library of Medicine and the U.S.
+* Government have not placed any restriction on its use or reproduction.
+*
+* Although all reasonable efforts have been taken to ensure the accuracy
+* and reliability of the software and data, the NLM and the U.S.
+* Government do not and cannot warrant the performance or results that
+* may be obtained by using this software or data. The NLM and the U.S.
+* Government disclaim all warranties, express or implied, including
+* warranties of performance, merchantability or fitness for any particular
+* purpose.
+*
+* Please cite the author in any work or product based on this material.
+*
+* ==============================================================================
+*
+*/
+
+
+package gov.nih.nlm.ncbi.ngs;
+
+
+import java.util.Date;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+class LMProperties extends java.util.Properties {
+ LMProperties(String bitsStr, Map<String, String> libraryVersions) {
+ bits = bitsStr;
+ path = LibPathIterator.ncbiHome();
+
+ if (path != null) {
+ path += LibPathIterator.fileSeparator() + "LibManager.properties";
+
+ try {
+ FileInputStream inStream = new FileInputStream(path);
+ load(inStream);
+ inStream.close();
+ } catch (IOException e) {}
+ }
+ }
+
+ public Object setProperty(String key, String value) {
+ String saved = getProperty(key);
+ if (saved != null && saved.equals(value)) {
+ return saved;
+ } else {
+ dirty = true;
+ return super.setProperty(key, value);
+ }
+ }
+
+ String get(String libname) {
+ return get(libname, Logger.Level.FINE);
+ }
+
+ String cfgFilePath() {
+ return path;
+ }
+
+ void setLastSearch(String libname) {
+ setProperty(getLibRoot(libname) + "last-search", Long.toString(new Date().getTime()));
+ }
+
+ Date getLastSeach(String libname) {
+ String dateLong = getProperty(getLibRoot(libname) + "last-search");
+ if (dateLong == null) {
+ return null;
+ }
+
+ return new Date(Long.valueOf(dateLong));
+ }
+
+ void setLatestVersion(String libname, String version) {
+ String node = getLibRoot(libname);
+ setProperty(node + "latest-version/value", version);
+ setProperty(node + "latest-version/updated", Long.toString(new Date().getTime()));
+ }
+
+ String getLatestVersion(String libname, long cacheTrustInterval) {
+ String node = getLibRoot(libname);
+ String version = getProperty(node + "latest-version/value");
+ String dateLong = getProperty(node + "latest-version/updated");
+ if (dateLong == null || version == null) {
+ return null;
+ }
+
+ if (new Date().getTime() - Long.valueOf(dateLong) > cacheTrustInterval) {
+ remove(node + "latest-version/value");
+ remove(node + "latest-version/updated");
+ return null;
+ }
+
+ return version;
+ }
+
+ void notLoaded(String libname) {
+ String node = getLibRoot(libname);
+ remove(node + "loaded/path");
+ remove(node + "loaded/version");
+ remove(node + "last-search");
+ dirty = true;
+ }
+
+ void loaded(String libname, String version, String path)
+ { set(libname, "loaded", version, path); }
+
+ void saved(String libname, String version, String path)
+ { set(libname, "saved", version, path); }
+
+ void store() {
+ try {
+ if (!dirty) {
+ return;
+ }
+
+ File file = new File(cfgFilePath());
+ File parent = file.getParentFile();
+ if (parent == null) {
+ Logger.finest
+ ("Cannot find parent directory to store properties");
+ return;
+ } else if (!parent.exists()) {
+ if (!parent.mkdir()) {
+ Logger.finest("Cannot create " + parent.getName());
+ return;
+ }
+ parent.setExecutable(false, false);
+ parent.setReadable(false, false);
+ parent.setWritable(false, false);
+ parent.setExecutable(true, true);
+ parent.setReadable(true, true);
+ parent.setWritable(true, true);
+ }
+ FileOutputStream fileOut = new FileOutputStream(file);
+ store(fileOut, null);
+ fileOut.close();
+
+ dirty = false;
+ } catch (IOException e) {
+ Logger.finest(e);
+ }
+ }
+
+////////////////////////////////////////////////////////////////////////////////
+
+ private void set(String libname, String name, String version,
+ String path)
+ {
+ String node = getLibRoot(libname) + name +"/";
+
+ setProperty(node + "path" , path);
+ setProperty(node + "version", version);
+ }
+
+ private String get(String libname, Logger.Level level) {
+ String path = get(libname, "loaded", level);
+ if (path == null) {
+ path = get(libname, "saved", level);
+ }
+ return path;
+ }
+
+ private String get
+ (String libname, String name, Logger.Level level)
+ {
+ String node = getLibRoot(libname) + name +"/";
+ String version = getProperty(node + "version");
+ if (version != null) {
+ String path = getProperty(node + "path");
+ if (path != null) {
+ Logger.log(level, "The version of the most recently"
+ + " loaded " + libname + " = " + version);
+ return path;
+ } else {
+ remove(node + "version");
+ dirty = true;
+ }
+ }
+ return null;
+ }
+
+ private String getLibRoot(String libname) {
+ return "/dll/" + libname + "/" + bits +"/";
+ }
+
+ private String path;
+ private String bits;
+ private boolean dirty;
+}
diff --git a/ngs-sdk/language/python/py_PileupIteratorItf.cpp b/ngs-java/gov/nih/nlm/ncbi/ngs/LibDependencies.java
similarity index 83%
copy from ngs-sdk/language/python/py_PileupIteratorItf.cpp
copy to ngs-java/gov/nih/nlm/ncbi/ngs/LibDependencies.java
index 2116522..b11b91e 100644
--- a/ngs-sdk/language/python/py_PileupIteratorItf.cpp
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/LibDependencies.java
@@ -24,9 +24,11 @@
*
*/
-#include "py_PileupIteratorItf.h"
-#include "py_ErrorMsg.hpp"
+package gov.nih.nlm.ncbi.ngs;
-#include <ngs/itf/PileupItf.hpp>
-
-GEN_PY_ITERATOR_NEXT ( Pileup )
+class LibDependencies {
+ final static String NGS_SDK = "ngs-sdk";
+ final static String NCBI_VDB = "ncbi-vdb";
+ final static String NGS_SDK_VERSION = "1.2.4";
+ final static String NCBI_VDB_VERSION = "2.6.2";
+}
diff --git a/ngs-java/gov/nih/nlm/ncbi/ngs/LibManager.java b/ngs-java/gov/nih/nlm/ncbi/ngs/LibManager.java
index d2c0db2..d40fff8 100644
--- a/ngs-java/gov/nih/nlm/ncbi/ngs/LibManager.java
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/LibManager.java
@@ -28,18 +28,30 @@
package gov.nih.nlm.ncbi.ngs;
+import gov.nih.nlm.ncbi.ngs.error.LibraryIncompatibleVersionError;
+import gov.nih.nlm.ncbi.ngs.error.LibraryLoadError;
+import gov.nih.nlm.ncbi.ngs.error.LibraryNotFoundError;
+import gov.nih.nlm.ncbi.ngs.error.cause.ConnectionProblemCause;
+import gov.nih.nlm.ncbi.ngs.error.cause.DownloadDisabledCause;
+import gov.nih.nlm.ncbi.ngs.error.cause.InvalidLibraryCause;
+import gov.nih.nlm.ncbi.ngs.error.cause.JvmErrorCause;
+import gov.nih.nlm.ncbi.ngs.error.cause.LibraryLoadCause;
+import gov.nih.nlm.ncbi.ngs.error.cause.OutdatedJarCause;
+import gov.nih.nlm.ncbi.ngs.error.cause.PrereleaseReqLibCause;
+import gov.nih.nlm.ncbi.ngs.error.cause.UnsupportedArchCause;
+
import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
-import java.io.InputStreamReader;
-import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
import java.util.HashMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.Vector;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
/** This class is responsible for JNI dynamic library load
@@ -50,29 +62,41 @@ class LibManager implements FileCreator
/** Force it in force-majeure situations.
It also could be set without recompiling
by setting vdb.System.loadLibrary java system property */
- private static boolean JUST_DO_REGULAR_JAVA_SYSTEM_LOAD_LIBRARY = false;
+ private boolean JUST_DO_SIMPLE_LOAD_LIBRARY = false;
+
+ /**
+ * Will search for latest library version among all installed
+ */
+ private boolean SEARCH_FOR_LIBRARY = true;
+
+ /**
+ * Will check what is the latest version available online
+ */
+ private boolean AUTO_DOWNLOAD = true;
+
+ /**
+ * How often search for a latest installed library
+ */
+ private static final long SEARCH_LIB_FREQUENCY_INTERVAL = 7 * 24 * 60 * 60 * 1000;
+
+ /**
+ * How long we will trust latest version in cache before asking server
+ */
+ private static final long CACHE_LATEST_VERSION_INTERVAL = 7 * 24 * 60 * 60 * 1000;
/** Possible location to search for library to load.
The order of enum elements defines library location search order. */
enum Location
{
-/*KNOWN_PATH should be the first entry here
- if you want it to be loaded right after download.
- Otherwise the manager will try to the search previous location entries first.
- May be you want it to test something (e.g. a bad library file).
- And LATEST_PATH should be before KNOWN_PATH: it makes sure
- you will first download the latest version from NCBI if it was released */
- LATEST_PATH, /* path to the latest version of the library:
- found in the system or downloaded from NCBI */
- KNOWN_PATH, // from config or file downloaded from NCBI
- CFG, // from ~/.ncbi/LibManager.properties
+ CACHE, // from ~/.ncbi/LibManager.properties
NCBI_HOME, // ~/.ncbi/lib64|32
LIBPATH, // iterate "java.library.path" - extended LD_LIBRARY_PATH
NCBI_NGS_JAR_DIR, // directory where ncbi-ngs.jar is
CLASSPATH, // iterate "java.class.path" - where java classes are
CWD, // "."
- TMP // Temporary folder
+ TMP, // Temporary folder
+ DOWNLOAD
}
@@ -81,281 +105,127 @@ class LibManager implements FileCreator
b64,
bUNKNOWN;
- private String intString()
+ String intString()
{ switch (this) { case b32: return "32"; default: return "64";} }
}
+ private class LibSearchResult {
+ // will be true only if found version is compatible and higher or equal to minimal version
+ boolean versionFits = false;
+ Location location = null;
+ String path = null;
+ Version version = null;
+ LibraryLoadCause failCause = null;
+ }
-////////////////////////////////////////////////////////////////////////////////
-
-
- private class SratoolkitCgis {
- private SratoolkitCgis() {
- LMProperties properties = new LMProperties();
+ private class LibDownloadResult {
+ String savedPath = null;
+ DownloadManager.DownloadResult status;
+ }
- spec = properties.getProperty("/servers/sratookit-cgi");
- if (spec != null) {
- Logger.warning
- ("Use " + spec + " from " + properties.cfgFilePath());
- } else {
- spec =
- "http://trace.ncbi.nlm.nih.gov/Traces/sratoolkit/sratoolkit.cgi";
- }
+////////////////////// TODO check out of space condition ///////////////////////
- done = false;
+ LibManager ( String [] libs, String [] versions )
+ {
+ if (versions == null || libs == null) {
+ throw new RuntimeException("Neither libs nor versions can be null");
}
- private String nextSpec() {
- if (!done) {
- done = true;
- return spec;
- } else {
- return null;
- }
+ if (versions.length != libs.length) {
+ throw new RuntimeException("Invalid library versions: must match number of libraries");
}
- private String spec;
- private boolean done;
- }
-
-
-////////////////////////////////////////////////////////////////////////////////
-
+ checkSystemProperties();
+ locations = generateLocations();
- private class Latest extends HashMap<String, String> {
- private String get(String libname) {
- String value = super.get(libname);
- if (value == null) {
- value = latest(libname);
- if (value != null) {
- put(libname, value);
- }
- return value;
- } else {
- return value;
- }
+ for (int i = 0; i < libs.length; ++i) {
+ libraryVersions.put(libs[i], versions[i]);
}
- private String latest(String libname) {
- Logger.finest(
- ">> Checking the latest version of " + libname + " library...");
-
- String request = "cmd=vers&libname=" + libname;
-
- for (SratoolkitCgis cgis = new SratoolkitCgis(); ; ) {
- String spec = cgis.nextSpec();
- if (spec == null) {
- break;
- }
+ properties = new LMProperties(detectJVM().intString(), libraryVersions);
+ if (AUTO_DOWNLOAD) {
+ downloadManager = new DownloadManager(properties);
+ }
- try {
- String latest = HttpManager.post(spec, request);
- latest = latest.trim();
- Logger.info
- ("The latest version of " + libname + " = " + latest);
- return latest;
- } catch (HttpException e) {
- Logger.finest(e);
- }
+ if (!JUST_DO_SIMPLE_LOAD_LIBRARY && System.getProperty("vdb.deleteLibraries") != null) {
+ /* make sure we have the latest version of ngs-sdk & ncbi-vdb dll-s */
+ for (String libname : libs) {
+ Logger.warning( "Deleting all JNI libraries...");
+ LibPathIterator.deleteLibraries(this, libname);
}
-
- Logger.info("Cannot check the latest version of " + libname);
- return null;
}
}
-
-////////////////////////////////////////////////////////////////////////////////
-
-
- private class LMProperties extends java.util.Properties {
- private LMProperties() {
- bits = DetectJVM().intString();
-
- path = LibPathIterator.ncbiHome();
-
- if (path != null) {
- path +=
- LibPathIterator.fileSeparator() + "LibManager.properties";
-
- try {
- FileInputStream inStream = new FileInputStream(path);
- load(inStream);
- inStream.close();
- } catch (IOException e) {}
- }
+ private void checkSystemProperties() {
+ String loadLibraryProperty = System.getProperty("vdb.System.loadLibrary");
+ if (loadLibraryProperty != null && loadLibraryProperty.equals("1")) {
+ Logger.warning ( "Smart DLL search and library download was disabled" );
+ JUST_DO_SIMPLE_LOAD_LIBRARY = true;
+ AUTO_DOWNLOAD = false;
+ SEARCH_FOR_LIBRARY = false;
+ return;
}
- public Object setProperty(String key, String value) {
- String saved = getProperty(key);
- if (saved != null && saved.equals(value)) {
- return saved;
- } else {
- dirty = true;
- return super.setProperty(key, value);
- }
+ String noLibraryDownload = System.getProperty("vdb.System.noLibraryDownload");
+ if (noLibraryDownload != null && noLibraryDownload.equals("1")) {
+ Logger.warning ( "DLL download was disabled" );
+ AUTO_DOWNLOAD = false;
}
- private String get(String libname, String latest)
- { return get(libname, latest, Logger.Level.FINE); }
-
- private String getLoud(String libname, String latest)
- { return get(libname, latest, Logger.Level.INFO); }
-
- private String cfgFilePath() { return path; }
-
- private void notLoaded(String libname) {
- String node = "/dll/" + libname + "/" + bits + "/loaded/";
- remove(node + "path");
- remove(node + "version");
- dirty = true;
+ String noLibrarySearch = System.getProperty("vdb.System.noLibrarySearch");
+ if (noLibrarySearch != null && noLibrarySearch.equals("1")) {
+ Logger.warning ( "Search of installed DLL was disabled" );
+ SEARCH_FOR_LIBRARY = false;
}
+ }
- private void loaded(String libname, String version, String path)
- { set(libname, "loaded", version, path); }
-
- private void saved(String libname, String version, String path)
- { set(libname, "saved", version, path); }
+ private Location[] generateLocations() {
+ Location[] allLocations = Location.values();
+ Location[] result;
+ Set<Location> disabledLocations = new TreeSet<Location>();
+ if (JUST_DO_SIMPLE_LOAD_LIBRARY) {
+ disabledLocations.addAll(Arrays.asList(allLocations));
+ disabledLocations.remove(Location.LIBPATH);
+ }
- private void store() {
- try {
- if (!dirty) {
- return;
- }
+ if (!AUTO_DOWNLOAD) {
+ disabledLocations.add(Location.DOWNLOAD);
+ }
- File file = new File(cfgFilePath());
- File parent = file.getParentFile();
- if (parent == null) {
- Logger.finest
- ("Cannot find parent directory to store properties");
- return;
- } else if (!parent.exists()) {
- if (!parent.mkdir()) {
- Logger.finest("Cannot create " + parent.getName());
- return;
- }
- parent.setExecutable(false, false);
- parent.setReadable(false, false);
- parent.setWritable(false, false);
- parent.setExecutable(true, true);
- parent.setReadable(true, true);
- parent.setWritable(true, true);
+ if (!SEARCH_FOR_LIBRARY) {
+ // disable everything except cache, libpath and download
+ Set<Location> allowedLocations = new TreeSet<Location>(Arrays.asList(new Location[] {
+ Location.CACHE, Location.LIBPATH, Location.DOWNLOAD
+ }));
+ for (Location location : allLocations) {
+ if (!allowedLocations.contains(location)) {
+ disabledLocations.add(location);
}
- FileOutputStream fileOut = new FileOutputStream(file);
- store(fileOut, null);
- fileOut.close();
-
- dirty = false;
- } catch (IOException e) {
- Logger.finest(e);
}
}
-////////////////////////////////////////////////////////////////////////////////
-
- private void set(String libname, String name, String version,
- String path)
- {
- String node = "/dll/" + libname + "/" + bits + "/" + name +"/";
-
- setProperty(node + "path" , path);
- setProperty(node + "version", version);
+ if (disabledLocations.size() > 0) {
+ Logger.info("Disabled locations: " + Arrays.toString(disabledLocations.toArray()));
}
- private String get(String libname, String latest, Logger.Level level) {
- String path = get(libname, "loaded", latest, level);
- if (path == null) {
- path = get(libname, "saved" , latest, level);
+ result = new Location[allLocations.length - disabledLocations.size()];
+ int i = 0;
+ for (Location location : allLocations) {
+ if (disabledLocations.contains(location)) {
+ continue;
}
- return path;
- }
- private String get
- (String libname, String name, String latest, Logger.Level level)
- {
- String node = "/dll/" + libname + "/" + bits + "/" + name +"/";
- String version = getProperty(node + "version");
- if (version != null) {
- String path = getProperty(node + "path");
- if (path != null) {
- File f = new File(path);
- if (f.exists() &&
- new Version(version).compareTo(new Version(latest)) < 0)
- {
- remove(node + "path");
- remove(node + "version");
- dirty = true;
- } else {//new Exception().printStackTrace();
- Logger.log(level, "The version of the most recently"
- + " loaded " + libname + " = " + version);
- return path;
- }
- } else {
- remove(node + "version");
- dirty = true;
- }
- }
- return null;
+ result[i++] = location;
}
- private String path;
- private String bits;
- private boolean dirty;
- }
-
-
-////////////////////// TODO check out of space condition ///////////////////////
-
-
- LibManager ()
- {
- this ( null, null );
- }
-
+ assert i == result.length;
- LibManager ( String [] libs )
- {
- this ( null, libs );
+ return result;
}
- private LibManager ( Location [] locations, String [] libs )
+ Location[] locations()
{
- properties = new LMProperties();
-
- latest = new Latest();
- latestLibPaths = new HashMap<String, String>();
-
-// if (locations == null) locations = getLocationProperty ();
-
- if (locations != null)
- this.location = locations;
- else
- this.location = Location.values ();
-
- if (System.getProperty("vdb.System.loadLibrary") != null)
- {
- Logger.warning ( "Smart DLL search was disabled" );
- JUST_DO_REGULAR_JAVA_SYSTEM_LOAD_LIBRARY = true;
- }
-
- if (JUST_DO_REGULAR_JAVA_SYSTEM_LOAD_LIBRARY || libs == null) {
- return;
- }
-
- boolean delete = System.getProperty("vdb.deleteLibraries") != null;
- /* make sure we have the latest version of ngs-sdk & ncbi-vdb dll-s */
- for (String libname : libs) {
- if (delete) {
- Logger.warning( "Deleting all JNI libraries...");
- LibPathIterator.deleteLibraries(this, libname);
- } else {
- launchLibCheck(libname);
- }
- }
-
- if (! delete) {
- properties.store();
- }
+ return locations;
}
@@ -364,8 +234,7 @@ class LibManager implements FileCreator
/** Creates a file by finding directory by iterating the location array
and using libname to generate the file name */
- public BufferedOutputStream create ( String libname )
- {
+ public BufferedOutputStream create ( String libname ) {
createdFileName = null;
for (int i = 0; i < 2; ++i) {
Location location = null;
@@ -428,7 +297,6 @@ or pathname not found and its directory is not writable */
continue;
}
- updateKnownLibPath(pathname);
createdFileName = pathname;
Logger.fine("Opened " + pathname);
@@ -439,57 +307,107 @@ or pathname not found and its directory is not writable */
}
- public void done(boolean success)
- { if (!success) { createdFileName = null; } }
+ public void done(boolean success) {
+ if (!success) {
+ createdFileName = null;
+ }
+ }
////////////////////////////////////////////////////////////////////////////////
- /** Loads the system library by finding it by iterating the location array.
- Try to download it from NCBI if not found. */
- boolean loadLibrary( String libname )
- {
- boolean ok = false;
+ /**
+ * Loads the system library by finding it by iterating the location array.
+ * Try to download it from NCBI if not found.
+ *
+ * Will throw LibraryLoadError when failed.
+ */
+ void loadLibrary( String libname ) {
+ Version requiredVersion = getRequiredVersion(libname);
+ boolean updateCache = Arrays.asList(locations).contains(Location.CACHE);
- Logger.fine("Loading " + libname + " library...");
- if (load(libname) != null) {
- Logger.fine("Loaded " + libname + " library");
- ok = true;
- } else {
- Logger.warning("Failed to load " + libname + " library");
- if (! JUST_DO_REGULAR_JAVA_SYSTEM_LOAD_LIBRARY) {
-/* Here we try do download the library from NCBI always
- when we were not able to System.load Library it. */
+ Logger.fine("Searching for " + libname + " library...");
+ try {
+ LibSearchResult searchResult = searchLibrary(libname, requiredVersion);
- Logger.info("Downloading " + libname + " from NCBI...");
- if (download( libname )) {
- Logger.info("Downloaded " + libname + " from NCBI");
- Logger.fine("Loading " + libname + " library...");
- String path = load(libname);
- Logger.fine(path != null ? "Loaded " : "Failed to load "
- + libname + " library");
- ok = path != null;
+ if (searchResult.path == null) {
+ throw new LibraryNotFoundError(libname, "No installed library was found",
+ searchResult.failCause);
+ }
+
+ Logger.fine("Found " + libname + " library");
+
+ String libpath = searchResult.path;
+ Logger.info("Loading " + libname + "...");
+ try {
+ if (!mocksEnabled) {
+ if (libpath.startsWith(libname)) {
+ System.loadLibrary(libpath);
+ } else {
+ System.load(libpath);
+ }
+ } else if (mockLoadException != null) {
+ throw mockLoadException;
}
- else {
- Logger.warning
- ("Failed to download " + libname + " from NCBI");
- ok = false;
+ } catch (Throwable e) {
+ if (searchResult.location != Location.DOWNLOAD) {
+ throw new LibraryLoadError(libname, "Failed to load found library " + libpath,
+ new JvmErrorCause(e));
}
- }
- }
- properties.store();
+ throw new LibraryLoadError(libname, "No installed library was found and downloaded library '" + libpath + "' cannot be loaded",
+ new JvmErrorCause(e),
+ "Please install ngs and ncbi-vdb manually:" +
+ " https://github.com/ncbi/ngs/wiki/Downloads" +
+ " or write to \"sra-tools at ncbi.nlm.nih.gov\" if problems persist");
- return ok;
- }
+ }
+ Logger.fine("Loaded " + libname + " library");
+ Logger.fine("Checking library " + libname + " version...");
+ String v;
+ if (!mocksEnabled) {
+ v = LibVersionChecker.getLoadedVersion(libname);
+ } else {
+ v = mockLoadedLibraryVersion;
+ }
+ if (v == null) {
+ throw new LibraryLoadError(libname, "Failed to retrieve loaded library's version", new InvalidLibraryCause());
+ }
+ Version loadedVersion = new Version(v);
+ if (loadedVersion.compareTo(requiredVersion) < 0 || !loadedVersion.isCompatible(requiredVersion)) {
+ Logger.fine("Library version is not compatible. Required: " + requiredVersion.toSimpleVersion() + " loaded: " + loadedVersion.toSimpleVersion());
+ LibraryLoadCause failCause = searchResult.failCause;
+ if (searchResult.location == Location.DOWNLOAD || failCause == null) {
+ failCause = (loadedVersion.compareTo(requiredVersion) < 0) ?
+ new PrereleaseReqLibCause() : new OutdatedJarCause();
+ }
+ throw new LibraryIncompatibleVersionError(libname, "Library is incompatible",
+ libpath, failCause);
+ }
+ Logger.fine("Library " + libname + " was loaded successfully." +
+ " Version = " + loadedVersion.toSimpleVersion());
- Location[] locations()
- {
- return location;
- }
+ if (updateCache) {
+ properties.loaded(libname, searchResult.version.toSimpleVersion(), libpath);
+ if (searchResult.location != Location.CACHE) {
+ properties.setLastSearch(libname);
+ }
+ }
+ } catch (LibraryLoadError e) {
+ if (updateCache) {
+ properties.notLoaded(libname);
+ }
+ Logger.warning("Loading of " + libname + " library failed");
+ throw e;
+ } finally {
+ if (updateCache) {
+ properties.store();
+ }
+ }
+ }
//////////////////////////// static package methods ////////////////////////////
@@ -528,7 +446,7 @@ or pathname not found and its directory is not writable */
}
- static Bits DetectJVM()
+ static Bits detectJVM()
{
final String keys [] = {
"sun.arch.data.model",
@@ -548,28 +466,6 @@ or pathname not found and its directory is not writable */
return Bits.bUNKNOWN;
}
-
- static String osProperties()
- throws Exception
- {
- String request = "os_name=";
- String name = System.getProperty("os.name");
- if (name == null) {
- throw new Exception("Cannot detect OS");
- }
- request += name + "&bits=" + DetectJVM().intString();
- String arch = System.getProperty("os.arch");
- if (arch != null) {
- request += "&os_arch=" + arch;
- }
- String version = System.getProperty("os.version");
- if (version != null) {
- request += "&os_version=" + version;
- }
- return request;
- }
-
-
//////////////////////////// private static methods ////////////////////////////
@@ -577,7 +473,7 @@ or pathname not found and its directory is not writable */
private static String libnameWithDataModel(String libname)
{
String m = null;
- switch (DetectJVM()) {
+ switch (detectJVM()) {
case b64:
m = "-64";
break;
@@ -601,7 +497,7 @@ or pathname not found and its directory is not writable */
int n = 0;
for (int i = 0; i < p.length(); ++i) {
- if ("CJKLNTW".indexOf(p.charAt(i)) >= 0) {
+ if ("PJCLNTWD".indexOf(p.charAt(i)) >= 0) {
++n;
}
}
@@ -614,14 +510,14 @@ or pathname not found and its directory is not writable */
n = 0;
for (int i = 0; i < p.length(); ++i) {
switch (p.charAt(i)) {
- case 'C':
+ case 'P':
locations[n] = Location.CLASSPATH;
break;
case 'J':
locations[n] = Location.NCBI_NGS_JAR_DIR;
break;
- case 'K':
- locations[n] = Location.KNOWN_PATH;
+ case 'C':
+ locations[n] = Location.CACHE;
break;
case 'L':
locations[n] = Location.LIBPATH;
@@ -635,6 +531,9 @@ or pathname not found and its directory is not writable */
case 'W':
locations[n] = Location.CWD;
break;
+ case 'D':
+ locations[n] = Location.DOWNLOAD;
+ break;
default:
continue;
}
@@ -644,69 +543,21 @@ or pathname not found and its directory is not writable */
return locations;
}
-
- private static String current(String libname) {
- try {
- if (libname.equals("ncbi-vdb")) {
- return Manager.getPackageVersion();
- } else if (libname.equals("ngs-sdk")) {
- return ngs.Package.getPackageVersion();
- } else {
- Logger.warning("It is not known how to check "
- + "the version of " + libname + " library");
- return null;
- }
- } catch (ngs.ErrorMsg e) {
- Logger.finest(e);
- } catch (UnsatisfiedLinkError e) {
- Logger.finest(e);
+ private Version checkLibraryVersion(String libname, String libpath, boolean useLoadLibrary) {
+ if (!useLoadLibrary && !fileExists(libpath)) {
+ Logger.finer("File " + libpath + " not found");
+ return null;
}
- return "0";
- }
-
- private boolean systemLoad(String filename, String libname) {
- if (prepareToLoad(filename)) {
- Logger.finer("System.load(" + filename + ")...");
- try {
- System.load(filename);
- Logger.fine("Loaded library " + filename);
- properties.loaded(libname, current(libname), filename);
- return true;
- } catch (UnsatisfiedLinkError e) {
- Logger.fine("error: " + e);
- } catch (Throwable e) {
- Logger.warning("Cannot load library: " + e);
- }
+ Version version = LibVersionChecker.getVersion(libname, libpath, useLoadLibrary);
+ if (version == null) {
+ Logger.fine("Cannot load or get library version: " + libpath);
}
- return false;
- }
-
- private boolean systemLoadLibrary
- (String libnameWithDataModl, Location l, String libname)
- {
-// System.loadLibrary is using java.library.path to find the library
- Logger.finest("java.library.path = "
- + System.getProperty("java.library.path"));
- Logger.fine(l + ": System.loadLibrary(" + libnameWithDataModl + ")...");
- Logger.finest("System.mapLibraryName(" + libnameWithDataModl + ") = "
- + System.mapLibraryName(libnameWithDataModl));
- try {
- System.loadLibrary(libnameWithDataModl);
- Logger.fine("Loaded library " + libnameWithDataModl);
- properties.loaded(libname, current(libname), libnameWithDataModl);
- return true;
- } catch (UnsatisfiedLinkError e) {
- Logger.fine("cannot load library: " + e);
- } catch (Throwable e) {
- Logger.warning("Cannot load library: " + e);
- }
- return false;
+ return version;
}
-
- private static boolean prepareToLoad(String filename) {
+ private static boolean fileExists(String filename) {
File file = new File(filename);
if (file.exists()) {
return true;
@@ -716,99 +567,107 @@ or pathname not found and its directory is not writable */
}
}
+////////////////////////////////////////////////////////////////////////////////
- private static void printLoadingMsg(Location l, String libname)
- {
- if (l == Location.LIBPATH) {
- Logger.finer("LoadingLibrary " + libname + "...");
- } else {
- Logger.finer("Loading " + libname + " from " + l + "...");
+ private Version getRequiredVersion(String libname) {
+ String minimalVersion = libraryVersions.get(libname);
+ if (minimalVersion == null) {
+ throw new RuntimeException("Library '" + libname + "' version was not specified");
}
+ return new Version(minimalVersion);
}
+ private Version getLatestVersion(String libname) {
+ if (latestVersions.containsKey(libname)) {
+ return latestVersions.get(libname);
+ }
-////////////////////////////////////////////////////////////////////////////////
+ String v = properties.getLatestVersion(libname, CACHE_LATEST_VERSION_INTERVAL);
+ if (v == null && AUTO_DOWNLOAD) {
+ v = downloadManager.getLatestVersion(libname);
+ if (v != null) {
+ properties.setLatestVersion(libname, v);
+ }
+ }
+ // we will cache whatever we have here, even null
+ Version version = null;
+ if (v != null) {
+ version = new Version(v);
+ }
+ latestVersions.put(libname, version);
- /** Tries to load the library by searching it using location array.
- If JUST_DO_REGULAR_JAVA_SYSTEM_LOAD_LIBRARY = true
- then just call plain System.LoadLibrary(libname) */
- private String load(String libname)
- {
- for (Location l : location) {
- if (JUST_DO_REGULAR_JAVA_SYSTEM_LOAD_LIBRARY) {
- l = Location.LIBPATH;
- }
+ return version;
+ }
- printLoadingMsg(l, libname);
+ private LibSearchResult searchLibrary(String libname, Version requiredVersion) {
+ LibSearchResult searchResult = new LibSearchResult();
+ for (Location l : locations) {
+ Logger.info("Checking " + libname + " from " + l + "...");
+
+ List<String> pathsToCheck = new ArrayList<String>();
+ boolean useLoadLibrary = false;
+ boolean searchEvenAfterFound = !JUST_DO_SIMPLE_LOAD_LIBRARY;
switch (l) {
- case LIBPATH: {
- if (systemLoadLibrary(libname, l, libname)) {
- return libname;
- }
- if (JUST_DO_REGULAR_JAVA_SYSTEM_LOAD_LIBRARY) {
- return null;
- }
+ case LIBPATH: {
+ pathsToCheck.add(libname);
String libnameWithDataModel = libnameWithDataModel(libname);
if (libnameWithDataModel != null) {
- if (systemLoadLibrary(libnameWithDataModel, l, libname)) {
- return libnameWithDataModel;
- }
+ pathsToCheck.add(libnameWithDataModel);
}
+ useLoadLibrary = true;
break;
- }
- case LATEST_PATH:
- case CFG: {
- String filename = null;
- if (l == Location.LATEST_PATH) {
- if (latestLibPaths == null) {
- continue;
- }
- filename = latestLibPaths.get(libname);
- } else {
- filename = properties.get(libname, latest.get(libname));
- }
+ }
+ case CACHE: {
+ String filename = properties.get(libname);
if (filename == null) {
continue;
}
- if (filename.startsWith(libname)) {
- if (systemLoadLibrary(filename, l, libname)) {
- return libname;
- }
+
+ // when search is enabled, we might skip it if cache has information about previously
+ // loaded library and last search was less than SEARCH_LIB_FREQUENCY_INTERVAL ago
+ Date lastSearchDate = properties.getLastSeach(libname);
+
+ searchEvenAfterFound = lastSearchDate == null ||
+ (new Date().getTime() - lastSearchDate.getTime() > SEARCH_LIB_FREQUENCY_INTERVAL);
+
+ pathsToCheck.add(filename);
+ // this is kind of hack, but it does not require different checks between win/unix
+ // we say that library was loaded from LIBPATH location when its path starts from library simple name
+ useLoadLibrary = filename.startsWith(libname);
+ break;
+ }
+ case DOWNLOAD: {
+ Logger.info("Downloading " + libname + " from NCBI...");
+ LibDownloadResult downloadResult;
+ if (!mocksEnabled) {
+ downloadResult = download(libname);
+ } else if (mockDownloadStatus == null) {
+ throw new RuntimeException("mockDownloadStatus must be set when mocks enabled");
} else {
- if (systemLoad(filename, libname)) {
- return filename;
- }
+ downloadResult = new LibDownloadResult();
+ downloadResult.status = mockDownloadStatus;
+ downloadResult.savedPath = "/some/path/" + libname;
}
- if (l == Location.CFG) {
- properties.notLoaded(libname);
- }
- break;
- }
- default: {
- String name[] = null;
- if (l == Location.KNOWN_PATH) {
- if (knownLibPath == null) {
- continue;
+ if (downloadResult.status != DownloadManager.DownloadResult.SUCCESS) {
+ Logger.warning("Failed to download " + libname + " from NCBI");
+ if (downloadResult.status == DownloadManager.DownloadResult.UNSUPPORTED_OS) {
+ searchResult.failCause = new UnsupportedArchCause();
} else {
- for (int i = 0;
- i < knownLibPath.length && knownLibPath[i] != null;
- ++i)
- {
- if (knownLibPath[i].contains(libname)) {
- name = new String[1];
- name[0] = knownLibPath[i];
- break;
- }
- }
+ searchResult.failCause = new ConnectionProblemCause();
}
+ continue;
}
- if (name == null) {
- name = mapLibraryName(libname);
- }
- Logger.finest("System.mapLibraryName(" + libname + ") = "
- + name[0]);
+ Logger.info("Downloaded " + libname + " from NCBI");
+ Logger.fine("Checking " + libname + " library...");
+
+ pathsToCheck.add(downloadResult.savedPath);
+ break;
+ }
+ default: {
+ String name[] = mapLibraryName(libname);
+ Logger.finest("System.mapLibraryName(" + libname + ") = " + name[0]);
LibPathIterator it = new LibPathIterator(l, name);
while (true) {
@@ -817,97 +676,118 @@ or pathname not found and its directory is not writable */
break;
}
- if (systemLoad(filename, libname)) {
- return filename;
- }
+ pathsToCheck.add(filename);
}
break;
- }
}
- }
-
- return null;
- }
+ }
-////////////////////////////////////////////////////////////////////////////////
+ boolean foundInLocation = false;
+ for (String path : pathsToCheck) {
+ Version v;
+ if (!mocksEnabled) {
+ v = checkLibraryVersion(libname, path, useLoadLibrary);
+ } else if (mockLocationVersions == null) {
+ throw new RuntimeException("mockLocationVersions must be set when mocks enabled");
+ } else {
+ v = mockLocationVersions.get(l);
+ }
+ if (v == null) {
+ continue;
+ }
+ foundInLocation = true;
+
+ boolean versionFits = v.isCompatible(requiredVersion) && v.compareTo(requiredVersion) >= 0;
+ // replace a found version if either:
+ // a) none was previously found
+ // b) found version which fits requirements and it is higher than previously found
+ // c) found version version which fits requirements while previously found one does not
+ if (searchResult.path == null ||
+ (versionFits && (v.compareTo(searchResult.version) > 0) || !searchResult.versionFits)) {
+ searchResult.versionFits = versionFits;
+ searchResult.location = l;
+ searchResult.version = v;
+ searchResult.path = path;
+ }
- /** Downloads the library and default configuration from NCBI.
- Save them where it can be found by LibManager.loadLibrary() */
- private boolean download(String libname)
- { return download(libname, latest.get(libname)); }
+ if (searchResult.versionFits && !searchEvenAfterFound) {
+ break;
+ }
+ }
+ if (l == Location.DOWNLOAD) {
+ // when we downloaded something that either can't be loaded or does not fit our requirements
+ // or we just overwrote our best found library and cannot load it
+ if (!searchResult.versionFits ||
+ (!foundInLocation && searchResult.path.equals(pathsToCheck.get(0)))) {
+ searchResult.versionFits = false;
+ searchResult.location = l;
+ searchResult.version = null;
+ searchResult.path = pathsToCheck.get(0);
+ }
+ }
- private boolean download(String libname, String latest) {
- int i = -1;
- if (knownLibPath != null) {
- i = 0;
- while(knownLibPath[i] != null) {
- ++i;
+ if (searchResult.version != null && searchResult.version.isCompatible(requiredVersion)) {
+ Version latestVersion = getLatestVersion(libname);
+ // if we don't know the latest version, then we might stop the search if
+ // found version is okay and searchEvenAfterFound == false
+ if (latestVersion == null && searchResult.version.compareTo(requiredVersion) >= 0 &&
+ !searchEvenAfterFound) {
+ break;
+ }
+ // if we know the latest version, then we should search until find it
+ if (latestVersion != null && searchResult.version.compareTo(latestVersion) >= 0) {
+ break;
+ }
}
- --i;
}
- if (downloadLib(libname, latest) == null) {
- return false;
- }
+ boolean downloadEnabled = Arrays.asList(locations).contains(Location.DOWNLOAD);
- if (knownLibPath == null || knownLibPath.length < 1) {
- Logger.finest("cannot find downloaded library path: "
- + "skipping configuration download");
- return true;
- }
- int j = 0;
- while(knownLibPath[j] != null) {
- ++j;
- }
- --j;
- if (i != j - 1) {
- Logger.finest("cannot find downloaded library path[]: "
- + "skipping configuration download");
- return true;
+ if (searchResult.failCause == null && !downloadEnabled) {
+ searchResult.failCause = new DownloadDisabledCause();
}
- return downloadKfg(knownLibPath[i + 1]);
+ return searchResult;
}
+////////////////////////////////////////////////////////////////////////////////
- /** Fetches the library from NCBI and writes it to where it can be found by
- LibManager.loadLibrary() */
- private String downloadLib(String libname, String version) {
- String request = "cmd=lib&version=1.0&libname=" + libname;
- try {
- request += "&" + osProperties();
- } catch (Exception e) {
- Logger.warning("Cannot download library: " + e.getMessage());
- return null;
+ /** Downloads the library and default configuration from NCBI.
+ Save them where it can be found by LibManager.loadLibrary() */
+ private LibDownloadResult download(String libname) {
+ if (!AUTO_DOWNLOAD) {
+ throw new RuntimeException("AUTO_DOWNLOAD is disabled. This method should not be called");
}
- for (SratoolkitCgis cgis = new SratoolkitCgis(); ; ) {
- String spec = cgis.nextSpec();
- if (spec == null) {
- break;
- }
- int code = HttpManager.post(spec, request, this, libname);
- if (code == 200) {
- String r = createdFileName;
- createdFileName = null;
- properties.saved(libname, version, r);
- return r;
- } else {
- Logger.warning("Cannot download library: " + code);
- }
+ LibDownloadResult result = new LibDownloadResult();
+
+ Version latestVersion = getLatestVersion(libname);
+ if (latestVersion == null) {
+ result.status = DownloadManager.DownloadResult.FAILED;
+ return result;
+ }
+ result.status = downloadManager.downloadLib(this, libname, latestVersion);
+
+ if (result.status == DownloadManager.DownloadResult.SUCCESS) {
+ result.savedPath = createdFileName;
+ createdFileName = null;
+ properties.saved(libname, latestVersion.toSimpleVersion(), result.savedPath);
}
- return null;
- }
+ return result;
+
+// return downloadKfg(knownLibPath[i + 1]);
+ }
/** Fetches the configuration from NCBI */
private boolean downloadKfg(String libpath) {
Logger.finest("configuration download is disabled");
/*
+ // this is broken. if enabled, move download part to a DownloadManager
File l = new File(libpath);
String d = l.getParent();
if (d == null) {
@@ -987,234 +867,50 @@ or pathname not found and its directory is not writable */
return true;
}
-
////////////////////////////////////////////////////////////////////////////////
-
- /** Check the version of local dll,
- compare it with the latest available;
- download the latest if it is more recent */
- private String checkLib(String libname, String latest) {
- Logger.finest("> Checking the version of " + libname + " library...");
-
- if (latest == null || latest.length() == 0) {
- latest = this.latest.get(libname);
- } else {
- this.latest.put(libname, latest);
- Logger.info("The latest version of " + libname + " = " + latest);
- }
-
- Logger.finest(">> Checking the current version of "
- + libname + " library...");
- String path = load(libname);
- String current = current(libname);
- Logger.info("The current version of " + libname + " = " + current);
-
- if (new Version(current).compareTo(new Version(latest)) < 0) {
- Logger.info("Will download " + libname + " library");
- path = downloadLib(libname, latest);
- } else {
- Logger.info("Will not download " + libname + " library");
- }
-
- Logger.finest
- ("< ...Done checking the version of " + libname + " library");
-
- return path;
- }
-
-
- /** Execute a process to check the version of dll,
- and download it if it is out of date */
- private void launchLibCheck(String libname) {
- String latest = this.latest.get(libname);
- if (properties.getLoud(libname, latest) != null) {
- // LibManager.properties knows already where the latest dll version is
- return;
- } else {
- Logger.finest
- (libname + "-" + latest + " was not found in properties");
- }
- Vector<String> cmdarray = new Vector<String>();
- String property = System.getProperty("java.home");
- if (property != null) {
- cmdarray.add(property + LibPathIterator.fileSeparator()
- + "bin" + LibPathIterator.fileSeparator() + "java");
- if (!tryJava(cmdarray)) {
- cmdarray.remove(0);
- }
- }
- if (cmdarray.size() == 0) {
- cmdarray.add("java");
- if (!tryJava(cmdarray)) {
- return;
- }
- }
-
- String classpath = System.getProperty("java.class.path");
- if (classpath != null) {
- cmdarray.add("-cp");
- cmdarray.add(classpath);
- }
- cmdarray.add(addProperty("java.library.path"));
- if (System.getProperty("vdb.log") != null) {
- cmdarray.add(addProperty("vdb.log"));
- }
- cmdarray.add("gov.nih.nlm.ncbi.ngs.LibManager");
- cmdarray.add(libname);
- if (latest != null) {
- cmdarray.add(latest);
- }
-
- Logger.info(">>> RUNNING CHILD ...");
- try {
- String cmd[] = new String[cmdarray.size()];
- for (int i = 0; i < cmdarray.size(); ++i) {
- cmd[i] = cmdarray.elementAt(i);
- }
- Logger.finest(cmd);
- Process p = Runtime.getRuntime().exec(cmd);
- BufferedReader bri =
- new BufferedReader(new InputStreamReader(p.getInputStream()));
- BufferedReader bre =
- new BufferedReader(new InputStreamReader(p.getErrorStream()));
- String line = null;
- while ((line = bre.readLine()) != null)
- { System.err.println(line); }
- bre.close();
- while ((line = bri.readLine()) != null) {
- String found = null;
- Pattern pattern = Pattern.compile
- ("^LibManager: libname='(.*)' filename='(.*)'$");
- Matcher matcher = pattern.matcher(line);
- while (matcher.find()) {
- found = matcher.group(1);
- if (!found.startsWith(libname)) {
- continue;
- }
- String filename = matcher.group(2);
- latestLibPaths.put(libname, filename);
- break;
- }
- if (found == null) {
- System.out.println(line);
- }
- }
- bri.close();
- p.waitFor();
- } catch (Exception e) { Logger.finest(e); }
- Logger.info("<<< Done CHILD");
- }
-
-
- /** Make sure we can execute java */
- private boolean tryJava(Vector<String> cmdarray) {
- try {
- Process p
- = Runtime.getRuntime().exec(cmdarray.elementAt(0) + " -?");
- if (p.waitFor() == 0) {
- return true;
- }
- } catch (Exception e) {}
- return false;
- }
-
-
- /** Create java property option */
- private String addProperty(String key) {
- String property = System.getProperty(key);
- if (property != null) {
- return "-D" + key + "=" + property + "";
- } else {
- return "";
- }
- }
-
-
- /** Add the pathname to knownLibPath array */
- private void updateKnownLibPath(String pathname) {
- int l = 9;
-
- if (knownLibPath == null) {
- knownLibPath = new String[l];
- } else {
- l = knownLibPath.length;
- }
-
- int i = 0;
- for (i = 0; i < l; ++i) {
- if (knownLibPath[i] == null) {
- break;
- }
- }
-
- if (i >= l) {
- String tmp[] = knownLibPath;
- l *= 2;
- knownLibPath = new String[l];
- for (i = 0; i < tmp.length; ++i) {
- knownLibPath[i] = tmp[i];
- }
- }
-
- knownLibPath[i] = pathname;
- }
-
-
-////////////////////////////////////////////////////////////////////////////////
-
-
- private String[] knownLibPath; // location where library was downloaded to
-
/** Possible location to search for library to load.
The order of elements defines library location search order. */
- private Location[] location;
+ private Location[] locations;
+
+ /** Minimal versions for each of the libraries */
+ private Map<String, String> libraryVersions = new HashMap<String, String>();
- /** Locations where the latest libraries were found */
- private HashMap<String, String> latestLibPaths;
+ /** Latest versions downloaded from NCBI or taken from cache for each of the libraries */
+ private HashMap<String, Version> latestVersions = new HashMap<String, Version>();
- /** The latest available library versions */
- private Latest latest;
+ /** Knows how to check and download latest libraries versions */
+ private DownloadManager downloadManager;
/** Is updated by FileCreator methods called by HttpManager */
private String createdFileName;
+ /** File that plays a role of a cache for information
+ * of libraries locations/versions between runs */
private LMProperties properties; // to keep dll path/version-s
////////////////////////////////////////////////////////////////////////////////
+/// These variables alter LibManager behaviour and should only be used in tests
+ boolean mocksEnabled = false;
+ Map<Location, Version> mockLocationVersions;
+ DownloadManager.DownloadResult mockDownloadStatus;
+ Throwable mockLoadException;
+ String mockLoadedLibraryVersion;
- /** Call checkLib for every argument to the version of local dll,
- compare it with the latest available
- and download the latest if it is more recent */
- public static void main(String[] args) {
- LibManager l = new LibManager();
-
- for (int i = 0; i < args.length; i++) {
- String libname = args[i];
- String version = null;
- if (i + 1 < args.length) {
- version = args[++i];
- }
- String path = l.checkLib(libname, version);
- if (path != null) {
- System.out.println("LibManager: libname='"
- + libname + "' filename='" + path + "'");
- }
- }
-
- l.properties.store();
- }
+////////////////////////////////////////////////////////////////////////////////
/*******************************************************************************
-Djava.library.path
-Dvdb.log
-off if JUST_DO_REGULAR_JAVA_SYSTEM_LOAD_LIBRARY
+off if JUST_DO_SIMPLE_LOAD_LIBRARY
+
+-Dvdb.System.noLibraryDownload=1 - will turn auto-download off
+-Dvdb.System.noLibrarySearch=1 - with previous option will not try
+ to find latest installed lib
-TODO save location where library was found
-(try to use load instead of loadLibrary even for LIBPATH);
-add which() method to return this location(?);
+TODO
try to load the library if LibManager.loadLibrary() was never called.
What if loadLibrary() is called several times? load()
http://docs.oracle.com/javase/6/docs/api/java/util/logging/Level.html
diff --git a/ngs-java/gov/nih/nlm/ncbi/ngs/LibPathIterator.java b/ngs-java/gov/nih/nlm/ncbi/ngs/LibPathIterator.java
index b59ddd0..e214cc5 100644
--- a/ngs-java/gov/nih/nlm/ncbi/ngs/LibPathIterator.java
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/LibPathIterator.java
@@ -81,13 +81,8 @@ class LibPathIterator {
this.mgr = mgr;
this.location = location;
+ this.filenames = filename;
- if (location == LibManager.Location.KNOWN_PATH) {
- this.abspath = filename[0];
- } else {
- this.filenames = filename;
- }
-
this.parents = parents;
this.separator = fileSeparator();
@@ -128,19 +123,10 @@ class LibPathIterator {
crn = crnLocation;
}
- if (crn != null && crn == LibManager.Location.KNOWN_PATH) {
- if (abspath != null) {
- return abspath;
- } else {
- continue;
- }
- }
- else {
- if (separator == null) {
- throw new NullPointerException();
- }
- return path += separator + filename;
+ if (separator == null) {
+ throw new NullPointerException();
}
+ return path += separator + filename;
}
}
@@ -148,7 +134,7 @@ class LibPathIterator {
/** Iterate over all locations and print them: debug/test */
static boolean list( String libname )
{
- return iterate(new LibManager(), libname, false);
+ return iterate(new LibManager(new String[] {}, new String[] {}), libname, false);
}
@@ -175,6 +161,7 @@ class LibPathIterator {
}
while (true) {
+ // TODO(andrii): check if that will work with new changes
++iLocation;
Logger.finest("LibPathIterator.reset() " + iLocation);
if (location == null) {
@@ -205,11 +192,6 @@ class LibPathIterator {
continue;
}
return true;
- case KNOWN_PATH:
- if (!resetPaths(abspath)) {
- continue;
- }
- return true;
case LIBPATH:
path = System.getProperty("java.library.path");
Logger.finest("java.library.path = " + path);
@@ -500,7 +482,7 @@ Here we use it just to find where to write the downoaded file. */
}
path += fileSeparator() + "lib";
- switch (LibManager.DetectJVM()) {
+ switch (LibManager.detectJVM()) {
case b64:
path += "64";
break;
diff --git a/ngs-java/gov/nih/nlm/ncbi/ngs/LibVersionChecker.java b/ngs-java/gov/nih/nlm/ncbi/ngs/LibVersionChecker.java
new file mode 100644
index 0000000..d4e550b
--- /dev/null
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/LibVersionChecker.java
@@ -0,0 +1,206 @@
+/*===========================================================================
+*
+* PUBLIC DOMAIN NOTICE
+* National Center for Biotechnology Information
+*
+* This software/database is a "United States Government Work" under the
+* terms of the United States Copyright Act. It was written as part of
+* the author's official duties as a United States Government employee and
+* thus cannot be copyrighted. This software/database is freely available
+* to the public for use. The National Library of Medicine and the U.S.
+* Government have not placed any restriction on its use or reproduction.
+*
+* Although all reasonable efforts have been taken to ensure the accuracy
+* and reliability of the software and data, the NLM and the U.S.
+* Government do not and cannot warrant the performance or results that
+* may be obtained by using this software or data. The NLM and the U.S.
+* Government disclaim all warranties, express or implied, including
+* warranties of performance, merchantability or fitness for any particular
+* purpose.
+*
+* Please cite the author in any work or product based on this material.
+*
+* ==============================================================================
+*
+*/
+
+
+package gov.nih.nlm.ncbi.ngs;
+
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.Vector;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+class LibVersionChecker {
+ static Version getVersion(String libname, String libpath, boolean useLoadLibrary) {
+ Vector<String> cmdarray = new Vector<String>();
+ String property = System.getProperty("java.home");
+ if (property != null) {
+ cmdarray.add(property + LibPathIterator.fileSeparator()
+ + "bin" + LibPathIterator.fileSeparator() + "java");
+ if (!tryJava(cmdarray)) {
+ cmdarray.remove(0);
+ }
+ }
+ if (cmdarray.size() == 0) {
+ cmdarray.add("java");
+ if (!tryJava(cmdarray)) {
+ // come up with exception class
+ throw new RuntimeException("Failed to check library " + libpath + " version: failed to execute java");
+ }
+ }
+
+ String classpath = System.getProperty("java.class.path");
+ if (classpath != null) {
+ cmdarray.add("-cp");
+ cmdarray.add(classpath);
+ }
+ cmdarray.add(createPropertyString("java.library.path"));
+ if (System.getProperty("vdb.log") != null) {
+ cmdarray.add(createPropertyString("vdb.log"));
+ }
+ cmdarray.add("gov.nih.nlm.ncbi.ngs.LibVersionChecker");
+ cmdarray.add(libname);
+ cmdarray.add(libpath);
+ if (useLoadLibrary) {
+ cmdarray.add("true");
+ }
+
+ Logger.finer(">>> RUNNING CHILD ...");
+ String version = null;
+ try {
+ String cmd[] = new String[cmdarray.size()];
+ for (int i = 0; i < cmdarray.size(); ++i) {
+ cmd[i] = cmdarray.elementAt(i);
+ }
+ Logger.finest(cmd);
+ Process p = Runtime.getRuntime().exec(cmd);
+ BufferedReader bri =
+ new BufferedReader(new InputStreamReader(p.getInputStream()));
+ BufferedReader bre =
+ new BufferedReader(new InputStreamReader(p.getErrorStream()));
+ String line = null;
+ while ((line = bre.readLine()) != null) {
+ System.err.println(line);
+ }
+ bre.close();
+ while ((line = bri.readLine()) != null) {
+ Pattern pattern = Pattern.compile("^LibManager: version='(.*)'$");
+ Matcher matcher = pattern.matcher(line);
+ while (matcher.find()) {
+ version = matcher.group(1);
+ if (version != null) {
+ break;
+ }
+ }
+ if (version == null) {
+ System.out.println(line);
+ }
+ }
+ bri.close();
+ p.waitFor();
+ } catch (Exception e) { Logger.finest(e); }
+ Logger.finer("<<< Done CHILD");
+ if (version != null) {
+ return new Version(version);
+ }
+ return null;
+ }
+
+ /** Call checkLib for every argument to the version of local dll,
+ compare it with the latest available
+ and download the latest if it is more recent */
+ public static void main(String[] args) {
+ LibVersionChecker checker = new LibVersionChecker();
+
+ if (args.length != 2 && args.length != 3) {
+ throw new RuntimeException("Not enough arguments: should be 2 or 3");
+ }
+
+ String libname = args[0];
+ String libpath = args[1];
+ boolean useLoadLibrary = args.length == 3 && args[2].equals("true");
+ String version = checker.checkLib(libname, libpath, useLoadLibrary);
+ if (version != null) {
+ System.out.println("LibManager: version='" + version + "'");
+ }
+
+ }
+
+ /** Check the version of local dll,
+ compare it with the latest available;
+ download the latest if it is more recent */
+ private String checkLib(String libname, String path, boolean useLoadLibrary) {
+ Logger.finest("> Checking the version of " + path + " library...");
+
+ Logger.finest(">> Loading the library...");
+ boolean loaded = false;
+ try {
+ if (useLoadLibrary) {
+ System.loadLibrary(path);
+ } else {
+ System.load(path);
+ }
+ loaded = true;
+ } catch (UnsatisfiedLinkError e) {
+ Logger.finest("<< Failed to load library " + path);
+ Logger.finest(e);
+ }
+
+ String version = null;
+ if (loaded) {
+ Logger.finest(">> Checking current version of the library...");
+ version = getLoadedVersion(libname);
+
+ Logger.finest("<< The current version of " + path + " = " + version);
+ }
+
+ Logger.finest("< Done checking version of the library");
+
+ return version;
+ }
+
+ static String getLoadedVersion(String libname) {
+ try {
+ if (libname.equals("ncbi-vdb")) {
+ return Manager.getPackageVersion();
+ } else if (libname.equals("ngs-sdk")) {
+ return ngs.Package.getPackageVersion();
+ } else {
+ Logger.warning("It is not known how to check "
+ + "the version of " + libname + " library");
+ return null;
+ }
+ } catch (ngs.ErrorMsg e) {
+ Logger.finest(e);
+ } catch (UnsatisfiedLinkError e) {
+ Logger.finest(e);
+ }
+ return null;
+ }
+
+ /** Make sure we can execute java */
+ private static boolean tryJava(Vector<String> cmdarray) {
+ try {
+ Process p
+ = Runtime.getRuntime().exec(cmdarray.elementAt(0) + " -?");
+ if (p.waitFor() == 0) {
+ return true;
+ }
+ } catch (Exception e) {}
+ return false;
+ }
+
+ /** Create java property option */
+ private static String createPropertyString(String key) {
+ String property = System.getProperty(key);
+ if (property == null) {
+ throw new RuntimeException("Property " + key + " is not defined");
+ }
+ return "-D" + key + "=" + property + "";
+ }
+
+}
diff --git a/ngs-java/gov/nih/nlm/ncbi/ngs/Logger.java b/ngs-java/gov/nih/nlm/ncbi/ngs/Logger.java
index 778bb2a..368c1eb 100644
--- a/ngs-java/gov/nih/nlm/ncbi/ngs/Logger.java
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/Logger.java
@@ -26,6 +26,8 @@
package gov.nih.nlm.ncbi.ngs;
+import ngs.ErrorMsg;
+
/** The Logger is used to print log messages to stderr.
An associated "Level" reflects a minimum Level that this logger cares about. */
class Logger {
@@ -70,7 +72,7 @@ class Logger {
static void finer (String msg) { log(Level.FINER , msg); }
static void finest (String msg) { log(Level.FINEST , msg); }
- static void fine (Throwable e) { fine (e.toString()); }
+ static void fine (Throwable e) { fine(e.toString()); }
static void finest (Throwable e) { finest(e.toString()); }
static void finest (String[] msgs) {
@@ -98,9 +100,24 @@ class Logger {
if (this.level.id() < level.id()) {
return;
}
- System.err.println(msg);
+ String v = getVersion();
+
+ String formatted = "ngs-java" + (v != null ? "." + v : "") + ": " + msg;
+ System.err.println(formatted);
+ }
+
+ private String getVersion() {
+ if (version == null) {
+ try {
+ version = ngs.Package.getPackageVersion();
+ } catch (Throwable e) {
+ version = null;
+ }
+ }
+ return version;
}
+ private String version;
private Level level;
private static Logger logger = new Logger();
}
diff --git a/ngs-java/gov/nih/nlm/ncbi/ngs/Manager.java b/ngs-java/gov/nih/nlm/ncbi/ngs/Manager.java
index b8c86ab..f2679e4 100644
--- a/ngs-java/gov/nih/nlm/ncbi/ngs/Manager.java
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/Manager.java
@@ -94,18 +94,14 @@ class Manager
To do just a plain call to System.LoadLibrary(libname)
set LibManager.JUST_DO_REGULAR_JAVA_SYSTEM_LOAD_LIBRARY to true
- or set vdb.System.loadLibrary java system property. */
-
- String ngs_sdk = "ngs-sdk";
- String ncbi_vdb = "ncbi-vdb";
-
- LibManager m = new LibManager( new String[] { ngs_sdk, ncbi_vdb } );
- if ( ! m . loadLibrary ( ngs_sdk ) )
- throw new ExceptionInInitializerError
- ( "Cannot load " + ngs_sdk + " library" );
- if ( ! m . loadLibrary ( ncbi_vdb ) )
- throw new ExceptionInInitializerError
- ( "Cannot load " + ncbi_vdb + " library" );
+ or set vdb.System.loadLibrary=1 java system property. */
+
+ LibManager m = new LibManager(
+ new String[] { LibDependencies.NGS_SDK, LibDependencies.NCBI_VDB },
+ new String[] { LibDependencies.NGS_SDK_VERSION, LibDependencies.NCBI_VDB_VERSION });
+
+ m . loadLibrary ( LibDependencies.NGS_SDK );
+ m . loadLibrary ( LibDependencies.NCBI_VDB );
// try to initialize the NCBI library
String err = Initialize ();
diff --git a/ngs-java/gov/nih/nlm/ncbi/ngs/NGS.java b/ngs-java/gov/nih/nlm/ncbi/ngs/NGS.java
index f460acc..ee69fbf 100644
--- a/ngs-java/gov/nih/nlm/ncbi/ngs/NGS.java
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/NGS.java
@@ -49,6 +49,18 @@ public class NGS
return mgr . isSupported ();
}
+ /**
+ * Returns exception which occurred during initialization
+ * If the exception is a subclass of LibraryLoadError, then there was a problem
+ * with loading native libraries
+ *
+ * @return initialization error or null
+ */
+ static public ExceptionInInitializerError getInitializationError ()
+ {
+ return mgr . invalid;
+ }
+
/**
* Updates User-Agent header in HTTP communications
diff --git a/ngs-java/gov/nih/nlm/ncbi/ngs/Version.java b/ngs-java/gov/nih/nlm/ncbi/ngs/Version.java
index 04f088e..3f94922 100644
--- a/ngs-java/gov/nih/nlm/ncbi/ngs/Version.java
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/Version.java
@@ -31,7 +31,7 @@ package gov.nih.nlm.ncbi.ngs;
/******************************************************************************/
-class Version {
+class Version implements Comparable<Version> {
Version(String version) {
stage = Stage.FINAL;
@@ -89,6 +89,18 @@ class Version {
+ major + "." + minor + "." + release + stage + revision + " }";
}
+ public String toSimpleVersion() {
+ return version == null ? "null" : version;
+ }
+
+ public boolean isCompatible(Version other) {
+ return major == other.major;
+ }
+
+ public int getMajor() {
+ return major;
+ }
+
/** Compares two Version, testing whether one comes before or after the
other, or whether they're equal. The Version parts are compared.
@@ -101,7 +113,7 @@ class Version {
0 : if version equals version2
a positive number: if version comes after version2
*/
- int compareTo(Version o) { /* if this < o return -1 */
+ public int compareTo(Version o) { /* if this < o return -1 */
int r = 1;
if (o == null) {
v(o, r, 88);
diff --git a/ngs-sdk/language/c++/ReferenceSequence.cpp b/ngs-java/gov/nih/nlm/ncbi/ngs/error/LibraryIncompatibleVersionError.java
similarity index 56%
copy from ngs-sdk/language/c++/ReferenceSequence.cpp
copy to ngs-java/gov/nih/nlm/ncbi/ngs/error/LibraryIncompatibleVersionError.java
index 939f154..788dc7c 100644
--- a/ngs-sdk/language/c++/ReferenceSequence.cpp
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/error/LibraryIncompatibleVersionError.java
@@ -20,44 +20,40 @@
*
* Please cite the author in any work or product based on this material.
*
-* ===========================================================================
+* ==============================================================================
*
*/
-#include <ngs/ReferenceSequence.hpp>
+package gov.nih.nlm.ncbi.ngs.error;
-namespace ngs
-{
+import gov.nih.nlm.ncbi.ngs.error.cause.LibraryLoadCause;
- ReferenceSequence :: ReferenceSequence ( ReferenceSequenceRef ref )
- throw ()
- : self ( ref )
- {
- assert ( ref != 0 );
+public class LibraryIncompatibleVersionError extends LibraryLoadError {
+ private String outdatedLibPath;
+
+ public LibraryIncompatibleVersionError(String libName, String msg, String outdatedLibPath, LibraryLoadCause cause) {
+ super(libName, msg, cause);
+ this.outdatedLibPath = outdatedLibPath;
}
- ReferenceSequence & ReferenceSequence :: operator = ( const ReferenceSequence & obj )
- throw ( ErrorMsg )
- {
- assert ( obj . self != 0 );
- ReferenceSequenceRef new_ref = obj . self -> Duplicate ();
- this -> self -> Release ();
- this -> self = new_ref;
- return * this;
+ @Override
+ public String getErrorMessage() {
+ return super.getErrorMessage() + "\n" +
+ "Library path: " + outdatedLibPath;
}
- ReferenceSequence :: ReferenceSequence ( const ReferenceSequence & obj )
- throw ( ErrorMsg )
- : self ( obj . self == 0 ? 0 : obj . self -> Duplicate() )
- {
- assert ( obj . self != 0 );
+ public String getOutdateLibPath() {
+ return outdatedLibPath;
}
-
- ReferenceSequence :: ~ ReferenceSequence ()
- throw ()
- {
- this -> self -> Release ();
- this -> self = 0;
+
+ @Override
+ public String toString() {
+ return generateMsg(getMessage(), getOutdateLibPath());
}
-} // namespace ngs
\ No newline at end of file
+ private static String generateMsg(String msg, String outdatedLibPath) {
+ String result = msg + "\n";
+ result += "Library path: " + outdatedLibPath;
+ return result;
+ }
+}
diff --git a/ngs-java/gov/nih/nlm/ncbi/ngs/error/LibraryLoadError.java b/ngs-java/gov/nih/nlm/ncbi/ngs/error/LibraryLoadError.java
new file mode 100644
index 0000000..a8ed97a
--- /dev/null
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/error/LibraryLoadError.java
@@ -0,0 +1,80 @@
+/*===========================================================================
+*
+* PUBLIC DOMAIN NOTICE
+* National Center for Biotechnology Information
+*
+* This software/database is a "United States Government Work" under the
+* terms of the United States Copyright Act. It was written as part of
+* the author's official duties as a United States Government employee and
+* thus cannot be copyrighted. This software/database is freely available
+* to the public for use. The National Library of Medicine and the U.S.
+* Government have not placed any restriction on its use or reproduction.
+*
+* Although all reasonable efforts have been taken to ensure the accuracy
+* and reliability of the software and data, the NLM and the U.S.
+* Government do not and cannot warrant the performance or results that
+* may be obtained by using this software or data. The NLM and the U.S.
+* Government disclaim all warranties, express or implied, including
+* warranties of performance, merchantability or fitness for any particular
+* purpose.
+*
+* Please cite the author in any work or product based on this material.
+*
+* ==============================================================================
+*
+*/
+
+package gov.nih.nlm.ncbi.ngs.error;
+
+import gov.nih.nlm.ncbi.ngs.error.cause.LibraryLoadCause;
+
+public class LibraryLoadError extends ExceptionInInitializerError {
+ String libName;
+ LibraryLoadCause cause;
+ String errorMessage;
+ String recommendation;
+
+ public LibraryLoadError(String libName, String msg, LibraryLoadCause cause) {
+ this(libName, msg, cause, cause.getRecommendation());
+ }
+
+ public LibraryLoadError(String libName, String msg, LibraryLoadCause cause, String recommendation) {
+ super(generateMsg(libName, msg, cause, recommendation));
+
+ this.libName = libName;
+ this.cause = cause;
+ this.errorMessage = generateMsg(libName, msg, cause, null);
+ this.recommendation = recommendation;
+ }
+
+ @Override
+ public LibraryLoadCause getCause() {
+ return cause;
+ }
+
+ /**
+ * @return error message, without recommendation
+ */
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+
+ /**
+ * @return recommendation for the user regarding error, can be null
+ */
+ public String getRecommendation() {
+ return recommendation;
+ }
+
+ private static String generateMsg(String libName, String msg, LibraryLoadCause cause, String recommendation) {
+ String result = "Failed to load '" + libName + "' - " + msg;
+ if (cause != null) {
+ result += ", " + cause.getMessage();
+ if (recommendation != null) {
+ result += "\n" + recommendation;
+ }
+ }
+
+ return result;
+ }
+}
diff --git a/ngs-sdk/win/stdbool.h b/ngs-java/gov/nih/nlm/ncbi/ngs/error/LibraryNotFoundError.java
similarity index 80%
copy from ngs-sdk/win/stdbool.h
copy to ngs-java/gov/nih/nlm/ncbi/ngs/error/LibraryNotFoundError.java
index 4807cb4..44f0494 100644
--- a/ngs-sdk/win/stdbool.h
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/error/LibraryNotFoundError.java
@@ -20,27 +20,17 @@
*
* Please cite the author in any work or product based on this material.
*
-* ===========================================================================
+* ==============================================================================
*
*/
-#ifndef _STDBOOL_H
-#define _STDBOOL_H
-/*--------------------------------------------------------------------------
- * bool
- */
+package gov.nih.nlm.ncbi.ngs.error;
-#ifndef __cplusplus
-typedef unsigned char bool;
+import gov.nih.nlm.ncbi.ngs.error.cause.LibraryLoadCause;
-#undef true
-#define true 1
-
-#undef false
-#define false 0
-
-#endif
-
-
-#endif /* _STDBOOL_H */
+public class LibraryNotFoundError extends LibraryLoadError {
+ public LibraryNotFoundError(String libName, String msg, LibraryLoadCause cause) {
+ super(libName, msg, cause);
+ }
+}
diff --git a/ngs-sdk/dispatch/PackageItf.cpp b/ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/ConnectionProblemCause.java
similarity index 72%
copy from ngs-sdk/dispatch/PackageItf.cpp
copy to ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/ConnectionProblemCause.java
index d7cfdf0..88d2263 100644
--- a/ngs-sdk/dispatch/PackageItf.cpp
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/ConnectionProblemCause.java
@@ -20,26 +20,21 @@
*
* Please cite the author in any work or product based on this material.
*
-* ===========================================================================
+* ==============================================================================
*
*/
-#include <ngs/itf/PackageItf.hpp>
-#include <ngs/itf/StringItf.hpp>
-#include "version.h" // NGS_SDK_VERSION
+package gov.nih.nlm.ncbi.ngs.error.cause;
-namespace ngs
-{
-
- /*----------------------------------------------------------------------
- * PackageItf
- */
-
- String PackageItf :: getPackageVersion ()
- throw ( ErrorMsg )
- {
- return String ( NGS_SDK_VERSION );
+public class ConnectionProblemCause extends LibraryLoadCause {
+ public ConnectionProblemCause() {
+ super("auto-download failed - connection problem");
}
-} // namespace ngs
+ @Override
+ public String getRecommendation() {
+ return "Please check your network connection, and check if you need proxy configuration. " +
+ "Contact your IT department or email sra-tools at ncbi.nlm.nih.gov for assistance.";
+ }
+}
diff --git a/ngs-sdk/dispatch/PackageItf.cpp b/ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/DownloadDisabledCause.java
similarity index 74%
copy from ngs-sdk/dispatch/PackageItf.cpp
copy to ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/DownloadDisabledCause.java
index d7cfdf0..dfe2d66 100644
--- a/ngs-sdk/dispatch/PackageItf.cpp
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/DownloadDisabledCause.java
@@ -20,26 +20,21 @@
*
* Please cite the author in any work or product based on this material.
*
-* ===========================================================================
+* ==============================================================================
*
*/
-#include <ngs/itf/PackageItf.hpp>
-#include <ngs/itf/StringItf.hpp>
-#include "version.h" // NGS_SDK_VERSION
+package gov.nih.nlm.ncbi.ngs.error.cause;
-namespace ngs
-{
-
- /*----------------------------------------------------------------------
- * PackageItf
- */
-
- String PackageItf :: getPackageVersion ()
- throw ( ErrorMsg )
- {
- return String ( NGS_SDK_VERSION );
+public class DownloadDisabledCause extends LibraryLoadCause {
+ public DownloadDisabledCause() {
+ super("NGS auto-download is disabled");
}
-} // namespace ngs
+ @Override
+ public String getRecommendation() {
+ return "Please enable auto-download or install ngs and ncbi-vdb manually: " +
+ "https://github.com/ncbi/ngs/wiki/Downloads";
+ }
+}
diff --git a/ngs-sdk/win/stdbool.h b/ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/InvalidLibraryCause.java
similarity index 76%
copy from ngs-sdk/win/stdbool.h
copy to ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/InvalidLibraryCause.java
index 4807cb4..679785f 100644
--- a/ngs-sdk/win/stdbool.h
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/InvalidLibraryCause.java
@@ -20,27 +20,20 @@
*
* Please cite the author in any work or product based on this material.
*
-* ===========================================================================
+* ==============================================================================
*
*/
-#ifndef _STDBOOL_H
-#define _STDBOOL_H
-/*--------------------------------------------------------------------------
- * bool
- */
+package gov.nih.nlm.ncbi.ngs.error.cause;
-#ifndef __cplusplus
-typedef unsigned char bool;
+public class InvalidLibraryCause extends LibraryLoadCause {
+ public InvalidLibraryCause() {
+ super("library was found but its version cannot be determined");
+ }
-#undef true
-#define true 1
-
-#undef false
-#define false 0
-
-#endif
-
-
-#endif /* _STDBOOL_H */
+ @Override
+ public String getRecommendation() {
+ return "Please be sure that you have the latest library from NCBI";
+ }
+}
diff --git a/ngs-sdk/win/stdbool.h b/ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/JvmErrorCause.java
similarity index 79%
copy from ngs-sdk/win/stdbool.h
copy to ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/JvmErrorCause.java
index 4807cb4..767fcfa 100644
--- a/ngs-sdk/win/stdbool.h
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/JvmErrorCause.java
@@ -20,27 +20,22 @@
*
* Please cite the author in any work or product based on this material.
*
-* ===========================================================================
+* ==============================================================================
*
*/
-#ifndef _STDBOOL_H
-#define _STDBOOL_H
-/*--------------------------------------------------------------------------
- * bool
- */
+package gov.nih.nlm.ncbi.ngs.error.cause;
-#ifndef __cplusplus
-typedef unsigned char bool;
+public class JvmErrorCause extends LibraryLoadCause {
-#undef true
-#define true 1
+ public JvmErrorCause(Throwable e) {
+ super("Java Virtual Machine error");
+ initCause(e);
+ }
-#undef false
-#define false 0
-
-#endif
-
-
-#endif /* _STDBOOL_H */
+ @Override
+ public String getRecommendation() {
+ return null;
+ }
+}
diff --git a/ngs-sdk/language/python/py_PileupIteratorItf.cpp b/ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/LibraryLoadCause.java
similarity index 83%
copy from ngs-sdk/language/python/py_PileupIteratorItf.cpp
copy to ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/LibraryLoadCause.java
index 2116522..0874155 100644
--- a/ngs-sdk/language/python/py_PileupIteratorItf.cpp
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/LibraryLoadCause.java
@@ -20,13 +20,17 @@
*
* Please cite the author in any work or product based on this material.
*
-* ===========================================================================
+* ==============================================================================
*
*/
-#include "py_PileupIteratorItf.h"
-#include "py_ErrorMsg.hpp"
-#include <ngs/itf/PileupItf.hpp>
+package gov.nih.nlm.ncbi.ngs.error.cause;
-GEN_PY_ITERATOR_NEXT ( Pileup )
+public abstract class LibraryLoadCause extends Exception {
+ public LibraryLoadCause(String msg) {
+ super(msg);
+ }
+
+ public abstract String getRecommendation();
+}
diff --git a/ngs-sdk/language/python/py_ReadGroupIteratorItf.cpp b/ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/OutdatedJarCause.java
similarity index 76%
copy from ngs-sdk/language/python/py_ReadGroupIteratorItf.cpp
copy to ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/OutdatedJarCause.java
index ad00313..2f91af6 100644
--- a/ngs-sdk/language/python/py_ReadGroupIteratorItf.cpp
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/OutdatedJarCause.java
@@ -20,13 +20,19 @@
*
* Please cite the author in any work or product based on this material.
*
-* ===========================================================================
+* ==============================================================================
*
*/
-#include "py_ReadGroupIteratorItf.h"
-#include "py_ErrorMsg.hpp"
+package gov.nih.nlm.ncbi.ngs.error.cause;
-#include <ngs/itf/ReadGroupItf.hpp>
+public class OutdatedJarCause extends LibraryLoadCause {
+ public OutdatedJarCause() {
+ super("your NGS version is out of date");
+ }
-GEN_PY_ITERATOR_NEXT ( ReadGroup )
+ @Override
+ public String getRecommendation() {
+ return "Please update ngs-java to the latest version or contact sra-tools at ncbi.nlm.nih.gov for assistance";
+ }
+}
diff --git a/ngs-sdk/dispatch/PackageItf.cpp b/ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/PrereleaseReqLibCause.java
similarity index 75%
copy from ngs-sdk/dispatch/PackageItf.cpp
copy to ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/PrereleaseReqLibCause.java
index d7cfdf0..5c937dd 100644
--- a/ngs-sdk/dispatch/PackageItf.cpp
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/PrereleaseReqLibCause.java
@@ -20,26 +20,19 @@
*
* Please cite the author in any work or product based on this material.
*
-* ===========================================================================
+* ==============================================================================
*
*/
-#include <ngs/itf/PackageItf.hpp>
-#include <ngs/itf/StringItf.hpp>
+package gov.nih.nlm.ncbi.ngs.error.cause;
-#include "version.h" // NGS_SDK_VERSION
-
-namespace ngs
-{
-
- /*----------------------------------------------------------------------
- * PackageItf
- */
-
- String PackageItf :: getPackageVersion ()
- throw ( ErrorMsg )
- {
- return String ( NGS_SDK_VERSION );
+public class PrereleaseReqLibCause extends LibraryLoadCause {
+ public PrereleaseReqLibCause() {
+ super("your NGS version requires a library that is still in pre-release");
}
-} // namespace ngs
+ @Override
+ public String getRecommendation() {
+ return "Please revert to an older ngs-java or contact sra-tools at ncbi.nlm.nih.gov for assistance";
+ }
+}
diff --git a/ngs-sdk/dispatch/PackageItf.cpp b/ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/UnsupportedArchCause.java
similarity index 72%
copy from ngs-sdk/dispatch/PackageItf.cpp
copy to ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/UnsupportedArchCause.java
index d7cfdf0..a09ff1d 100644
--- a/ngs-sdk/dispatch/PackageItf.cpp
+++ b/ngs-java/gov/nih/nlm/ncbi/ngs/error/cause/UnsupportedArchCause.java
@@ -20,26 +20,20 @@
*
* Please cite the author in any work or product based on this material.
*
-* ===========================================================================
+* ==============================================================================
*
*/
-#include <ngs/itf/PackageItf.hpp>
-#include <ngs/itf/StringItf.hpp>
+package gov.nih.nlm.ncbi.ngs.error.cause;
-#include "version.h" // NGS_SDK_VERSION
-
-namespace ngs
-{
-
- /*----------------------------------------------------------------------
- * PackageItf
- */
-
- String PackageItf :: getPackageVersion ()
- throw ( ErrorMsg )
- {
- return String ( NGS_SDK_VERSION );
+public class UnsupportedArchCause extends LibraryLoadCause {
+ public UnsupportedArchCause() {
+ super("download failed - there is no library available for your OS/version");
}
-} // namespace ngs
+ @Override
+ public String getRecommendation() {
+ return "Please try building ngs and ncbi-vdb from sources: " +
+ "https://github.com/ncbi/ngs/wiki/Building-and-Installing-from-Source";
+ }
+}
diff --git a/ngs-java/ngs/ReadCollection.java b/ngs-java/ngs/ReadCollection.java
index e7a8c13..4344348 100644
--- a/ngs-java/ngs/ReadCollection.java
+++ b/ngs-java/ngs/ReadCollection.java
@@ -85,6 +85,7 @@ public interface ReadCollection
throws ErrorMsg;
/**
+ * @param spec the name of a contained read group
* @return true if a call to "getReadGroup()" should succeed
*/
boolean hasReadGroup ( String spec );
@@ -117,6 +118,7 @@ public interface ReadCollection
throws ErrorMsg;
/**
+ * @param spec the name of a contained Reference
* @return true if a call to "getReference()" should succeed
*/
boolean hasReference ( String spec );
diff --git a/ngs-java/setup/package.prl b/ngs-java/setup/package.prl
index 8e98b7a..e19caa3 100644
--- a/ngs-java/setup/package.prl
+++ b/ngs-java/setup/package.prl
@@ -1,6 +1,6 @@
################################################################################
sub PACKAGE { 'ngs-java' }
-sub VERSION { '1.2.3' }
+sub VERSION { '1.2.4' }
sub PACKAGE_TYPE { 'J' }
sub PACKAGE_NAME { 'NGS-JAVA' }
sub PACKAGE_NAMW { 'NGS_JAVA' }
diff --git a/ngs-python/build.xml b/ngs-python/build.xml
index a7e40d4..21e36c3 100644
--- a/ngs-python/build.xml
+++ b/ngs-python/build.xml
@@ -2,11 +2,16 @@
<!-- This file is currently for use on Windows; Linux/Mac builds are run via gmake -->
<property environment="env"/>
- <property name="vdb.build" value="Debug" />
- <property name="vdb.platform" value="x64" />
+ <property name="Platform" value="x64" />
+ <property name="Configuration" value="Debug" />
+ <property name="Output" value="${basedir}\..\..\OUTDIR" />
+ <property name="MSVS" value="2013" />
- <property name="vdb.outdir" value="..\ngs-sdk\..\..\OUTDIR\" />
- <property name="vdb.dir" value="${env.outdir}\win\cl\${vdb.platform}\${vdb.build}\bin" />
+ <condition property="PlatformToolset" value="v100" else="v120">
+ <equals arg1="${MSVS}" arg2="2010"/>
+ </condition>
+ <property name="vdb.dir" value="${Output}\ncbi-vdb\win\${PlatformToolset}\${Platform}\${Configuration}\bin" />
+ <property name="ngs.dir" value="${Output}\ngs-sdk\win\${PlatformToolset}\${Platform}\${Configuration}\bin" />
<!-- Set this to full path to Python if not in PATH already -->
<property name="python.exe" value="python" />
@@ -24,11 +29,12 @@
<element name="args" optional="yes" />
<sequential>
<exec executable="${python.exe}" failonerror="true">
- <env key="NGS_PY_LIBRARY_PATH" value="${vdb.dir}"/>
+ <env key="PATH" value="${vdb.dir};${ngs.dir};${env.PATH}"/>
<env key="NGS_PY_DOWNLOAD_LIBRARY" value="0"/>
<arg value="examples/@{class}.py"/>
<args />
</exec>
+ <!-- TODO: use fc to diff output against expected -->
</sequential>
</macrodef>
@@ -75,4 +81,7 @@
</target>
+ <target name="clean" />
+ <target name="build" />
+
</project>
diff --git a/ngs-python/examples/AlignSliceTest.py b/ngs-python/examples/AlignSliceTest.py
index 470c30c..49e5c3f 100644
--- a/ngs-python/examples/AlignSliceTest.py
+++ b/ngs-python/examples/AlignSliceTest.py
@@ -56,6 +56,7 @@ def run(acc, refName, start, stop):
if len(sys.argv) != 5:
print ("Usage: AlignSliceTest accession reference start stop\n")
+ exit(1)
else:
try:
run(sys.argv[1], sys.argv[2], int(sys.argv[3]), int(sys.argv[4]))
@@ -63,5 +64,7 @@ else:
print (x)
traceback.print_exc()
# x.printStackTrace - not implemented
+ exit(1)
except BaseException as x:
traceback.print_exc()
+ exit(1)
diff --git a/ngs-python/examples/AlignSliceTest26.py b/ngs-python/examples/AlignSliceTest26.py
index 12fa81b..65db41b 100644
--- a/ngs-python/examples/AlignSliceTest26.py
+++ b/ngs-python/examples/AlignSliceTest26.py
@@ -56,6 +56,7 @@ def run(acc, refName, start, stop): # this function doesn't release NGS objects
if len(sys.argv) != 5:
print ("Usage: AlignSliceTest accession reference start stop\n")
+ exit(1)
else:
try:
run(sys.argv[1], sys.argv[2], int(sys.argv[3]), int(sys.argv[4]))
@@ -63,5 +64,7 @@ else:
print (x)
traceback.print_exc()
# x.printStackTrace - not implemented
+ exit(1)
except BaseException, x:
traceback.print_exc()
+ exit(1)
diff --git a/ngs-python/examples/AlignTest.py b/ngs-python/examples/AlignTest.py
index c064bda..a6743b2 100644
--- a/ngs-python/examples/AlignTest.py
+++ b/ngs-python/examples/AlignTest.py
@@ -62,6 +62,7 @@ def run(acc, splitNum, splitNo):
if len(sys.argv) != 4:
print ("Usage: FragTest accession NumChunks ChunkNo\n")
+ exit(1)
else:
try:
run(sys.argv[1], int(sys.argv[2]), int(sys.argv[3]))
@@ -69,6 +70,8 @@ else:
print (x)
traceback.print_exc()
# x.printStackTrace - not implemented
+ exit(1)
except BaseException as x:
traceback.print_exc()
+ exit(1)
diff --git a/ngs-python/examples/AlignTest26.py b/ngs-python/examples/AlignTest26.py
index f705a57..53cdf2c 100644
--- a/ngs-python/examples/AlignTest26.py
+++ b/ngs-python/examples/AlignTest26.py
@@ -63,6 +63,7 @@ def run(acc, splitNum, splitNo): # this function doesn't release NGS objects how
if len(sys.argv) != 4:
print ("Usage: FragTest accession NumChunks ChunkNo\n")
+ exit(1)
else:
try:
run(sys.argv[1], int(sys.argv[2]), int(sys.argv[3]))
@@ -70,5 +71,7 @@ else:
print (x)
traceback.print_exc()
# x.printStackTrace - not implemented
+ exit(1)
except BaseException, x:
traceback.print_exc()
+ exit(1)
diff --git a/ngs-python/examples/AlignTest.py b/ngs-python/examples/DumpReferenceFASTA.py
similarity index 53%
copy from ngs-python/examples/AlignTest.py
copy to ngs-python/examples/DumpReferenceFASTA.py
index c064bda..41cae76 100644
--- a/ngs-python/examples/AlignTest.py
+++ b/ngs-python/examples/DumpReferenceFASTA.py
@@ -27,48 +27,60 @@ import traceback
from ngs import NGS
from ngs.ErrorMsg import ErrorMsg
-from ngs.ReadCollection import ReadCollection
-from ngs.Alignment import Alignment
-from ngs.AlignmentIterator import AlignmentIterator
+def process(ref):
+ length = ref.getLength()
+ line = 0
-def run(acc, splitNum, splitNo):
- # open requested accession using SRA implementation of the API
- with NGS.openReadCollection(acc) as run:
- run_name = run.getName()
-
- # compute window to iterate through
- MAX_ROW = run.getAlignmentCount()
- chunk = MAX_ROW / splitNum
- first = int(round(chunk * (splitNo-1)))
- next_first = int(round(chunk * (splitNo)))
- if next_first > MAX_ROW:
- next_first = MAX_ROW
+ print( ">" + ref.getCanonicalName() )
+ try:
+ offset = 0
+ while offset < length:
+ chunk = ref.getReferenceChunk ( offset, 5000 )
+ chunk_len = len (chunk)
+
+ chunk_idx = 0
+ while chunk_idx < chunk_len:
+ endIndex = chunk_idx + 70 - line
+ if endIndex > chunk_len:
+ endIndex = chunk_len
+ chunk_line = chunk [ chunk_idx : endIndex ]
+ line = line + len (chunk_line)
+ chunk_idx = chunk_idx + len (chunk_line)
- # start iterator on reads
- with run.getAlignmentRange(first+1, next_first-first, Alignment.primaryAlignment) as it:
- i = 0
- while it.nextAlignment():
- print ("{}\t{}\t{}\t{}\t{}\t{}".format(it.getReadId(),
- it.getReferenceSpec(),
- it.getAlignmentPosition(),
- it.getShortCigar(False),
- it.getFragmentBases(),
- ("aligned" if it.isAligned() else "unaligned"),
- ))
- i += 1
- print ("Read {} alignments for {}".format(i, run_name))
+ sys.stdout.write( chunk_line )
+ if line >= 70:
+ print("")
+ line = 0
+ offset = offset + 5000
+ except ErrorMsg as x:
+ pass
+def run(acc, refName=None):
+ # open requested accession using SRA implementation of the API
+ with NGS.openReadCollection(acc) as run:
+ if refName:
+ with run.getReference(refName) as ref:
+ process(ref)
+ else:
+ with run.getReferences() as refs:
+ while refs.nextReference():
+ process(refs)
+ print("")
-if len(sys.argv) != 4:
- print ("Usage: FragTest accession NumChunks ChunkNo\n")
+if len(sys.argv) < 2 or len(sys.argv) > 3:
+ print ("Usage: DumpReferenceFASTA accession [ reference ]\n")
+ exit(1)
else:
try:
- run(sys.argv[1], int(sys.argv[2]), int(sys.argv[3]))
+ acc = sys.argv[1]
+ refName = sys.argv[2] if len(sys.argv) == 3 else None
+ run ( acc, refName )
except ErrorMsg as x:
print (x)
traceback.print_exc()
# x.printStackTrace - not implemented
+ exit(1)
except BaseException as x:
traceback.print_exc()
-
+ exit(1)
diff --git a/ngs-python/examples/FragTest.py b/ngs-python/examples/FragTest.py
index d5ceabd..8638088 100644
--- a/ngs-python/examples/FragTest.py
+++ b/ngs-python/examples/FragTest.py
@@ -62,6 +62,7 @@ def run(acc, splitNum, splitNo):
if len(sys.argv) != 4:
print ("Usage: FragTest accession NumChunks ChunkNo\n")
+ exit(1)
else:
try:
run(sys.argv[1], int(sys.argv[2]), int(sys.argv[3]))
@@ -69,5 +70,7 @@ else:
print (x)
traceback.print_exc()
# x.printStackTrace - not implemented
+ exit(1)
except BaseException as x:
traceback.print_exc()
+ exit(1)
diff --git a/ngs-python/examples/FragTest26.py b/ngs-python/examples/FragTest26.py
index 147517c..7d5c33f 100644
--- a/ngs-python/examples/FragTest26.py
+++ b/ngs-python/examples/FragTest26.py
@@ -62,6 +62,7 @@ def run(acc, splitNum, splitNo): # this function doesn't release NGS objects how
if len(sys.argv) != 4:
print ("Usage: FragTest accession NumChunks ChunkNo\n")
+ exit(1)
else:
try:
run(sys.argv[1], int(sys.argv[2]), int(sys.argv[3]))
@@ -69,5 +70,7 @@ else:
print (x)
traceback.print_exc()
# x.printStackTrace - not implemented
+ exit(1)
except BaseException, x:
traceback.print_exc()
+ exit(1)
diff --git a/ngs-python/examples/PileupTest.py b/ngs-python/examples/PileupTest.py
index 7e7ee63..605eca5 100644
--- a/ngs-python/examples/PileupTest.py
+++ b/ngs-python/examples/PileupTest.py
@@ -98,6 +98,7 @@ def run(acc, refName, start, stop):
if len(sys.argv) != 5:
print ("Usage: PileupTest accession reference start stop\n")
+ exit(1)
else:
try:
run(sys.argv[1], sys.argv[2], int(sys.argv[3]), int(sys.argv[4]))
@@ -105,5 +106,7 @@ else:
print (x)
traceback.print_exc()
# x.printStackTrace - not implemented
+ exit(1)
except BaseException as x:
traceback.print_exc()
+ exit(1)
diff --git a/ngs-python/examples/PileupTest26.py b/ngs-python/examples/PileupTest26.py
index 66ea792..db48b83 100644
--- a/ngs-python/examples/PileupTest26.py
+++ b/ngs-python/examples/PileupTest26.py
@@ -98,6 +98,7 @@ def run(acc, refName, start, stop):
if len(sys.argv) != 5:
print ("Usage: PileupTest26 accession reference start stop\n")
+ exit(1)
else:
try:
run(sys.argv[1], sys.argv[2], int(sys.argv[3]), int(sys.argv[4]))
@@ -105,5 +106,7 @@ else:
print (x)
traceback.print_exc()
# x.printStackTrace - not implemented
+ exit(1)
except BaseException, x:
traceback.print_exc()
+ exit(1)
diff --git a/ngs-python/examples/RefTest.py b/ngs-python/examples/RefTest.py
index 72c15b6..3218e9e 100644
--- a/ngs-python/examples/RefTest.py
+++ b/ngs-python/examples/RefTest.py
@@ -51,6 +51,7 @@ def run(acc):
if len(sys.argv) != 2:
print ("Usage: RefTest accession\n")
+ exit(1)
else:
try:
run(sys.argv[1])
@@ -58,5 +59,7 @@ else:
print (x)
traceback.print_exc()
# x.printStackTrace - not implemented
+ exit(1)
except BaseException as x:
traceback.print_exc()
+ exit(1)
diff --git a/ngs-python/examples/RefTest26.py b/ngs-python/examples/RefTest26.py
index e5eea33..e189ad4 100644
--- a/ngs-python/examples/RefTest26.py
+++ b/ngs-python/examples/RefTest26.py
@@ -52,6 +52,7 @@ def run(acc): # this function doesn't release NGS objects however it might
if len(sys.argv) != 2:
print ("Usage: RefTest accession\n")
+ exit(1)
else:
try:
run(sys.argv[1])
@@ -59,5 +60,7 @@ else:
print (x)
traceback.print_exc()
# x.printStackTrace - not implemented
+ exit(1)
except BaseException, x:
traceback.print_exc()
+ exit(1)
diff --git a/ngs-python/ngs/Alignment.py b/ngs-python/ngs/Alignment.py
index e1874ce..74f2a71 100644
--- a/ngs-python/ngs/Alignment.py
+++ b/ngs-python/ngs/Alignment.py
@@ -178,7 +178,7 @@ class Alignment(Fragment):
:returns: '-' if negative strand is transcribed
:returns: '?' if unknown
"""
- return getNGSValue(self, NGS.lib_manager.PY_NGS_AlignmentGetRNAOrientation, c_char)
+ return getNGSValue(self, NGS.lib_manager.PY_NGS_AlignmentGetRNAOrientation, c_char).decode("utf-8")
# ------------------------------------------------------------------
# details of mate alignment
diff --git a/ngs-python/ngs/LibManager.py b/ngs-python/ngs/LibManager.py
index cd4f1b4..c57bdea 100644
--- a/ngs-python/ngs/LibManager.py
+++ b/ngs-python/ngs/LibManager.py
@@ -246,7 +246,7 @@ class LibManager:
self._bind(self.c_lib_engine, "PY_NGS_Engine_GetVersion", [POINTER(c_char_p), POINTER(c_char), c_size_t], None)
self._bind(self.c_lib_engine, "PY_NGS_Engine_IsValid", [c_char_p, POINTER(c_int), POINTER(c_char), c_size_t], None)
- # self._bind(self.c_lib_engine, "PY_NGS_Engine_RefcountRelease", [c_void_p, POINTER(c_void_p)], None)
+ # self._bind(self.c_lib_engine, "PY_NGS_Engine_RefcountRelease", [c_void_p, POINTER(c_char), c_size_t], None)
# self._bind(self.c_lib_engine, "PY_NGS_Engine_StringData", [c_void_p, POINTER(c_char_p)], None)
# self._bind(self.c_lib_engine, "PY_NGS_Engine_StringSize", [c_void_p, POINTER(c_size_t)], None)
diff --git a/ngs-python/ngs/Pileup.py b/ngs-python/ngs/Pileup.py
index a7af7cc..be784bb 100644
--- a/ngs-python/ngs/Pileup.py
+++ b/ngs-python/ngs/Pileup.py
@@ -48,7 +48,7 @@ class Pileup(PileupEventIterator):
"""
:return: base at current Reference position
"""
- return getNGSValue(self, NGS.lib_manager.PY_NGS_PileupGetReferenceBase, c_char)
+ return getNGSValue(self, NGS.lib_manager.PY_NGS_PileupGetReferenceBase, c_char).decode("utf-8")
# ----------------------------------------------------------------------
# details of this pileup row
diff --git a/ngs-python/ngs/PileupEvent.py b/ngs-python/ngs/PileupEvent.py
index 6adc651..1ff7f33 100644
--- a/ngs-python/ngs/PileupEvent.py
+++ b/ngs-python/ngs/PileupEvent.py
@@ -100,14 +100,14 @@ class PileupEvent(Refcount):
:returns: retrieves base aligned at current Reference position
:throws: ErrorMsg if event is an insertion or deletion
"""
- return getNGSValue(self, NGS.lib_manager.PY_NGS_PileupEventGetAlignmentBase, c_char)
+ return getNGSValue(self, NGS.lib_manager.PY_NGS_PileupEventGetAlignmentBase, c_char).decode("utf-8")
def getAlignmentQuality(self):
"""
:returns: retrieves base aligned at current Reference position
:throws: ErrorMsg if event is an insertion or deletion
"""
- return getNGSValue(self, NGS.lib_manager.PY_NGS_PileupEventGetAlignmentQuality, c_char)
+ return getNGSValue(self, NGS.lib_manager.PY_NGS_PileupEventGetAlignmentQuality, c_char).decode("utf-8")
def getInsertionBases(self):
"""
diff --git a/ngs-python/ngs/ReadCollection.py b/ngs-python/ngs/ReadCollection.py
index 55005d0..da03196 100644
--- a/ngs-python/ngs/ReadCollection.py
+++ b/ngs-python/ngs/ReadCollection.py
@@ -93,7 +93,7 @@ class ReadCollection(Refcount):
ret = c_int()
ngs_str_err = NGS_RawString()
try:
- res = NGS.lib_manager.PY_NGS_ReadCollectionHasReadGroup(self.ref, spec.encode(), byref(ret), byref(ngs_str_err.ref))
+ res = NGS.lib_manager.PY_NGS_ReadCollectionHasReadGroup(self.ref, spec.encode("UTF-8"), byref(ret), byref(ngs_str_err.ref))
finally:
ngs_str_err.close()
@@ -110,7 +110,7 @@ class ReadCollection(Refcount):
ret = ReadGroup()
ngs_str_err = NGS_RawString()
try:
- res = NGS.lib_manager.PY_NGS_ReadCollectionGetReadGroup(self.ref, spec, byref(ret.ref), byref(ngs_str_err.ref))
+ res = NGS.lib_manager.PY_NGS_ReadCollectionGetReadGroup(self.ref, spec.encode("UTF-8"), byref(ret.ref), byref(ngs_str_err.ref))
finally:
ngs_str_err.close()
@@ -140,7 +140,7 @@ class ReadCollection(Refcount):
ret = c_int()
ngs_str_err = NGS_RawString()
try:
- res = NGS.lib_manager.PY_NGS_ReadCollectionHasReference(self.ref, spec.encode(), byref(ret), byref(ngs_str_err.ref))
+ res = NGS.lib_manager.PY_NGS_ReadCollectionHasReference(self.ref, spec.encode("UTF-8"), byref(ret), byref(ngs_str_err.ref))
finally:
ngs_str_err.close()
@@ -150,7 +150,7 @@ class ReadCollection(Refcount):
ret = Reference()
ngs_str_err = NGS_RawString()
try:
- res = NGS.lib_manager.PY_NGS_ReadCollectionGetReference(self.ref, spec.encode(), byref(ret.ref), byref(ngs_str_err.ref))
+ res = NGS.lib_manager.PY_NGS_ReadCollectionGetReference(self.ref, spec.encode("UTF-8"), byref(ret.ref), byref(ngs_str_err.ref))
finally:
ngs_str_err.close()
@@ -166,7 +166,7 @@ class ReadCollection(Refcount):
ret = Alignment()
ngs_str_err = NGS_RawString()
try:
- res = NGS.lib_manager.PY_NGS_ReadCollectionGetAlignment(self.ref, alignmentId, byref(ret.ref), byref(ngs_str_err.ref))
+ res = NGS.lib_manager.PY_NGS_ReadCollectionGetAlignment(self.ref, alignmentId.encode("UTF-8"), byref(ret.ref), byref(ngs_str_err.ref))
finally:
ngs_str_err.close()
@@ -226,7 +226,7 @@ class ReadCollection(Refcount):
ret = Read()
ngs_str_err = NGS_RawString()
try:
- res = NGS.lib_manager.PY_NGS_ReadCollectionGetRead(self.ref, readId, byref(ret.ref), byref(ngs_str_err.ref))
+ res = NGS.lib_manager.PY_NGS_ReadCollectionGetRead(self.ref, readId.encode("UTF-8"), byref(ret.ref), byref(ngs_str_err.ref))
finally:
ngs_str_err.close()
@@ -286,7 +286,7 @@ def openReadCollection(spec):
ERROR_BUFFER_SIZE = 4096
str_err = create_string_buffer(ERROR_BUFFER_SIZE)
from . import PY_RES_OK
- res = NGS.lib_manager.PY_NGS_Engine_ReadCollectionMake(spec.encode(), byref(ret.ref), str_err, len(str_err))
+ res = NGS.lib_manager.PY_NGS_Engine_ReadCollectionMake(spec.encode("UTF-8"), byref(ret.ref), str_err, len(str_err))
if res != PY_RES_OK:
raise ErrorMsg(str_err.value)
diff --git a/ngs-python/ngs/Refcount.py b/ngs-python/ngs/Refcount.py
index 11784cb..fb3bd03 100644
--- a/ngs-python/ngs/Refcount.py
+++ b/ngs-python/ngs/Refcount.py
@@ -16,6 +16,22 @@ def RefcountRelease(ref):
finally:
ngs_str_err.close()
+# def RefcountEngineRelease(ref):
+ # """Releases NGS-object imported from ngs engine
+
+ # :param ref: reference to refcounted NGS-object to be released. It's expected to be of type c_void_p
+ # :returns: None
+ # :throws: ErrorMsg
+ # """
+
+ # ERROR_BUFFER_SIZE = 4096
+ # str_err = create_string_buffer(ERROR_BUFFER_SIZE)
+ # from . import PY_RES_OK
+ # res = NGS.lib_manager.PY_NGS_Engine_RefcountRelease(ref, str_err, len(str_err))
+ # if res != PY_RES_OK:
+ # raise ErrorMsg(str_err.value)
+
+
def RefcountRawStringRelease(ref):
"""Releases raw string imported from ngs-sdk
@@ -29,17 +45,6 @@ def RefcountRawStringRelease(ref):
finally:
ngs_str_err.close()
-# def RefcountEngineRelease(ref):
- # """Releases NGS-object imported from ngs engine
-
- # :param ref: reference to refcounted NGS-object to be released. It's expected to be of type c_void_p
- # :returns: None
- # :throws: ErrorMsg
- # """
- # with NGSEngine_String() as ngs_str_err:
- # res = NGS.lib_manager.PY_NGS_Engine_RefcountRelease(ref, byref(ngs_str_err.ref))
- # check_res(res, ngs_str_err)
-
class Refcount:
""" Base class for all refcounted objects imported from ngs-sdk
diff --git a/ngs-python/ngs/Reference.py b/ngs-python/ngs/Reference.py
index dfd9149..df5fd88 100644
--- a/ngs-python/ngs/Reference.py
+++ b/ngs-python/ngs/Reference.py
@@ -103,7 +103,7 @@ class Reference(Refcount):
ret = Alignment()
ngs_str_err = NGS_RawString()
try:
- res = NGS.lib_manager.PY_NGS_ReferenceGetAlignment(self.ref, alignmentId, byref(ret.ref), byref(ngs_str_err.ref))
+ res = NGS.lib_manager.PY_NGS_ReferenceGetAlignment(self.ref, alignmentId.encode("UTF-8"), byref(ret.ref), byref(ngs_str_err.ref))
finally:
ngs_str_err.close()
diff --git a/ngs-python/ngs/Statistics.py b/ngs-python/ngs/Statistics.py
index fc85965..6bf5c64 100644
--- a/ngs-python/ngs/Statistics.py
+++ b/ngs-python/ngs/Statistics.py
@@ -90,7 +90,7 @@ class Statistics(Refcount):
ret = c_uint64()
ngs_str_err = NGS_RawString()
try:
- res = NGS.lib_manager.PY_NGS_StatisticsGetAsU64(self.ref, path, byref(ret), byref(ngs_str_err.ref))
+ res = NGS.lib_manager.PY_NGS_StatisticsGetAsU64(self.ref, path.encode("UTF-8"), byref(ret), byref(ngs_str_err.ref))
finally:
ngs_str_err.close()
diff --git a/ngs-python/setup/package.prl b/ngs-python/setup/package.prl
index d99921f..17135ee 100644
--- a/ngs-python/setup/package.prl
+++ b/ngs-python/setup/package.prl
@@ -1,6 +1,6 @@
################################################################################
sub PACKAGE { 'ngs-python' }
-sub VERSION { '1.2.3' }
+sub VERSION { '1.2.4' }
sub PACKAGE_TYPE { 'P' }
sub PACKAGE_NAME { 'NGS-PYTHON' }
sub PACKAGE_NAMW { 'NGS_PYTHON' }
diff --git a/ngs-sdk/dispatch/PackageItf.cpp b/ngs-sdk/dispatch/PackageItf.cpp
index d7cfdf0..03ce7ea 100644
--- a/ngs-sdk/dispatch/PackageItf.cpp
+++ b/ngs-sdk/dispatch/PackageItf.cpp
@@ -43,3 +43,10 @@ namespace ngs
}
} // namespace ngs
+
+extern "C" {
+ const char * ngs_PackageItf_getPackageVersion () {
+ static const ngs::String version (ngs::PackageItf::getPackageVersion());
+ return version . data ();
+ }
+}
diff --git a/ngs-sdk/dispatch/version.h b/ngs-sdk/dispatch/version.h
index 7dbd7dd..a9291c9 100644
--- a/ngs-sdk/dispatch/version.h
+++ b/ngs-sdk/dispatch/version.h
@@ -1 +1 @@
-#define NGS_SDK_VERSION "1.2.3"
+#define NGS_SDK_VERSION "1.2.4"
diff --git a/ngs-sdk/examples/DumpReferenceFASTA.cpp b/ngs-sdk/examples/DumpReferenceFASTA.cpp
index df4d16b..d04def4 100644
--- a/ngs-sdk/examples/DumpReferenceFASTA.cpp
+++ b/ngs-sdk/examples/DumpReferenceFASTA.cpp
@@ -69,6 +69,8 @@ public:
}
}
}
+ if (line != 0)
+ cout << '\n';
}
catch ( ErrorMsg x )
{
@@ -93,14 +95,13 @@ public:
while ( refs . nextReference () )
{
process ( refs );
- cout << '\n';
}
}
};
int main (int argc, char const *argv[])
{
- if ( argc < 2 )
+ if ( argc < 2 || argc > 3)
{
cerr << "Usage: DumpReferenceFASTA accession [ reference ]\n";
}
diff --git a/ngs-sdk/examples/Makefile b/ngs-sdk/examples/Makefile
index 599befe..bd7340c 100644
--- a/ngs-sdk/examples/Makefile
+++ b/ngs-sdk/examples/Makefile
@@ -25,7 +25,7 @@
default: std
ifeq (Darwin,$(shell uname -s))
-MFLAGS += -mmacosx-version-min=10.6
+ MFLAGS += -mmacosx-version-min=10.6
endif
CC = cc $(MFLAGS) $(CFLAGS)
@@ -35,13 +35,14 @@ CXX = c++ $(MFLAGS) $(CPPFLAGS)
# NCBI_VDB_LIBDIR and NGS_LIBDIR
include $(CURDIR)/Makefile.config
-TARGETS = \
- FragTest \
- AlignTest \
- AlignSliceTest \
- RefTest \
- PileupTest \
- FastqTableDump
+TARGETS = \
+ AlignSliceTest \
+ AlignTest \
+ DumpReferenceFASTA \
+ FastqTableDump \
+ FragTest \
+ PileupTest \
+ RefTest \
# This rule triggers detection of the libraries and headers
# in addition to building the examples
@@ -61,65 +62,77 @@ clean:
# which in turn relies upon ncbi-vdb to access the SRA
#
TEST_LIBS = \
- -L$(NCBI_VDB_LIBDIR) \
- -L$(NGS_LIBDIR) \
- -lncbi-ngs-c++ \
- -lngs-c++ \
+ -L$(NCBI_VDB_LIBDIR) \
+ -L$(NGS_LIBDIR) \
+ -lncbi-ngs-c++ \
+ -lngs-c++ \
-lngs-bam-c++ \
- -lncbi-ngs-c++ \
- -lncbi-vdb-static \
- -lngs-adapt-c++ \
- -lpthread \
- -ldl \
- -lm
+ -lncbi-ngs-c++ \
+ -lncbi-vdb-static \
+ -lngs-adapt-c++ \
+ -lpthread \
+ -ldl \
+ -lm \
-# FragTest
-# access read fragments
-FRAG_TEST_SRC = \
- FragTest.cpp
-FragTest: $(FRAG_TEST_SRC)
- $(CXX) -g -o $@ $(FRAG_TEST_SRC) $(TEST_LIBS)
+# AlignSliceTest
+# slice a ReadCollection and output alignments
+ALIGNSLICE_TEST_SRC = \
+ AlignSliceTest.cpp
-# RefTest ###################
-REF_TEST_SRC = \
- RefTest.cpp
+AlignSliceTest: $(ALIGNSLICE_TEST_SRC)
+ $(CXX) -g -o $@ $(ALIGNSLICE_TEST_SRC) $(TEST_LIBS)
-RefTest: $(REF_TEST_SRC)
- $(CXX) -g -o $@ $(REF_TEST_SRC) $(TEST_LIBS)
# AlignTest #################
# access alignments
ALIGN_TEST_SRC = \
- AlignTest.cpp
+ AlignTest.cpp
AlignTest: $(ALIGN_TEST_SRC)
$(CXX) -g -o $@ $(ALIGN_TEST_SRC) $(TEST_LIBS)
-# AlignSliceTest
-# slice a ReadCollection and output alignments
-ALIGNSLICE_TEST_SRC = \
- AlignSliceTest.cpp
-AlignSliceTest: $(ALIGNSLICE_TEST_SRC)
- $(CXX) -g -o $@ $(ALIGNSLICE_TEST_SRC) $(TEST_LIBS)
+# DumpReferenceFASTA
+DUMP_SRC = \
+ DumpReferenceFASTA.cpp
+DumpReferenceFASTA: $(DUMP_SRC)
+ $(CXX) -g -o $@ $(DUMP_SRC) $(TEST_LIBS)
+
+
+# FastqTableDump
+# produce fastq-like table
+FASTQ_TABLE_DUMP_OBJ = \
+ FastqTableDump.cpp
+
+FastqTableDump: $(FASTQ_TABLE_DUMP_OBJ)
+ $(CXX) -g -o $@ $(FASTQ_TABLE_DUMP_OBJ) $(TEST_LIBS)
+
+
+# FragTest
+# access read fragments
+FRAG_TEST_SRC = \
+ FragTest.cpp
+
+FragTest: $(FRAG_TEST_SRC)
+ $(CXX) -g -o $@ $(FRAG_TEST_SRC) $(TEST_LIBS)
# PileupTest
# slice a ReadCollection and produce pileups
PILEUP_TEST_OBJ = \
- PileupTest.cpp
+ PileupTest.cpp
PileupTest: $(PILEUP_TEST_OBJ)
$(CXX) -g -o $@ $(PILEUP_TEST_OBJ) $(TEST_LIBS)
-# FastqTableDump
-# produce fastq-like table
-FASTQ_TABLE_DUMP_OBJ = \
- FastqTableDump.cpp
-FastqTableDump: $(FASTQ_TABLE_DUMP_OBJ)
- $(CXX) -g -o $@ $(FASTQ_TABLE_DUMP_OBJ) $(TEST_LIBS)
+# RefTest ###################
+REF_TEST_SRC = \
+ RefTest.cpp
+
+RefTest: $(REF_TEST_SRC)
+ $(CXX) -g -o $@ $(REF_TEST_SRC) $(TEST_LIBS)
# ===========================================================================
#
@@ -138,6 +151,9 @@ run_frag: FragTest
run_align: AlignTest
./$^ ERR225922 10000 2 $(REDIRECT)
+run_dump: DumpReferenceFASTA
+ ./$^ SRR520124 1 $(REDIRECT)
+
run_align_slice: AlignSliceTest
./$^ SRR1121656 1 1 9999 $(REDIRECT)
@@ -147,7 +163,7 @@ run_pileup: PileupTest
run_ref: RefTest
./$^ SRR1121656 $(REDIRECT)
-ALL_TESTS = run_frag run_align run_align_slice run_pileup run_ref
+ALL_TESTS = run_frag run_align run_align_slice run_pileup run_ref run_dump
run_all: $(ALL_TESTS)
diff --git a/ngs-sdk/examples/expected.txt b/ngs-sdk/examples/expected.txt
index dac7d24..91cdb1b 100644
--- a/ngs-sdk/examples/expected.txt
+++ b/ngs-sdk/examples/expected.txt
@@ -27876,3 +27876,534 @@ GL000225.1 GL000225.1 211173 linear
GL000192.1 GL000192.1 547496 linear
NC_007605 NC_007605.1 171823 linear
hs37d5 hs37d5 35477943 linear
+>1
+AGGGGCCTGCCCGACGGGCGGGCCTTTCGGGGCGCAGGACGGCTGTCCGGGGTCTCCCCGGCCGCCTGCC
+TTGGGAGAGCTGCCGGATCCCCTTTTTTCCAGTCCCCTTACGGAGGTTTCCTCATGTGCCCCGCTTCGCG
+CCGTTCCCGGCCTGCCATCGACATGACCCTGATCGAGCGCCTGGACACGCTGGCCGGCGCCGCCATCGCG
+CGGCTGCCCGATGTGGCCTATCCGCTGATCACCAAGCTGACATCCGCCCGCCTGCTGGCCCCCGCCCGCC
+TGCCGTCCGACGTCGTCACCATCGGCAGCGAGGTGCTCTATCACGACGATCAGGGCGCGCGGGACCGGCG
+CGTGACCCTGTCCTGGCCCGAAGATGCCGACATCAGCCGCCGATCCGTGTCGATCCTGACCCCGGTGGGC
+GTGGCGCTGCTGGGCCTGTCGGCGGGCGACCGGTTCCAGTGGCAGACGCGGGCCGGAGAGCGGCGCAGCC
+TCACCGTGCTGCAGGTCGGGTCGGAGCCGCGGCCCGGGACGACCCCGGCCGCGCCGCGGCCCGGGCTGTC
+CTGAGCGCCGGGACGGGAGCCTACCATGTCGCATCGGAAGATCCCCCGCTACTGTGCCGGATGCGGCGCG
+GCCATTCCCCGGGCCGCCGCCGGACGCTGTCCCTTCTGCCGGGTCGAGTTCGCCCCGGCCGGGGGCGGCG
+CCCGGCCCCCCTCGCCGGGGGGGGCCGGCGATCCCTATCGGCCGCCCTGCCGGACGCGGCGGGGCCGCGC
+CGCCTCTGCCCGCGGGGCGGCCATGATCCGGCTGCGCCCGCTGATCGCGCCCGCGCTGCTGTTGCTCGGC
+ATCGCCGGCATCACCTTCGCGCAGGCCGAGGCGGGCCGGCGCTTCGGCATCGCGCCGCTCGGCCGGAATG
+GCCGGAACGCCCTGCAGATGGCGGCCTATCTCGGCCTCGCCTGGCTTCTCAGCCGGACCTTCGGCCAGCT
+GCTGGCCCGCCTGCGGCCGCAGAGCCGCCCGCTGCCGAAGCTGCTCGGCGATCTGGTCTCGGCCCTTCTG
+TTCCTGACGGCGATCGTCTCGGGGATCCTGCTCATCCTAGGCCACGGTGCCGGCAGCGCGCTGGCGGGGT
+CGGGGGTGGTGCTGGCCCTGTTCGGCTTCGCGATCCGCAATGTGGTGGCCGATACGCTCTCGGGGATCGC
+CTTGGGCCTCGAGGCGCCGTTCCGCATCGGCGACTGGGTCGATATCGAGGGGCTGGGCCGCGGCCGGGTG
+GTCGAGATCGGCTGGCGCACCACGCGGCTTCTGACGCGCGACTCGACCTATGTGATCCTGCCCAACAGCC
+AGGTCTCGCGGCAACGCATCGTCAACTACAGCGCGCCCCGGTCCGAGTTCCGGGCGCAGATGGAGATCAA
+GCTGGGACATGCCACCCCGGCAGCCGAAGGGGCGGACCTCCTGCATAAGGCGCTGCGGGAGGCGCCGCTG
+ATCCGCCAGTCGCCCGCGCCCGACGTGCGCATCCAGGCCATCGAGCCCGATGGGGTGCGGTATGCGCTGC
+GCTACTGGCTGGGCCGGTTCGATCACGAATGGGAGTGCCGCGATGCGATCTGGCGCGAGGTGGATGCGGC
+ACTCCGCCGGGCCGGGATCCCGCTGGCGCAGCCCCCCGTCGCCCTGCTCTGCGCCCGTGAGGGAGGCGCG
+ACACCGGGGGCAGGGATGCCGGCCGGCGTCCCCGTCGCCCTGCGCTGACGCCCGGGCAGACGGGCCCGTC
+GGGGGGCGGCGGCAAGACATGCGACCGGACCTCCTTGGCTCCTGCCTCCTCGAGCGCGGCCTGCACCGCC
+TCGAGCGTCTACAGGACCCGCGCGTGCCGGTCGCCCCGGGCACCGATCCAGGTGGCCCCGCGCGAGGTCT
+CGCGCCGGACGGCTTGGCATGGGCCCGCACATCGGCTAGGTCCGTCCCACTCGTCAGGACCCGGGTGCGA
+TCCCCGGGTGGCTCCTCCGGCCGCCGATCCGCCGGACAACCCACCAGCACCAGCAGGAACATCCGCCGGC
+GCGCAGGTCCGGGCCGGCGGGGAACGGGACATTCATGATTTCATTCGCCACCTATCGCCAGCAATGGCTG
+GGCCATGTGCGGGGCGACCTGCTCTCGGGGCTCGTCGTGGCGCTGGCCCTCATTCCCGAGGCCATCGCCT
+TCTCGATCATCGCGGGCGTCGATCCGAAGGTCGGGCTCTATGCCTCCTTCTCGATCGCCGTCGTCACCGC
+CATCGCGGGCGGACGGCCCGGGATGATCTCGGCCGCCACCGCGGCGACCGCCGTGCTGATGGTGACCCTC
+GTGCGCGACCACGGGCTCCAGTATCTGCTGGCCGCCACCGTGCTTGCGGGGCTGATCCAGATCGCGCTCG
+GGCTCCTGAAGCTCGGCTTCGTCATGCGCTATGTCTCGCGCTCGGTGATGACGGGCTTCGTCAATGCGCT
+GGCGATCCTGATCTTCCTTGCGCAATTGCCCGAGCTCGACCCGCGGGCCGTGCCGCCGCTGACCTATCTC
+CTCGTGGCGGCAGGCCTGGCCATCATCTATCTCTTCCCGCGCCTCACCCGCGCCGTGCCCTCGCCGCTCG
+TCACCATCATCGTGCTGACGGCGCTGACGCTCGGCCTCGGGCTCGACGTGCGGACGGTGGGCGACATGGG
+CGCGCTGCCCGACACGCTGCCCGTCTTCCTGATCCCGGACATTCCCCTGACCTTCGAGACGCTGCGGATC
+ATCCTGCCCCCGGCCACAGCCGTGGCGGTGGTGGGGCTTCTGGAAAGCCTGATGACGCAGACCCTCGTCG
+ACGAGCTGACCGACACCCGCTCGAGCCGCAATCAGGAATGTATCGGGCAGGGGCTGGCCAACGCCGCCAC
+CGGCTTCATCGGCGGCATGGCGGGCTGCGCCATGATCGGCCAGTCGATGATCAACGTGAAGTCGGGCGGG
+CGCGGGCGGCTGTCCTGCTTCGTGGCGGGCGTGTTCCTGCTGATCCTCGTCGTGGGGCTCGGCGATGTCG
+TCAGCCGGATCCCGATGGCCGCGCTCGTCGCCATCATGATCATGGTCTCGATCGGCACCTTCTCCTGGTC
+GTCCCTCAAGGCGCTGCGCACCCATCCCCGGTCCTCCTCCGTGGTGATGCTGGCGACGGTGGCGACCGTG
+GTCTGGACCCACAATCTGGCCTTGGGCGTCCTCGTGGGCGTGCTGCTCTCGGGGATCTTCTTCGCCGCCA
+AGATTGCGCAGCTCTTCGCGGTCAGCTCCGAACTCTCGGCCTGCGGGCGCGCGCGGACCTACCGGGTCGA
+GGGCCAGCTCTTCTACGGCTCGGTCGAGGATTTCATGGCCGCCTTCGACTTCCGCGAGCCGCTCGAGCGC
+GTCACCATCGACGTGAGCCGCGCCCATATCTGGGACATCTCTTCGGTGCAGGCGCTGGACATGGCGGTGC
+TGAAGTTCCGCCGCGAGGGGGCCGAGGTGCGGATCGTGGGCATGAACGAGGCCTCCGAGACTCTCGTCGA
+CCGGCTGGCCCTGCACGACAGGCCGGGGGCCCTGGACCGGCTCACGGCCCATTGAGAGGGAGGACGACAT
+GACCGACAGGATCATGGCACTGGTGGACGGCTCGGGCTTCTCGCGCAGCGTCTGCCTTCATGCGGCCTGG
+CTCGCGCAGAGGCTGGAGCTTCCGGTGGACCTGCTGCATGTGCTGGGCCGCCGCGAGGCCGCCGATCGGG
+GCGATCTGTCGGGCGCGCTGCAGCTCGGCGCCCGCACCGCCCTGCTCGAGGAACTGGCCGCGCTCGATGC
+CGAGCGGGCGCGGCTCGCGCAGGCGCAGGGGCGGGCGATCCTCGAGGATGCGCAGGCGATCCTGGCCGCC
+GAGAGCGTGGAGACCACGCCCCATCTGCGGCAGGGAGACCTGATCGACACGGTGGCCGGGTTCGAGCGCT
+CGGGGCGGGCGCTGGTGGTTGGCAAGCGCGGCAGGGCCGCGGGCTTCGCCAGCGCCCATCTCGGCTCCAA
+TCTCGAGCGCCTCCTGCGCGCCTCGAAGCTGCCGGTCCTCATCGTGCCCGCGGACTGCCGGCCGGTGCGC
+AAGGTGCTGGTGGCCCATGACGGCGGCAGAAGCGCCCGCGGGGCGATCGAGCGGATGGCGGCAAGCCCGG
+TCTTCCGCGGCCTTGCGATCACGCTGGCCTGCGCGGGCGGCGAGGAGGCCCGCGCGACGCTCGAGCGCGC
+CCGCGGCACGCTGCTGGCCGCGGGGCTGGCGGCCGAGACCTGCCTCCTGTCCGGCGCGCCCGAGGTGGCG
+CTCGAGCGGAAGATCGAGGCCGAGGGCTTCGACCTTCTGGTGATGGGCGCCTATGGCCACAGCCGCATCC
+GCACCCTGATCATCGGCTCGACCACCACCGCCCTGATCCGCGCCTGCACGGTCCCGATGCTCGTCTACCG
+CTGACCGGGGCGCGACAGGGCGGCCTGCCGTTTCTCGGCGGGCCGCCGGTCAGGCGCTCCCGGCCTTTCA
+AGCCATCGACCCGAAGAGGCTCCTATCCCGGAAAGAGGCGGGCCCGCCGGCCTACCCGGCCATCAGTCTG
+GACAGGCTCGGCCACTGGAACACCAGCACGCCGCCCATCACCGTCGCGGCCCCCAGCACCCGCCACAGAT
+CCAGTGGCTTCCCCGCCAGCCCCATCAGTCCGAACCTGTCGATCAGGAGCGAGGTGAGGAGCTGCCCCGC
+GACAACCGCGATCATGAAGCCCGCGGCACCCATCGTCGGCATCAGGAGGATCGCGCCGGTGACGTAGACT
+ATCCCCACCAGCCCGCCGATCCAGATCCAGGATGGCTGCGCCAGGGCCATGCCCAGATCCGGCACGGGCA
+CCCGCATGGCCAGCAGCACCGGCAGGATGCAGATCAGGCTGACCAGCAATGAGGCAACCGCAGCCCAGAG
+GGGATGCCCCAGCGCACGGCCGAGCGCGGCATTGGCGCCGCCCTGAAGCGGCACGAGCGCACCCGAGACG
+AGCGCGAGGCAGGACAGGACAAGCAGGGGCATTCCGATCTCCTTTTCTCTGCCGCCGGTATAGGCCCCGC
+ATCGGATGAATTTGAAATTCGACCTTGCTTCCCTATCATGCAGCATATGAATAATCTTCGTGCGGTCGAT
+CTGAACCTTCTTGTCGTGCTGGATGCCCTTCTGGCGGAGCGCCATCTGTCGCGGGCGGCGGCTCGGCTGA
+ACATGAGCCAGCCTGCGGTCAGCCATGCGCTCGCCCGGCTGCGGCATCTGCTGGGCGATCCGCTGTTCCG
+GCGCGAGGGCGGTCGGATGGTGCCCACGCTGCGCGCGCAGGCGCTGGCCCCGCCGCTGGCCGAGGCTCTT
+GCGCAGATCCGCAGCGTGCTCGGGCCCGATGCGTTTGACCCGGCCGCGCCGCATGTGTTTCGCCTGACCA
+TGTCGGATTACGGCGCGGGGCTGGTGTTGCCGGGCCTGATGCGGCAGCTGCGCCGGATCGCACCGGAGAT
+CCGGCTGGTGGTCACCCAGAAGAGCCGGGAGGCGATGATCGAGGCCGTGAGCGAAGGCGAGGCCGATCTT
+GCGCTCGGCGTCTTTCCCGGGCTGCCGCCGCAGCTCGAGGCGGAGCTCTTGCTGACCGACCGCTATATAT
+GCCTGCTGGACCCGGCCCATCAGCCCGTCCGGTCCGGCGGCCTGACTGCGGAAGCCTTCTGGTCGGCTCC
+GCATGCCCATGTGGCGGTGCAGGGTGACTTCACCACGGAAATCGATCTGCATCTGAAGGATCGGGGCGGT
+CCCCGGCGCCTTGCGCTGATCCTGCCGCACTGGAGCATCGCACCCAAGGTCATCGCCGGCACGGATCTGA
+TCCTGACCGTTGCCAGCCGTGCCGTGCCCGCAGCGCCGGAGCCGCTGATTGTCACGGCGCCCCCCGTTCC
+GTTGCCTCCGATCCCGTTCAGCGCGATCCACGCCAGACGCCGCAAGGCCGATCCGGCGCTCAGATGGCTG
+ATCGCCCGGCTGCGGGAGGTCGTTGGCGAAGAGGCGGGAACCGCCGTGGCATGAGCCGCGAAGAAGGCCC
+CGAACTCACGCCGAAGACGAGCTCGGCCGCGATCAGCGTCCGCCAGGCGAAGGCCCAGCCGATCTTGAGG
+CCGGTCAGGATGCTCGGGAAGGCCGCCGGGATCAGGATCTTGGTGATGAAGCCCCAGCCCTTCAGCCCGT
+AGTTATGTCGTCCTGCCGCCCCCGCGCCACGAGGGCCGGATAAGCGCGGGCTCGCCCTTCGCGCAGCTCC
+AGAAGGCGGGAATGCCGACTGCCATCATGGCCGACATTCAGCGCCAGAGAAACGAGGATGCCCGGGAAGC
+CGTGCTCCATGCCATCCGCGGCGAGGTGGCGCGGGCGTGGCTCGGATTGCACAGCTCCGTGCGCGAGCGG
+ACCGGGATTGTGGTTCTGACCAACCGCGTCCGGGGGAAGTGAATGCCGCGATCCGCGACGAGCTGAAGGG
+GGAACATCGGCTCGGCGCTCAGGATGTAACGGTCGCCAGTCTCACGCCGCTCTCGCTCACCCGCGCCGAA
+GCGCGCGAGGCGGCCAGCTACAAGGCTGGTGATGTGGTGATCTCGGTGCGCAGCGTAGAGGGGTTGGAGC
+GGGACAAACTCTACCGGGTTACATCCACCCTGGTCAACCTCGTCTCAAGGAGAGCTGCAGCCCGATCAGC
+AAGGCCTGCACTCTCTGTTCGCCCGCGCGAGGACAGTCAACTGAGCGGGCGGAGATTGGGCGTCCTATCG
+GACCATGCACGGCTGCGACATAACCGGCTCGGCGAGAAGGGCGGGGCGCCCGCGGCGCCGGGACGAGAGG
+GTATCATGGCTCCGGTCACCTCCGCTTGCGGACGGAACTAGAGCCGTGGACCGGCAACGCCGGGGTCACG
+CCCAGATCCCTCGAGGCCAATACCGCGCGGGTTCTCTCCGGGCAATCCGGCGAGGTAAGCCGCGACCTGC
+GACCGCGACCGCGATATATCGGCGAGCCTGCGATCGAGCTTTGCCAGTTCATCCGTGAGGCGGGCGCGCA
+GCCGCTCGCAAGGATGGAACGTCGGCTCGGGGCTGATGATGCAGGGCAGCAGGTCGCGCATTGCCTCGAC
+CGTGAGCCCGGCCTCGGCCAGCTGTCGGATCATGCAAGCCTGCTCCAGATCGGCCGGGCCATAGTCGCGG
+TAGCCGCTTCCCGTCCGATGCGGACGCAGAAGCCCTTCCGCCTCGTAGAAGCGTAGCATTCGGACGCTGA
+TGCCACTGCGGTCGGATACATCGCCGATCTTCACCACGCTCTCCTTCTTGGGACTTGACCCTGACAACGG
+TGTCAGAGTGCAAAAGGAGTGCCGACACATCAAGTCGGAGAAGAAGCAATGTCGAAGATCGAACATGTCC
+ATCACAAGGGCGCGCGTGTGGGCTATCGTGACGACGGGGAAGGCAAGCCGCTCATCCTCGTCCACGGGAC
+CGGGGGAGACGGCGAGGCCAACTTTGATGGCCTTCTGCCGCATCTGTCGCGGCGGCGCGTGCTGCGGCCA
+GACTATGCCGGATCCGGACTCACAGTGGATGCCGCCGAAGTGCTGACGGTCGATCATCTGGTGCATCAGG
+TCATCGCCACCGTGGACCATGCGGGGATCGACAGTTTCGATCTGGCAGGCTTTTCTCTCGGCTCTGCCGT
+CGCGGTCCGGCTCGCCGCCCTGCATCCCGGGAGGGTCGACAGGCTCGTGCTGATTGGAGGGTTCATTCAC
+GCGGCCGACCCGCGCTCACGTCTGCAGTTCAAGCTCTGGGCGGACCTCGCCCGGAAAGATCCTGCCACCC
+TTGCGCGGCTCATGATGCTGACCGGTTTCAGCTACGCCTTCCTGTCGGCGATCACCGACTTGGATTCGGT
+GATCGCCGGCATGGTATCGGGCGGCAACTGGGAGGGAGTTGCGCGACAGGCGGAGCTGGATCTGCGAGTT
+GATGTCTCTCGTGAGCTCGGCCGTGTCAAAGCTCCAACCCTCGTGATCGGCAACCGGTGCGATCAGATGG
+TGGATCCGGCGGCTTCGATCGCGCTCGCTGCGGGCATAGCGGATGCCACCCTCGCTTGGCTTGAGGGGCC
+GCATCTTGCGTTGATGGAACGACCGGACGTCGCGGCGGACCTTTTGATGCGTCATCTGGCTGACTGAGCT
+CACCGCCTCGAGGGGCGCTGCAGCCCGATGGGCGAGGGCCGCGCTCTCAGCTCACGCGCGGGAGGATCGT
+CACCCGAAAGCCCGACACATCGGCCGACCTCCGATAGCGGGGTGCGGGCGTTTTCCTGAAGCGCTTCGAG
+GATTGCGCTGTCAAGGCGGTCGAGCTCACTGGTCGGCATGTTCCACCACGGATTCCGTTAACTCATCGGA
+AGTGTGCCAAAAACGCCGATGAATTGCCATTCCCGGCATGCGTTCGGCAAGGGACACTCTAGAAAGGACA
+TCAGGAGATTAGCATGGGGCGTCGTTTCGTTATGGTGCCGGGCATCGGGGGATCCGGCCCTGAGCATTGG
+CAGAGCCATTGGGAAAGTCTCTATCCGAACACCCTCCGGATAGAGCCGAATTCCTGGGATGAGCCCGACC
+TTGCGGACTGGTTCGCCGCCCTGGACCGGGCGGTCGCCGCAGCACCTTATCCGCCGGTGCTGGTATGCCA
+TTCGCTCGGGTGCCTGCTCTTTGCCCACTGGCGTGCGGCGTCGTCCCGTGCCATCGCCGCGGCATTTCTT
+GTTGCCGTGCCGGACCCGAGCGGGCCGGCTTTCCCGGCGCAGGCAAAGGCATTCGGAGCGCTACCTGCAA
+CGGGGTTTGGTGAGCGGCCGGTGTTGGCCGTCGCAAGTGAGAACGATCCCTATGATCCGGAGGCGAGTGC
+GATAGCCTGGGCTGTCAGACAAGGCGCCTGGCCGCGTCGTCTCGGCCCAAGGGGCCATTTGAACGAGGCG
+TCGAACATCGGCGCCTGGCCCGAAGGCCAAGAGCTTCTGGCAGATTTCCTGGACAAGATCGGAGAGTAGC
+CATGGACGTTGCAACTGCATTGCTGAGCTTTTCCATTGCAGCGGCTTTGCTGACGATCACACCGGGGCTC
+GATACAGCCCTCGTTCTGCGGACGGCGGCGGTCGAGGGGCCGCGCCGGGCGATGCTGGCGGGGGCAGGGG
+TGGTGACCGGGGTGCTGGCATGGGGATTGATTGCGGCTTTGGGGCTCGGTGCTGTGCTGGCCGTGTCGGA
+ACTGGCTTACCGTTGTCTTCAGCTTGCCGGCGCGGCCTACCTGATCTGGCTGGGTATCGGGATGTTGCGG
+GGAGCGTTGCGTGCGCGAGAGCCGGGCCTGCCCAAGGTCATGGCGCCTTCCGCACCAAATTGGTTCCTGC
+GCGGGGTAATGACCAACCTTCTTAACCCCAAGGTCGGTGTCTTCTATATCAGCTTCCTGCCGCAGTTTCT
+GCCCGTGGGCGTTTCGGTGGTGCCGTTCAGCGTCCTGCTCGCGGGGATACACGCGTCGATGGGGCTGATC
+TTTTTTGCAGCGCTGACTGCCGCGACAGTGCCGTTTCAGAATGCCCTGAACGGCCCTCGCCTGCCTCGGC
+TCCTCGACGGGGTCACCGGCAGTGTCTTGATCGGGTTCGCCCTGCGACTGCTGACGGAGCGGCGCGTGGG
+ATGACCTCAGCTCTCGATCCGACGCTGCAACTGACCGGGCGTGATCCCATGGGCGGCCTGAAAGGCGGCC
+ACGAAGCCGCTCGCTGTGGCGTAGCCGGCAGCATGGGCTGCATGTTGCACGCTCTTGCCGGCCATCAACG
+GGGCAATTGCGCGTGCCAACCGCAGGTCTCGCATCCAGGTGGTCCAGCTCTGCCCGGTGTCGCGACGGGC
+GAGCCGTTGCAGGCTGCGCCGCGACAGCGCCAGTGCCGCGGCCCAGTGGTCGAGCGAATGGTCGGCCCCA
+TCGAGATGTGCCAGAGCGATACGACGCAGGCGCGGGTCGGTTGGTAGCGGCAGCGTGGGCGCGGGGGCGG
+GGCGCGCAAGCCGGTCCCACAGCACGGCCGTCAGCCGGGCGAAGGCGGGCTCTTGCCGGTCGGCGCGGCT
+GGACCCTGCGAGAGTGCGGAGAAGTTCGGCCTCCAGCGCTTCGAGAGGGAAAGGTGTGGGGGCCTTGGGC
+AGTGGCGCCGCGGCGGGTCGGGTGTAGAGGCTGACCGATTTCCGCGCGCCCTCGGCCCGGATGCGGTGGC
+GGTGCGTCGGTGGAAGCCAGATCGCCATGCCGGGAGAGAGAAGATGCAGCCGGCCTCCTGTCTCGACCGT
+CACCGGCCGGTCCGGGCACCAGGCGAGCTGCCCGCGCCAGTGCGCATGCGCCTCGGGCATTGTGCCGGGT
+GTGAAGCTCGTGATCCTGCCGATCACCGGGCTTCCATCCTCGGCAAATCCTCCGATCTCATCGCGCTGCA
+TGCTGGCACCTCCGGGGTATCATCTGGCACCGGGGCAACACATTTTTCCAGCGCTTCCGTCACGATCGCG
+CGGAGGCGGAGCGGAGGACCGTATGGATATGGCGACAATCGCGCTGCTCGCGGGCGCAGGGCTGCTCGGC
+GGGCTGTGCAATGCGATCGCGGGCGGCGGCACGTTTTTTACCTTCCCGGCGCTGCTGGCCGTGGGGCTGC
+CGCCGGTGACGGCGGGCGCAACCAGCGCAGTGGCGATCTGGCCCGGCCATGCGGCCAGCCTGATCGGCGA
+AGGCGCGGTGCTGCGTCAGGACCTGATCGCGCGGCCCGGGCGCGTCACGGTGTTTGCGCTGGCCTCGGCG
+GCGGGGGCCGGGCTGTTGCTGCTGTCGGGAGATGCACTGTTCCGGCAGTTGGTCCCCTGGCTGCTGCTTT
+TCGCGACGCTGCTGTTTGCGGCAGGGCCCATGCTCAACCGCTGGCTTGCCCGCTGCGGGGTGTCGATCGG
+GCCAGTCAGCGCCGCGTGCGCCGAGGGGGGCGTGGCCCTTTATGGTGGCTACTTTGGGGCAGGGCTGGGG
+GTGCTGCTGCTGGCGCTGCTGACCGTGACGGGAGACGACGATCTGAAGCGGCTGAACGTGGTCAAGAATG
+CTCTGGCGACACTTGCGACCAGTATCGCCGTCCTGATCTTCGCCTTTGGCGGCGCGGTCGTCTGGGGGCC
+GGCTGCCCTGGTCTTCCTGGGGGCGACGGCAGGTGGTGTCATCGGTGGCCGGCTGGCGCGCCGGGTGAAC
+CCGCAAACCCTGCGCGCCGCGATCGTCTGCCTCGGCCTGTTGCTGGTCTGGCACTACGCGTGAGCCCGGG
+TCGAGGCGCGGAACGCCTCGCGCAGGGCCGTGGTAATCCGCCCCACGGGCCATGTGCTGTGCTTGCCGGG
+GCGGTCGAGCGACCACGGGACGAAGCTCGACCGACGTGCCCGTGACGAAGACCTCGTCCGCTGCATCCAG
+ATCGTCGAGGCTGACGGTTCCTTCATGAACCGACAGGCCGAGGCCACGCGCAAGGTCGAAGACATGGCGC
+TTGGTCAGGCTGTCGAGAAAGCATGTAGGAAGGGGAGACAGAAGCCTGCCATTCCGGACAAGGACGATGT
+TCGTCACCGTGGTTTCGGCGACATGGCCTGCCATATCCAGCATGAGGGCATCGTCATGTCCGCTACGGGC
+AGCTGCGGCCCGCGACAAGGTTCCGGTCATGTAGAGCCCCGAGCATTTCGACGCCGTCGGCGCCGTATCG
+GGCGCGGGGCGCCGCCAATCCGACAGAACCAGGCGCAATCCGCCGGTCCCGTCCCCAAGGGCGGTCTCCA
+CCGGCCAGTCCCAGGCCGCGATGGCGGTATGGATCCGGCACCCCTGTGCGGAAACGGTGACGCTTTCACT
+GCCGCGCCAGGCGATCGCCCGAACATAGGCGTCCTTCAGTCCGCCAGCCCAAAGCACGGCCTCGGCGGCG
+GCCTGAAGATCATCGACCAGCCATGGCAGCGTGTAGCCGAGAAGTTCGGTCGAGCGCTGCAGGCATCGGA
+AATGCTCCTTGCCCAGAAACAGACGACCGTCATAGGCGCGGATAATCGCGTTTCAGCGGCGTCGACGACA
+ATCCGCGTGCCCCCGTTACCTTATAAGCGGTGCCCAGCATATAGGGTCGCCAGAGCACGGTCCGACCCAT
+GTCTGCCGCGATGGCCTCGATCCGCTGCGCCGCGAAGAAGGCGTAGCCGGACGAGAAGCCGAACCAGAAC
+TCGAGGGAACTAATAGCTCTTCGCCGTCCCAGTAATCGACCGCATCCGCGTTTCGGAAGGAACTGGCAAC
+CCGGCGCTTTGCCTTGTCACCTCCGTGCGCAGCGCCCGCGAAGACTGTCAGCTTGCCGCTGTCGGGATGC
+CTGGCATGGGTTTCAAGGTCAGTTCGGGAAAGTCTTGCCATTCTTCGGGTCTCCTTCTCCGTCCGCGTTA
+GCGGTCGGGGCTGACTGTCATGCGGCAGCATGGCTGCTCGCAATTGAGGAATCTTCCGGAGGTCCTGAGG
+ATTTCGCGGCGACGAACACAGAGAGGAATTCTCAATATCCGCTGAGGGATCCGAAATTCATGGCTCTGGT
+CACGAGGCGCATTCTCTGGGGGAACACACCGGAGGTGACCATGAACCCGCGATGCACGGCAAATCCAGCG
+CAAGAGCACGACAAAGATAGTCTTGCATCAGGCCCGGCTCTGCCGCCGCGCCGCTTTCGGGCCTTTCACC
+GCTTGAGCGACAGGGAGTTGAAATATCTGGGATTGGATCGCCAAAATCTGCCGATCTTCAATCCTGTTCA
+GGCCATTCGCCGAGACGACCTGTTCTAGCGCGATGCGGGCAGGTCTGGCGTATCATGCAAGCAGATCAGT
+GTTTGCATCCCCGTGGCGACATGTTTGCGGCGTTCTCCATCAACGCCCCATACATCGAGCTGGCAGATGG
+TCAGTGTGCGACCATTCTTGATCACGCGGCCGACAGCCTCGGTAAAATCTCCTTGCGCCGGGCTGATCAG
+GTTCAGTTTGAACTCGACCGTCAGGACCGTACTGCCTTCGGGGAAGAGGAGGAAATGAGCGTAACCGCCT
+GCGCTGTCGGCGATGGCCGATGTTCCGGCGGCATGGAAGTAGCCATGCTGCTGCGTGAGTTCTTGGCGGA
+ACGGGAGACCTCGAGCCGCTACATGATGGTCGAAGCCTTTGTCCAGATCGACAAGGAGGAGATCGACCCC
+ATTCTAAGCATAGCCACGAAAGCCGCCTGATCATGCCCTCAGGCCATCCGGATAATCATACCAGCTTGAC
+GGACGTGCCCCCCCGTCATTGCCTAGGCCGTTCCCAGGGGGCTCCATCGCCTTTCTCCCTCGGCACCACC
+AGTGCGCGACCGGAGTCCGGGTGAGGCAGCTTCAGCATCGGCAGGTCGTAGATGCGCTGCAGGCGGACGG
+GCTGCATGATGTCGGCGACAGGGCCGCTGTCGAGGATCTTGCCGGCCCGCAGCGCCACGAGATCGTCGCA
+GAAGCGCCCGGCAAGGTTCACGTCGTGCAGCACCATCACCACAGTGAGCCCCTGCCGGCGGTTGAGCCCG
+CGAAGGAGCGACAACACCTCGATCTGATGCGCGGGATCGAGCGCGGAGGTGGGCTCGTCCAGGAGGAGGC
+AACCCGCCCCCTGCGCGAGGAGCATGGCGATCCGGGCCCGCTGCCGCTCGCCGCCCGAAAGGGTCTCCAC
+GGGGCTTTCGGCCTGGTCGGCGAGGCCTGCCTGGCGCAGGGCGTCCTGCTGGCGGGCGCGGTCCTCGGCG
+CCGAAGCGGCCGAAGGCGCCGTGCCAGGGAAAGCGGCCGAGCGCCACCAGCTCGGCGACCGTCAGGCCGG
+GGACGTGGGGCGGCGTCTGCGGCAGATGCGCCAGTTGCCGGGCAAAGTCGCTGGCGGCATAGGCGGCCAG
+AGGTCGACCGCGAAACAGGACTTGCCCGGCGGAGGGCGCGAGCTGCCGCGTCATCAGGCGCATGAGGGTC
+GATTTCCCCGAGCCGTTAGGCCCGAGGATGCCGGTCACGGAGCCGCGGGCGATGCGGAGATCCAGCCCCT
+CAAGGAGTTGCTGACCGGCGATTTGCACGCTCGCCTGACGGAGGTCGAATTCTGGAGAGCTGTGGGTCAT
+GGATGTCCTTCGCCGTGACGGGGCAGGGAGCCTTCCGCTGCGCGGCATCAAGCGGCACGCTTGCGGAGTT
+GCCAGAGAAAGAAGGGGCCGCCCAGGAGCGCTGCGAGCAGGCCGGGCGAGATTGGCCAAGGCCAGGCCAG
+CAGCCCGCCCACCCATTGCGCAAGGACCATGACCGAGGCGCCGGTCGCGACCGAAGCGAGGGCCGCCGGC
+GCGGTGGCGCGGAACCCCATTGTCGCCACGAGATGGGGTACGATCAGGCCGACGAAGCTGATCGGACCGA
+GGGCGATCGTGCCCGCGGCAGCGGCAAGAGACGCGAGCGCAAGCCCCGCAGCGCGGGCGGGCGTCACGGC
+CAGCCCGCGCCCTGCGGCGACCGCCTCGTCGAGCGCGAGCAGGTCGAACCAGCGCCGCAGGAGGAGCGCC
+ACCGCCAGTACCGCGATCGCCACGCTCCAGGCCAGCAGAGCCTGGGCGAGGCTCGCGCTGCCGGTGGACC
+CGGAGAACCAGCTGAGGAGCGCTGCGCCTTTCGGCCCGCCCGAGGCCAGCACCAGCGTCAGAAGCGCCTG
+CGCCGTGCTGCCGAACCCCACGCCGATCAGCAGCAGACGCGAGGTCGCAAACCGGACCCGCGCGGCCAGC
+AGCGTCACCAGCGCCAGCGTCGCTCCTGCGCCTGTGGCCGTCAGGGCGAAGCGCGAGACGAGCCCGCTTT
+CCGGCAGGAAGACCATGGCCAGCGCGAAGGCAAGGCCCGCCCCATGCCCGACGCCGAGGAGGTCGGGGCT
+CGTCAGCGGGTTGCGCAGGAGGCGCTGGAGCAGAAGGCCCGAGAGCGCAAGACAGGCGCCTGCGCCGGCC
+GCGAGCAGCAGCGGCGGCAGGCGCCAGCGCAGGACGGCGGCCAGATCCCTGGCCGTGGTGAGGTGCAGGC
+CGGCTTCCGAGCGACCGATCAGCAGCGCGAGGGCGAGCAGGACAGGCACGGCAAGCGCCAAAGGAAGCAG
+TGCCCGCATCGGACGCCGGGGCCGGGCGAGCGCCGGCGGTTCGGGGCGCGCGGGAAGATCCGGGCTTCGC
+GATCCGAGCGACAGAAAAACGAGAAGCGGTCCAATGAAGAGGCCTGACGCCGCGCCGACCGGGACGTCCC
+CGGCAAGACCCGAGAGCAGCCGCGCCGTCTGGTCGGCAAGCAGCAGCAGGACCGCGCCCCAGAGTCCCGC
+GCGGGGCAGGTCGGGCCGGGAGCGACCCCCAGACCTGCCGCCCAGGCCGCGGGCGAGCGCGGGGCCCGCG
+AGCCCCACGAAGCCGATCAGGCCCACCGTCGCCACCACCGAAGCCGTGATCCAGGCCGCGGCGGCGAGCA
+GCAGGAGCTTGGTCCGGCGCACGGAGAGGCCGAGGCCCTCTGCGGTCTCCTCGCCCAGCATCAGAAGCTG
+GAGCGGCCGGTGCATCAGCCACAGCGCCCCCGCCACGGGGGCGGTCTGCGCGAGAAGGCCGAGGCCGGGT
+TGCCAGCCGGCCTGCGCCAGCGAGCCGGCCTGCCATGTCAGCAGCTCCTGCAGGAAATCGTGGTTGAAGA
+GGACGAGAAGCGCATGGGCGGCCGCGGCGCAGAGATTGACCATCACGCCGGCGAGCACCAGCGCCTGACT
+GTGCAGGCCGCGGCCCCATGCAACGGCCAGCACCAGGATCAGCGCCCCCGCGGCTCCGGTCAGGGCAAGG
+AGCCCCGGCGCGGCCTGCCAGAGAGCCGGAGCCAGCAGCAGCCCTGCGGCCAGTGCCAGCGAGGCGCCAC
+CCGAGATGCCGAGGAGCCCGGGTTCGGCCAGCGGGTTGGCGAAGATGCGCTGGCAGACCTCGCCCGCCAT
+CGAGAGAAGGAACCCCGCGAGAAGCGCCATGGCGAGGCGCGGCAGGCTGCTCTGGGTCAGCACGAGCCGG
+GCGAGCCCGTCGCCCGCCAGCGCCTCGGGCAAGAGGGGCAGCAGACCTTGCAGCGTGAGCGCGCCGGCGA
+GGAGAAGGAGAAGCGTGCGCGCCATGGATCAGCCTTGCATGAGGGCCGCGGCGACCGTTTCGGCCAGATG
+CCGGGCCGAGAGCAGCGCGCCCTGCGGATAGAAGCTGCCGATCCAGTGCGCACGCCCCGACGCGACGGCG
+GGCACCGCGCGCCAGAGGGCGCTCGCCCGCAGCATCCGCTCGGTCCGCGGCCGCATCGAGGCGATCTCGA
+CCAGCAGGATGGTGGCGTCTTCCAGCCGGATCAGCTCCTCGAGAGAGGCGCGGTAGGTGCCGAGCGCAGT
+GACCGGGCCCGTCCAGGCGTTGGCGAGGCCCATCCGCGCCAGCACCGCGTCGGGCAGGCTGCCACGACCG
+TAGAGGGTGAAGAGCCGCCCCGAGAGGTCGGGGACGCAGACGAGGACGGAGCCGCGGTCCGCCGGCACAC
+GCCGGTCCTCGGTCGTCAGGACCGCCTCCGTCCCGGCCACAAGCCGTGCAGCGCTGTCCGGCGCGAGGCC
+TGCGGTGGCGGCCATCTGGCGCGCGAGATCGGCGGCGAGATCGAGCCGGCTGCCATCCGTCTCGGTCGGC
+ACGATCTCCACCGGGGCGATTGCGGCGATGCGCGGCGTCATCATCAGCGCCGAGGCCGGCGCGATGATCC
+TGTCGGGCGCGAGCCGCGCCAGATATTCGAGGTTGATCTCCCAGAAGGGCCCGATGTCGACCACGCCCGG
+CGGCAGGTCGAACGGCATGCGGCTGGCGAAATAGCCGCTGTCCGAGATCGCGAGCGGCGGTCGGTCGAGC
+GCGATCAGCGTCTCGGCCGCTGCCCAGTCGATGACGGCCAGCCGTGGGCCGGCCGTCGCCCGCGCAGGGA
+CGGGGAGGGTCAGGGCCACAAGGCCCGCGAGGAGAGGACGGCGCGAGATCATGGGAGGACGACGGAGACG
+GCGGGCCGCCTCCGTCCGGATCCGTCAGAAGCCGATGGCGATCTTGGCCGTGACCATCCGCCGGTCGCCC
+TCGTAGCAGGAATAGGCGCTGGCGCAGGTGGTGAAGTACTCCTTGTCCGTCAGGTTCGTCACATTGAGCG
+CCAGCCGCGCGGTCTCGCTCAGCGCATAGCTCGCGCCGAGGTCGATCACCGTCCGGCCATCCACCTTGAT
+CGTATTGCCGTTGTCGCCGAAGCTCGTGCCCACATGGCGCAGCCCGCCGCCGAGCGAGAGGCCGTCCAGC
+GCGCCCGCGCCGAAGCTGTAGTTCAACCAGAGCGACGCCTGCGACTTCGGCACCAGCGCGGGGCGGTTGC
+CCTCGTTGCCGGCATTGTCCTCGGTGATCTCGACATCGCTGTAGCTGTAGTTCGCCGCAATGTCCCAGCC
+CGAGCCGAGCGAGGCCTTGCCCTCGACCTCGATCCCGCGCGAACGGATCTCGCCTGTGGCGATGTTGTAG
+CCGGTCGAGATGCCGCCCGGCCCCAGTTCGGGCGTGAGCACGTTCGACTTGGTGATGTCGAACAGCGCCA
+CTGTCAGCAGCGCGTCCGTGCCCGAGGGCTGATACTTCGCTCCCAGCTCCCATTGCTGGCCGCGGGTGGG
+ATCGAAGGTACGGCCGTCCGAGCCGAGGCCCGCGTTCGGCAGGAAGCTCTCGGAATAGCTGAGGTAGGGG
+ACGAGGCCCGAATCCGTCAGGTAGCTCACCCCCACCCGGCCCGAGAAATTGTCGAGATCGACCTCGCGCG
+CGGTTCCGGTCAGGTGGTCGTCGGTTCTGGTGCTGAGCCAGTCCTGACGCCCGCCCAGCGTGAAGAGGAA
+GCGATCCAGCCGGATTTCGTCCTGAACGTAGAGACCCGTCTGGCGATACTCTTCGGTGTAGTCATAGGCC
+ACGGTCGTGGGGGTGGGAACGTCCACGCCATAGACGGGCGCATAGGGATCGAGCGAGGGCGCGGTGCCGT
+TCCAGCGGCGCGCGTCCGTGTCGCTGCGCGAATGGTCGAGCCCGATCAGCAGCTTGTGCGAGAGCCGCCC
+GGTCTGGAACTCGCCCAGGAGGTTGGTGTCGACCGCAAGGCTGTCGAGGCTTTCCGAGAAGCGCCGCGCC
+TGCCGCGTGAGGCCGGTGGCATCCGCCCCGATCATGGCGATCATGTCGAGATCGAAGTCCACGCGCCCGT
+AACGCAGGTTCTGGCGCACCGTCCAGCCATTGTCCATCCGGTGGCTGAACTCGTAGCCCAGCGTCTTCTG
+GTCCTGCTCGCTCCGCGAGAAGTTCGGGTCGCCCACGAGGATGTCGGTCGGCGTGAAGAAGATCGCCGTG
+CCGCCCGAGCGGTCGCGCAGCGCCTGCGCCGTGACGGTCAGGCTGGTGGCGTCGGTGGGTGCCCAGGTGA
+TCGAGGGCGCCAGCATCAGCCGGTCGTCCTTCATCCGCGTGCCGTCGCCGTAGGAAAATTGCGTGTTCCC
+GTCGCGCGCCACGCCGACCAGCCGGTAGGAGAGCGTCTTGTCCTCGGTGAGCGCGCCCCCGAAATCGACC
+GCCGCCTGCGTCGTGGCGAAGCTGCCGTAGGAAAGTTCGGCCTCGCGCAGCGGTTCGGTGACCGGCCGCT
+TCGAGGTCTTGCCGACCACGCCGCCCGCATCGGACTGCCCATAGAGGGCCGAGGACGGCCCGCGCAGCAC
+TTCGATCGTCTCGAGCTGGTGCGGATCGGTGCGGAAATGGCTGTAGTTCGAGGCGATCTGGCGCAGCCCG
+TCGAGATAGGCGCTGGAGGACTGGCCGTTGAAGCCGCGCAGCATGATCCATTCGAAGCCCTTGGGGTCCG
+GGCCGTAGGTTTCGATGTTGACGCCCGGCACATAGCGCAGCGCCTCGGTGACCGAGCGGGCGCCCTGCGC
+CTCCAGCTGGCGCGGGCCGATCACGCTGACCGACTGCGGCACTTCCAGAACGGGCGTGCCGCTCTTGCTG
+GCCGTGCCGCTGGCGCCCGCGACGAAGCTCGTGGCCCCGTTGCCGTCGCCCGCCACCCGGATCCGCTCGA
+GCATCACGCCGGCCGAGCCGTCCGCCGCGCCCGCGGGGATGCGCTGGAAGACGTGGATCGTGCCCGCATT
+GGCGAAGCGCCACGAGAGGCCGGTGCCCGCAAGCAGCGTCTCCATCGCCGCCTCGACGCTCATCGCGCCC
+TGCACCGGATTGCCCCGCACCGCCACAGCGCCCTCGTCGGGCATCACGATCGAGAGCCCGGCCACGCGGC
+CGATGTCATTGACCGCCCGCGTCACGGGTTTCGCCGGAATGTCGAACCGGTGCGGCACGCCTTGCGCCAG
+CACGGGGAGCGCCGCTCCGCAGAGAAGCGCGGTCGTCAGCAGCCGGGCCATACGGCCGGTCCGCCAGGGG
+AGAAGAGACTGCCCTCGCATGGAATATCCTTTGTCCTTCGTCACGGTGAGCACGGATGGCGAAGGTTCGG
+GCTTTCCATGCACTCATCAGGTTCACGTCCCGGGGCGGGGATCACTGAACCGACGGGCGCATCTTTTTCT
+CGGATGGCCCCTAGGGGCGCAGGATCCGGACGGATCCGGGCAGGCGGGTGATGGTCAGCCCCACCGTGTC
+GCGCAACGACTCGAGCGCCGCCTCGGGATGATCGAGATCGAGGCTGCCGGACACCCGCCTGTCTCCGAGG
+TCGCGCGAGGCAATGAGGATGTGCCCCGGCAGATAGCGCTCCAGCGTGGCGACCAGATCGCCGAGCCGCA
+TCCGGTAGAAGGCGAACCTGCCGTCCTGCCAGCCCGATGCTTCGGCCAGGTCCACGGCTTCCACGGAAGG
+CCGACCCGGGCCGTCGACGCTGAACTGCTCGCCCGGGACCAGCGGCTGCTCGACCGGCAGACCGGGATAG
+CGGACGCTCACGCGGCCTTGCCTGAGGACGATCTGGCCGCCGTCCTCCAGCAGCCGGACGTCGAAGACGG
+TGCCATGCACGGTGACCTCGCCCTTGCCGAAGCGCACACGGAACGGTCGCGGCGATCTGGTGACCTCGAA
+CGAGGCCGCTCCGCGCAGCAGCCGCAGAAGGCGGTCGGGACCGTCCATGTCGACGCGGATCGCGCTGTCC
+GCGTCGAGGAGCACCCGGCTGCCGTCGGGCAACGAGACGCTGCGGCGCTCGCCCCGGGCGCTCGCGTAAT
+CCGCTCCGAGATCCTGCAGGAGATGGGGCTGGCGCAGCCAGAGGCCGCCAAGGCCGATCGCCAGGGCCAG
+CACCGCCACAGTTCCGCCGCGCAGAACGCGCCGCCGCCGGGCGCCCCGGTCCATCGCCGCCAGATAGACC
+GAGAGCGCCCCGGCCTCGGCTTCGGCAAGCCGCTCGCCGGGCGCGCGCGTCTCGCCCCAGAGCGCTTCGA
+CCTCGGCCCAGGCGGCGACATGCGCGGGATCCTCCTCGAGCCAGACCTGCAGTTCGCGCTTCGACAGCGC
+GCGGCCGCGCAGGCGGACAAAGAGGTCACGGGCTTTCGCGCGCTGCGGCTCGGTCGGGTGGCGATCCCCA
+GTCAAGCCCCGACCTCTGCGGCGGCGGCGCAGGCGGCGACGGCCTTGGCCATGTGCTTGGCCACCGCGCG
+CTCCGACATGCCGAAAGCTCCGGCGATTTCGGAAAAGCTCCGGCCATGGACGCGGTTGAGCAGGAAGATG
+TGCCGGGTCTTCTCCGGCAGGGCGAGCAGAGCCAGATCGATCCGCTGCAGCGCGTCGCGGGCGCCCATCG
+CGTCTTCCGCCGAGGGCGCATGCAGACCCTCGTCGCGTCGGGCGGCCTCGGCCAGCAGCCGCGCCCGGGC
+CTGCTCCGCGCGCAGGTGATCGACGGCCGCGTTGCGCGCGCAGCGACTGAGATAGGCCGCAGGCTCCCCG
+TTCAGCCGCGTGGCACGCTCCCACAGACGCAGGAAGATGTCATGGACGATGTCACGCGCGAGGCTCGCGC
+AGCCGATCCGGCGGGCGATCTGCCGCTCCATCCGCTCGCGTTCCGAGACGTAGAGCTGAAGGAGGTGTTC
+GGACTGCACTGTGCGGGCCTGACTGTGAAGAGACGCGGCACCTTAAGGCCGCATGGAACTCCCGACAATA
+TCGCTCGGCCATTCTGTCGTGGGCGTCCCGCGTTGCTTCTGCCGCCTGTCGGCAGATCCACTGGTCGGTC
+AGAACGCTCTGTGTCCCAACGATGGTGGTTAACGCTTCGGTGCTAACGACCACGCCATATGGGTCTGGAG
+CCTAAGACGCTCCACAATAAGCGGCGTCTCCGCCACAGCGCGGACGCTCGTTCAGACAGGACTTCGCATA
+GAACCCGAAAGACCACGGTGCCGATCTCAGGGGTGGCCATTCCTGCCTGGGGATGGACAGCGCTTAACCC
+CTCCTGTGCTCTGCGCCTGCCGCCACCTCGACGGTCACATGCTCCATCCCGGTCGTCTCGCGCACGCGGC
+CTTTCACGGCGCGGCGCACGTCGTCCGCCACCGCGCCCGGCGCGAGCTCGATCTCCAGCGTGGCCATGGG
+CCGCTCCTGAGTGATCGACCAGGCGTGGACGTGATAGGCGCGGGCCACTCCGGGCAGCGTGGCTTCGAGG
+TCGGTCGCGACGGCGCGGGCGTCGAAGCCCGCCGGCGCGCCTTCGAGCAGGATATGGCCGCTCTCGCGCA
+CCACGGACCACGCCGAGCGCAGGATGAGGAGAGCAACCAGCACGGACAGGATCGGGTCGATGGGGGTCCA
+GCCTGTCCAGATGATGATGAGCGAGGCCGCAATCGCCGCAACCGAGCCGAGCAGATCTCCCATGACGTGC
+AGGGCGGCGGCACGGACGTTGAGGTTGTCGCCCTCTGCGCGGCTGAGCACCCAGAAAGCCAGAACGTTCA
+CCACGAGTCCCCCCACGGCGACCCAGAGCATCAGCCCGCCCAGCACCCCGTGCGGGTCGCGCAGGCGCTG
+GATGGCCTCGAAGACGATCCACCCCGCGATGGCGAACAGCGTGACCCCGTTCACGAAGGCGGCCAGCACC
+GAGAAGCGGTCGAAGCCGTAGGTCCGCTTCCAATCCGCCGGTCGCCGCGCCAGCCGGAAGGCGAACCAAG
+CCAGCAGAAGCGAGGCGAAGTCGGTCAGCATGTGGCCCGCATCGGCCAGAAGCGCGAGCGATCCGGAGAT
+GAGCCCGCCGATGACCTCGGCCCCCATGAAGCCGCCCGTCAGGGCTGCGGCGATGAGGATGGCGCGTTCC
+TTGGAGCGGCGCGCCTCGGGCGTGTCATTGGCCGAGAGGGTCGGACCGTGCGAATGCCCCGCATGTCCAT
+GTCGATGTGCGTGCCCATGCCCGTGTGCATGATCGTGCCCGTGACTGTGATCGTGTCCCATCACCGCACC
+TCCGCCCGAAGGCCCTTGTCAGCCGGGCGCGTGACGTGCGCGTTTATCCCGTGGTGGAGTGTGGGGGCAT
+CGAAGCCCGGCAGGTCAGGGCTGCGGAGGTGGTGGTCGGTCATGGCAGTGCTCTTGATTCGTCTCGTCCC
+CATGGTAGATACGATCTACAGCCACTGTAGCTTCAAGGGGTGATCGCGATGCAGGGCCATTCCATCGGTG
+CGCTGTCCAAGCGCACGGGCGTAAATGTGACGACGATCCGCTACTATGAGGGGCGTGGTCTTTTGCCCGA
+TCCCGGCCGCACGGGCGGGGGGCAGCGCCGCTACGGCGATGCCGAGCTGGACCGGTTGTCCTTTATCGCC
+CATGCCCGGCAGCTTGGATTCGACCTCGACGCCATTGCCGAACTGATCGCGTTGCAGGAGACACCCCATG
+CTGCCCATGGCGACGCGCACCGCATCGCGAAGGAACGGATTATCGAAATCCGGGATCGGATCGCGCGGTT
+GCGGCGGCTGGAGGCTGAACTAGTGCGCGTCGTGAAGACCTGCGACGGTCAGTCCGATGGGCAACCCTGC
+CGGGTGCTGCATGCCCTGGCCGACCATCAGGCGTGCGAAGGCGAGCACTGAGACCTGCTTGGGGTCACAA
+AGAGGTTCTGAACGTGAACACGTCGCGTGTCAGGGTGAACGCCCGGCCGGAGCATGCGCCAAGCGGCCAT
+TGTGGACGACACTCGGTAGCTCTTATCGCTCTTCCCTATCGTAAACGGTTCCGCTCGAGCAGATAGCGGC
+CTGGAGGCTTGCCGACCATCTTTCGAAACATGGTCACGAAACTGCTGGCGCTTTCATAGCCGAGATCGAT
+GGCGATGGCCTGAACCGACTGACCAGCGCTCAGGCGCCGCAAGGCAAGCACGATATGCAACTGTCGGCGC
+CAGCGGCCGAAACTCATGCCCACCTCGTCGGCCAAAAGACGGCTCAGGCTGCGCTCGCTGAGCGCGACGC
+GGGAGGCCCACTCCGCGACGCTCGCGTGATCCGCGGGCGCCGCGATCAACAGGTCGGTGAGCTTCTTCAG
+GCGCGGATCGCCGGGGATGGGCAGGCAGAGATCCTCGACCGGTGCCACAGCCAGCTCATCGAAGAGAACG
+GACACGATCCGCCCATCCGGGCCGTCGACGTCATAGAGGTCCGGCAGAGCGTTTGCCCGCATCAGCAACT
+CGCGGAAAAACCGCGACACCGCGATCGTGCAGCAATCTTTCGGCAGGTTCGCGGAGTCGGGAGGATCAAT
+GAAAAGAGAGAGACACTCCACCTCGCCCGAGCCGAAAACGGAATGGGGCAGCCCGCTGGGAATCCACACG
+GCGCATTGCGGCGGTACGATCCAGACTGCGCCGTCGACCTCGCAATTGACGACGCCCCGCACCGTGAAAA
+GCAGTTGCGCCTTTTGGTGATGGTGCCGGGGCGATTGCTCCAGGGCGTCAAGGGTGGCGACCGCGTTGGC
+GGCCACCAACGCACGCGGGATCTCGTCGACATAGGCGAGCCAGTCGCGACGGACGTCCAGATACATCTCA
+GACCTCGGCATTTTCAGATCAGGCCGGATTGAAACATATCGTGGCAGGGTTGCGCAATGACGCCACGTGC
+CGGCTGGCGTATCTGGTGATCGCGCTCCGTTACTGGAGGGGCAGAGCTGACCTGCCAGACACATAGGCAC
+AGGAGTTTCCACGTGATCGACAATGCCCCGGTTAAGCTCGCGCTCGCATGGCTCATCCCGGCAGTTGGTG
+CCGCACTCTTTGTCACGATCCAGTGCTTTTCCTATCTGAACGTCTATGTCGGCAGCGGCGGGACGATGCA
+GGCCATGACGTTCGATCCCGCCTCCTTGTGGGGCGTGTCCATTTTCTATGGCGCCTGGGTCCTCCCGCCC
+TTGCTGGCGCTGGCCGCAAGGCGCGCGACCGACTGGGCGATGCTCGTCTTCGGCGGTCTGCTGTTCATCA
+TGAGCACGCTCGCTGGCGTCTTCGATGGCTTGCGCGATGGCGGCCATCTTGTGGGTCTGGAACTGCTGGC
+TGTCACGCTGCCGGGTGTGGTCGCGCTTCTCTTTACATGGCGGCACATTCGTTCGACCTGAAACCGTCCA
+TTCTCGCCGGGAGACGACACATGCCCTTGGATATCACGAATTTTCCGCTTGTCTGGATGAGCTATGACGA
+AGCGCCCGATCACAACCACGACGAGGATTTCGCGGCACTCGAGGCGTGCTTCAAACGCGGCGCACCGTTT
+GTGATCCTGAGCGATAATGCTCCGACCGAAGACGAACAGCACGACCATAGCCAGGAAGAAAGGAAGCGCA
+CTGCGCTGTGGATGAAGAAGCACAAGGCCGAATTGCGGACGCTGGTGCGGGCGATGATCGTGATTGAGCC
+GAGCGCCGGCAAGCGTCTGGCCTTCAAGACTTTCGGCGCGGTCTTTTCCAAATTCTGGGGTTTTCCGTTG
+CGGATTGCAGTGACTCGCAAAGAGGCGATGGACGTCGCCGAGAACCTGCTATCAGAGGGCGCGGGGTCTA
+CAACATTCTGAAGAACAGCTGCGTGGACCGCGCGACGATGGTTTTCTGAAGATTGCAAGTTTCGCTCGAG
+CTTTGGTCGATCGGGCTATGGCGCAGTGGCCCGCCCCCATGGGGTGGTACGGTTTTAAGTGCATGACAGG
+TCTCGGCGCCACGGTTGAGGTGGCCGGCGTAGAGGGTGCGGTTGGCGAAGCCGGCCACTGCACGGCCAGT
+GGCGACGGGGGACGGTGGCCCAGCGATGAATGCGGGCGCCTCGTGTTGTAATGCTGGCGCCAGGTCTTGA
+TCACGATCCGGGCTTCGGCCAGGCTGTAGAAGATCCGTCCGTTCAACGTCGCGGCCGTGGCCACCGCCCG
+CAAGATCGCGGCCCTGATCTGGCAGTTGCTGACGAAGGAGCCCCCGTATCGCTGGGCGCGTCCCGCCTTC
+GTGGCCGTGAAGATGCGCAAGCTGGAGTTGCGTGCCGTCGCCGCCAGGGCTCACGCGCCAGCGGGTCCCA
+GCCGCGACTACTGGATCAAGGAGATCCAGCATCGGGAAATCGAACTGGTCGCACAGGCCGAACTTGCTTA
+CGCGCAGATGGTCGGGGCATGGAAGGACAAGCCGCCTAAGCCGCAGGGAGGATGAGAAAGGGGCTGTTCA
+ACAACGTCCGTGTCGATGGCTACACGCCCATCCTCGAGGAAGAGGCCGAAGGCATCCCAGCGGTTCAGGA
+CGTAGCGGAACGCCTTCGCCAGATCGCTCTTGCCCGAGATATAGTCGAGGTTCTCCTCGGCCCAGACCTT
+GAATGCCTTGACCTTCGGGCGGCTGTGCGCCTGCCGGACAGCGTGGCGCTCGTCGGCACTGCGGCCGTTG
+ATCTGCGCTTCGATGTCGTAGAGCGCTCCGATCCGGTCCACCGCCTCACGGGCGATGTCCGAGCCGGTCT
+CTTTCTCGACCTCGAAGAAGGCCCTTCGCAGATGCGCCCAACAGGCTGCTTCCTAGAATGGGCCGCGCCG
+TTCCCCTCCGCAAGATAAAGATCCCTGAGGCCGGCGTTAGCATCGGCCTGCAGGATCCCATTGCCGGCCC
+CGAGGTGCTTTTGCGGGTGCTGGCCCTTGCGATCGGGCGAGAAGTGATAGGCCACGGCCGGTGGCGTGGC
+TCTCGACCAGGGCCGTTGGTCGCGGACATAGGCCCAGATCCGCCCCTCCTTCACGCCCTTGCCAAGCTCG
+CCCTTCATCGCTCTCTCTTTTTGCAACTGACACCCCCATGACGGGCGAGGGAAGGCGGATGTGACATCGA
+GGAGCGAGCATCCCCATGCGCAAACGGCTTGACCGGAACGGCCCCGTCACCGAAGTCCTGACCCTAATGC
+GGCGCCGGAAAGCGGACCCAGCCGGTGAAGGAATAGCGGTCGAGCTCGGGATAACCCGCCCAGACATCGC
+GGCCCAACGTGTCGGCGATGACCCGTGCATTGCGGAAGGCGCCAAAGCAGGACATGAGCTTGATCGGCCC
+CTCACGCTCGCGCCAGCCCTCGTCCACGAGATACCGGGCAAAGTTGCGGCCCGAGATCGGGCGTACGAAA
+TCGGGGGCTCCGTCGCCACTCACATCGACGCTGGCGAAGATGGTGTTGCCCGCGCCATGCCCGGCGATGG
+TGTCCACCGATTCCTCGCGCCCCGGCGCCATCAGCGGGCGGCCCTCGCCTTCGCCCTCGCCGAAATCCAG
+CCGCATCGCGTATTTGTACCCGCCCGGGCGCCTCTGGAATCCGTTGGCGCTGGTTTCGGCCTCGGGCTGC
+GGCGCCATCACCAGAAGGCGCTCGTTCTCGCCCACCGCGCCGCGCGTGTCGACCGCCGGGGTGATCAGGT
+GCAGTTCGTCCTCGCCGATGGGCACCGGAATGATCTTGGCGTTTATCTTGCCCAGATAGGCGCCCGACAT
+CAGGATCCCGCCACCCGCGCCGGCGCCAAAGCCCACCGCCATGCTGACGATGTTCCCGGTCGAGAAGAAC
+GGCTGCTGATAGGCGACCGAGGTGACCCCGGCCGAGGCGGCGGCCCCGGTCAGCCCGCCGATGGCGCCCG
+AGGTGATGAGGCCGACGCGGGTGATCGCCGCCTGCGACCAGCCCGCGTTCAGCGCCCCGCGCATCGCGAC
+CCGGCCCGCCGCGCCGCCCAGGCCCGCGCCGACCGCGCCCCCCACCGCGCCGCTCAGCAGGTCGATGCCG
+ACCCGCGCGCCGGTGATCTTCTGGCCCGAGATCGCGGCACTGGTCAGATCCCCCGCGACCGAGCCCACGG
+CACCCGCCAGCGCGCCCGCGCCGATGCTGGCGGCCACGCATTCGGTGCCAAAGACCGCCGCCGCGGCTGC
+GCCCGCGACCCCGCCGGTCAGCACGGTTGCGCCGATGCCGACGATGGCCCCGGCGATCAGCCCCACGATC
+TCTTCCCAGCTCTGGCCCAGCGGGTCGGAGTTCGCGATCGGGTTGCCCATGGCATAGGCGTACCGGTTCA
+TGGTGATGCGCGGATCGAGCGACAAGAAGCGCATGGTTTCCGGGTTGTACCAGCGCGCCCTGAGATAGGT
+CAGGTTGCTGACCGGGTCGGTGAACTGCGAATTCCAGTTGAAGCTGTTGGCGCGGTCGAGCGCGGATTGC
+GGTGTGACCGTGCCATAGGCCGAGATGGCCAGAGCGTTGCTGCTGGCCGAGGTGCGGTGCACATAGACCG
+ATTTCGACGCCGCCGCATAGGCGGTGACCGATCCGGCGCTGACCCGCGCGACGGGCATCTGTCCCGCCCA
+CATGAGCCCGTGCCATTCCGGCGTGCCCGACTGGGCATTCGCCGCCACGCTCACCATGGTCCCGGCCAGC
+GGATAGAACCTGTCCTCGGTGCTGCCGTCGATCACCGAGGCCAGCGCGCCCTGCGGACCATAGCTGTTGG
+ACATCGAGGGCCCCGAGGCCATGCCGACATTGGTCAGCCGGTCGAGCGGGTCGAAGCCATAGGTCGACCC
+GTCCACGTCCCTGACCATGCGGCCATTGGCGTCATAGGCGGCAGCGCCCGAGGTGATCTGGTTCAGAGCG
+TTGTAGGCAAAGCTCTCCTGCTGGCCGTTCCGGGTGCGGGTCAGCACATTGGCGGCGCCATCGTAGGCAT
+AGCTTACCTGGGTCGGCGACCCGCCGCCGGACGGGGCCAGCGTGATCCCCACCAGCTGCTTCAGGCCGTC
+ATAGCTCATCGTCTTCGCGACGTTCACCGAAGGATCGGTGTTCACAGCCGAGGCGAGCGTCAGCGACACC
+AGGTTCCGCCAGCCGTCGCGGGTGGCGGCGGCGCTCAGGACGCCGATGCCCGCGCCGTCGGTGACCGCGA
+CGCTGTCGTTTGCCCCGAATCCGTCATAGCCGAACTGCGTGGTCTGCGCCGTCGCGCCGCCCAGCACCTG
+TTTCAACAACACGCCGTTGGCGTGGTTGGCCGTGCCCCAGGTGTTGCTCAGTGTGACCCCGCCCATGGTC
+TGCGCGATGATCTGGTTCAGGGTGTTGTACGAATAGCTTGCCGCGGTGCCATCGGGCAGGGTCATCGACA
+CCACCCGGCTGGTGGCGTCCTTGGTCAGCGACAGCGTCTTGCCATCGGGATAGGTCACGGACGAGGCCGT
+GCCGTCCAGAGAGTAGGCATAGCGCAAGGTGCCGCTCGGATCGGTGATATGGTCGATCCTGCCATTCGAA
+AGATAGGCGAAGGTGCGCGTCTGCCCGTTTGTGGTCTCGCTCAGCACCTGGCCTGCGGCGTCGTAGGCAT
+AGGTCGTCTGGGTGCCGTCATAGCGGGTGCGGCTTTGCAGGGCGCTGTCGGTCGTGTAGCTCAGCCGTTC
+GATCTGCCCGGCCTGGTTCCGGATCTCGATCAGGTTGCCGACCGGATCATAGGTCAGCGTCTCGCTGACA
+ACGAGGGGCTGCGCCGCGCCGTTATAGCTGACGTTGCGGGTGACAAGGATCGGATTGCCGTTCAGGTCGC
+GCTGCGTGGTGGTGCAGCGCGTCGCCTGCAACGCGGCGGTCGCGGGGGTGCCGGTGAAATCCACAACTTC
+GGAATTGCCGTCCGGCGTATAGGCGAAGGTCTTGACCGAATTCTGCACAACGTTGCCGCCGGTGATGCTG
+AAATGCGTTTCGGTCACCACTTGGCCAAAGCCGTCATAGGCCGAGGTCACGCGCTGCACCTGGCCCGCCT
+GGGGTGAGCCGCTGTCGGCATGGGTGTCGGTTTGGATCGTGTTGCCCAGCCCGTCACGGGTGATGACCGT
+GCGAAGATCGCCGTTCATCGAGGTGCTGACCGTTCGGGCCGCGTCATCGAAGATGGTCGTGCTCTGATTG
+CCCAGGGCATCGGCCAGGGCGATCTGACGTCCCAGCGCGTCATAGCTGATCGTCAGGGTCTGTTCGGTGG
+CGTCGGTCTCGCTCGCCTTCAGATCCAGCGCATTGAAACTCACGCGGCGCAGGGTACGCGACAGGCTGGG
+CGTCGATTGGGTTGGATCGCCATTGTCCATCATCAGGACGGCGCGCCCCTTTGCATCGTAGGTCGTGCAG
+AGGACATAGCCGTTGGACTGGGTCACGGTGCTGGTGTTGGTGCCGCCGCCACCGTTTCCGGCCAGAGTGT
+AGGCATGGGTCGTGACATCGCCCAGCGGGTCGGTTTCCTGCATCAGGCGCGCCAGCGGGTCGTAGGCATA
+GCTGCGCCGCGCGCCGCCGGGTTTGGTCTGGCTCAGGCAGGGTCCGCCCGGCAGGCGCATGTCGAAGACC
+GCGACCCGGGTGTGGCCGTTGGCGTCAGTCGTGTCGACGGTCAGCTGATGCGACGCGGCATCGTAGCTGT
+AGGAGGTCTGTTCGCCGACCGAAGCGACCGACCCCTCGGGACCGCTGTAGCCCTGGGCCCAGGTCAGGGT
+CCAGCCGGTCTGGCAGCCCCGGGGATCGAACTGGAAGGTCTTGGTCTTGTAGGGGGCGAAACTGCCCGCG
+CCCGCCGCCTGGGTAGAGACGGTGGTGGCGGCGATGGATTTCTGGTCGGCCGTCAGCCCATAGTCGATCC
+GCGTCGTCTGGCCGGTGACCGCATCGACGTAGTCGGTTCGCTGCGGCATCTCGCCTCCCCACGCGACCTG
+GAGAAAGCTGTGCGTCCGCTGGCCGGTCAGCCGGGGTCTGCCGCTGCTCAGGTCGTACTGGCTGCTCGAC
+GTGATCTTTCCATAAAGATCATAGGCGACATCTGCCTGCGAATTGTCGGACCACGTGCCGCCCGCCGCGT
+CATAGACGCTGTGCACCGTCGTCACCGGTTTGTTCATGTTCACGCTTCGCGCATGGGCGTCGGTGACGAT
+GTCGTAGGTATAGGAGGTGCGGTGCGCCTCTTGCGCATGGCCGTTTGCGTCCACCAGATAGGCATGCTCC
+GTCAGCGGGCAGTGCAGGTAGTTGAAGAACACCCGGTTGGCGGCAATGAGTGCGCCGCCCGCGTCGCGGC
+GCTGTTCCAGCACGTCGTACTGGTAGGCGGTGTTGTTGCTGTCCATGAGCCCGTCCGAGGCCGTTCCCAT
+CCGGTACCCCGCGGTTGCCCCGGTATAGGTATTGCCGCCCGATGCGGTGCCATAGCTGTAGTCGCTCCGG
+TCCAGGAACGCGCCGCCCGGTCCGGTCCGGGTCATCGACTGCACGGCCGGGCGGGTGCCGGAATTCCCTC
+CGGCGTCGATGTAGCGGAGGCCGGTGTAGGCCAGCGTCGTTGTCATCCCGGTGGGATAGGTGATCGCGCC
+GACGACCGTCGTGCCCGAGGCCGAGGCATAGCTGAAGGCGGTGACCGCGCCGATCTGGTTGGTGACATGC
+TGTACACCCTGGCTCGAAAACGCCACGGTCACGCTCGATCCGTCGGGCAGGGTCAGCACGATCGTGCCGC
+CGGAATAGCCGAACGTGACAACCTGGCCGAAACTGTCGGTGATGCTGGCTAGGCTGTTCTGGAACACGTC
+GCCCAGCGGGTTGGTATAGGCATAGCGCAGCATGTTGCCGTAAAGGTCGGCATGCGCGATCAGCTTGCCC
+GTGGCGTCGAAATAGCTGATCGATCCGTCGTCATAGCGCAGCATGAACCCGTATGTCCCGCCGCCGCCCG
+GAACGGGCTGCGGCGGGACGACGGTCTGGAACAGGCGCCCATGGTCGTTCAGATAACGCAGGCCGGATTG
+ATAGCCCGAACTGTCGGTCCAGCTGGGGTCAATGACAAAGGTCTTGCCCTCGACCGTCAGCGATTGCCCG
+GCGGCGACGAAGGGCAGCCCCCAGCCCCAGCCCTGCGGCAGGCCCAGCTGGCCCGACGCCCCCGCGGAAT
+AGCCCAGCGTCAGCGACAGGCCGATGGCGTCGGTGATCCCGCGCAACTGCACCAGCGGCAGCGACACCAC
+CAGCGACCCGGTATTCCTGTTGATGTATTCGTTGCTTTGCAGCGACTGGTTATAGGCCTGCGAGCCCTGA
+TATTGCGACGACGTCATGACATGCTCCCTGGGTCCGGTTTCACGCCTTGGGGCGCCCGGCTATGGAAAAC
+GGGGCCGCGGCCTACGGACAGGCCGCAGCGATTGTCAGAATGTCGGTGGGATGCGCGCGATCAGTTGTGC
+GCGCCGGGCTCGAAAATCATGTAGAGGGGGCCCTGGCTGCCGGAATCCCATGTCAACTTGGTCGAGTTGC
+ACAGGTGCCCGGTCGAGCAGATGTAGGTGTCGGGCGAGGCGTTGTCGATTTCGATATGGTTCGAGCTGAA
+GATCGGATGCGACATGTGCGCCTGCACCGAGCCGGAATAGCCGCCCGCCGAGGCCGAATAGCTCAGGATC
+CAGGTCGAGGTATCGGTGGCGCAGGTATCGCCGCCCGACGACGAGCCTTTTTCCTCGACATAGCCCACGG
+AAACGCAGGAAACGCCTGCCTGGCTGGCCACGACCGAAGCATCGTGGCCGATATCGTTCATGCAATGATC
+CGCGCTGCCACCGGCGGTGAAGCTGAAGGTAATGGGTTGCGCGGGCGTGACCGCGAGATAGACGCAGGCG
+TTCATATTCGCGCCGGCCCCCGCAAGGGCGGCGGTCCCGGTCATGACCATCAATGCGCAACCGGCGGCAA
+GAAATAGCACTCTCATGGGACTCTCCACTTACTGGACGCCGGCCCGAAATCAGTCCGGCGATACAACCAC
+GAGTTGCATTCCGCTTCGATTCGCACAACAATTATTCGTGAAGTGCGGCGGCTCTGTTGCACAATTCGGG
+TAAAAGGCGTGCTTCCCCTTTCCCCGGACGGACCTATCCTTTGGCCTCTGTTATGGGCGTGCCGAGTGCG
+GTGAAGCCGTTGAGGACGGCAACCCTGACCTGGAATTCGGCGACCTGACGGTCGAACTCGCGCGCGGAGA
+GGCGCTGGCTCAAGAGCTTGGCGCGGTGCATCTTGGTCTCAGCGCAGCTTCTGCGGTGATACCCGCTCCA
+TCGTCGCCAGATGGTCCTGCCGAGCCGATTCGAGGTCCGCAGGATCTCGTTGCGGGCCATGGCCCCAGCG
+GTGTCGGGCTTCCATGGTTCGGCGTTCTTGCGCGGTGGGATGACGCAATCGGCACCGCCGAGATCGTCCG
+CGCCACCTGACGTCAGGGGAACAGGCAGTCACGCCTCTAGGTGACTTTCTGCAACCACGCGGTTGTCGCT
+GGGCGTGAGATTGCCCTAAATTGGCTTTGAAGTGCAGTAACTCGTAGAATCTCCAACTTGGGGGAGATGG
+ATTGTTATACTACAGGATGCACATGAAGATGGCGGAGATGTTTTCTTCGCTCAAAATTTACGGCACATTC
+AGGCCTGAGGATGGGGTTTATGTAATTCTCATTCCTGGCACAATTGGAATCGCAGTTATCGGGATAATCA
+GCTCATTCATTTTTGTGCCAAGAGGGCTGCAATTTCTGTTACTTCCGCCATTCCCCGCAGGCGCTGCCAT
+TTACCTGTTTATGTGCCACAGGAAAGCGAACCGGAAGTGAAATCATGGCAACCAGTTCTGTGACCGGTTG
+GTTGGCGTTCAGGCCGATCGACAAATTTTAACGTTCAACCCTCGAAATAGAGCCGCCTCATCTCAAGTCC
+GGTCGGATCCATACGTTGATGAACCCCGTATCCAGCGCAACGAATGGTTCGAGTTCAATTTCAATGCGCG
+AAGCCTCCCAGCAACCAAGATAATGGAATATAAGCTTGTTCTGACGGTGCAGCGCCGTCGAAACTTCCGA
+TCCATTGATTAATACGATCGCGACATTATTCTCCGGCACGTTCGTTTTGTCACTTACGTCGACGCCGTAC
+TCCTTGAGCGAACGATCGACGCGGGTGTACTGGCCCACGACGCAGATCGTGCCGGTTTCGGACAGACGAA
+CTCTGGTTGCCCCCGCCTCCGCCTCCGTCGCCAGCCAGTCGAGGAGAGCCGCGGCCGAAGTCATTTTGGG
+CGCGGTGACCTGCGCGTGCGCAGCCAGCGGGAATATGCCGCCCGCTACAACGGCGGCACAACAGCACTTT
+ATCAAATGGCGCAACCGAGACCTTTCCCCACATGCCATCACATCATCTTCCGCCGTGAGAGCTCGGCTCA
+ACCACCTGGCCAGCCATCGTGGCATATAGTTCATTGGGATCCTCGCACGAAAATGCCGCCGACCACGCCG
+AAGTCAAGGCGCTTGACGAGCTTGTGGGTTTGGCCGGATCGTTACCCGAGGTCGCATGGAGAATGATCTC
+GCGGGCACCTCTTCTGACCGCTCCTGCCAGCATGTCGTAACGGCGGGCGAGGTGTGCCATCTTCTCGGCC
+CGCGCCTCGCTCTCCTCCTGCCGGTCGATCCGCACCATCTCGTTGATGGAACGCTGGACGTCGGCTTCGA
+GGTGCGCAAGCCGGCTGGCGATCTTGCCCTTGGTGAAGTTGCAGTCGCGGTTGTTGAACGCCTTGAACTT
+GCTCCCGTCGATGGCAACGCAGTCGCCCTTCAGCACGCCGATCCGGCAGCAGAGCTCGATGAATTGCGCG
+CAGGTCTTGCGGATGGCAACGGCGTTGTCGCGCCGGAAGTCGGCGATGGTCTTGTGGTCGGGCACATCAC
+TTCGACGTTCCAGCCAGCCTCCCGCTCCAGGCGGCGGCTCGACGGGATACGGTTGAGGTATCAATATATG
+AACAGCTTGAGCAAAACTGCCGGGTGATACCCCGGCCGACCGGTGCGTGCCGTAGCCGATCGGACGAAGC
+CGAGCGAAGGAAGTTCCAACTCCCCGACGAAAAGATCGACGACACGGGCGAGGGCGTCCTCGCTGATCCA
+ATCCTCAAGCCGGTCCGGGAACAGCAACGTCTGGCTGCGCTCGACCCCCTCGATGAATCCCGCCATCCCG
+AACCCCTGTCGACCTCGGAAAGTCTACCACACACAGGAGTTTCCACACAGCCTCGGCCGGCCTTGCCTAG
+CGTCCTGCTTGCCGGCCCCCACATCGCGCCGGTGTATCGACCCAGCGGAATCTGCACAGGTCAATCCGCT
+AAGGCGAATGATTAAGCGGGAGTGTTCATGTCCAGCGCCAGATGCGGGCGGCGATAAGGATTTGGGATCC
+GCATCAAATGTCCTCCAGCACCATTGAGGTATCCGCGCCCGCGCCGCCTCCCAACCGACAATTAATTGGC
+GCGTTGATCTGCCTCGGCGGCGCCAATGGTTCTCAGCGTTTCACCCAGCTCAGGAGCTGAAAAGTAGTAT
+TCGGATGAAAGGCGGAATGCCGTGACCCAAGGCTGCGGCTTATGATATATGAAATCGAACCTGATATTCT
+CATCGGGTGCGCTTAACTTAGAAAGCGAAATGTCCGCTGGAATTACAAAGCATGTTTGATATGCGTAAAC
+GTGGAATTCGTATCCCACATGGCAGGCCTGCGCTCTTGGTCCAGAAAAGTTAAGGTGTGCCTCTGCAACG
+CGTTCCGAGAAATAGCCGGAGTGCGAAAAAACTCTTTGATCCGCTTTTCGCGCAAGAAAATGATCCAGCG
+CCACCAAGAATGGGGAGGCAATCAGCATCGTGATTGCGATTTGTTTTGTGGTCGGCGCTGAAAGATTAAT
+CATTCATGCGACCGCAAAGATAACATGTTAATCGGGGGTGTGTTCTCCTAAGGTGACAAAACTGTTGTTT
+GGGCCTCAAGGATTCCTTGCGGAGCAGGTGCAGCGGATCGGCGAAGCCTTCGATCCGCGCCTCACGGATG
+CGACATAACCGGCTCGGCGAGAAGGGCGAGGCGCCCGCGGCGCCGGGACGAGAGGGTATCATGGCTCCGG
+TCACCTCCGCTTGCGGACGGAACTGGAGCCGTGGACCGGCAACGCCGGGGTCACGCCCAGATCCCTCGAG
+GCCAATGCCGCGCGGGTTCTCTCCGGGCAATCCGGCGAGGTAAGCCGCGACCTGCGACCGCGATATATCG
+GCGAGCCTGCGATCGAGCTTTGCCAGTTCATCCGTGAGGCGGGCGCGCAGCCGCTCGCAAGGATGGAACG
+TCGGCTCGGGGCTGATGATGCAGGGCAGCAGGTCGCGCATTGCCTCGACCGTGAGCCCGGCATCGGCCAG
+TTGTCGGATCATGCAAGCCTGCTCCAGATCAGCGGGGCTACCCGCGAGCTTCTCGGCTGGCACCTGTCGC
+GCTCGGGCAAGGCCTCCACGGCCGCGAGCCCGCTGGAACATGCGCTGATCAACCGGTTCGGCACACTCGG
+CCGTCCTCGGCACGACAGGGCACGACCGGACAGCTCAGCGCATAGTCGTCCTTGGAGGGCGGCTGCGTGG
+CGGTCATGAGACCCTGCATTCCGGTGCCCGCCGTCACCATGTCGGTCGCGGTGCCGCCGGTCACGCAACC
+GGAGAGCGTCAGCGCCGCCGCCAGAGCGGTTACGGTCTTAGCGATCTTCGTCATTCCTTAACCTTACTCG
+TTGATTTTATTACATAATTATCATTATCGGCTCGACGGTTGTAAGCGCAAAGTAGAATTGTCGCATCCAA
+GCAAAGTAGAACTGTCGCCTCTTCCTGTCGGGACAATGGAGGATCGGCGGCATGGGATGGGTGCTGATGA
+GCGAGCGCGAACTGAACCGCATCGAGATCCTGTCGAAGGTGCTCGATCGGAGGATGACGACGACGGAAGC
+CTCGGTTCTGCTGGCGATCGGCCCGCGTCAGGTGCAGCGTCTGCTGCGACGGTTGCGCGAGGACGGCGCG
+GCGGCAACGCGGCACGGGTTGCGCGGGCGACCGTCGAACCACCGCCTCTCGCCGGGATTGCGGGACCTTG
+CGCTGGCCCTCGTGCGGGAGACCTACGTCGATTTCGGCCCCACGCTCGCGGCCGAGAAGCTGGCCGAGCG
+CGACGGCCTGCATGTGTCGCGGGAGACGCTGCGGAAGTGGATGGTCGAGGATGGGCTCTGGCTGTCGCGT
+CCTCAGCGCCGGAGGTTTCACCAGCCGCGGCTGCGGCGCGAGCACCTGGGCGAACTGGTTCAGATAGACG
+GGTCCGATCATCATTGGTTCGAGGATCGCGCACCAGCCTGCACGCTGCTCGTCTTCATCGACGACGCGAC
+GAGCCGGCTGATGGAGATGCGCTTCGTGCCCTCCGAGAGCACCTTCGCCTATTTCGCGGCGCTGGAGTGC
+TACCTGACGCGGCACGGCAGGCCCACGGCTTTCTACTCCGACAAGCATTCGGTCTTCCGCGTGGCGAGGC
+AGGACGCGCGGACCGGCCATGGCATGACGCAGTTCGGCCGGGCGCTGGCCGAGTTGAACATCGAGATCCT
+CTGCGCCAACTCCTCGCAGGCCAAGGGCCGGGTCGAGCGGGCGAACCGCACCTTGCAGGACCGGCTGGTC
+AAGGAGATGCGGCTTGGGCAGGGCATTCCAGCGACATGGGAGGGCCGGGAACGCCTTCCTGCCCGGCTTC
+ATCGAGCGGCACAACGCGCAGTTCGCCGGACGATCCCGGCCGTACCGAGGGCCGAGAAGCGGTTCGTCAG
+CGCGATACGGATATGGATTTCAGCGGCCCGGCGGTCCGGTCATCAACCGCTCAACGCCTTCGGCACGGCC
+GGGATCGTCCGCGGGGCGTGAAGTCGAAGGGGGAAGGGGCGAGCGTGCCTCAAGCCGCTGTTGTGCAACA
+ACGCCGGTCCGGGTCGGAGCCCGGCCGGGTGCGGAGCGGCTGCAACGGACCGTGCCATAAAGGCCACGCC
+ACGGGGCTATTCGCGGGATCTGCCGGGCGCTCTTGTCTTGCCGTCCCCCGGGGCCTACCTTCGCCGCATG
+TTGACGCTCCTTCATATGGCCGGAGTCCGGGCCTTCTGCGGTTCGCCGCTCACGCATGCTCTGCCCCGGG
+CAGAGGCGGTCAACCGCTGACGCCTCTTCCCGGGGCGCGTCGTCTTCCCAGATCCGGATCTGCCAGGCGG
+ACATCGTCCGCAAGGAGCCCTCATGCTTCCCCGTCCGAAATCCCGGCGCCCGAGGGCGCGGGGCGCGTCC
+TGCATGGGTCCGGCCCCGCGCCGGGCCGGAATGCCCGGGCCGCGCTGACCGGCTGAGGCGCGCGGCCTGA
diff --git a/ngs-sdk/language/c++/ReferenceSequence.cpp b/ngs-sdk/language/c++/ReferenceSequence.cpp
index 939f154..42403e9 100644
--- a/ngs-sdk/language/c++/ReferenceSequence.cpp
+++ b/ngs-sdk/language/c++/ReferenceSequence.cpp
@@ -36,6 +36,16 @@ namespace ngs
assert ( ref != 0 );
}
+ ReferenceSequence & ReferenceSequence :: operator = ( ReferenceSequenceRef ref )
+ throw ()
+ {
+ assert ( ref != 0 );
+ ReferenceSequenceRef new_ref = ref -> Duplicate ();
+ this -> self -> Release ();
+ this -> self = new_ref;
+ return * this;
+ }
+
ReferenceSequence & ReferenceSequence :: operator = ( const ReferenceSequence & obj )
throw ( ErrorMsg )
{
@@ -60,4 +70,4 @@ namespace ngs
this -> self = 0;
}
-} // namespace ngs
\ No newline at end of file
+} // namespace ngs
diff --git a/ngs-sdk/language/python/Makefile b/ngs-sdk/language/python/Makefile
index 33368e0..567f6db 100644
--- a/ngs-sdk/language/python/Makefile
+++ b/ngs-sdk/language/python/Makefile
@@ -51,7 +51,6 @@ ngs-bind-python: $(ILIBDIR) $(OBJDIR) $(ILIBDIR)/$(LPFX)ngs-bind-python.$(LIBX)
BIND_SRC = \
AlignmentItf \
AlignmentIteratorItf \
- ErrorMsg \
FragmentItf \
FragmentIteratorItf \
PackageItf \
diff --git a/ngs-sdk/language/python/py_AlignmentIteratorItf.cpp b/ngs-sdk/language/python/py_AlignmentIteratorItf.cpp
index 11b4e41..addb0c3 100644
--- a/ngs-sdk/language/python/py_AlignmentIteratorItf.cpp
+++ b/ngs-sdk/language/python/py_AlignmentIteratorItf.cpp
@@ -29,4 +29,28 @@
#include <ngs/itf/AlignmentItf.hpp>
-GEN_PY_ITERATOR_NEXT ( Alignment )
+PY_RES_TYPE PY_NGS_AlignmentIteratorNext ( void* pRef, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR;
+ try
+ {
+ bool res = CheckedCast< ngs::AlignmentItf* >(pRef) -> nextAlignment();
+ assert(pRet != NULL);
+ *pRet = (int)res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+ return ret;
+}
+
diff --git a/ngs-sdk/language/python/py_AlignmentItf.cpp b/ngs-sdk/language/python/py_AlignmentItf.cpp
index 91d53ca..57b5457 100644
--- a/ngs-sdk/language/python/py_AlignmentItf.cpp
+++ b/ngs-sdk/language/python/py_AlignmentItf.cpp
@@ -36,29 +36,604 @@ GEN_PY_FUNC_GET_STRING_BY_PARAMS_2_CAST ( Alignment, FragmentBases, Fragment
GEN_PY_FUNC_GET_STRING_BY_PARAMS_2_CAST ( Alignment, FragmentQualities, Fragment, uint64_t, offset, uint64_t, length )
*/
-GEN_PY_FUNC_GET_STRING ( Alignment, AlignmentId )
-GEN_PY_FUNC_GET_STRING ( Alignment, ReferenceSpec )
-GEN_PY_FUNC_GET ( Alignment, MappingQuality, int32_t )
-GEN_PY_FUNC_GET_STRING ( Alignment, ReferenceBases )
-GEN_PY_FUNC_GET_STRING ( Alignment, ReadGroup )
-GEN_PY_FUNC_GET_STRING ( Alignment, ReadId )
-GEN_PY_FUNC_GET_STRING ( Alignment, ClippedFragmentBases )
-GEN_PY_FUNC_GET_STRING ( Alignment, ClippedFragmentQualities )
-GEN_PY_FUNC_GET_STRING ( Alignment, AlignedFragmentBases )
-GEN_PY_FUNC_GET ( Alignment, AlignmentCategory, uint32_t )
-GEN_PY_FUNC_GET ( Alignment, AlignmentPosition, int64_t )
-GEN_PY_FUNC_GET ( Alignment, AlignmentLength, uint64_t )
-GEN_PY_FUNC_GET ( Alignment, IsReversedOrientation, bool )
-GEN_PY_FUNC_GET_BY_PARAMS_1 ( Alignment, SoftClip, int32_t, uint32_t, edge )
-GEN_PY_FUNC_GET ( Alignment, TemplateLength, uint64_t )
-GEN_PY_FUNC_GET_STRING_BY_PARAMS_1 ( Alignment, ShortCigar, bool, clipped )
-GEN_PY_FUNC_GET_STRING_BY_PARAMS_1 ( Alignment, LongCigar, bool, clipped )
-GEN_PY_FUNC_GET ( Alignment, RNAOrientation, char )
+PY_RES_TYPE PY_NGS_AlignmentGetAlignmentId ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getAlignmentId ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetReferenceSpec ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getReferenceSpec ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetMappingQuality ( void* pRef, int32_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ int32_t res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getMappingQuality ();
+ assert (pRet != NULL);
+ *pRet = (int32_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetReferenceBases ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getReferenceBases ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetReadGroup ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getReadGroup ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetReadId ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getReadId ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetClippedFragmentBases ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getClippedFragmentBases ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetClippedFragmentQualities ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getClippedFragmentQualities ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetAlignedFragmentBases ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getAlignedFragmentBases ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetAlignmentCategory ( void* pRef, uint32_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ uint32_t res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getAlignmentCategory ();
+ assert (pRet != NULL);
+ *pRet = (uint32_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetAlignmentPosition ( void* pRef, int64_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ int64_t res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getAlignmentPosition ();
+ assert (pRet != NULL);
+ *pRet = (int64_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetAlignmentLength ( void* pRef, uint64_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ uint64_t res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getAlignmentLength ();
+ assert (pRet != NULL);
+ *pRet = (uint64_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetIsReversedOrientation ( void* pRef, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ bool res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getIsReversedOrientation ();
+ assert (pRet != NULL);
+ *pRet = (int) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetSoftClip ( void* pRef, uint32_t edge, int32_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ int32_t res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getSoftClip ( edge );
+ assert (pRet != NULL);
+ *pRet = (int32_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetTemplateLength ( void* pRef, uint64_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ uint64_t res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getTemplateLength ();
+ assert (pRet != NULL);
+ *pRet = (uint64_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetShortCigar ( void* pRef, int clipped, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getShortCigar ( clipped != 0 );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetLongCigar ( void* pRef, int clipped, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getLongCigar ( clipped != 0 );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetRNAOrientation ( void* pRef, char* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ char res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getRNAOrientation ();
+ assert (pRet != NULL);
+ *pRet = (char) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
//GEN_PY_FUNC_GET ( Alignment, HasMate, bool ) // TODO: decide what to do with non-standard names
-GEN_PY_FUNC_GET_EXPLICIT_NAMES ( Alignment, bool, PY_NGS_AlignmentHasMate, hasMate )
-GEN_PY_FUNC_GET_STRING ( Alignment, MateAlignmentId )
-GEN_PY_FUNC_GET ( Alignment, MateAlignment, ngs::AlignmentItf* )
-GEN_PY_FUNC_GET_STRING ( Alignment, MateReferenceSpec )
-GEN_PY_FUNC_GET ( Alignment, MateIsReversedOrientation, bool )
+PY_RES_TYPE PY_NGS_AlignmentHasMate ( void* pRef, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ bool res = CheckedCast< ngs::AlignmentItf* >(pRef) -> hasMate ();
+ assert (pRet != NULL);
+ *pRet = (int) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetMateAlignmentId ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getMateAlignmentId ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetMateAlignment ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::AlignmentItf* res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getMateAlignment ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetMateReferenceSpec ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getMateReferenceSpec ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_AlignmentGetMateIsReversedOrientation ( void* pRef, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ bool res = CheckedCast< ngs::AlignmentItf* >(pRef) -> getMateIsReversedOrientation ();
+ assert (pRet != NULL);
+ *pRet = (int) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
diff --git a/ngs-sdk/language/python/py_ErrorMsg.cpp b/ngs-sdk/language/python/py_ErrorMsg.cpp
deleted file mode 100644
index 20d98bf..0000000
--- a/ngs-sdk/language/python/py_ErrorMsg.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-/*===========================================================================
-*
-* PUBLIC DOMAIN NOTICE
-* National Center for Biotechnology Information
-*
-* This software/database is a "United States Government Work" under the
-* terms of the United States Copyright Act. It was written as part of
-* the author's official duties as a United States Government employee and
-* thus cannot be copyrighted. This software/database is freely available
-* to the public for use. The National Library of Medicine and the U.S.
-* Government have not placed any restriction on its use or reproduction.
-*
-* Although all reasonable efforts have been taken to ensure the accuracy
-* and reliability of the software and data, the NLM and the U.S.
-* Government do not and cannot warrant the performance or results that
-* may be obtained by using this software or data. The NLM and the U.S.
-* Government disclaim all warranties, express or implied, including
-* warranties of performance, merchantability or fitness for any particular
-* purpose.
-*
-* Please cite the author in any work or product based on this material.
-*
-* ===========================================================================
-*
-*/
-
-#include "py_ErrorMsg.hpp"
\ No newline at end of file
diff --git a/ngs-sdk/language/python/py_ErrorMsg.hpp b/ngs-sdk/language/python/py_ErrorMsg.hpp
index 3f65c20..bc7e3d4 100644
--- a/ngs-sdk/language/python/py_ErrorMsg.hpp
+++ b/ngs-sdk/language/python/py_ErrorMsg.hpp
@@ -24,40 +24,9 @@
*
*/
-#ifndef _Included_py_ngs_itf_ErrorMsg
-#define _Included_py_ngs_itf_ErrorMsg
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "py_ngs_defs.h"
-
-#ifdef __cplusplus
-}
-#endif
-
#include <string.h>
-
-#include <assert.h>
-#include <stdint.h>
-
#include <ngs/itf/ErrorMsg.hpp>
-namespace ngs
-{
- class StringItf;
-
- class AlignmentItf;
- class FragmentItf;
- class ReadItf;
- class ReadGroupItf;
- class ReferenceItf;
- class PileupItf;
- class PileupEventItf;
- class ReadGroupItf;
- class StatisticsItf;
-}
-
namespace
{
template < typename T >
@@ -69,33 +38,6 @@ namespace
return ( T ) pRef;
}
- template <typename T> struct c_type
- {
- typedef T type_c;
- typedef T type_cpp;
- //static type_cpp& cast_to_cpp (type_c& x) { return (type_cpp) x; }
- };
-
-#define MAP_CPP_TO_C_TYPE( cpp_t, c_t )\
- template <> struct c_type<cpp_t>\
- {\
- typedef c_t type_c;\
- typedef cpp_t type_cpp;\
- };
-
- MAP_CPP_TO_C_TYPE ( bool, int )
- MAP_CPP_TO_C_TYPE ( ngs::StringItf*, void* )
- MAP_CPP_TO_C_TYPE ( ngs::AlignmentItf*, void* )
- MAP_CPP_TO_C_TYPE ( ngs::FragmentItf*, void* )
- MAP_CPP_TO_C_TYPE ( ngs::PileupItf*, void* )
- MAP_CPP_TO_C_TYPE ( ngs::PileupEventItf*, void* )
- MAP_CPP_TO_C_TYPE ( ngs::ReadItf*, void* )
- MAP_CPP_TO_C_TYPE ( ngs::ReadGroupItf*, void* )
- MAP_CPP_TO_C_TYPE ( ngs::ReferenceItf*, void* )
- MAP_CPP_TO_C_TYPE ( ngs::StatisticsItf*, void* )
-
-#undef MAP_CPP_TO_C_TYPE
-
template < typename E >
PY_RES_TYPE ExceptionHandler (E& x, void** ppNGSStrError)
{
@@ -119,253 +61,4 @@ namespace
return PY_RES_ERROR;
}
-
- template < typename TRef, typename TVal_cpp, typename TVal_c >
- PY_RES_TYPE PY_NGS_GetValue(void* pRef, TVal_c* pRet, void** ppNGSStrError, TVal_cpp (TRef::*pfn)() const)
- {
- PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
- try
- {
- TVal_cpp res = (CheckedCast< TRef* >(pRef) ->* pfn)();
- assert(pRet != NULL);
- *pRet = (TVal_c)res;
- ret = PY_RES_OK;
- }
- catch ( ngs::ErrorMsg & x )
- {
- ret = ExceptionHandler ( x, ppNGSStrError );
- }
- catch ( std::exception & x )
- {
- ret = ExceptionHandler ( x, ppNGSStrError );
- }
- catch ( ... )
- {
- ret = ExceptionHandler ( ppNGSStrError );
- }
-
- return ret;
- }
-
- template < typename TRef, typename TVal_cpp, typename TVal_c, typename T1 >
- PY_RES_TYPE PY_NGS_GetValueByParams1(void* pRef, T1 p1, TVal_c* pRet, void** ppNGSStrError, TVal_cpp (TRef::*pfn)(T1) const)
- {
- PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
- try
- {
- TVal_cpp res = (CheckedCast< TRef* >(pRef) ->* pfn)( p1 );
- assert(pRet != NULL);
- *pRet = (TVal_c)res;
- ret = PY_RES_OK;
- }
- catch ( ngs::ErrorMsg & x )
- {
- ret = ExceptionHandler ( x, ppNGSStrError );
- }
- catch ( std::exception & x )
- {
- ret = ExceptionHandler ( x, ppNGSStrError );
- }
- catch ( ... )
- {
- ret = ExceptionHandler ( ppNGSStrError );
- }
-
- return ret;
- }
-
- template < typename TRef, typename TVal_cpp, typename TVal_c, typename T1, typename T2 >
- PY_RES_TYPE PY_NGS_GetValueByParams2(void* pRef, T1 p1, T2 p2, TVal_c* pRet, void** ppNGSStrError, TVal_cpp (TRef::*pfn)(T1, T2) const)
- {
- PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
- try
- {
- TVal_cpp res = (CheckedCast< TRef* >(pRef) ->* pfn)( p1, p2 );
- assert(pRet != NULL);
- *pRet = (TVal_c)res;
- ret = PY_RES_OK;
- }
- catch ( ngs::ErrorMsg & x )
- {
- ret = ExceptionHandler ( x, ppNGSStrError );
- }
- catch ( std::exception & x )
- {
- ret = ExceptionHandler ( x, ppNGSStrError );
- }
- catch ( ... )
- {
- ret = ExceptionHandler ( ppNGSStrError );
- }
-
- return ret;
- }
-
- template < typename TRef, typename TVal_cpp, typename TVal_c, typename T1, typename T2, typename T3 >
- PY_RES_TYPE PY_NGS_GetValueByParams3(void* pRef, T1 p1, T2 p2, T3 p3, TVal_c* pRet, void** ppNGSStrError, TVal_cpp (TRef::*pfn)(T1, T2, T3) const)
- {
- PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
- try
- {
- TVal_cpp res = (CheckedCast< TRef* >(pRef) ->* pfn)( p1, p2, p3 );
- assert(pRet != NULL);
- *pRet = (TVal_c)res;
- ret = PY_RES_OK;
- }
- catch ( ngs::ErrorMsg & x )
- {
- ret = ExceptionHandler ( x, ppNGSStrError );
- }
- catch ( std::exception & x )
- {
- ret = ExceptionHandler ( x, ppNGSStrError );
- }
- catch ( ... )
- {
- ret = ExceptionHandler ( ppNGSStrError );
- }
-
- return ret;
- }
-
- template < typename TRef, typename TVal_cpp, typename TVal_c, typename T1, typename T2, typename T3, typename T4, typename T5 >
- PY_RES_TYPE PY_NGS_GetValueByParams5(void* pRef, T1 p1, T2 p2, T3 p3, T4 p4, T5 p5, TVal_c* pRet, void** ppNGSStrError, TVal_cpp (TRef::*pfn)(T1, T2, T3, T4, T5) const)
- {
- PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
- try
- {
- TVal_cpp res = (CheckedCast< TRef* >(pRef) ->* pfn)( p1, p2, p3, p4, p5 );
- assert(pRet != NULL);
- *pRet = (TVal_c)res;
- ret = PY_RES_OK;
- }
- catch ( ngs::ErrorMsg & x )
- {
- ret = ExceptionHandler ( x, ppNGSStrError );
- }
- catch ( std::exception & x )
- {
- ret = ExceptionHandler ( x, ppNGSStrError );
- }
- catch ( ... )
- {
- ret = ExceptionHandler ( ppNGSStrError );
- }
-
- return ret;
- }
-}
-
-/////////////////// Macros generating getters for any type of values ///////////////////////
-#define GEN_PY_FUNC_GET( object_name, func_sub_name, value_type )\
-PY_RES_TYPE PY_NGS_##object_name##Get##func_sub_name(void* pRef, c_type<value_type>::type_c* pRet, void** ppNGSStrError)\
-{\
- return PY_NGS_GetValue <ngs::object_name##Itf, value_type, c_type<value_type>::type_c> ( pRef, pRet, ppNGSStrError, & ngs::object_name##Itf::get##func_sub_name );\
-}
-
-// TODO: this function is for special cases when Itf method names do not adhere common pattern.
-#define GEN_PY_FUNC_GET_EXPLICIT_NAMES( object_name, value_type, generated_function_name, itf_function_name )\
-PY_RES_TYPE generated_function_name(void* pRef, c_type<value_type>::type_c* pRet, void** ppNGSStrError)\
-{\
- return PY_NGS_GetValue <ngs::object_name##Itf, value_type, c_type<value_type>::type_c> ( pRef, pRet, ppNGSStrError, & ngs::object_name##Itf::itf_function_name );\
-}
-
-// TODO: this function is for special cases when Itf method names do not adhere common pattern.
-#define GEN_PY_FUNC_GET_EXPLICIT_NAMES_1( object_name, value_type, generated_function_name, itf_function_name, param_type1, p1 ) \
-PY_RES_TYPE generated_function_name(void* pRef, c_type<param_type1>::type_c p1, c_type<value_type>::type_c* pRet, void** ppNGSStrError)\
-{\
- return PY_NGS_GetValueByParams1 <ngs::object_name##Itf, value_type, c_type<value_type>::type_c> ( pRef, (c_type<param_type1>::type_cpp)(p1), pRet, ppNGSStrError, & ngs::object_name##Itf::itf_function_name ); \
-}
-
-#define GEN_PY_FUNC_GET_BY_PARAMS_1( object_name, func_sub_name, value_type, param_type1, p1 )\
-PY_RES_TYPE PY_NGS_##object_name##Get##func_sub_name(void* pRef, c_type<param_type1>::type_c p1, c_type<value_type>::type_c* pRet, void** ppNGSStrError)\
-{\
- return PY_NGS_GetValueByParams1 <ngs::object_name##Itf, value_type, c_type<value_type>::type_c> ( pRef, (c_type<param_type1>::type_cpp)(p1), pRet, ppNGSStrError, & ngs::object_name##Itf::get##func_sub_name );\
-}
-
-// TODO: this function is for special cases when Itf method names do not adhere common pattern.
-#define GEN_PY_FUNC_GET_BY_PARAMS_1_EXPLICIT_NAMES( object_name, value_type, param_type1, p1, generated_function_name, itf_function_name )\
-PY_RES_TYPE generated_function_name(void* pRef, c_type<param_type1>::type_c p1, c_type<value_type>::type_c* pRet, void** ppNGSStrError)\
-{\
- return PY_NGS_GetValueByParams1 <ngs::object_name##Itf, value_type, c_type<value_type>::type_c> ( pRef, (c_type<param_type1>::type_cpp)(p1), pRet, ppNGSStrError, & ngs::object_name##Itf::itf_function_name );\
-}
-
-#define GEN_PY_FUNC_GET_BY_PARAMS_2( object_name, func_sub_name, value_type, param_type1, p1, param_type2, p2 )\
-PY_RES_TYPE PY_NGS_##object_name##Get##func_sub_name(void* pRef, c_type<param_type1>::type_c p1, c_type<param_type2>::type_c p2, c_type<value_type>::type_c* pRet, void** ppNGSStrError)\
-{\
- return PY_NGS_GetValueByParams2 <ngs::object_name##Itf, value_type, c_type<value_type>::type_c> ( pRef, (c_type<param_type1>::type_cpp)(p1), (c_type<param_type2>::type_cpp)(p2), pRet, ppNGSStrError, & ngs::object_name##Itf::get##func_sub_name );\
-}
-
-// TODO: this function is for special cases when Itf method names do not adhere common pattern.
-#define GEN_PY_FUNC_GET_BY_PARAMS_2_EXPLICIT_NAMES( object_name, value_type, param_type1, p1, param_type2, p2, generated_function_name, itf_function_name )\
-PY_RES_TYPE generated_function_name(void* pRef, c_type<param_type1>::type_c p1, c_type<param_type2>::type_c p2, c_type<value_type>::type_c* pRet, void** ppNGSStrError)\
-{\
- return PY_NGS_GetValueByParams2 <ngs::object_name##Itf, value_type, c_type<value_type>::type_c> ( pRef, (c_type<param_type1>::type_cpp)(p1), (c_type<param_type2>::type_cpp)(p2), pRet, ppNGSStrError, & ngs::object_name##Itf::itf_function_name );\
}
-
-
-#define GEN_PY_FUNC_GET_BY_PARAMS_3( object_name, func_sub_name, value_type, param_type1, p1, param_type2, p2, param_type3, p3 )\
-PY_RES_TYPE PY_NGS_##object_name##Get##func_sub_name(void* pRef, c_type<param_type1>::type_c p1, c_type<param_type2>::type_c p2, c_type<param_type3>::type_c p3, c_type<value_type>::type_c* pRet, void** ppNGSStrError)\
-{\
- return PY_NGS_GetValueByParams3 <ngs::object_name##Itf, value_type, c_type<value_type>::type_c> ( pRef, (c_type<param_type1>::type_cpp)(p1), (c_type<param_type2>::type_cpp)(p2), (c_type<param_type3>::type_cpp)(p3), pRet, ppNGSStrError, & ngs::object_name##Itf::get##func_sub_name );\
-}
-
-
-#define GEN_PY_FUNC_GET_BY_PARAMS_5( object_name, func_sub_name, value_type, param_type1, p1, param_type2, p2, param_type3, p3, param_type4, p4, param_type5, p5 )\
-PY_RES_TYPE PY_NGS_##object_name##Get##func_sub_name(void* pRef, c_type<param_type1>::type_c p1, c_type<param_type2>::type_c p2, c_type<param_type3>::type_c p3, c_type<param_type4>::type_c p4, c_type<param_type5>::type_c p5, c_type<value_type>::type_c* pRet, void** ppNGSStrError)\
-{\
- return PY_NGS_GetValueByParams5 <ngs::object_name##Itf, value_type, c_type<value_type>::type_c> ( pRef, (c_type<param_type1>::type_cpp)(p1), (c_type<param_type2>::type_cpp)(p2), (c_type<param_type3>::type_cpp)(p3), (c_type<param_type4>::type_cpp)(p4), (c_type<param_type5>::type_cpp)(p5), pRet, ppNGSStrError, & ngs::object_name##Itf::get##func_sub_name );\
-}
-
-/////////////////// Specialized macros to generate getters returning Strings ////////////////
-
-#define GEN_PY_FUNC_GET_STRING( object_name, func_sub_name ) GEN_PY_FUNC_GET( object_name, func_sub_name, ngs::StringItf* )
-#define GEN_PY_FUNC_GET_STRING_BY_PARAMS_1( object_name, func_sub_name, param_type1, p1 ) GEN_PY_FUNC_GET_BY_PARAMS_1( object_name, func_sub_name, ngs::StringItf*, param_type1, p1 )
-#define GEN_PY_FUNC_GET_STRING_BY_PARAMS_2( object_name, func_sub_name, param_type1, p1, param_type2, p2 ) GEN_PY_FUNC_GET_BY_PARAMS_2( object_name, func_sub_name, ngs::StringItf*, param_type1, p1, param_type2, p2 )
-
-/////////////////// Specialized macros to generate getters returning Strings and reinterpretting pRef as different type ///////////////
-
-//#define GEN_PY_FUNC_GET_STRING_CAST( object_name, func_sub_name, object_reinterpret_name )\
-//PY_RES_TYPE PY_NGS_##object_name##Get##func_sub_name(void* pRef, void** pRet, void** ppNGSStrError)\
-//{\
-// return PY_NGS_GetValue <ngs::object_reinterpret_name##Itf, ngs::StringItf*, c_type<ngs::StringItf*>::type_c> ( pRef, pRet, ppNGSStrError, & ngs::object_reinterpret_name##Itf::get##func_sub_name );\
-//}
-//
-//#define GEN_PY_FUNC_GET_STRING_BY_PARAMS_2_CAST( object_name, func_sub_name, object_reinterpret_name, param_type1, p1, param_type2, p2 )\
-//PY_RES_TYPE PY_NGS_##object_name##Get##func_sub_name(void* pRef, c_type<param_type1>::type_c p1, c_type<param_type2>::type_c p2, void** pRet, void** ppNGSStrError)\
-//{\
-// return PY_NGS_GetValueByParams2 <ngs::object_reinterpret_name##Itf> ( pRef, (c_type<param_type1>::type_cpp)(p1), (c_type<param_type2>::type_cpp)(p2), pRet, ppNGSStrError, & ngs::object_reinterpret_name##Itf::get##func_sub_name );\
-//}
-
-///////////////// Separate macro to generate iterator-next functions /////////////////////
-
-#define GEN_PY_ITERATOR_NEXT_IMPL(object_name, generated_function_name)\
-PY_RES_TYPE generated_function_name ( void* pRef, int* pRet, void** ppNGSStrError )\
-{\
- PY_RES_TYPE ret = PY_RES_ERROR;\
- try\
- {\
- bool res = CheckedCast< ngs::object_name##Itf* >(pRef) -> next##object_name();\
- assert(pRet != NULL);\
- *pRet = (int)res;\
- ret = PY_RES_OK;\
- }\
- catch ( ngs::ErrorMsg & x )\
- {\
- ret = ExceptionHandler ( x, ppNGSStrError );\
- }\
- catch ( std::exception & x )\
- {\
- ret = ExceptionHandler ( x, ppNGSStrError );\
- }\
- catch ( ... )\
- {\
- ret = ExceptionHandler ( ppNGSStrError );\
- }\
- return ret;\
-}
-
-#define GEN_PY_ITERATOR_NEXT(object_name) GEN_PY_ITERATOR_NEXT_IMPL(object_name, PY_NGS_##object_name##IteratorNext )
-#define GEN_PY_ITERATOR_NEXT_EXPLICIT_NAMES(object_name, generated_function_name) GEN_PY_ITERATOR_NEXT_IMPL(object_name, generated_function_name )
-
-#endif /* _Included_py_ngs_itf_ErrorMsg */
diff --git a/ngs-sdk/language/python/py_FragmentIteratorItf.cpp b/ngs-sdk/language/python/py_FragmentIteratorItf.cpp
index 7bf9240..e2c81a5 100644
--- a/ngs-sdk/language/python/py_FragmentIteratorItf.cpp
+++ b/ngs-sdk/language/python/py_FragmentIteratorItf.cpp
@@ -29,4 +29,28 @@
#include <ngs/itf/FragmentItf.hpp>
-GEN_PY_ITERATOR_NEXT ( Fragment )
+PY_RES_TYPE PY_NGS_FragmentIteratorNext ( void* pRef, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR;
+ try
+ {
+ bool res = CheckedCast< ngs::FragmentItf* >(pRef) -> nextFragment();
+ assert(pRet != NULL);
+ *pRet = (int)res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+ return ret;
+}
+
diff --git a/ngs-sdk/language/python/py_FragmentItf.cpp b/ngs-sdk/language/python/py_FragmentItf.cpp
index ebec164..abc5402 100644
--- a/ngs-sdk/language/python/py_FragmentItf.cpp
+++ b/ngs-sdk/language/python/py_FragmentItf.cpp
@@ -29,8 +29,133 @@
#include <ngs/itf/FragmentItf.hpp>
-GEN_PY_FUNC_GET_STRING ( Fragment, FragmentId )
-GEN_PY_FUNC_GET_STRING_BY_PARAMS_2 ( Fragment, FragmentBases, uint64_t, offset, uint64_t, length )
-GEN_PY_FUNC_GET_STRING_BY_PARAMS_2 ( Fragment, FragmentQualities, uint64_t, offset, uint64_t, length )
-GEN_PY_FUNC_GET_EXPLICIT_NAMES ( Fragment, bool, PY_NGS_FragmentIsPaired, isPaired )
-GEN_PY_FUNC_GET_EXPLICIT_NAMES ( Fragment, bool, PY_NGS_FragmentIsAligned, isAligned )
\ No newline at end of file
+PY_RES_TYPE PY_NGS_FragmentGetFragmentId ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::FragmentItf* >(pRef) -> getFragmentId ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_FragmentGetFragmentBases ( void* pRef, uint64_t offset, uint64_t length, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::FragmentItf* >(pRef) -> getFragmentBases ( offset, length );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_FragmentGetFragmentQualities ( void* pRef, uint64_t offset, uint64_t length, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::FragmentItf* >(pRef) -> getFragmentQualities ( offset, length );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_FragmentIsPaired ( void* pRef, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ bool res = CheckedCast< ngs::FragmentItf* >(pRef) -> isPaired ();
+ assert (pRet != NULL);
+ *pRet = (int) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_FragmentIsAligned ( void* pRef, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ bool res = CheckedCast< ngs::FragmentItf* >(pRef) -> isAligned ();
+ assert (pRet != NULL);
+ *pRet = (int) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
diff --git a/ngs-sdk/language/python/py_PileupEventIteratorItf.cpp b/ngs-sdk/language/python/py_PileupEventIteratorItf.cpp
index 7d1f94e..8142251 100644
--- a/ngs-sdk/language/python/py_PileupEventIteratorItf.cpp
+++ b/ngs-sdk/language/python/py_PileupEventIteratorItf.cpp
@@ -29,7 +29,31 @@
#include <ngs/itf/PileupEventItf.hpp>
-GEN_PY_ITERATOR_NEXT ( PileupEvent )
+PY_RES_TYPE PY_NGS_PileupEventIteratorNext ( void* pRef, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR;
+ try
+ {
+ bool res = CheckedCast< ngs::PileupEventItf* >(pRef) -> nextPileupEvent();
+ assert(pRet != NULL);
+ *pRet = (int)res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+ return ret;
+}
+
PY_RES_TYPE PY_NGS_PileupEventIteratorReset ( void* pRef, int* pRet, void** ppNGSStrError )
{
diff --git a/ngs-sdk/language/python/py_PileupEventItf.cpp b/ngs-sdk/language/python/py_PileupEventItf.cpp
index 61d9c2c..5625f1b 100644
--- a/ngs-sdk/language/python/py_PileupEventItf.cpp
+++ b/ngs-sdk/language/python/py_PileupEventItf.cpp
@@ -29,15 +29,315 @@
#include <ngs/itf/PileupEventItf.hpp>
-GEN_PY_FUNC_GET ( PileupEvent, MappingQuality, int32_t )
-GEN_PY_FUNC_GET_STRING ( PileupEvent, AlignmentId )
-GEN_PY_FUNC_GET ( PileupEvent, AlignmentPosition, int64_t )
-GEN_PY_FUNC_GET ( PileupEvent, FirstAlignmentPosition, int64_t )
-GEN_PY_FUNC_GET ( PileupEvent, LastAlignmentPosition, int64_t )
-GEN_PY_FUNC_GET ( PileupEvent, EventType, uint32_t )
-GEN_PY_FUNC_GET ( PileupEvent, AlignmentBase, char )
-GEN_PY_FUNC_GET ( PileupEvent, AlignmentQuality, char )
-GEN_PY_FUNC_GET_STRING ( PileupEvent, InsertionBases )
-GEN_PY_FUNC_GET_STRING ( PileupEvent, InsertionQualities )
-GEN_PY_FUNC_GET ( PileupEvent, EventRepeatCount, uint32_t )
-GEN_PY_FUNC_GET ( PileupEvent, EventIndelType, uint32_t )
+PY_RES_TYPE PY_NGS_PileupEventGetMappingQuality ( void* pRef, int32_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ int32_t res = CheckedCast< ngs::PileupEventItf* >(pRef) -> getMappingQuality ();
+ assert (pRet != NULL);
+ *pRet = (int32_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_PileupEventGetAlignmentId ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::PileupEventItf* >(pRef) -> getAlignmentId ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_PileupEventGetAlignmentPosition ( void* pRef, int64_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ int64_t res = CheckedCast< ngs::PileupEventItf* >(pRef) -> getAlignmentPosition ();
+ assert (pRet != NULL);
+ *pRet = (int64_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_PileupEventGetFirstAlignmentPosition ( void* pRef, int64_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ int64_t res = CheckedCast< ngs::PileupEventItf* >(pRef) -> getFirstAlignmentPosition ();
+ assert (pRet != NULL);
+ *pRet = (int64_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_PileupEventGetLastAlignmentPosition ( void* pRef, int64_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ int64_t res = CheckedCast< ngs::PileupEventItf* >(pRef) -> getLastAlignmentPosition ();
+ assert (pRet != NULL);
+ *pRet = (int64_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_PileupEventGetEventType ( void* pRef, uint32_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ uint32_t res = CheckedCast< ngs::PileupEventItf* >(pRef) -> getEventType ();
+ assert (pRet != NULL);
+ *pRet = (uint32_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_PileupEventGetAlignmentBase ( void* pRef, char* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ char res = CheckedCast< ngs::PileupEventItf* >(pRef) -> getAlignmentBase ();
+ assert (pRet != NULL);
+ *pRet = (char) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_PileupEventGetAlignmentQuality ( void* pRef, char* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ char res = CheckedCast< ngs::PileupEventItf* >(pRef) -> getAlignmentQuality ();
+ assert (pRet != NULL);
+ *pRet = (char) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_PileupEventGetInsertionBases ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::PileupEventItf* >(pRef) -> getInsertionBases ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_PileupEventGetInsertionQualities ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::PileupEventItf* >(pRef) -> getInsertionQualities ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_PileupEventGetEventRepeatCount ( void* pRef, uint32_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ uint32_t res = CheckedCast< ngs::PileupEventItf* >(pRef) -> getEventRepeatCount ();
+ assert (pRet != NULL);
+ *pRet = (uint32_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_PileupEventGetEventIndelType ( void* pRef, uint32_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ uint32_t res = CheckedCast< ngs::PileupEventItf* >(pRef) -> getEventIndelType ();
+ assert (pRet != NULL);
+ *pRet = (uint32_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
diff --git a/ngs-sdk/language/python/py_PileupIteratorItf.cpp b/ngs-sdk/language/python/py_PileupIteratorItf.cpp
index 2116522..949a54a 100644
--- a/ngs-sdk/language/python/py_PileupIteratorItf.cpp
+++ b/ngs-sdk/language/python/py_PileupIteratorItf.cpp
@@ -29,4 +29,28 @@
#include <ngs/itf/PileupItf.hpp>
-GEN_PY_ITERATOR_NEXT ( Pileup )
+PY_RES_TYPE PY_NGS_PileupIteratorNext ( void* pRef, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR;
+ try
+ {
+ bool res = CheckedCast< ngs::PileupItf* >(pRef) -> nextPileup();
+ assert(pRet != NULL);
+ *pRet = (int)res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+ return ret;
+}
+
diff --git a/ngs-sdk/language/python/py_PileupItf.cpp b/ngs-sdk/language/python/py_PileupItf.cpp
index 1348ff9..8ea5fc0 100644
--- a/ngs-sdk/language/python/py_PileupItf.cpp
+++ b/ngs-sdk/language/python/py_PileupItf.cpp
@@ -29,7 +29,107 @@
#include <ngs/itf/PileupItf.hpp>
-GEN_PY_FUNC_GET_STRING ( Pileup, ReferenceSpec )
-GEN_PY_FUNC_GET ( Pileup, ReferencePosition, int64_t )
-GEN_PY_FUNC_GET ( Pileup, ReferenceBase, char )
-GEN_PY_FUNC_GET ( Pileup, PileupDepth, uint32_t )
+PY_RES_TYPE PY_NGS_PileupGetReferenceSpec ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::PileupItf* >(pRef) -> getReferenceSpec ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_PileupGetReferencePosition ( void* pRef, int64_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ int64_t res = CheckedCast< ngs::PileupItf* >(pRef) -> getReferencePosition ();
+ assert (pRet != NULL);
+ *pRet = (int64_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_PileupGetReferenceBase ( void* pRef, char* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ char res = CheckedCast< ngs::PileupItf* >(pRef) -> getReferenceBase ();
+ assert (pRet != NULL);
+ *pRet = (char) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_PileupGetPileupDepth ( void* pRef, uint32_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ uint32_t res = CheckedCast< ngs::PileupItf* >(pRef) -> getPileupDepth ();
+ assert (pRet != NULL);
+ *pRet = (uint32_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
diff --git a/ngs-sdk/language/python/py_ReadCollectionItf.cpp b/ngs-sdk/language/python/py_ReadCollectionItf.cpp
index 561390d..9e051cb 100644
--- a/ngs-sdk/language/python/py_ReadCollectionItf.cpp
+++ b/ngs-sdk/language/python/py_ReadCollectionItf.cpp
@@ -29,18 +29,393 @@
#include <ngs/itf/ReadCollectionItf.hpp>
-GEN_PY_FUNC_GET_STRING ( ReadCollection, Name )
-GEN_PY_FUNC_GET ( ReadCollection, ReadGroups, ngs::ReadGroupItf* )
-GEN_PY_FUNC_GET_EXPLICIT_NAMES_1 ( ReadCollection, bool, PY_NGS_ReadCollectionHasReadGroup, hasReadGroup, char const*, spec )
-GEN_PY_FUNC_GET_BY_PARAMS_1 ( ReadCollection, ReadGroup, ngs::ReadGroupItf*, char const*, spec )
-GEN_PY_FUNC_GET ( ReadCollection, References, ngs::ReferenceItf* )
-GEN_PY_FUNC_GET_EXPLICIT_NAMES_1 ( ReadCollection, bool, PY_NGS_ReadCollectionHasReference, hasReference, char const*, spec )
-GEN_PY_FUNC_GET_BY_PARAMS_1 ( ReadCollection, Reference, ngs::ReferenceItf*, char const*, spec )
-GEN_PY_FUNC_GET_BY_PARAMS_1 ( ReadCollection, Alignment, ngs::AlignmentItf*, char const*, alignmentId )
-GEN_PY_FUNC_GET_BY_PARAMS_1 ( ReadCollection, Alignments, ngs::AlignmentItf*, uint32_t, categories )
-GEN_PY_FUNC_GET_BY_PARAMS_1 ( ReadCollection, AlignmentCount, uint64_t, uint32_t, categories )
-GEN_PY_FUNC_GET_BY_PARAMS_3 ( ReadCollection, AlignmentRange, ngs::AlignmentItf*, uint64_t, first, uint64_t, count, uint32_t, categories )
-GEN_PY_FUNC_GET_BY_PARAMS_1 ( ReadCollection, Read, ngs::ReadItf*, char const*, readId )
-GEN_PY_FUNC_GET_BY_PARAMS_1 ( ReadCollection, Reads, ngs::ReadItf*, uint32_t, categories )
-GEN_PY_FUNC_GET_BY_PARAMS_1 ( ReadCollection, ReadCount, uint64_t, uint32_t, categories )
-GEN_PY_FUNC_GET_BY_PARAMS_3 ( ReadCollection, ReadRange, ngs::ReadItf*, uint64_t, first, uint64_t, count, uint32_t, categories )
+PY_RES_TYPE PY_NGS_ReadCollectionGetName ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::ReadCollectionItf* >(pRef) -> getName ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadCollectionGetReadGroups ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::ReadGroupItf* res = CheckedCast< ngs::ReadCollectionItf* >(pRef) -> getReadGroups ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadCollectionHasReadGroup ( void* pRef, char const* spec, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ bool res = CheckedCast< ngs::ReadCollectionItf* >(pRef) -> hasReadGroup ( spec );
+ assert (pRet != NULL);
+ *pRet = (int) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadCollectionGetReadGroup ( void* pRef, char const* spec, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::ReadGroupItf* res = CheckedCast< ngs::ReadCollectionItf* >(pRef) -> getReadGroup ( spec );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadCollectionGetReferences ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::ReferenceItf* res = CheckedCast< ngs::ReadCollectionItf* >(pRef) -> getReferences ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadCollectionHasReference ( void* pRef, char const* spec, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ bool res = CheckedCast< ngs::ReadCollectionItf* >(pRef) -> hasReference ( spec );
+ assert (pRet != NULL);
+ *pRet = (int) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadCollectionGetReference ( void* pRef, char const* spec, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::ReferenceItf* res = CheckedCast< ngs::ReadCollectionItf* >(pRef) -> getReference ( spec );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadCollectionGetAlignment ( void* pRef, char const* alignmentId, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::AlignmentItf* res = CheckedCast< ngs::ReadCollectionItf* >(pRef) -> getAlignment ( alignmentId );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadCollectionGetAlignments ( void* pRef, uint32_t categories, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::AlignmentItf* res = CheckedCast< ngs::ReadCollectionItf* >(pRef) -> getAlignments ( categories );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadCollectionGetAlignmentCount ( void* pRef, uint32_t categories, uint64_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ uint64_t res = CheckedCast< ngs::ReadCollectionItf* >(pRef) -> getAlignmentCount ( categories );
+ assert (pRet != NULL);
+ *pRet = (uint64_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadCollectionGetAlignmentRange ( void* pRef, uint64_t first, uint64_t count, uint32_t categories, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::AlignmentItf* res = CheckedCast< ngs::ReadCollectionItf* >(pRef) -> getAlignmentRange ( first, count, categories );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadCollectionGetRead ( void* pRef, char const* readId, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::ReadItf* res = CheckedCast< ngs::ReadCollectionItf* >(pRef) -> getRead ( readId );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadCollectionGetReads ( void* pRef, uint32_t categories, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::ReadItf* res = CheckedCast< ngs::ReadCollectionItf* >(pRef) -> getReads ( categories );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadCollectionGetReadCount ( void* pRef, uint32_t categories, uint64_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ uint64_t res = CheckedCast< ngs::ReadCollectionItf* >(pRef) -> getReadCount ( categories );
+ assert (pRet != NULL);
+ *pRet = (uint64_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadCollectionGetReadRange ( void* pRef, uint64_t first, uint64_t count, uint32_t categories, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::ReadItf* res = CheckedCast< ngs::ReadCollectionItf* >(pRef) -> getReadRange ( first, count, categories );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
diff --git a/ngs-sdk/language/python/py_ReadGroupIteratorItf.cpp b/ngs-sdk/language/python/py_ReadGroupIteratorItf.cpp
index ad00313..9bb0ab6 100644
--- a/ngs-sdk/language/python/py_ReadGroupIteratorItf.cpp
+++ b/ngs-sdk/language/python/py_ReadGroupIteratorItf.cpp
@@ -29,4 +29,28 @@
#include <ngs/itf/ReadGroupItf.hpp>
-GEN_PY_ITERATOR_NEXT ( ReadGroup )
+PY_RES_TYPE PY_NGS_ReadGroupIteratorNext ( void* pRef, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR;
+ try
+ {
+ bool res = CheckedCast< ngs::ReadGroupItf* >(pRef) -> nextReadGroup();
+ assert(pRet != NULL);
+ *pRet = (int)res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+ return ret;
+}
+
diff --git a/ngs-sdk/language/python/py_ReadGroupItf.cpp b/ngs-sdk/language/python/py_ReadGroupItf.cpp
index 1c40d61..7649326 100644
--- a/ngs-sdk/language/python/py_ReadGroupItf.cpp
+++ b/ngs-sdk/language/python/py_ReadGroupItf.cpp
@@ -29,10 +29,60 @@
#include <ngs/itf/ReadGroupItf.hpp>
-GEN_PY_FUNC_GET_STRING ( ReadGroup, Name )
+PY_RES_TYPE PY_NGS_ReadGroupGetName ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::ReadGroupItf* >(pRef) -> getName ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
#if READ_GROUP_SUPPORTS_READS
GEN_PY_FUNC_GET_BY_PARAMS1 ( ReadGroup, Read, ngs::ReadItf*, char const*, readId )
GEN_PY_FUNC_GET_BY_PARAMS1 ( ReadGroup, Reads, ngs::ReadItf*, uint32_t, categories )
#endif
- GEN_PY_FUNC_GET ( ReadGroup, Statistics, ngs::StatisticsItf* )
+PY_RES_TYPE PY_NGS_ReadGroupGetStatistics ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::StatisticsItf* res = CheckedCast< ngs::ReadGroupItf* >(pRef) -> getStatistics ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
diff --git a/ngs-sdk/language/python/py_ReadIteratorItf.cpp b/ngs-sdk/language/python/py_ReadIteratorItf.cpp
index e81f195..52feadb 100644
--- a/ngs-sdk/language/python/py_ReadIteratorItf.cpp
+++ b/ngs-sdk/language/python/py_ReadIteratorItf.cpp
@@ -29,4 +29,28 @@
#include <ngs/itf/ReadItf.hpp>
-GEN_PY_ITERATOR_NEXT ( Read )
+PY_RES_TYPE PY_NGS_ReadIteratorNext ( void* pRef, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR;
+ try
+ {
+ bool res = CheckedCast< ngs::ReadItf* >(pRef) -> nextRead();
+ assert(pRet != NULL);
+ *pRet = (int)res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+ return ret;
+}
+
diff --git a/ngs-sdk/language/python/py_ReadItf.cpp b/ngs-sdk/language/python/py_ReadItf.cpp
index 6b8afe1..22bb4f1 100644
--- a/ngs-sdk/language/python/py_ReadItf.cpp
+++ b/ngs-sdk/language/python/py_ReadItf.cpp
@@ -35,11 +35,211 @@ GEN_PY_FUNC_GET_STRING_BY_PARAMS_2_CAST ( Read, FragmentBases, Fragment, uin
GEN_PY_FUNC_GET_STRING_BY_PARAMS_2_CAST ( Read, FragmentQualities, Fragment, uint64_t, offset, uint64_t, length )
GEN_PY_ITERATOR_NEXT_EXPLICIT_NAMES ( Fragment, PY_NGS_ReadNextFragment )*/
-GEN_PY_FUNC_GET_STRING ( Read, ReadId )
-GEN_PY_FUNC_GET ( Read, NumFragments, uint32_t )
-GEN_PY_FUNC_GET_BY_PARAMS_1_EXPLICIT_NAMES ( Read, bool, uint32_t, fragIdx, PY_NGS_ReadFragmentIsAligned, fragmentIsAligned)
-GEN_PY_FUNC_GET ( Read, ReadCategory, uint32_t )
-GEN_PY_FUNC_GET_STRING ( Read, ReadGroup )
-GEN_PY_FUNC_GET_STRING ( Read, ReadName )
-GEN_PY_FUNC_GET_STRING_BY_PARAMS_2 ( Read, ReadBases, uint64_t, offset, uint64_t, length )
-GEN_PY_FUNC_GET_STRING_BY_PARAMS_2 ( Read, ReadQualities, uint64_t, offset, uint64_t, length )
+PY_RES_TYPE PY_NGS_ReadGetReadId ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::ReadItf* >(pRef) -> getReadId ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadGetNumFragments ( void* pRef, uint32_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ uint32_t res = CheckedCast< ngs::ReadItf* >(pRef) -> getNumFragments ();
+ assert (pRet != NULL);
+ *pRet = (uint32_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadFragmentIsAligned ( void* pRef, uint32_t fragIdx, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ bool res = CheckedCast< ngs::ReadItf* >(pRef) -> fragmentIsAligned ( fragIdx );
+ assert (pRet != NULL);
+ *pRet = (int) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadGetReadCategory ( void* pRef, uint32_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ uint32_t res = CheckedCast< ngs::ReadItf* >(pRef) -> getReadCategory ();
+ assert (pRet != NULL);
+ *pRet = (uint32_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadGetReadGroup ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::ReadItf* >(pRef) -> getReadGroup ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadGetReadName ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::ReadItf* >(pRef) -> getReadName ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadGetReadBases ( void* pRef, uint64_t offset, uint64_t length, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::ReadItf* >(pRef) -> getReadBases ( offset, length );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReadGetReadQualities ( void* pRef, uint64_t offset, uint64_t length, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::ReadItf* >(pRef) -> getReadQualities ( offset, length );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
diff --git a/ngs-sdk/language/python/py_ReferenceIteratorItf.cpp b/ngs-sdk/language/python/py_ReferenceIteratorItf.cpp
index 265f91d..e723d4c 100644
--- a/ngs-sdk/language/python/py_ReferenceIteratorItf.cpp
+++ b/ngs-sdk/language/python/py_ReferenceIteratorItf.cpp
@@ -29,4 +29,28 @@
#include <ngs/itf/ReferenceItf.hpp>
-GEN_PY_ITERATOR_NEXT ( Reference )
+PY_RES_TYPE PY_NGS_ReferenceIteratorNext ( void* pRef, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR;
+ try
+ {
+ bool res = CheckedCast< ngs::ReferenceItf* >(pRef) -> nextReference();
+ assert(pRet != NULL);
+ *pRet = (int)res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+ return ret;
+}
+
diff --git a/ngs-sdk/language/python/py_ReferenceItf.cpp b/ngs-sdk/language/python/py_ReferenceItf.cpp
index 3b0d4a6..8ea1966 100644
--- a/ngs-sdk/language/python/py_ReferenceItf.cpp
+++ b/ngs-sdk/language/python/py_ReferenceItf.cpp
@@ -29,17 +29,367 @@
#include <ngs/itf/ReferenceItf.hpp>
-GEN_PY_FUNC_GET_STRING ( Reference, CommonName )
-GEN_PY_FUNC_GET_STRING ( Reference, CanonicalName )
-GEN_PY_FUNC_GET ( Reference, IsCircular, bool )
-GEN_PY_FUNC_GET ( Reference, Length, uint64_t )
-GEN_PY_FUNC_GET_STRING_BY_PARAMS_2 ( Reference, ReferenceBases, uint64_t, offset, uint64_t, length )
-GEN_PY_FUNC_GET_STRING_BY_PARAMS_2 ( Reference, ReferenceChunk, uint64_t, offset, uint64_t, length )
-GEN_PY_FUNC_GET_BY_PARAMS_1 ( Reference, Alignment, ngs::AlignmentItf*, char const*, alignmentId )
-GEN_PY_FUNC_GET_BY_PARAMS_1 ( Reference, Alignments, ngs::AlignmentItf*, uint32_t, categories )
-GEN_PY_FUNC_GET_BY_PARAMS_3 ( Reference, AlignmentSlice, ngs::AlignmentItf*, int64_t, start, uint64_t, length, uint32_t, categories )
-GEN_PY_FUNC_GET_BY_PARAMS_5 ( Reference, FilteredAlignmentSlice, ngs::AlignmentItf*, int64_t, start, uint64_t, length, uint32_t, categories, uint32_t, filters, int32_t, map_qual )
-GEN_PY_FUNC_GET_BY_PARAMS_1 ( Reference, Pileups, ngs::PileupItf*, uint32_t, categories )
-GEN_PY_FUNC_GET_BY_PARAMS_3 ( Reference, FilteredPileups, ngs::PileupItf*, uint32_t, categories, uint32_t, filters, int32_t, map_qual )
-GEN_PY_FUNC_GET_BY_PARAMS_3 ( Reference, PileupSlice, ngs::PileupItf*, int64_t, start, uint64_t, length, uint32_t, categories )
-GEN_PY_FUNC_GET_BY_PARAMS_5 ( Reference, FilteredPileupSlice, ngs::PileupItf*, int64_t, start, uint64_t, length, uint32_t, categories, uint32_t, filters, int32_t, map_qual )
+PY_RES_TYPE PY_NGS_ReferenceGetCommonName ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::ReferenceItf* >(pRef) -> getCommonName ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceGetCanonicalName ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::ReferenceItf* >(pRef) -> getCanonicalName ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceGetIsCircular ( void* pRef, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ bool res = CheckedCast< ngs::ReferenceItf* >(pRef) -> getIsCircular ();
+ assert (pRet != NULL);
+ *pRet = (int) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceGetLength ( void* pRef, uint64_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ uint64_t res = CheckedCast< ngs::ReferenceItf* >(pRef) -> getLength ();
+ assert (pRet != NULL);
+ *pRet = (uint64_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceGetReferenceBases ( void* pRef, uint64_t offset, uint64_t length, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::ReferenceItf* >(pRef) -> getReferenceBases ( offset, length );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceGetReferenceChunk ( void* pRef, uint64_t offset, uint64_t length, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::ReferenceItf* >(pRef) -> getReferenceChunk ( offset, length );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceGetAlignment ( void* pRef, char const* alignmentId, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::AlignmentItf* res = CheckedCast< ngs::ReferenceItf* >(pRef) -> getAlignment ( alignmentId );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceGetAlignments ( void* pRef, uint32_t categories, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::AlignmentItf* res = CheckedCast< ngs::ReferenceItf* >(pRef) -> getAlignments ( categories );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceGetAlignmentSlice ( void* pRef, int64_t start, uint64_t length, uint32_t categories, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::AlignmentItf* res = CheckedCast< ngs::ReferenceItf* >(pRef) -> getAlignmentSlice ( start, length, categories );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceGetFilteredAlignmentSlice ( void* pRef, int64_t start, uint64_t length, uint32_t categories, uint32_t filters, int32_t map_qual, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::AlignmentItf* res = CheckedCast< ngs::ReferenceItf* >(pRef) -> getFilteredAlignmentSlice ( start, length, categories, filters, map_qual );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceGetPileups ( void* pRef, uint32_t categories, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::PileupItf* res = CheckedCast< ngs::ReferenceItf* >(pRef) -> getPileups ( categories );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceGetFilteredPileups ( void* pRef, uint32_t categories, uint32_t filters, int32_t map_qual, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::PileupItf* res = CheckedCast< ngs::ReferenceItf* >(pRef) -> getFilteredPileups ( categories, filters, map_qual );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceGetPileupSlice ( void* pRef, int64_t start, uint64_t length, uint32_t categories, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::PileupItf* res = CheckedCast< ngs::ReferenceItf* >(pRef) -> getPileupSlice ( start, length, categories );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceGetFilteredPileupSlice ( void* pRef, int64_t start, uint64_t length, uint32_t categories, uint32_t filters, int32_t map_qual, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::PileupItf* res = CheckedCast< ngs::ReferenceItf* >(pRef) -> getFilteredPileupSlice ( start, length, categories, filters, map_qual );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
diff --git a/ngs-sdk/language/python/py_ReferenceSequenceItf.cpp b/ngs-sdk/language/python/py_ReferenceSequenceItf.cpp
index 66213b1..e9f86c8 100644
--- a/ngs-sdk/language/python/py_ReferenceSequenceItf.cpp
+++ b/ngs-sdk/language/python/py_ReferenceSequenceItf.cpp
@@ -29,8 +29,133 @@
#include <ngs/itf/ReferenceSequenceItf.hpp>
-GEN_PY_FUNC_GET_STRING ( ReferenceSequence, CanonicalName )
-GEN_PY_FUNC_GET ( ReferenceSequence, IsCircular, bool )
-GEN_PY_FUNC_GET ( ReferenceSequence, Length, uint64_t )
-GEN_PY_FUNC_GET_STRING_BY_PARAMS_2 ( ReferenceSequence, ReferenceBases, uint64_t, offset, uint64_t, length )
-GEN_PY_FUNC_GET_STRING_BY_PARAMS_2 ( ReferenceSequence, ReferenceChunk, uint64_t, offset, uint64_t, length )
+PY_RES_TYPE PY_NGS_ReferenceSequenceGetCanonicalName ( void* pRef, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::ReferenceSequenceItf* >(pRef) -> getCanonicalName ();
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceSequenceGetIsCircular ( void* pRef, int* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ bool res = CheckedCast< ngs::ReferenceSequenceItf* >(pRef) -> getIsCircular ();
+ assert (pRet != NULL);
+ *pRet = (int) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceSequenceGetLength ( void* pRef, uint64_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ uint64_t res = CheckedCast< ngs::ReferenceSequenceItf* >(pRef) -> getLength ();
+ assert (pRet != NULL);
+ *pRet = (uint64_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceSequenceGetReferenceBases ( void* pRef, uint64_t offset, uint64_t length, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::ReferenceSequenceItf* >(pRef) -> getReferenceBases ( offset, length );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_ReferenceSequenceGetReferenceChunk ( void* pRef, uint64_t offset, uint64_t length, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::ReferenceSequenceItf* >(pRef) -> getReferenceChunk ( offset, length );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
diff --git a/ngs-sdk/language/python/py_StatisticsItf.cpp b/ngs-sdk/language/python/py_StatisticsItf.cpp
index 1d53f13..825b2a2 100644
--- a/ngs-sdk/language/python/py_StatisticsItf.cpp
+++ b/ngs-sdk/language/python/py_StatisticsItf.cpp
@@ -29,9 +29,159 @@
#include <ngs/itf/StatisticsItf.hpp>
-GEN_PY_FUNC_GET_BY_PARAMS_1 ( Statistics, ValueType, uint32_t, char const*, path )
-GEN_PY_FUNC_GET_STRING_BY_PARAMS_1 ( Statistics, AsString, char const*, path )
-GEN_PY_FUNC_GET_BY_PARAMS_1 ( Statistics, AsI64, int64_t, char const*, path )
-GEN_PY_FUNC_GET_BY_PARAMS_1 ( Statistics, AsU64, uint64_t, char const*, path )
-GEN_PY_FUNC_GET_BY_PARAMS_1 ( Statistics, AsDouble, double, char const*, path )
-GEN_PY_FUNC_GET_BY_PARAMS_1_EXPLICIT_NAMES ( Statistics, ngs::StringItf*, char const*, path, PY_NGS_StatisticsGetNextPath, nextPath )
+PY_RES_TYPE PY_NGS_StatisticsGetValueType ( void* pRef, char const* path, uint32_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ uint32_t res = CheckedCast< ngs::StatisticsItf* >(pRef) -> getValueType ( path );
+ assert (pRet != NULL);
+ *pRet = (uint32_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_StatisticsGetAsString ( void* pRef, char const* path, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ void* res = CheckedCast< ngs::StatisticsItf* >(pRef) -> getAsString ( path );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_StatisticsGetAsI64 ( void* pRef, char const* path, int64_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ int64_t res = CheckedCast< ngs::StatisticsItf* >(pRef) -> getAsI64 ( path );
+ assert (pRet != NULL);
+ *pRet = (int64_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_StatisticsGetAsU64 ( void* pRef, char const* path, uint64_t* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ uint64_t res = CheckedCast< ngs::StatisticsItf* >(pRef) -> getAsU64 ( path );
+ assert (pRet != NULL);
+ *pRet = (uint64_t) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_StatisticsGetAsDouble ( void* pRef, char const* path, double* pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ double res = CheckedCast< ngs::StatisticsItf* >(pRef) -> getAsDouble ( path );
+ assert (pRet != NULL);
+ *pRet = (double) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
+PY_RES_TYPE PY_NGS_StatisticsGetNextPath ( void* pRef, char const* path, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::StringItf* res = CheckedCast< ngs::StatisticsItf* >(pRef) -> nextPath ( path );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
diff --git a/ngs-sdk/language/python/py_StringItf.cpp b/ngs-sdk/language/python/py_StringItf.cpp
index 729ffa2..39217ae 100644
--- a/ngs-sdk/language/python/py_StringItf.cpp
+++ b/ngs-sdk/language/python/py_StringItf.cpp
@@ -29,7 +29,32 @@
#include <ngs/itf/StringItf.hpp>
-GEN_PY_FUNC_GET_BY_PARAMS_2_EXPLICIT_NAMES ( String, ngs::StringItf*, size_t, offset, size_t, size, PY_NGS_StringGetSubstring, substr )
+PY_RES_TYPE PY_NGS_StringGetSubstring ( void* pRef, size_t offset, size_t size, void** pRet, void** ppNGSStrError )
+{
+ PY_RES_TYPE ret = PY_RES_ERROR; // TODO: use xt_* codes
+ try
+ {
+ ngs::StringItf* res = CheckedCast< ngs::StringItf* >(pRef) -> substr ( offset, size );
+ assert (pRet != NULL);
+ *pRet = (void*) res;
+ ret = PY_RES_OK;
+ }
+ catch ( ngs::ErrorMsg & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( std::exception & x )
+ {
+ ret = ExceptionHandler ( x, ppNGSStrError );
+ }
+ catch ( ... )
+ {
+ ret = ExceptionHandler ( ppNGSStrError );
+ }
+
+ return ret;
+}
+
PY_RES_TYPE PY_NGS_StringGetData ( void* pRef, char const** pRet )
{
diff --git a/ngs-sdk/win/stdbool.h b/ngs-sdk/ngs/win/stdbool.h
similarity index 100%
rename from ngs-sdk/win/stdbool.h
rename to ngs-sdk/ngs/win/stdbool.h
diff --git a/ngs-sdk/setup/package.prl b/ngs-sdk/setup/package.prl
index 73cf8bc..6348b29 100644
--- a/ngs-sdk/setup/package.prl
+++ b/ngs-sdk/setup/package.prl
@@ -1,6 +1,6 @@
################################################################################
sub PACKAGE { 'ngs-sdk' }
-sub VERSION { '1.2.3' }
+sub VERSION { '1.2.4' }
sub PACKAGE_TYPE { 'L' }
sub PACKAGE_NAME { 'NGS-SDK' }
sub PACKAGE_NAMW { 'NGS' }
diff --git a/ngs-sdk/win/.gitignore b/ngs-sdk/win/.gitignore
deleted file mode 100644
index 8a9d35c..0000000
--- a/ngs-sdk/win/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.user
diff --git a/ngs-sdk/win/build.xml b/ngs-sdk/win/build.xml
new file mode 100644
index 0000000..d7aa347
--- /dev/null
+++ b/ngs-sdk/win/build.xml
@@ -0,0 +1,67 @@
+<project name="NGS-SDK" default="runtests" basedir=".">
+
+ <description>
+ Ant script for NGS-SDK
+ </description>
+
+ <property name="Platform" value="x64" />
+ <property name="Configuration" value="Debug" />
+ <property name="Output" value="${basedir}\..\..\..\OUTDIR\" />
+ <property name="MSVS" value="2013" />
+
+ <target name="help">
+ <echo message="">
+Apache Ant script for automated testing of NGS-SDK on Windows
+
+Usage (in the directory of this file, build.xml):
+ ant [options] target1 target2 ...
+
+Example:
+ ant -DConfiguration=Debug -Platform=Win32 help std
+
+Supported targets:
+ help - print this text and exit
+ clean - remove all build artefacts
+ build - regular build
+ runtests - build and run unit tests
+
+Options:
+ -DConfiguration=Debug or -DConfiguration=Release (default)
+ -DPlatform=Win32 or -DPlatform=x64 (default)
+ -DOutput=path folder to create outputs in (default: ../../../OUTDIR/)
+ -DMSVS=version MSVS toolset, 2010 or 2013 (default: 2013)
+ </echo>
+ </target>
+
+ <target name="clean">
+ <exec executable="msbuild.exe" failonerror="true">
+ <arg value="vs${MSVS}\ngs-sdk.sln"/>
+ <arg value="/t:clean"/>
+ <arg value="/m"/>
+ <arg value="/p:Platform=${Platform}"/>
+ <arg value="/p:Configuration=${Configuration}"/>
+ <arg value="/p:NGS_OUTDIR=${Output}\ngs-sdk\"/>
+ </exec>
+ </target>
+
+ <target name="build">
+ <exec executable="msbuild.exe" failonerror="true">
+ <arg value="vs${MSVS}\ngs-sdk.sln"/>
+ <arg value="/m"/>
+ <arg value="/p:Platform=${Platform}"/>
+ <arg value="/p:Configuration=${Configuration}"/>
+ <arg value="/p:NGS_OUTDIR=${Output}\ngs-sdk\"/>
+ </exec>
+ </target>
+
+ <target name="runtests" depends="build">
+ <exec executable="msbuild.exe" failonerror="true">
+ <arg value="vs${MSVS}\ngs-sdk.sln"/>
+ <arg value="/p:Platform=${Platform}"/>
+ <arg value="/p:Configuration=${Configuration}"/>
+ <arg value="/p:NGS_OUTDIR=${Output}\ngs-sdk\"/>
+ <arg value="/p:Autorun=true"/>
+ </exec>
+ </target>
+
+</project>
\ No newline at end of file
diff --git a/ngs-sdk/win/libadapter.files b/ngs-sdk/win/libadapter.files
new file mode 100644
index 0000000..d52a9fb
--- /dev/null
+++ b/ngs-sdk/win/libadapter.files
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\adapter\AlignmentItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\adapter\defs.h" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\adapter\ErrorMsg.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\adapter\FragmentItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\adapter\PileupEventItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\adapter\PileupItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\adapter\ReadCollectionItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\adapter\ReadGroupItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\adapter\ReadItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\adapter\Refcount.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\adapter\ReferenceItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\adapter\ReferenceSequenceItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\adapter\StatisticsItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\adapter\StringItf.hpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\adapter\AlignmentItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\adapter\ErrBlock.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\adapter\ErrorMsg.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\adapter\FragmentItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\adapter\PileupEventItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\adapter\PileupItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\adapter\ReadCollectionItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\adapter\ReadGroupItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\adapter\ReadItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\adapter\Refcount.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\adapter\ReferenceItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\adapter\ReferenceSequenceItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\adapter\StatisticsItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\adapter\StringItf.cpp" />
+ </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/libadapter.vcxproj b/ngs-sdk/win/libadapter.vcxproj
deleted file mode 100644
index c3014e7..0000000
--- a/ngs-sdk/win/libadapter.vcxproj
+++ /dev/null
@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
-
- <PropertyGroup Label="Globals">
- <ProjectGuid>{B9096FEF-5B55-4308-A81F-3B52CA968BE9}</ProjectGuid>
- <ProjectName>libngs-adapt-c++</ProjectName>
- </PropertyGroup>
-
- <Import Project="lib-project.props" />
-
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets" />
-
- <ItemGroup>
- <ClInclude Include="..\ngs\adapter\AlignmentItf.hpp" />
- <ClInclude Include="..\ngs\adapter\defs.h" />
- <ClInclude Include="..\ngs\adapter\ErrorMsg.hpp" />
- <ClInclude Include="..\ngs\adapter\FragmentItf.hpp" />
- <ClInclude Include="..\ngs\adapter\PileupEventItf.hpp" />
- <ClInclude Include="..\ngs\adapter\PileupItf.hpp" />
- <ClInclude Include="..\ngs\adapter\ReadCollectionItf.hpp" />
- <ClInclude Include="..\ngs\adapter\ReadGroupItf.hpp" />
- <ClInclude Include="..\ngs\adapter\ReadItf.hpp" />
- <ClInclude Include="..\ngs\adapter\Refcount.hpp" />
- <ClInclude Include="..\ngs\adapter\ReferenceItf.hpp" />
- <ClInclude Include="..\ngs\adapter\ReferenceSequenceItf.hpp" />
- <ClInclude Include="..\ngs\adapter\StatisticsItf.hpp" />
- <ClInclude Include="..\ngs\adapter\StringItf.hpp" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\adapter\AlignmentItf.cpp" />
- <ClCompile Include="..\adapter\ErrBlock.cpp" />
- <ClCompile Include="..\adapter\ErrorMsg.cpp" />
- <ClCompile Include="..\adapter\FragmentItf.cpp" />
- <ClCompile Include="..\adapter\PileupEventItf.cpp" />
- <ClCompile Include="..\adapter\PileupItf.cpp" />
- <ClCompile Include="..\adapter\ReadCollectionItf.cpp" />
- <ClCompile Include="..\adapter\ReadGroupItf.cpp" />
- <ClCompile Include="..\adapter\ReadItf.cpp" />
- <ClCompile Include="..\adapter\Refcount.cpp" />
- <ClCompile Include="..\adapter\ReferenceItf.cpp" />
- <ClCompile Include="..\adapter\ReferenceSequenceItf.cpp" />
- <ClCompile Include="..\adapter\StatisticsItf.cpp" />
- <ClCompile Include="..\adapter\StringItf.cpp" />
- </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/libdispatch.files b/ngs-sdk/win/libdispatch.files
new file mode 100644
index 0000000..594d0a9
--- /dev/null
+++ b/ngs-sdk/win/libdispatch.files
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\AlignmentItf.h" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\AlignmentItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\defs.h" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\ErrBlock.h" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\ErrBlock.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\ErrorMsg.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\FragmentItf.h" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\FragmentItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\PackageItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\PileupEventItf.h" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\PileupEventItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\PileupItf.h" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\PileupItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\ReadCollectionItf.h" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\ReadCollectionItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\ReadGroupItf.h" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\ReadGroupItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\ReadItf.h" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\ReadItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\Refcount.h" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\Refcount.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\ReferenceItf.h" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\ReferenceItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\ReferenceSequenceItf.h" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\ReferenceSequenceItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\StatisticsItf.h" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\StatisticsItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\StringItf.h" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\StringItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\VTable.h" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\ngs\itf\VTable.hpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\AlignmentItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\ErrBlock.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\ErrorMsg.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\FragmentItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\PackageItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\PileupEventItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\PileupItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\ReadCollectionItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\ReadGroupItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\ReadItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\Refcount.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\ReferenceItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\ReferenceSequenceItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\StatisticsItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\StringItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\VTable.cpp" />
+ </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/libdispatch.vcxproj b/ngs-sdk/win/libdispatch.vcxproj
deleted file mode 100644
index 00965da..0000000
--- a/ngs-sdk/win/libdispatch.vcxproj
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
-
- <PropertyGroup Label="Globals">
- <ProjectGuid>{06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}</ProjectGuid>
- <ProjectName>libngs-disp</ProjectName>
- </PropertyGroup>
-
- <Import Project="lib-project.props" />
-
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets" />
-
- <ItemGroup>
- <ClInclude Include="..\ngs\itf\AlignmentItf.h" />
- <ClInclude Include="..\ngs\itf\AlignmentItf.hpp" />
- <ClInclude Include="..\ngs\itf\defs.h" />
- <ClInclude Include="..\ngs\itf\ErrBlock.h" />
- <ClInclude Include="..\ngs\itf\ErrBlock.hpp" />
- <ClInclude Include="..\ngs\itf\ErrorMsg.hpp" />
- <ClInclude Include="..\ngs\itf\FragmentItf.h" />
- <ClInclude Include="..\ngs\itf\FragmentItf.hpp" />
- <ClInclude Include="..\ngs\itf\PackageItf.hpp" />
- <ClInclude Include="..\ngs\itf\PileupEventItf.h" />
- <ClInclude Include="..\ngs\itf\PileupEventItf.hpp" />
- <ClInclude Include="..\ngs\itf\PileupItf.h" />
- <ClInclude Include="..\ngs\itf\PileupItf.hpp" />
- <ClInclude Include="..\ngs\itf\ReadCollectionItf.h" />
- <ClInclude Include="..\ngs\itf\ReadCollectionItf.hpp" />
- <ClInclude Include="..\ngs\itf\ReadGroupItf.h" />
- <ClInclude Include="..\ngs\itf\ReadGroupItf.hpp" />
- <ClInclude Include="..\ngs\itf\ReadItf.h" />
- <ClInclude Include="..\ngs\itf\ReadItf.hpp" />
- <ClInclude Include="..\ngs\itf\Refcount.h" />
- <ClInclude Include="..\ngs\itf\Refcount.hpp" />
- <ClInclude Include="..\ngs\itf\ReferenceItf.h" />
- <ClInclude Include="..\ngs\itf\ReferenceItf.hpp" />
- <ClInclude Include="..\ngs\itf\ReferenceSequenceItf.h" />
- <ClInclude Include="..\ngs\itf\ReferenceSequenceItf.hpp" />
- <ClInclude Include="..\ngs\itf\StatisticsItf.h" />
- <ClInclude Include="..\ngs\itf\StatisticsItf.hpp" />
- <ClInclude Include="..\ngs\itf\StringItf.h" />
- <ClInclude Include="..\ngs\itf\StringItf.hpp" />
- <ClInclude Include="..\ngs\itf\VTable.h" />
- <ClInclude Include="..\ngs\itf\VTable.hpp" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\dispatch\AlignmentItf.cpp" />
- <ClCompile Include="..\dispatch\ErrBlock.cpp" />
- <ClCompile Include="..\dispatch\ErrorMsg.cpp" />
- <ClCompile Include="..\dispatch\FragmentItf.cpp" />
- <ClCompile Include="..\dispatch\PackageItf.cpp" />
- <ClCompile Include="..\dispatch\PileupEventItf.cpp" />
- <ClCompile Include="..\dispatch\PileupItf.cpp" />
- <ClCompile Include="..\dispatch\ReadCollectionItf.cpp" />
- <ClCompile Include="..\dispatch\ReadGroupItf.cpp" />
- <ClCompile Include="..\dispatch\ReadItf.cpp" />
- <ClCompile Include="..\dispatch\Refcount.cpp" />
- <ClCompile Include="..\dispatch\ReferenceItf.cpp" />
- <ClCompile Include="..\dispatch\ReferenceSequenceItf.cpp" />
- <ClCompile Include="..\dispatch\StatisticsItf.cpp" />
- <ClCompile Include="..\dispatch\StringItf.cpp" />
- <ClCompile Include="..\dispatch\VTable.cpp" />
- </ItemGroup>
-
-</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/libngs-c++.files b/ngs-sdk/win/libngs-c++.files
new file mode 100644
index 0000000..7b879b9
--- /dev/null
+++ b/ngs-sdk/win/libngs-c++.files
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\Alignment.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\AlignmentIterator.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\Fragment.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\FragmentIterator.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\Pileup.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\PileupEvent.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\PileupEventIterator.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\PileupIterator.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\Read.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\ReadCollection.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\ReadGroup.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\ReadGroupIterator.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\ReadIterator.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\Reference.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\ReferenceIterator.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\ReferenceSequence.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\Statistics.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\StringRef.cpp" />
+ </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/libngs-c++.vcxproj b/ngs-sdk/win/libngs-c++.vcxproj
deleted file mode 100644
index 3d855cc..0000000
--- a/ngs-sdk/win/libngs-c++.vcxproj
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
-
- <PropertyGroup Label="Globals">
- <ProjectGuid>{A8AC88D2-FADA-4458-A251-DB2E039678A4}</ProjectGuid>
- <ProjectName>libngs-bind-c++</ProjectName>
- </PropertyGroup>
-
- <Import Project="lib-project.props" />
-
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets" />
-
- <ItemGroup>
- <ClCompile Include="..\language\c++\Alignment.cpp" />
- <ClCompile Include="..\language\c++\AlignmentIterator.cpp" />
- <ClCompile Include="..\language\c++\Fragment.cpp" />
- <ClCompile Include="..\language\c++\FragmentIterator.cpp" />
- <ClCompile Include="..\language\c++\Pileup.cpp" />
- <ClCompile Include="..\language\c++\PileupEvent.cpp" />
- <ClCompile Include="..\language\c++\PileupEventIterator.cpp" />
- <ClCompile Include="..\language\c++\PileupIterator.cpp" />
- <ClCompile Include="..\language\c++\Read.cpp" />
- <ClCompile Include="..\language\c++\ReadCollection.cpp" />
- <ClCompile Include="..\language\c++\ReadGroup.cpp" />
- <ClCompile Include="..\language\c++\ReadGroupIterator.cpp" />
- <ClCompile Include="..\language\c++\ReadIterator.cpp" />
- <ClCompile Include="..\language\c++\Reference.cpp" />
- <ClCompile Include="..\language\c++\ReferenceIterator.cpp" />
- <ClCompile Include="..\language\c++\ReferenceSequence.cpp" />
- <ClCompile Include="..\language\c++\Statistics.cpp" />
- <ClCompile Include="..\language\c++\StringRef.cpp" />
- </ItemGroup>
-
-</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/libtest_engine.files b/ngs-sdk/win/libtest_engine.files
new file mode 100644
index 0000000..d0f236f
--- /dev/null
+++ b/ngs-sdk/win/libtest_engine.files
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\test\test_engine\test_engine.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\test\test_engine\AlignmentItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\test\test_engine\PileupEventItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\test\test_engine\PileupItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\test\test_engine\ReadCollectionItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\test\test_engine\ReadGroupItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\test\test_engine\ReadItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\test\test_engine\ReferenceItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\test\test_engine\ReferenceSequenceItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\test\test_engine\StatisticsItf.hpp" />
+ <ClInclude Include="$(NGS_ROOT)ngs-sdk\test\test_engine\test_engine.hpp" />
+ </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/libtest_engine.vcxproj b/ngs-sdk/win/libtest_engine.vcxproj
deleted file mode 100644
index 50b7461..0000000
--- a/ngs-sdk/win/libtest_engine.vcxproj
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <Import Project="lib-project.props" />
- <PropertyGroup Label="Globals">
- <ProjectGuid>{FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}</ProjectGuid>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets" />
- <ItemGroup>
- <ClCompile Include="..\test\test_engine\test_engine.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\test\test_engine\AlignmentItf.hpp" />
- <ClInclude Include="..\test\test_engine\PileupEventItf.hpp" />
- <ClInclude Include="..\test\test_engine\PileupItf.hpp" />
- <ClInclude Include="..\test\test_engine\ReadCollectionItf.hpp" />
- <ClInclude Include="..\test\test_engine\ReadGroupItf.hpp" />
- <ClInclude Include="..\test\test_engine\ReadItf.hpp" />
- <ClInclude Include="..\test\test_engine\ReferenceItf.hpp" />
- <ClInclude Include="..\test\test_engine\ReferenceSequenceItf.hpp" />
- <ClInclude Include="..\test\test_engine\StatisticsItf.hpp" />
- <ClInclude Include="..\test\test_engine\test_engine.hpp" />
- </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/ngs-sdk.files b/ngs-sdk/win/ngs-sdk.files
new file mode 100644
index 0000000..5e43f60
--- /dev/null
+++ b/ngs-sdk/win/ngs-sdk.files
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\AlignmentItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\ErrBlock.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\ErrorMsg.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\FragmentItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\PackageItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\PileupEventItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\PileupItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\ReadCollectionItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\ReadGroupItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\ReadItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\Refcount.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\ReferenceItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\ReferenceSequenceItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\StatisticsItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\StringItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\dispatch\VTable.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\Alignment.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\AlignmentIterator.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\Fragment.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\FragmentIterator.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\Pileup.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\PileupEvent.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\PileupEventIterator.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\PileupIterator.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\Read.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\ReadCollection.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\ReadGroup.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\ReadGroupIterator.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\ReadIterator.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\Reference.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\ReferenceIterator.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\ReferenceSequence.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\Statistics.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\c++\StringRef.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_AlignmentIteratorItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_AlignmentItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_ErrorMsg.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_FragmentItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_Package.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_PileupEventIteratorItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_PileupEventItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_PileupIteratorItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_PileupItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_ReadCollectionItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_ReadGroupIteratorItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_ReadGroupItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_ReadIteratorItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_ReadItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_Refcount.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_ReferenceIteratorItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_ReferenceItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_ReferenceSequenceItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_StatisticsItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\java\jni_String.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_AlignmentIteratorItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_AlignmentItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_FragmentIteratorItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_FragmentItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_PackageItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_PileupEventIteratorItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_PileupEventItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_PileupIteratorItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_PileupItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_ReadCollectionItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_ReadGroupIteratorItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_ReadGroupItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_ReadIteratorItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_ReadItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_Refcount.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_ReferenceIteratorItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_ReferenceItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_ReferenceSequenceItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_StatisticsItf.cpp" />
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\language\python\py_StringItf.cpp" />
+ </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/ngs-sdk.vcxproj b/ngs-sdk/win/ngs-sdk.vcxproj
deleted file mode 100644
index 1f640f5..0000000
--- a/ngs-sdk/win/ngs-sdk.vcxproj
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <Import Project="ngs-common.props" />
- <PropertyGroup Label="Globals">
- <ProjectGuid>{A6A46CB4-760E-4F16-9499-BC712E99FB5D}</ProjectGuid>
- <ProjectName>libngs-sdk</ProjectName>
- </PropertyGroup>
- <PropertyGroup>
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <TargetExt>.dll</TargetExt>
- <OutDir>$(NGS_TARGET)\bin\</OutDir>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ItemDefinitionGroup>
- <ClCompile>
- <PreprocessorDefinitions>_LIBRARY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <AdditionalIncludeDirectories>..\language\java;..\language\python;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessToFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</PreprocessToFile>
- </ClCompile>
- <Link>
- <NoEntryPoint>false</NoEntryPoint>
- </Link>
- <ProjectReference>
- <UseLibraryDependencyInputs>true</UseLibraryDependencyInputs>
- </ProjectReference>
- </ItemDefinitionGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets" />
- <ItemGroup>
- <ClCompile Include="..\dispatch\AlignmentItf.cpp" />
- <ClCompile Include="..\dispatch\ErrBlock.cpp" />
- <ClCompile Include="..\dispatch\ErrorMsg.cpp" />
- <ClCompile Include="..\dispatch\FragmentItf.cpp" />
- <ClCompile Include="..\dispatch\PackageItf.cpp" />
- <ClCompile Include="..\dispatch\PileupEventItf.cpp" />
- <ClCompile Include="..\dispatch\PileupItf.cpp" />
- <ClCompile Include="..\dispatch\ReadCollectionItf.cpp" />
- <ClCompile Include="..\dispatch\ReadGroupItf.cpp" />
- <ClCompile Include="..\dispatch\ReadItf.cpp" />
- <ClCompile Include="..\dispatch\Refcount.cpp" />
- <ClCompile Include="..\dispatch\ReferenceItf.cpp" />
- <ClCompile Include="..\dispatch\ReferenceSequenceItf.cpp" />
- <ClCompile Include="..\dispatch\StatisticsItf.cpp" />
- <ClCompile Include="..\dispatch\StringItf.cpp" />
- <ClCompile Include="..\dispatch\VTable.cpp" />
- <ClCompile Include="..\language\c++\Alignment.cpp" />
- <ClCompile Include="..\language\c++\AlignmentIterator.cpp" />
- <ClCompile Include="..\language\c++\Fragment.cpp" />
- <ClCompile Include="..\language\c++\FragmentIterator.cpp" />
- <ClCompile Include="..\language\c++\Pileup.cpp" />
- <ClCompile Include="..\language\c++\PileupEvent.cpp" />
- <ClCompile Include="..\language\c++\PileupEventIterator.cpp" />
- <ClCompile Include="..\language\c++\PileupIterator.cpp" />
- <ClCompile Include="..\language\c++\Read.cpp" />
- <ClCompile Include="..\language\c++\ReadCollection.cpp" />
- <ClCompile Include="..\language\c++\ReadGroup.cpp" />
- <ClCompile Include="..\language\c++\ReadGroupIterator.cpp" />
- <ClCompile Include="..\language\c++\ReadIterator.cpp" />
- <ClCompile Include="..\language\c++\Reference.cpp" />
- <ClCompile Include="..\language\c++\ReferenceIterator.cpp" />
- <ClCompile Include="..\language\c++\ReferenceSequence.cpp" />
- <ClCompile Include="..\language\c++\Statistics.cpp" />
- <ClCompile Include="..\language\c++\StringRef.cpp" />
- <ClCompile Include="..\language\java\jni_AlignmentIteratorItf.cpp" />
- <ClCompile Include="..\language\java\jni_AlignmentItf.cpp" />
- <ClCompile Include="..\language\java\jni_ErrorMsg.cpp" />
- <ClCompile Include="..\language\java\jni_FragmentItf.cpp" />
- <ClCompile Include="..\language\java\jni_Package.cpp" />
- <ClCompile Include="..\language\java\jni_PileupEventIteratorItf.cpp" />
- <ClCompile Include="..\language\java\jni_PileupEventItf.cpp" />
- <ClCompile Include="..\language\java\jni_PileupIteratorItf.cpp" />
- <ClCompile Include="..\language\java\jni_PileupItf.cpp" />
- <ClCompile Include="..\language\java\jni_ReadCollectionItf.cpp" />
- <ClCompile Include="..\language\java\jni_ReadGroupIteratorItf.cpp" />
- <ClCompile Include="..\language\java\jni_ReadGroupItf.cpp" />
- <ClCompile Include="..\language\java\jni_ReadIteratorItf.cpp" />
- <ClCompile Include="..\language\java\jni_ReadItf.cpp" />
- <ClCompile Include="..\language\java\jni_Refcount.cpp" />
- <ClCompile Include="..\language\java\jni_ReferenceIteratorItf.cpp" />
- <ClCompile Include="..\language\java\jni_ReferenceItf.cpp" />
- <ClCompile Include="..\language\java\jni_ReferenceSequenceItf.cpp" />
- <ClCompile Include="..\language\java\jni_StatisticsItf.cpp" />
- <ClCompile Include="..\language\java\jni_String.cpp" />
- <ClCompile Include="..\language\python\py_AlignmentIteratorItf.cpp" />
- <ClCompile Include="..\language\python\py_AlignmentItf.cpp" />
- <ClCompile Include="..\language\python\py_ErrorMsg.cpp" />
- <ClCompile Include="..\language\python\py_FragmentIteratorItf.cpp" />
- <ClCompile Include="..\language\python\py_FragmentItf.cpp" />
- <ClCompile Include="..\language\python\py_PackageItf.cpp" />
- <ClCompile Include="..\language\python\py_PileupEventIteratorItf.cpp" />
- <ClCompile Include="..\language\python\py_PileupEventItf.cpp" />
- <ClCompile Include="..\language\python\py_PileupIteratorItf.cpp" />
- <ClCompile Include="..\language\python\py_PileupItf.cpp" />
- <ClCompile Include="..\language\python\py_ReadCollectionItf.cpp" />
- <ClCompile Include="..\language\python\py_ReadGroupIteratorItf.cpp" />
- <ClCompile Include="..\language\python\py_ReadGroupItf.cpp" />
- <ClCompile Include="..\language\python\py_ReadIteratorItf.cpp" />
- <ClCompile Include="..\language\python\py_ReadItf.cpp" />
- <ClCompile Include="..\language\python\py_Refcount.cpp" />
- <ClCompile Include="..\language\python\py_ReferenceIteratorItf.cpp" />
- <ClCompile Include="..\language\python\py_ReferenceItf.cpp" />
- <ClCompile Include="..\language\python\py_ReferenceSequenceItf.cpp" />
- <ClCompile Include="..\language\python\py_StatisticsItf.cpp" />
- <ClCompile Include="..\language\python\py_StringItf.cpp" />
- </ItemGroup>
-</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/ngs-test.files b/ngs-sdk/win/ngs-test.files
new file mode 100644
index 0000000..d8d43c5
--- /dev/null
+++ b/ngs-sdk/win/ngs-test.files
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <ClCompile Include="$(NGS_ROOT)ngs-sdk\test\ngs-test\main.cpp" />
+ </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/vs2010/.gitignore b/ngs-sdk/win/vs2010/.gitignore
new file mode 100644
index 0000000..98bbf52
--- /dev/null
+++ b/ngs-sdk/win/vs2010/.gitignore
@@ -0,0 +1,4 @@
+*.user
+*.sdf
+*.suo
+*.opensdf
\ No newline at end of file
diff --git a/ngs-sdk/win/vs2010/ipch/libadapter-2137bad9/libngs-adapt-c++-4ff9a6f5.ipch b/ngs-sdk/win/vs2010/ipch/libadapter-2137bad9/libngs-adapt-c++-4ff9a6f5.ipch
new file mode 100644
index 0000000..f2237f9
Binary files /dev/null and b/ngs-sdk/win/vs2010/ipch/libadapter-2137bad9/libngs-adapt-c++-4ff9a6f5.ipch differ
diff --git a/ngs-sdk/win/lib-project.props b/ngs-sdk/win/vs2010/lib-project.props
similarity index 57%
copy from ngs-sdk/win/lib-project.props
copy to ngs-sdk/win/vs2010/lib-project.props
index d5834bf..a117aa2 100644
--- a/ngs-sdk/win/lib-project.props
+++ b/ngs-sdk/win/vs2010/lib-project.props
@@ -9,5 +9,12 @@
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets" />
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ </ItemDefinitionGroup>
</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/vs2010/libadapter.vcxproj b/ngs-sdk/win/vs2010/libadapter.vcxproj
new file mode 100644
index 0000000..94f8ae2
--- /dev/null
+++ b/ngs-sdk/win/vs2010/libadapter.vcxproj
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{B9096FEF-5B55-4308-A81F-3B52CA968BE9}</ProjectGuid>
+ <ProjectName>libngs-adapt-c++</ProjectName>
+ </PropertyGroup>
+ <Import Project="lib-project.props" />
+ <Import Project="..\libadapter.files" />
+</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/libadapter.vcxproj.filters b/ngs-sdk/win/vs2010/libadapter.vcxproj.filters
similarity index 100%
copy from ngs-sdk/win/libadapter.vcxproj.filters
copy to ngs-sdk/win/vs2010/libadapter.vcxproj.filters
diff --git a/ngs-sdk/win/vs2010/libdispatch.vcxproj b/ngs-sdk/win/vs2010/libdispatch.vcxproj
new file mode 100644
index 0000000..3045015
--- /dev/null
+++ b/ngs-sdk/win/vs2010/libdispatch.vcxproj
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}</ProjectGuid>
+ <ProjectName>libngs-disp</ProjectName>
+ </PropertyGroup>
+ <Import Project="lib-project.props" />
+ <Import Project="..\libdispatch.files" />
+</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/libdispatch.vcxproj.filters b/ngs-sdk/win/vs2010/libdispatch.vcxproj.filters
similarity index 100%
copy from ngs-sdk/win/libdispatch.vcxproj.filters
copy to ngs-sdk/win/vs2010/libdispatch.vcxproj.filters
diff --git a/ngs-sdk/win/vs2010/libngs-c++.vcxproj b/ngs-sdk/win/vs2010/libngs-c++.vcxproj
new file mode 100644
index 0000000..a932bb7
--- /dev/null
+++ b/ngs-sdk/win/vs2010/libngs-c++.vcxproj
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{A8AC88D2-FADA-4458-A251-DB2E039678A4}</ProjectGuid>
+ <ProjectName>libngs-bind-c++</ProjectName>
+ </PropertyGroup>
+ <Import Project="lib-project.props" />
+ <Import Project="..\libngs-c++.files" />
+</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/libngs-c++.vcxproj.filters b/ngs-sdk/win/vs2010/libngs-c++.vcxproj.filters
similarity index 100%
copy from ngs-sdk/win/libngs-c++.vcxproj.filters
copy to ngs-sdk/win/vs2010/libngs-c++.vcxproj.filters
diff --git a/ngs-sdk/win/vs2010/libtest_engine.vcxproj b/ngs-sdk/win/vs2010/libtest_engine.vcxproj
new file mode 100644
index 0000000..81f3d67
--- /dev/null
+++ b/ngs-sdk/win/vs2010/libtest_engine.vcxproj
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="lib-project.props" />
+ <Import Project="..\libtest_engine.files" />
+</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/libtest_engine.vcxproj.filters b/ngs-sdk/win/vs2010/libtest_engine.vcxproj.filters
similarity index 100%
copy from ngs-sdk/win/libtest_engine.vcxproj.filters
copy to ngs-sdk/win/vs2010/libtest_engine.vcxproj.filters
diff --git a/ngs-sdk/win/ngs-common.props b/ngs-sdk/win/vs2010/ngs-common.props
similarity index 84%
copy from ngs-sdk/win/ngs-common.props
copy to ngs-sdk/win/vs2010/ngs-common.props
index ddfa645..b15bfef 100644
--- a/ngs-sdk/win/ngs-common.props
+++ b/ngs-sdk/win/vs2010/ngs-common.props
@@ -1,16 +1,24 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <Import Condition="Exists('$(ProjectDir)..\Makefile.config.win')" Project="$(ProjectDir)..\Makefile.config.win" />
+ <PropertyGroup Label="Configuration">
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Label="Globals">
<Platform Condition="'$(Platform)' == ''">x64</Platform>
<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
- <NGS_ROOT Condition="'$(NGS_ROOT)' == ''">$(ProjectDir)..\..\</NGS_ROOT>
- <NGS_OUTDIR Condition="'$(NGS_OUTDIR)' == ''">$(NGS_ROOT)..\OUTDIR\</NGS_OUTDIR>
- <NGS_TARGET Condition="'$(NGS_TARGET)' == ''">$(NGS_OUTDIR)win\cl\$(Platform)\$(Configuration)\</NGS_TARGET>
+ <NGS_ROOT Condition="'$(NGS_ROOT)' == ''">$(ProjectDir)..\..\..\</NGS_ROOT>
+ <NGS_OUTDIR Condition="'$(NGS_OUTDIR)' == ''">$(NGS_ROOT)..\OUTDIR\ngs-sdk\</NGS_OUTDIR>
+ <NGS_TARGET Condition="'$(NGS_TARGET)' == ''">$(NGS_OUTDIR)win\$(PlatformToolset)\$(Platform)\$(Configuration)\</NGS_TARGET>
</PropertyGroup>
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ </ItemDefinitionGroup>
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
@@ -34,10 +42,9 @@
<CompileAsManaged>false</CompileAsManaged>
<MinimalRebuild>true</MinimalRebuild>
<DisableLanguageExtensions>false</DisableLanguageExtensions>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4996;4101;4251;4290</DisableSpecificWarnings>
<StringPooling>true</StringPooling>
- <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)..;$(ProjectDir)..\ngs\win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories>$(NGS_ROOT)\ngs-sdk;$(NGS_ROOT)\ngs-sdk\ngs\win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
diff --git a/ngs-sdk/win/ngs-sdk.sln b/ngs-sdk/win/vs2010/ngs-sdk.sln
similarity index 100%
copy from ngs-sdk/win/ngs-sdk.sln
copy to ngs-sdk/win/vs2010/ngs-sdk.sln
diff --git a/ngs-sdk/win/vs2010/ngs-sdk.vcxproj b/ngs-sdk/win/vs2010/ngs-sdk.vcxproj
new file mode 100644
index 0000000..e483ac2
--- /dev/null
+++ b/ngs-sdk/win/vs2010/ngs-sdk.vcxproj
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <Import Project="ngs-common.props" />
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{A6A46CB4-760E-4F16-9499-BC712E99FB5D}</ProjectGuid>
+ <ProjectName>libngs-sdk</ProjectName>
+ </PropertyGroup>
+ <PropertyGroup>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <TargetExt>.dll</TargetExt>
+ <OutDir>$(NGS_TARGET)\bin\</OutDir>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <PreprocessorDefinitions>_LIBRARY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>$(NGS_ROOT)ngs-sdk\language\java;$(NGS_ROOT)ngs-sdk\language\python;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessToFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</PreprocessToFile>
+ </ClCompile>
+ <Link>
+ <NoEntryPoint>false</NoEntryPoint>
+ </Link>
+ <ProjectReference>
+ <UseLibraryDependencyInputs>true</UseLibraryDependencyInputs>
+ </ProjectReference>
+ </ItemDefinitionGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+
+ <ImportGroup Label="ExtensionTargets" />
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ </ItemDefinitionGroup>
+
+ <Import Project="..\ngs-sdk.files" />
+</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/ngs-sdk.vcxproj.filters b/ngs-sdk/win/vs2010/ngs-sdk.vcxproj.filters
similarity index 100%
copy from ngs-sdk/win/ngs-sdk.vcxproj.filters
copy to ngs-sdk/win/vs2010/ngs-sdk.vcxproj.filters
diff --git a/ngs-sdk/win/ngs-test.vcxproj b/ngs-sdk/win/vs2010/ngs-test.vcxproj
similarity index 59%
copy from ngs-sdk/win/ngs-test.vcxproj
copy to ngs-sdk/win/vs2010/ngs-test.vcxproj
index 4266c3b..2b073ca 100644
--- a/ngs-sdk/win/ngs-test.vcxproj
+++ b/ngs-sdk/win/vs2010/ngs-test.vcxproj
@@ -1,38 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
-
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
<Import Project="ngs-common.props" />
-
<PropertyGroup Label="Globals">
<ProjectGuid>{33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}</ProjectGuid>
</PropertyGroup>
-
<PropertyGroup>
<ConfigurationType>Application</ConfigurationType>
<TargetExt>.exe</TargetExt>
<OutDir>$(NGS_TARGET)\bin\</OutDir>
</PropertyGroup>
-
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-
<ItemGroup>
<ProjectReference Include="libadapter.vcxproj">
<Project>{b9096fef-5b55-4308-a81f-3b52ca968be9}</Project>
@@ -47,14 +42,15 @@
<Project>{fb574d6f-8684-45ae-a0af-b52ba67e9fde}</Project>
</ProjectReference>
</ItemGroup>
-
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-
<ImportGroup Label="ExtensionTargets" />
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\test\ngs-test\main.cpp" />
- </ItemGroup>
+ <Import Project="..\ngs-test.files" />
<Target Name="AfterBuild" Condition="'$(Autorun)'=='true'">
<Exec Command="$(OutDir)$(TargetName)$(TargetExt)" WorkingDirectory="$(ProjectDir)\" />
diff --git a/ngs-sdk/win/ngs-test.vcxproj.filters b/ngs-sdk/win/vs2010/ngs-test.vcxproj.filters
similarity index 100%
copy from ngs-sdk/win/ngs-test.vcxproj.filters
copy to ngs-sdk/win/vs2010/ngs-test.vcxproj.filters
diff --git a/ngs-sdk/win/vs2013/.gitignore b/ngs-sdk/win/vs2013/.gitignore
new file mode 100644
index 0000000..98bbf52
--- /dev/null
+++ b/ngs-sdk/win/vs2013/.gitignore
@@ -0,0 +1,4 @@
+*.user
+*.sdf
+*.suo
+*.opensdf
\ No newline at end of file
diff --git a/ngs-sdk/win/lib-project.props b/ngs-sdk/win/vs2013/lib-project.props
similarity index 57%
rename from ngs-sdk/win/lib-project.props
rename to ngs-sdk/win/vs2013/lib-project.props
index d5834bf..a117aa2 100644
--- a/ngs-sdk/win/lib-project.props
+++ b/ngs-sdk/win/vs2013/lib-project.props
@@ -9,5 +9,12 @@
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets" />
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ </ItemDefinitionGroup>
</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/vs2013/libadapter.vcxproj b/ngs-sdk/win/vs2013/libadapter.vcxproj
new file mode 100644
index 0000000..a638948
--- /dev/null
+++ b/ngs-sdk/win/vs2013/libadapter.vcxproj
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{B9096FEF-5B55-4308-A81F-3B52CA968BE9}</ProjectGuid>
+ <ProjectName>libngs-adapt-c++</ProjectName>
+ </PropertyGroup>
+ <Import Project="lib-project.props" />
+ <Import Project="..\libadapter.files" />
+</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/libadapter.vcxproj.filters b/ngs-sdk/win/vs2013/libadapter.vcxproj.filters
similarity index 97%
rename from ngs-sdk/win/libadapter.vcxproj.filters
rename to ngs-sdk/win/vs2013/libadapter.vcxproj.filters
index 4045d51..4d9e3e0 100644
--- a/ngs-sdk/win/libadapter.vcxproj.filters
+++ b/ngs-sdk/win/vs2013/libadapter.vcxproj.filters
@@ -1,101 +1,101 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\ngs\adapter\AlignmentItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ngs\adapter\ErrorMsg.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ngs\adapter\FragmentItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ngs\adapter\PileupEventItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ngs\adapter\PileupItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ngs\adapter\ReadCollectionItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ngs\adapter\ReadGroupItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ngs\adapter\ReadItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ngs\adapter\Refcount.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ngs\adapter\ReferenceItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ngs\adapter\ReferenceSequenceItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ngs\adapter\StatisticsItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ngs\adapter\StringItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\ngs\adapter\defs.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\adapter\AlignmentItf.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\adapter\ErrorMsg.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\adapter\FragmentItf.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\adapter\PileupEventItf.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\adapter\PileupItf.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\adapter\ReadCollectionItf.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\adapter\ReadGroupItf.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\adapter\ReadItf.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\adapter\Refcount.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\adapter\ReferenceItf.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\adapter\ReferenceSequenceItf.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\adapter\StatisticsItf.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\adapter\StringItf.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\adapter\ErrBlock.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\ngs\adapter\AlignmentItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\ngs\adapter\ErrorMsg.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\ngs\adapter\FragmentItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\ngs\adapter\PileupEventItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\ngs\adapter\PileupItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\ngs\adapter\ReadCollectionItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\ngs\adapter\ReadGroupItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\ngs\adapter\ReadItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\ngs\adapter\Refcount.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\ngs\adapter\ReferenceItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\ngs\adapter\ReferenceSequenceItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\ngs\adapter\StatisticsItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\ngs\adapter\StringItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\ngs\adapter\defs.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\adapter\AlignmentItf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\adapter\ErrorMsg.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\adapter\FragmentItf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\adapter\PileupEventItf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\adapter\PileupItf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\adapter\ReadCollectionItf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\adapter\ReadGroupItf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\adapter\ReadItf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\adapter\Refcount.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\adapter\ReferenceItf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\adapter\ReferenceSequenceItf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\adapter\StatisticsItf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\adapter\StringItf.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\adapter\ErrBlock.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/vs2013/libdispatch.vcxproj b/ngs-sdk/win/vs2013/libdispatch.vcxproj
new file mode 100644
index 0000000..0095838
--- /dev/null
+++ b/ngs-sdk/win/vs2013/libdispatch.vcxproj
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}</ProjectGuid>
+ <ProjectName>libngs-disp</ProjectName>
+ </PropertyGroup>
+ <Import Project="lib-project.props" />
+ <Import Project="..\libdispatch.files" />
+</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/libdispatch.vcxproj.filters b/ngs-sdk/win/vs2013/libdispatch.vcxproj.filters
similarity index 100%
rename from ngs-sdk/win/libdispatch.vcxproj.filters
rename to ngs-sdk/win/vs2013/libdispatch.vcxproj.filters
diff --git a/ngs-sdk/win/vs2013/libngs-c++.vcxproj b/ngs-sdk/win/vs2013/libngs-c++.vcxproj
new file mode 100644
index 0000000..49b427b
--- /dev/null
+++ b/ngs-sdk/win/vs2013/libngs-c++.vcxproj
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{A8AC88D2-FADA-4458-A251-DB2E039678A4}</ProjectGuid>
+ <ProjectName>libngs-bind-c++</ProjectName>
+ </PropertyGroup>
+ <Import Project="lib-project.props" />
+ <Import Project="..\libngs-c++.files" />
+</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/libngs-c++.vcxproj.filters b/ngs-sdk/win/vs2013/libngs-c++.vcxproj.filters
similarity index 100%
rename from ngs-sdk/win/libngs-c++.vcxproj.filters
rename to ngs-sdk/win/vs2013/libngs-c++.vcxproj.filters
diff --git a/ngs-sdk/win/vs2013/libtest_engine.vcxproj b/ngs-sdk/win/vs2013/libtest_engine.vcxproj
new file mode 100644
index 0000000..d226360
--- /dev/null
+++ b/ngs-sdk/win/vs2013/libtest_engine.vcxproj
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}</ProjectGuid>
+ </PropertyGroup>
+ <Import Project="lib-project.props" />
+ <Import Project="..\libtest_engine.files" />
+</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/libtest_engine.vcxproj.filters b/ngs-sdk/win/vs2013/libtest_engine.vcxproj.filters
similarity index 96%
rename from ngs-sdk/win/libtest_engine.vcxproj.filters
rename to ngs-sdk/win/vs2013/libtest_engine.vcxproj.filters
index e46c04c..f90d4ec 100644
--- a/ngs-sdk/win/libtest_engine.vcxproj.filters
+++ b/ngs-sdk/win/vs2013/libtest_engine.vcxproj.filters
@@ -1,50 +1,50 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\test\test_engine\test_engine.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\test\test_engine\AlignmentItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\test\test_engine\PileupEventItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\test\test_engine\PileupItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\test\test_engine\ReadCollectionItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\test\test_engine\ReadGroupItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\test\test_engine\ReadItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\test\test_engine\ReferenceItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\test\test_engine\ReferenceSequenceItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\test\test_engine\StatisticsItf.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\test\test_engine\test_engine.hpp">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\test\test_engine\test_engine.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\test\test_engine\AlignmentItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\test\test_engine\PileupEventItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\test\test_engine\PileupItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\test\test_engine\ReadCollectionItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\test\test_engine\ReadGroupItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\test\test_engine\ReadItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\test\test_engine\ReferenceItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\test\test_engine\ReferenceSequenceItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\test\test_engine\StatisticsItf.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\test\test_engine\test_engine.hpp">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/ngs-common.props b/ngs-sdk/win/vs2013/ngs-common.props
similarity index 68%
rename from ngs-sdk/win/ngs-common.props
rename to ngs-sdk/win/vs2013/ngs-common.props
index ddfa645..f2ee1b8 100644
--- a/ngs-sdk/win/ngs-common.props
+++ b/ngs-sdk/win/vs2013/ngs-common.props
@@ -1,16 +1,43 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <Import Condition="Exists('$(ProjectDir)..\Makefile.config.win')" Project="$(ProjectDir)..\Makefile.config.win" />
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+
+ <PropertyGroup Label="Configuration">
+ <PlatformToolset>v120</PlatformToolset>
+ </PropertyGroup>
<PropertyGroup Label="Globals">
<Platform Condition="'$(Platform)' == ''">x64</Platform>
<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
- <NGS_ROOT Condition="'$(NGS_ROOT)' == ''">$(ProjectDir)..\..\</NGS_ROOT>
- <NGS_OUTDIR Condition="'$(NGS_OUTDIR)' == ''">$(NGS_ROOT)..\OUTDIR\</NGS_OUTDIR>
- <NGS_TARGET Condition="'$(NGS_TARGET)' == ''">$(NGS_OUTDIR)win\cl\$(Platform)\$(Configuration)\</NGS_TARGET>
+ <NGS_ROOT Condition="'$(NGS_ROOT)' == ''">$(ProjectDir)..\..\..\</NGS_ROOT>
+ <NGS_OUTDIR Condition="'$(NGS_OUTDIR)' == ''">$(NGS_ROOT)..\OUTDIR\ngs-sdk\</NGS_OUTDIR>
+ <NGS_TARGET Condition="'$(NGS_TARGET)' == ''">$(NGS_OUTDIR)win\$(PlatformToolset)\$(Platform)\$(Configuration)\</NGS_TARGET>
</PropertyGroup>
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ </ItemDefinitionGroup>
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Label="Configuration">
@@ -34,10 +61,9 @@
<CompileAsManaged>false</CompileAsManaged>
<MinimalRebuild>true</MinimalRebuild>
<DisableLanguageExtensions>false</DisableLanguageExtensions>
- <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<DisableSpecificWarnings>4996;4101;4251;4290</DisableSpecificWarnings>
- <StringPooling>true</StringPooling>
- <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)..;$(ProjectDir)..\ngs\win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <StringPooling>true</StringPooling>
+ <AdditionalIncludeDirectories>$(NGS_ROOT)\ngs-sdk;$(NGS_ROOT)\ngs-sdk\ngs\win;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
@@ -66,4 +92,4 @@
</Link>
</ItemDefinitionGroup>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/ngs-sdk/win/ngs-sdk.sln b/ngs-sdk/win/vs2013/ngs-sdk.sln
similarity index 98%
rename from ngs-sdk/win/ngs-sdk.sln
rename to ngs-sdk/win/vs2013/ngs-sdk.sln
index 8f12834..7b956fd 100644
--- a/ngs-sdk/win/ngs-sdk.sln
+++ b/ngs-sdk/win/vs2013/ngs-sdk.sln
@@ -1,125 +1,125 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libngs-adapt-c++", "libadapter.vcxproj", "{B9096FEF-5B55-4308-A81F-3B52CA968BE9}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libngs-disp", "libdispatch.vcxproj", "{06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libngs-bind-c++", "libngs-c++.vcxproj", "{A8AC88D2-FADA-4458-A251-DB2E039678A4}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtest_engine", "libtest_engine.vcxproj", "{FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ngs-test", "ngs-test.vcxproj", "{33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "HeaderFiles", "HeaderFiles", "{3F19C31D-C662-4909-84F1-FCB983178DEE}"
- ProjectSection(SolutionItems) = preProject
- ..\ngs\Alignment.hpp = ..\ngs\Alignment.hpp
- ..\ngs\AlignmentIterator.hpp = ..\ngs\AlignmentIterator.hpp
- ..\ngs\defs.h = ..\ngs\defs.h
- ..\ngs\ErrorMsg.hpp = ..\ngs\ErrorMsg.hpp
- ..\ngs\Fragment.hpp = ..\ngs\Fragment.hpp
- ..\ngs\FragmentIterator.hpp = ..\ngs\FragmentIterator.hpp
- ..\ngs\Pileup.hpp = ..\ngs\Pileup.hpp
- ..\ngs\PileupEvent.hpp = ..\ngs\PileupEvent.hpp
- ..\ngs\PileupEventIterator.hpp = ..\ngs\PileupEventIterator.hpp
- ..\ngs\PileupIterator.hpp = ..\ngs\PileupIterator.hpp
- ..\ngs\Read.hpp = ..\ngs\Read.hpp
- ..\ngs\ReadCollection.hpp = ..\ngs\ReadCollection.hpp
- ..\ngs\ReadGroup.hpp = ..\ngs\ReadGroup.hpp
- ..\ngs\ReadGroupIterator.hpp = ..\ngs\ReadGroupIterator.hpp
- ..\ngs\ReadIterator.hpp = ..\ngs\ReadIterator.hpp
- ..\ngs\Reference.hpp = ..\ngs\Reference.hpp
- ..\ngs\ReferenceIterator.hpp = ..\ngs\ReferenceIterator.hpp
- ..\ngs\ReferenceSequence.hpp = ..\ngs\ReferenceSequence.hpp
- ..\ngs\Statistics.hpp = ..\ngs\Statistics.hpp
- ..\ngs\StringRef.hpp = ..\ngs\StringRef.hpp
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "inl", "inl", "{D3CE4594-5886-4BD8-97A0-69449C45820E}"
- ProjectSection(SolutionItems) = preProject
- ..\ngs\inl\Alignment.hpp = ..\ngs\inl\Alignment.hpp
- ..\ngs\inl\AlignmentIterator.hpp = ..\ngs\inl\AlignmentIterator.hpp
- ..\ngs\inl\Fragment.hpp = ..\ngs\inl\Fragment.hpp
- ..\ngs\inl\FragmentIterator.hpp = ..\ngs\inl\FragmentIterator.hpp
- ..\ngs\inl\Pileup.hpp = ..\ngs\inl\Pileup.hpp
- ..\ngs\inl\PileupEvent.hpp = ..\ngs\inl\PileupEvent.hpp
- ..\ngs\inl\PileupEventIterator.hpp = ..\ngs\inl\PileupEventIterator.hpp
- ..\ngs\inl\PileupIterator.hpp = ..\ngs\inl\PileupIterator.hpp
- ..\ngs\inl\Read.hpp = ..\ngs\inl\Read.hpp
- ..\ngs\inl\ReadCollection.hpp = ..\ngs\inl\ReadCollection.hpp
- ..\ngs\inl\ReadGroup.hpp = ..\ngs\inl\ReadGroup.hpp
- ..\ngs\inl\ReadGroupIterator.hpp = ..\ngs\inl\ReadGroupIterator.hpp
- ..\ngs\inl\ReadIterator.hpp = ..\ngs\inl\ReadIterator.hpp
- ..\ngs\inl\Reference.hpp = ..\ngs\inl\Reference.hpp
- ..\ngs\inl\ReferenceIterator.hpp = ..\ngs\inl\ReferenceIterator.hpp
- ..\ngs\inl\ReferenceSequence.hpp = ..\ngs\inl\ReferenceSequence.hpp
- ..\ngs\inl\Statistics.hpp = ..\ngs\inl\Statistics.hpp
- ..\ngs\inl\StringRef.hpp = ..\ngs\inl\StringRef.hpp
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libngs-sdk", "ngs-sdk.vcxproj", "{A6A46CB4-760E-4F16-9499-BC712E99FB5D}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Debug|x64 = Debug|x64
- Release|Win32 = Release|Win32
- Release|x64 = Release|x64
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {B9096FEF-5B55-4308-A81F-3B52CA968BE9}.Debug|Win32.ActiveCfg = Debug|Win32
- {B9096FEF-5B55-4308-A81F-3B52CA968BE9}.Debug|Win32.Build.0 = Debug|Win32
- {B9096FEF-5B55-4308-A81F-3B52CA968BE9}.Debug|x64.ActiveCfg = Debug|x64
- {B9096FEF-5B55-4308-A81F-3B52CA968BE9}.Debug|x64.Build.0 = Debug|x64
- {B9096FEF-5B55-4308-A81F-3B52CA968BE9}.Release|Win32.ActiveCfg = Release|Win32
- {B9096FEF-5B55-4308-A81F-3B52CA968BE9}.Release|Win32.Build.0 = Release|Win32
- {B9096FEF-5B55-4308-A81F-3B52CA968BE9}.Release|x64.ActiveCfg = Release|x64
- {B9096FEF-5B55-4308-A81F-3B52CA968BE9}.Release|x64.Build.0 = Release|x64
- {06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}.Debug|Win32.ActiveCfg = Debug|Win32
- {06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}.Debug|Win32.Build.0 = Debug|Win32
- {06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}.Debug|x64.ActiveCfg = Debug|x64
- {06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}.Debug|x64.Build.0 = Debug|x64
- {06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}.Release|Win32.ActiveCfg = Release|Win32
- {06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}.Release|Win32.Build.0 = Release|Win32
- {06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}.Release|x64.ActiveCfg = Release|x64
- {06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}.Release|x64.Build.0 = Release|x64
- {A8AC88D2-FADA-4458-A251-DB2E039678A4}.Debug|Win32.ActiveCfg = Debug|Win32
- {A8AC88D2-FADA-4458-A251-DB2E039678A4}.Debug|Win32.Build.0 = Debug|Win32
- {A8AC88D2-FADA-4458-A251-DB2E039678A4}.Debug|x64.ActiveCfg = Debug|x64
- {A8AC88D2-FADA-4458-A251-DB2E039678A4}.Debug|x64.Build.0 = Debug|x64
- {A8AC88D2-FADA-4458-A251-DB2E039678A4}.Release|Win32.ActiveCfg = Release|Win32
- {A8AC88D2-FADA-4458-A251-DB2E039678A4}.Release|Win32.Build.0 = Release|Win32
- {A8AC88D2-FADA-4458-A251-DB2E039678A4}.Release|x64.ActiveCfg = Release|x64
- {A8AC88D2-FADA-4458-A251-DB2E039678A4}.Release|x64.Build.0 = Release|x64
- {FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}.Debug|Win32.ActiveCfg = Debug|Win32
- {FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}.Debug|Win32.Build.0 = Debug|Win32
- {FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}.Debug|x64.ActiveCfg = Debug|x64
- {FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}.Debug|x64.Build.0 = Debug|x64
- {FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}.Release|Win32.ActiveCfg = Release|Win32
- {FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}.Release|Win32.Build.0 = Release|Win32
- {FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}.Release|x64.ActiveCfg = Release|x64
- {FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}.Release|x64.Build.0 = Release|x64
- {33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}.Debug|Win32.ActiveCfg = Debug|Win32
- {33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}.Debug|Win32.Build.0 = Debug|Win32
- {33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}.Debug|x64.ActiveCfg = Debug|x64
- {33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}.Debug|x64.Build.0 = Debug|x64
- {33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}.Release|Win32.ActiveCfg = Release|Win32
- {33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}.Release|Win32.Build.0 = Release|Win32
- {33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}.Release|x64.ActiveCfg = Release|x64
- {33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}.Release|x64.Build.0 = Release|x64
- {A6A46CB4-760E-4F16-9499-BC712E99FB5D}.Debug|Win32.ActiveCfg = Debug|Win32
- {A6A46CB4-760E-4F16-9499-BC712E99FB5D}.Debug|Win32.Build.0 = Debug|Win32
- {A6A46CB4-760E-4F16-9499-BC712E99FB5D}.Debug|x64.ActiveCfg = Debug|x64
- {A6A46CB4-760E-4F16-9499-BC712E99FB5D}.Debug|x64.Build.0 = Debug|x64
- {A6A46CB4-760E-4F16-9499-BC712E99FB5D}.Release|Win32.ActiveCfg = Release|Win32
- {A6A46CB4-760E-4F16-9499-BC712E99FB5D}.Release|Win32.Build.0 = Release|Win32
- {A6A46CB4-760E-4F16-9499-BC712E99FB5D}.Release|x64.ActiveCfg = Release|x64
- {A6A46CB4-760E-4F16-9499-BC712E99FB5D}.Release|x64.Build.0 = Release|x64
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {D3CE4594-5886-4BD8-97A0-69449C45820E} = {3F19C31D-C662-4909-84F1-FCB983178DEE}
- EndGlobalSection
-EndGlobal
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libngs-adapt-c++", "libadapter.vcxproj", "{B9096FEF-5B55-4308-A81F-3B52CA968BE9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libngs-disp", "libdispatch.vcxproj", "{06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libngs-bind-c++", "libngs-c++.vcxproj", "{A8AC88D2-FADA-4458-A251-DB2E039678A4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libtest_engine", "libtest_engine.vcxproj", "{FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ngs-test", "ngs-test.vcxproj", "{33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "HeaderFiles", "HeaderFiles", "{3F19C31D-C662-4909-84F1-FCB983178DEE}"
+ ProjectSection(SolutionItems) = preProject
+ ..\ngs\Alignment.hpp = ..\ngs\Alignment.hpp
+ ..\ngs\AlignmentIterator.hpp = ..\ngs\AlignmentIterator.hpp
+ ..\ngs\defs.h = ..\ngs\defs.h
+ ..\ngs\ErrorMsg.hpp = ..\ngs\ErrorMsg.hpp
+ ..\ngs\Fragment.hpp = ..\ngs\Fragment.hpp
+ ..\ngs\FragmentIterator.hpp = ..\ngs\FragmentIterator.hpp
+ ..\ngs\Pileup.hpp = ..\ngs\Pileup.hpp
+ ..\ngs\PileupEvent.hpp = ..\ngs\PileupEvent.hpp
+ ..\ngs\PileupEventIterator.hpp = ..\ngs\PileupEventIterator.hpp
+ ..\ngs\PileupIterator.hpp = ..\ngs\PileupIterator.hpp
+ ..\ngs\Read.hpp = ..\ngs\Read.hpp
+ ..\ngs\ReadCollection.hpp = ..\ngs\ReadCollection.hpp
+ ..\ngs\ReadGroup.hpp = ..\ngs\ReadGroup.hpp
+ ..\ngs\ReadGroupIterator.hpp = ..\ngs\ReadGroupIterator.hpp
+ ..\ngs\ReadIterator.hpp = ..\ngs\ReadIterator.hpp
+ ..\ngs\Reference.hpp = ..\ngs\Reference.hpp
+ ..\ngs\ReferenceIterator.hpp = ..\ngs\ReferenceIterator.hpp
+ ..\ngs\ReferenceSequence.hpp = ..\ngs\ReferenceSequence.hpp
+ ..\ngs\Statistics.hpp = ..\ngs\Statistics.hpp
+ ..\ngs\StringRef.hpp = ..\ngs\StringRef.hpp
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "inl", "inl", "{D3CE4594-5886-4BD8-97A0-69449C45820E}"
+ ProjectSection(SolutionItems) = preProject
+ ..\ngs\inl\Alignment.hpp = ..\ngs\inl\Alignment.hpp
+ ..\ngs\inl\AlignmentIterator.hpp = ..\ngs\inl\AlignmentIterator.hpp
+ ..\ngs\inl\Fragment.hpp = ..\ngs\inl\Fragment.hpp
+ ..\ngs\inl\FragmentIterator.hpp = ..\ngs\inl\FragmentIterator.hpp
+ ..\ngs\inl\Pileup.hpp = ..\ngs\inl\Pileup.hpp
+ ..\ngs\inl\PileupEvent.hpp = ..\ngs\inl\PileupEvent.hpp
+ ..\ngs\inl\PileupEventIterator.hpp = ..\ngs\inl\PileupEventIterator.hpp
+ ..\ngs\inl\PileupIterator.hpp = ..\ngs\inl\PileupIterator.hpp
+ ..\ngs\inl\Read.hpp = ..\ngs\inl\Read.hpp
+ ..\ngs\inl\ReadCollection.hpp = ..\ngs\inl\ReadCollection.hpp
+ ..\ngs\inl\ReadGroup.hpp = ..\ngs\inl\ReadGroup.hpp
+ ..\ngs\inl\ReadGroupIterator.hpp = ..\ngs\inl\ReadGroupIterator.hpp
+ ..\ngs\inl\ReadIterator.hpp = ..\ngs\inl\ReadIterator.hpp
+ ..\ngs\inl\Reference.hpp = ..\ngs\inl\Reference.hpp
+ ..\ngs\inl\ReferenceIterator.hpp = ..\ngs\inl\ReferenceIterator.hpp
+ ..\ngs\inl\ReferenceSequence.hpp = ..\ngs\inl\ReferenceSequence.hpp
+ ..\ngs\inl\Statistics.hpp = ..\ngs\inl\Statistics.hpp
+ ..\ngs\inl\StringRef.hpp = ..\ngs\inl\StringRef.hpp
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libngs-sdk", "ngs-sdk.vcxproj", "{A6A46CB4-760E-4F16-9499-BC712E99FB5D}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {B9096FEF-5B55-4308-A81F-3B52CA968BE9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B9096FEF-5B55-4308-A81F-3B52CA968BE9}.Debug|Win32.Build.0 = Debug|Win32
+ {B9096FEF-5B55-4308-A81F-3B52CA968BE9}.Debug|x64.ActiveCfg = Debug|x64
+ {B9096FEF-5B55-4308-A81F-3B52CA968BE9}.Debug|x64.Build.0 = Debug|x64
+ {B9096FEF-5B55-4308-A81F-3B52CA968BE9}.Release|Win32.ActiveCfg = Release|Win32
+ {B9096FEF-5B55-4308-A81F-3B52CA968BE9}.Release|Win32.Build.0 = Release|Win32
+ {B9096FEF-5B55-4308-A81F-3B52CA968BE9}.Release|x64.ActiveCfg = Release|x64
+ {B9096FEF-5B55-4308-A81F-3B52CA968BE9}.Release|x64.Build.0 = Release|x64
+ {06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}.Debug|Win32.Build.0 = Debug|Win32
+ {06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}.Debug|x64.ActiveCfg = Debug|x64
+ {06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}.Debug|x64.Build.0 = Debug|x64
+ {06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}.Release|Win32.ActiveCfg = Release|Win32
+ {06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}.Release|Win32.Build.0 = Release|Win32
+ {06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}.Release|x64.ActiveCfg = Release|x64
+ {06FA485F-8AA9-4F3B-B1E3-D8CF1993637B}.Release|x64.Build.0 = Release|x64
+ {A8AC88D2-FADA-4458-A251-DB2E039678A4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A8AC88D2-FADA-4458-A251-DB2E039678A4}.Debug|Win32.Build.0 = Debug|Win32
+ {A8AC88D2-FADA-4458-A251-DB2E039678A4}.Debug|x64.ActiveCfg = Debug|x64
+ {A8AC88D2-FADA-4458-A251-DB2E039678A4}.Debug|x64.Build.0 = Debug|x64
+ {A8AC88D2-FADA-4458-A251-DB2E039678A4}.Release|Win32.ActiveCfg = Release|Win32
+ {A8AC88D2-FADA-4458-A251-DB2E039678A4}.Release|Win32.Build.0 = Release|Win32
+ {A8AC88D2-FADA-4458-A251-DB2E039678A4}.Release|x64.ActiveCfg = Release|x64
+ {A8AC88D2-FADA-4458-A251-DB2E039678A4}.Release|x64.Build.0 = Release|x64
+ {FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}.Debug|Win32.ActiveCfg = Debug|Win32
+ {FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}.Debug|Win32.Build.0 = Debug|Win32
+ {FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}.Debug|x64.ActiveCfg = Debug|x64
+ {FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}.Debug|x64.Build.0 = Debug|x64
+ {FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}.Release|Win32.ActiveCfg = Release|Win32
+ {FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}.Release|Win32.Build.0 = Release|Win32
+ {FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}.Release|x64.ActiveCfg = Release|x64
+ {FB574D6F-8684-45AE-A0AF-B52BA67E9FDE}.Release|x64.Build.0 = Release|x64
+ {33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}.Debug|Win32.ActiveCfg = Debug|Win32
+ {33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}.Debug|Win32.Build.0 = Debug|Win32
+ {33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}.Debug|x64.ActiveCfg = Debug|x64
+ {33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}.Debug|x64.Build.0 = Debug|x64
+ {33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}.Release|Win32.ActiveCfg = Release|Win32
+ {33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}.Release|Win32.Build.0 = Release|Win32
+ {33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}.Release|x64.ActiveCfg = Release|x64
+ {33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}.Release|x64.Build.0 = Release|x64
+ {A6A46CB4-760E-4F16-9499-BC712E99FB5D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A6A46CB4-760E-4F16-9499-BC712E99FB5D}.Debug|Win32.Build.0 = Debug|Win32
+ {A6A46CB4-760E-4F16-9499-BC712E99FB5D}.Debug|x64.ActiveCfg = Debug|x64
+ {A6A46CB4-760E-4F16-9499-BC712E99FB5D}.Debug|x64.Build.0 = Debug|x64
+ {A6A46CB4-760E-4F16-9499-BC712E99FB5D}.Release|Win32.ActiveCfg = Release|Win32
+ {A6A46CB4-760E-4F16-9499-BC712E99FB5D}.Release|Win32.Build.0 = Release|Win32
+ {A6A46CB4-760E-4F16-9499-BC712E99FB5D}.Release|x64.ActiveCfg = Release|x64
+ {A6A46CB4-760E-4F16-9499-BC712E99FB5D}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {D3CE4594-5886-4BD8-97A0-69449C45820E} = {3F19C31D-C662-4909-84F1-FCB983178DEE}
+ EndGlobalSection
+EndGlobal
diff --git a/ngs-sdk/win/vs2013/ngs-sdk.vcxproj b/ngs-sdk/win/vs2013/ngs-sdk.vcxproj
new file mode 100644
index 0000000..8eb4056
--- /dev/null
+++ b/ngs-sdk/win/vs2013/ngs-sdk.vcxproj
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="ngs-common.props" />
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{A6A46CB4-760E-4F16-9499-BC712E99FB5D}</ProjectGuid>
+ <ProjectName>libngs-sdk</ProjectName>
+ </PropertyGroup>
+ <PropertyGroup>
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <TargetExt>.dll</TargetExt>
+ <OutDir>$(NGS_TARGET)\bin\</OutDir>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <PreprocessorDefinitions>_LIBRARY;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>$(NGS_ROOT)ngs-sdk\language\java;$(NGS_ROOT)ngs-sdk\language\python;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessToFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</PreprocessToFile>
+ </ClCompile>
+ <Link>
+ <NoEntryPoint>false</NoEntryPoint>
+ </Link>
+ <ProjectReference>
+ <UseLibraryDependencyInputs>true</UseLibraryDependencyInputs>
+ </ProjectReference>
+ </ItemDefinitionGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+
+ <ImportGroup Label="ExtensionTargets" />
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ </ItemDefinitionGroup>
+
+ <Import Project="..\ngs-sdk.files" />
+</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/ngs-sdk.vcxproj.filters b/ngs-sdk/win/vs2013/ngs-sdk.vcxproj.filters
similarity index 97%
rename from ngs-sdk/win/ngs-sdk.vcxproj.filters
rename to ngs-sdk/win/vs2013/ngs-sdk.vcxproj.filters
index 1aaa8bb..3a00893 100644
--- a/ngs-sdk/win/ngs-sdk.vcxproj.filters
+++ b/ngs-sdk/win/vs2013/ngs-sdk.vcxproj.filters
@@ -1,244 +1,244 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="ngs-disp-sources">
- <UniqueIdentifier>{a7faf64f-c98f-4335-914f-4b5a5b55c299}</UniqueIdentifier>
- </Filter>
- <Filter Include="ngs-bind-c++ sources">
- <UniqueIdentifier>{514f37fa-57ab-43fb-b59c-fa261430dfde}</UniqueIdentifier>
- </Filter>
- <Filter Include="ngs-bind-java sources">
- <UniqueIdentifier>{577b60af-a77c-4f5e-b720-42439623c791}</UniqueIdentifier>
- </Filter>
- <Filter Include="ngs-bind-python sources">
- <UniqueIdentifier>{577b60af-a77c-4f5e-b720-42439623c792}</UniqueIdentifier>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\language\c++\Alignment.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\AlignmentIterator.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\Fragment.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\FragmentIterator.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\Pileup.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\PileupEvent.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\PileupEventIterator.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\PileupIterator.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\Read.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\ReadCollection.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\ReadGroup.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\ReadGroupIterator.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\ReadIterator.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\Reference.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\ReferenceIterator.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\ReferenceSequence.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\Statistics.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\c++\StringRef.cpp">
- <Filter>ngs-bind-c++ sources</Filter>
- </ClCompile>
- <ClCompile Include="..\dispatch\AlignmentItf.cpp">
- <Filter>ngs-disp-sources</Filter>
- </ClCompile>
- <ClCompile Include="..\dispatch\VTable.cpp">
- <Filter>ngs-disp-sources</Filter>
- </ClCompile>
- <ClCompile Include="..\dispatch\ErrBlock.cpp">
- <Filter>ngs-disp-sources</Filter>
- </ClCompile>
- <ClCompile Include="..\dispatch\ErrorMsg.cpp">
- <Filter>ngs-disp-sources</Filter>
- </ClCompile>
- <ClCompile Include="..\dispatch\FragmentItf.cpp">
- <Filter>ngs-disp-sources</Filter>
- </ClCompile>
- <ClCompile Include="..\dispatch\PackageItf.cpp">
- <Filter>ngs-disp-sources</Filter>
- </ClCompile>
- <ClCompile Include="..\dispatch\PileupEventItf.cpp">
- <Filter>ngs-disp-sources</Filter>
- </ClCompile>
- <ClCompile Include="..\dispatch\PileupItf.cpp">
- <Filter>ngs-disp-sources</Filter>
- </ClCompile>
- <ClCompile Include="..\dispatch\ReadCollectionItf.cpp">
- <Filter>ngs-disp-sources</Filter>
- </ClCompile>
- <ClCompile Include="..\dispatch\ReadGroupItf.cpp">
- <Filter>ngs-disp-sources</Filter>
- </ClCompile>
- <ClCompile Include="..\dispatch\ReadItf.cpp">
- <Filter>ngs-disp-sources</Filter>
- </ClCompile>
- <ClCompile Include="..\dispatch\Refcount.cpp">
- <Filter>ngs-disp-sources</Filter>
- </ClCompile>
- <ClCompile Include="..\dispatch\ReferenceItf.cpp">
- <Filter>ngs-disp-sources</Filter>
- </ClCompile>
- <ClCompile Include="..\dispatch\ReferenceSequenceItf.cpp">
- <Filter>ngs-disp-sources</Filter>
- </ClCompile>
- <ClCompile Include="..\dispatch\StatisticsItf.cpp">
- <Filter>ngs-disp-sources</Filter>
- </ClCompile>
- <ClCompile Include="..\dispatch\StringItf.cpp">
- <Filter>ngs-disp-sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_AlignmentIteratorItf.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_String.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_AlignmentItf.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_ErrorMsg.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_FragmentItf.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_Package.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_PileupEventIteratorItf.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_PileupEventItf.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_PileupIteratorItf.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_PileupItf.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_ReadCollectionItf.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_ReadGroupIteratorItf.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_ReadGroupItf.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_ReadIteratorItf.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_ReadItf.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_Refcount.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_ReferenceIteratorItf.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_ReferenceItf.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_ReferenceSequenceItf.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\java\jni_StatisticsItf.cpp">
- <Filter>ngs-bind-java sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_AlignmentIteratorItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_AlignmentItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_ErrorMsg.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_FragmentIteratorItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_FragmentItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_PackageItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_PileupEventIteratorItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_PileupEventItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_PileupIteratorItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_PileupItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_ReadCollectionItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_ReadGroupIteratorItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_ReadGroupItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_ReadIteratorItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_ReadItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_Refcount.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_ReferenceIteratorItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_ReferenceItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_ReferenceSequenceItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_StatisticsItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- <ClCompile Include="..\language\python\py_StringItf.cpp">
- <Filter>ngs-bind-python sources</Filter>
- </ClCompile>
- </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="ngs-disp-sources">
+ <UniqueIdentifier>{a7faf64f-c98f-4335-914f-4b5a5b55c299}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="ngs-bind-c++ sources">
+ <UniqueIdentifier>{514f37fa-57ab-43fb-b59c-fa261430dfde}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="ngs-bind-java sources">
+ <UniqueIdentifier>{577b60af-a77c-4f5e-b720-42439623c791}</UniqueIdentifier>
+ </Filter>
+ <Filter Include="ngs-bind-python sources">
+ <UniqueIdentifier>{577b60af-a77c-4f5e-b720-42439623c792}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\language\c++\Alignment.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\AlignmentIterator.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\Fragment.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\FragmentIterator.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\Pileup.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\PileupEvent.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\PileupEventIterator.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\PileupIterator.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\Read.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\ReadCollection.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\ReadGroup.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\ReadGroupIterator.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\ReadIterator.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\Reference.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\ReferenceIterator.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\ReferenceSequence.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\Statistics.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\c++\StringRef.cpp">
+ <Filter>ngs-bind-c++ sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dispatch\AlignmentItf.cpp">
+ <Filter>ngs-disp-sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dispatch\VTable.cpp">
+ <Filter>ngs-disp-sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dispatch\ErrBlock.cpp">
+ <Filter>ngs-disp-sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dispatch\ErrorMsg.cpp">
+ <Filter>ngs-disp-sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dispatch\FragmentItf.cpp">
+ <Filter>ngs-disp-sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dispatch\PackageItf.cpp">
+ <Filter>ngs-disp-sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dispatch\PileupEventItf.cpp">
+ <Filter>ngs-disp-sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dispatch\PileupItf.cpp">
+ <Filter>ngs-disp-sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dispatch\ReadCollectionItf.cpp">
+ <Filter>ngs-disp-sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dispatch\ReadGroupItf.cpp">
+ <Filter>ngs-disp-sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dispatch\ReadItf.cpp">
+ <Filter>ngs-disp-sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dispatch\Refcount.cpp">
+ <Filter>ngs-disp-sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dispatch\ReferenceItf.cpp">
+ <Filter>ngs-disp-sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dispatch\ReferenceSequenceItf.cpp">
+ <Filter>ngs-disp-sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dispatch\StatisticsItf.cpp">
+ <Filter>ngs-disp-sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\dispatch\StringItf.cpp">
+ <Filter>ngs-disp-sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_AlignmentIteratorItf.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_String.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_AlignmentItf.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_ErrorMsg.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_FragmentItf.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_Package.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_PileupEventIteratorItf.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_PileupEventItf.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_PileupIteratorItf.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_PileupItf.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_ReadCollectionItf.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_ReadGroupIteratorItf.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_ReadGroupItf.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_ReadIteratorItf.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_ReadItf.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_Refcount.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_ReferenceIteratorItf.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_ReferenceItf.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_ReferenceSequenceItf.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\java\jni_StatisticsItf.cpp">
+ <Filter>ngs-bind-java sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_AlignmentIteratorItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_AlignmentItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_ErrorMsg.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_FragmentIteratorItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_FragmentItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_PackageItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_PileupEventIteratorItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_PileupEventItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_PileupIteratorItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_PileupItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_ReadCollectionItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_ReadGroupIteratorItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_ReadGroupItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_ReadIteratorItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_ReadItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_Refcount.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_ReferenceIteratorItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_ReferenceItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_ReferenceSequenceItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_StatisticsItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\language\python\py_StringItf.cpp">
+ <Filter>ngs-bind-python sources</Filter>
+ </ClCompile>
+ </ItemGroup>
</Project>
\ No newline at end of file
diff --git a/ngs-sdk/win/ngs-test.vcxproj b/ngs-sdk/win/vs2013/ngs-test.vcxproj
similarity index 59%
rename from ngs-sdk/win/ngs-test.vcxproj
rename to ngs-sdk/win/vs2013/ngs-test.vcxproj
index 4266c3b..df2b1f0 100644
--- a/ngs-sdk/win/ngs-test.vcxproj
+++ b/ngs-sdk/win/vs2013/ngs-test.vcxproj
@@ -1,38 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
-
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="ngs-common.props" />
-
<PropertyGroup Label="Globals">
<ProjectGuid>{33E73C44-6EEB-4CAE-8DE6-2546E7DE2133}</ProjectGuid>
</PropertyGroup>
-
<PropertyGroup>
<ConfigurationType>Application</ConfigurationType>
<TargetExt>.exe</TargetExt>
<OutDir>$(NGS_TARGET)\bin\</OutDir>
</PropertyGroup>
-
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-
<ItemGroup>
<ProjectReference Include="libadapter.vcxproj">
<Project>{b9096fef-5b55-4308-a81f-3b52ca968be9}</Project>
@@ -47,14 +24,15 @@
<Project>{fb574d6f-8684-45ae-a0af-b52ba67e9fde}</Project>
</ProjectReference>
</ItemGroup>
-
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-
<ImportGroup Label="ExtensionTargets" />
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\test\ngs-test\main.cpp" />
- </ItemGroup>
+ <Import Project="..\ngs-test.files" />
<Target Name="AfterBuild" Condition="'$(Autorun)'=='true'">
<Exec Command="$(OutDir)$(TargetName)$(TargetExt)" WorkingDirectory="$(ProjectDir)\" />
diff --git a/ngs-sdk/win/ngs-test.vcxproj.filters b/ngs-sdk/win/vs2013/ngs-test.vcxproj.filters
similarity index 96%
rename from ngs-sdk/win/ngs-test.vcxproj.filters
rename to ngs-sdk/win/vs2013/ngs-test.vcxproj.filters
index f371d4c..4f0fb62 100644
--- a/ngs-sdk/win/ngs-test.vcxproj.filters
+++ b/ngs-sdk/win/vs2013/ngs-test.vcxproj.filters
@@ -1,18 +1,18 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\test\ngs-test\main.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\test\ngs-test\main.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
</Project>
\ No newline at end of file
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/ngs-sdk.git
More information about the debian-med-commit
mailing list