Merged changes from 2.0.1 fixes that were not already integrated into 2.1.

This commit is contained in:
Geoffrey Hutchison
2006-04-19 15:37:47 +00:00
parent 8563deea14
commit 32e8d6d627
60 changed files with 7584 additions and 6964 deletions

176
ChangeLog
View File

@@ -20,6 +20,149 @@
ensure formula are read in correctly by adding ForceNoH() and
calling Assign SpinMultiplicity in the right place.
2006-04-15 Geoffrey Hutchison <babel@geoffhutchison.net>
* test/Makefile.am, test/Makefile.in: Only run CML tests if XML
formats were compiled. (i.e., if libxml not available, can't test
CML)
* test/ringtest.sh, test/smartstest.sh, test/cmltest/test.sh:
Minor shell script portability fixes.
2006-04-13 Geoffrey Hutchison <babel@geoffhutchison.net>
* scripts/perl/META.yml, scripts/python/setup.py: Packaging
changes for the scripting wrappers.
* src/formats/mdlformat.cpp: Remove inadvertent debug statement
left from yesterday.
2006-04-12 Geoffrey Hutchison <babel@geoffhutchison.net>
* src/formats/mdlformat.cpp (ReadMolecule): Add support for atom
stereo in v2000 format and OBChiralData. Partly addresses
PR#1463796.
* src/formats/smilesformat.cpp (GetChiralStereo): If we have a 2D
molecule and stereochemistry is unspecified, don't assume we have
a particular stereochemistry. Partly address PR#1463796.
Also fix a problem with writing chiral "H" designations with explicit
hydrogens, introduced with yesterday's fix to
OBAtom::ImplicitHydrogenCount.
2006-04-11 Geoffrey Hutchison <babel@geoffhutchison.net>
* src/obconversion.h, src/obconversion.cpp: Added a test to be
sure that we do not check gzip encoding multiple times (much less
try to gzip repeatedly). Fix PR#1465586 where ReadString() or
ReadFile() followed by Read() will fail because input streams are
closed prematurely.
* src/atom.cpp (ImplicitHydrogenCount): Fix a bug where formulas
were calculated incorrectly -- explicit hydrogens should count
against an implicit hydrogen count too. Fixes part of PR#1463787.
(i.e., SMARTS 'h' token was matching total number of hydrogens)
* src/mol.cpp (AddBond): Fix a bug exposed by PDB parsing, where
code attempts to add a bond from one atom to itself.
* src/formats/mol2format.cpp: Fix residue parsing to remove
calls to create a residue when in fact, the molecule has no residues.
* src/formats/pdbformat.cpp: Fix CONECT record parsing to read
malformed records (e.g., created by very old Open Babel versions)
via splitting by spaces. Fixes PR#1468802.
* src/parsmart.cpp: Reformat indentation for clearer code
reading. Fix bug with syntax of 'H' token -- should refer to the
*total* number of hydrogens. PR#1463787.
* test/smartsresults.txt: Regenerate after above bug-fixes.
* src/formats/crkformat.cpp (ReadCRK): Change to correctly read
multi-molecule files, where the </Structure2D> tag would appear,
but parsing would continue, uncovered using roundtrip testing.
2006-04-08 Geoffrey Hutchison <babel@geoffhutchison.net>
* scripts/openbabel.i, scripts/*: Update to add Cygwin DLL headers.
* THANKS: Update with contributors to 2.0.1 release.
2006-04-06 Geoffrey Hutchison <babel@geoffhutchison.net>
* src/dlhandler_unix.cpp: Upgrade to use the opendir/readdir
replacement for the non-portable scandir contributed by Mikael
Johansson.
* src/formats/Makefile.am, src/formats/Makefile.in: Fix error in
logic with building inchi, introduced yesterday. D'oh!
* src/formats/inchi/Makefile.am, src/formats/inchi/Makefile.in:
Add --no-undefined flag to produce proper compilation on Windows
(i.e., Cygwin).
2006-04-05 Geoffrey Hutchison <babel@geoffhutchison.net>
* NEWS: Update for 2.0.1 release notes.
* configure, configure.in, acinclude.m4: Add new configure options
for silent libtool use & compiler flags.
* scripts/Makefile.am, scripts/Makefile.in: Provide better
"distclean" target to remove python build targets and backup
files.
* src/mol.h: Update IsRotor() and NumRotors() documentation to
explain the current minimal definition of a rotatable
bond. Addresses PR#1463505.
* src/oberror.cpp: By default, retain a maximum of the 100 most
recent entries in the error log in memory. All errors will be
filtered and sent to output, but only retain some (not all). Fixes
PR#1439893.
* src/formats/inchi/Makefile.am, src/formats/inchi/Makefile.in:
Only install the inchi_api.h header.
* src/formats/xml/Makefile.am, src/formats/xml/Makefile.in: Turn
off optimization -- appears to fix crashes on FC4 and FC5,
PR#1447233.
* src/formats/xml/xml.h: Add std:: namespace declarations, solving
compilation problems on some GCC compiler versions.
* src/formats/Makefile.am, */Makefile.in: Changes to only build
libinchi when the library is not available on the system. Fixes
PR#146451.
2006-03-28 Geoffrey Hutchison <babel@geoffhutchison.net>
* test/aromatest.cpp: New test to check aromaticity. When supplied
with a test file, it checks to be sure all non-hydrogen atoms are
aromatic.
* scripts/*: Update scripting wrappers with SWIG 1.3.29.
* src/Makefile.am, src/Makefile.in : Add @LIBDL@ as
suggested by Michael Shigorin (PR#1458706). Make sure
babelconfig.h isn't included in dist tarball, as suggested by
Michael Banck.
2006-03-27 Michael Banck <mbanck@gmx.net>
* src/fingerprint.h: Fix compilation error with gcc-4.1.
Patch by <vlaaad@users.sourceforge.net>.
* src/formats/copyformat.cpp: Likewise.
* src/formats/crkformat.cpp: Likewise.
* src/formats/xml/cmlreactlformat.cpp: Likewise.
* src/formats/xml/xml.h: Likewise.
* src/formats/xml/xmlformat.cpp: Likewise.
* src/formats/fastaformat.cpp: Include babelconfig.h.
* src/rand.cpp: Include <time.h> and <sys/time.h>.
2006-03-18 Chris Morley <ob@gaseq.co.uk>
* src/obconversion.cpp, obconversion.h,
@@ -44,43 +187,12 @@
* src/GUI/OBGUI.cpp:Added warning when output extensions mixed.
*/src/GUI/optswx.cpp: Be less restrictive with punctuation in options.
* src/GUI/optswx.cpp: Be less restrictive with punctuation in options.
* src/formats/inchiformat.cpp: Now calculates InChI for C and CH.
* src/formats/thermoformat.cpp: minor parsing corrections
2006-03-28 Geoffrey Hutchison <babel@geoffhutchison.net>
* test/aromatest.cpp: New test to check aromaticity. When supplied
with a test file, it checks to be sure all non-hydrogen atoms are
aromatic.
* scripts/*: Update scripting wrappers with SWIG 1.3.29.
* src/Makefile.am, src/Makefile.in : Add @LIBDL@ as
suggested by Michael Shigorin (PR#1458706). Make sure
babelconfig.h isn't included in dist tarball, as suggested by
Michael Banck.
2006-03-27 Michael Banck <mbanck@gmx.net>
* src/rand.cpp: Include <time.h> and <sys/time.h>.
2006-03-27 Michael Banck <mbanck@gmx.net>
* src/fingerprint.h: Fix compilation error with gcc-4.1.
Patch by <vlaaad@users.sourceforge.net>.
* src/formats/copyformat.cpp: Likewise.
* src/formats/crkformat.cpp: Likewise.
* src/formats/xml/cmlreactlformat.cpp: Likewise.
* src/formats/xml/xml.h: Likewise.
* src/formats/xml/xmlformat.cpp: Likewise.
2006-03-27 Michael Banck <mbanck@gmx.net>
* src/formats/fastaformat.cpp: Include babelconfig.h.
2006-03-16 Chris Morley <ob@gaseq.co.uk>
* data/atomtyp.txt: IMPVAL for halogen ions

View File

@@ -88,12 +88,15 @@ AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@
BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@
BUILD_INCHI_FALSE = @BUILD_INCHI_FALSE@
BUILD_INCHI_TRUE = @BUILD_INCHI_TRUE@
BUILD_SCRIPTS_FALSE = @BUILD_SCRIPTS_FALSE@
BUILD_SCRIPTS_TRUE = @BUILD_SCRIPTS_TRUE@
BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@
@@ -118,6 +121,7 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DOXYGEN = @DOXYGEN@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
@@ -142,6 +146,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -168,9 +173,12 @@ XML2_CONFIG = @XML2_CONFIG@
XML_CPPFLAGS = @XML_CPPFLAGS@
XML_LIBS = @XML_LIBS@
ac_ct_AR = @ac_ct_AR@
ac_ct_AS = @ac_ct_AS@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
ac_ct_F77 = @ac_ct_F77@
ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@

30
NEWS
View File

@@ -1,4 +1,32 @@
Open Babel 2.0 (2005-11-25)
Open Babel 2.0.1 (2006-04-17)
What's New from 2.0.0:
This release represents a bug-fix release and should be a stable upgrade,
recommended for all users of Open Babel.
- Support for dynamic building on the Cygwin environment. This fixes a
long-standing problem that made Open Babel useless to Cygwin users.
- Fixed a variety of memory leaks and improved overall memory use.
More work to reduce memory consumption is underway for the 2.1 release.
- Improved Perl and Python scripting wrappers, including many
bug-fixes.
- Fixes to the "make check" test suite, which should prevent problems
running before babel is installed.
- Fixes compilation problems with AIX, Fedora Core 4, and the
newly-released GCC-4.1.
- Fixed several reported compilation problems with Windows builds
using VisualC++.
- Fixed several reported crashes.
- Fixed problems with the Turbomole format, thanks to Mikael
Johansson.
- Fixed a bug with PDB files with coordinates < -1000 Ang.
- Improved support for the Sybyl mol2 format, thanks to Kevin Parkes.
- Fixed a variety of typos in the API documentation.
- Countless bug fixes.
Open Babel 2.0 (2005-11-26)
What's New from 1.100.2:

4
THANKS
View File

@@ -22,6 +22,8 @@ Tommi Hassinen
Bryan Herger
David Hoekman
Geoffrey Hutchison
Craig James
Mikael Johansson
Stefan Kebekus
Elmar Krieger
Erik Kruus
@@ -32,10 +34,12 @@ David Mathog
Chris Morley
Peter Murray-Rust
Anthony Nicholls
Noel O'Boyle
Sergei Pachkovsky
Steffen Reith
Louis Richard
Roger Sayle
Ernst-Georg Schmid
Ajay Shah
Matt Stahl
Chris Swain

View File

@@ -112,3 +112,86 @@ then
fi
])
dnl @synopsis AX_MAINTAINER_MODE_AUTO_SILENT
dnl
dnl Set autotools to error/sleep settings so that they are not run when
dnl being errornously triggered. Likewise make libtool-silent when
dnl libtool has been used.
dnl
dnl I am using the macro quite a lot since some automake versions had
dnl the tendency to try to rerun some autotools on a mere make even
dnl when not quite in --maintainer-mode. That is very annoying.
dnl Likewise, a user who installs from source does not want to see
dnl doubled compiler messages.
dnl
dnl I did not put an AC-REQUIRE(MAINTAINER_MODE) in here - should I?
dnl
dnl @category Misc
dnl @category Automake
dnl @author Guido Draheim <guidod@gmx.de>
dnl @version 2005-01-21
dnl @license GPLWithACException
AC_DEFUN([AX_MAINTAINER_MODE_AUTO_SILENT],[dnl
dnl ac_REQUIRE([am_MAINTAINER_MODE])dn
AC_MSG_CHECKING(auto silent in maintainer mode)
if test "$USE_MAINTAINER_MODE" = "no" ; then
test ".$TIMEOUT" = "." && TIMEOUT="9"
AUTOHEADER="sleep $TIMEOUT ; true || autoheader || skipped"
AUTOMAKE="sleep $TIMEOUT ; true || automake || skipped"
AUTOCONF="sleep $TIMEOUT ; true || autoconf || skipped"
if test ".$LIBTOOL" != "." ; then
LIBTOOL="$LIBTOOL --silent"
AC_MSG_RESULT([libtool-silent, auto-sleep-9])
else
AC_MSG_RESULT([auto-sleep-9])
fi
else
AC_MSG_RESULT([no])
fi
])
dnl @synopsis AX_CHECK_COMPILER_FLAGS(FLAGS, [ACTION-SUCCESS], [ACTION-FAILURE])
dnl
dnl @summary check whether FLAGS are accepted by the compiler
dnl
dnl Check whether the given compiler FLAGS work with the current
dnl language's compiler, or whether they give an error. (Warnings,
dnl however, are ignored.)
dnl
dnl ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
dnl success/failure.
dnl
dnl @category Misc
dnl @author Steven G. Johnson <stevenj@alum.mit.edu> and Matteo Frigo.
dnl @version 2005-05-30
dnl @license GPLWithACException
AC_DEFUN([AX_CHECK_COMPILER_FLAGS],
[AC_PREREQ(2.59) dnl for _AC_LANG_PREFIX
AC_MSG_CHECKING([whether _AC_LANG compiler accepts $1])
dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname:
AS_LITERAL_IF([$1],
[AC_CACHE_VAL(AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_$1), [
ax_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
_AC_LANG_PREFIX[]FLAGS="$1"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_$1)=yes,
AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_$1)=no)
_AC_LANG_PREFIX[]FLAGS=$ax_save_FLAGS])],
[ax_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
_AC_LANG_PREFIX[]FLAGS="$1"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
eval AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_$1)=yes,
eval AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_$1)=no)
_AC_LANG_PREFIX[]FLAGS=$ax_save_FLAGS])
eval ax_check_compiler_flags=$AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_$1)
AC_MSG_RESULT($ax_check_compiler_flags)
if test "x$ax_check_compiler_flags" = xyes; then
m4_default([$2], :)
else
m4_default([$3], :)
fi
])dnl AX_CHECK_COMPILER_FLAGS

167
configure vendored
View File

@@ -427,7 +427,7 @@ PACKAGE_VERSION='2.1.0b1'
PACKAGE_STRING='Open Babel 2.1.0b1'
PACKAGE_BUGREPORT='openbabel-discuss@lists.sourceforge.net'
ac_unique_file="src/typer.cpp"
ac_unique_file="src/zipstreamimpl.h"
# Factoring default headers for most tests.
ac_includes_default="\
#include <stdio.h>
@@ -465,7 +465,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP DOXYGEN SWIG PERL PROVE PYTHON WX_LIBS WX_CXXFLAGS WX_CPPFLAGS BUILD_WXGUI_TRUE BUILD_WXGUI_FALSE PERL_TESTS_TRUE PERL_TESTS_FALSE BUILD_DOCS_TRUE BUILD_DOCS_FALSE BUILD_SWIG_TRUE BUILD_SWIG_FALSE BUILD_SCRIPTS_TRUE BUILD_SCRIPTS_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CPP F77 FFLAGS ac_ct_F77 LIBTOOL BUILD_SHARED_TRUE BUILD_SHARED_FALSE LIBDL XML2_CONFIG XML_CPPFLAGS XML_LIBS BUILD_XML_TRUE BUILD_XML_FALSE BUILD_ZLIB_TRUE BUILD_ZLIB_FALSE LIBOBJS LTLIBOBJS'
ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP DOXYGEN SWIG PERL PROVE PYTHON WX_LIBS WX_CXXFLAGS WX_CPPFLAGS BUILD_WXGUI_TRUE BUILD_WXGUI_FALSE PERL_TESTS_TRUE PERL_TESTS_FALSE BUILD_DOCS_TRUE BUILD_DOCS_FALSE BUILD_SWIG_TRUE BUILD_SWIG_FALSE BUILD_SCRIPTS_TRUE BUILD_SCRIPTS_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP CPP F77 FFLAGS ac_ct_F77 LIBTOOL BUILD_SHARED_TRUE BUILD_SHARED_FALSE LIBDL XML2_CONFIG XML_CPPFLAGS XML_LIBS BUILD_XML_TRUE BUILD_XML_FALSE BUILD_INCHI_TRUE BUILD_INCHI_FALSE BUILD_ZLIB_TRUE BUILD_ZLIB_FALSE LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -1975,6 +1975,26 @@ fi
MAINT=$MAINTAINER_MODE_TRUE
echo "$as_me:$LINENO: checking auto silent in maintainer mode" >&5
echo $ECHO_N "checking auto silent in maintainer mode... $ECHO_C" >&6
if test "$USE_MAINTAINER_MODE" = "no" ; then
test ".$TIMEOUT" = "." && TIMEOUT="9"
AUTOHEADER="sleep $TIMEOUT ; true || autoheader || skipped"
AUTOMAKE="sleep $TIMEOUT ; true || automake || skipped"
AUTOCONF="sleep $TIMEOUT ; true || autoconf || skipped"
if test ".$LIBTOOL" != "." ; then
LIBTOOL="$LIBTOOL --silent"
echo "$as_me:$LINENO: result: libtool-silent, auto-sleep-9" >&5
echo "${ECHO_T}libtool-silent, auto-sleep-9" >&6
else
echo "$as_me:$LINENO: result: auto-sleep-9" >&5
echo "${ECHO_T}auto-sleep-9" >&6
fi
else
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
fi
ac_config_headers="$ac_config_headers src/config.h"
@@ -4817,7 +4837,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
echo '#line 4820 "configure"' > conftest.$ac_ext
echo '#line 4840 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -6194,7 +6214,7 @@ fi
# Provide some information about the compiler.
echo "$as_me:6197:" \
echo "$as_me:6217:" \
"checking for Fortran 77 compiler version" >&5
ac_compiler=`set X $ac_compile; echo $2`
{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
@@ -7257,11 +7277,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:7260: $lt_compile\"" >&5)
(eval echo "\"\$as_me:7280: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:7264: \$? = $ac_status" >&5
echo "$as_me:7284: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -7525,11 +7545,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:7528: $lt_compile\"" >&5)
(eval echo "\"\$as_me:7548: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:7532: \$? = $ac_status" >&5
echo "$as_me:7552: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -7629,11 +7649,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:7632: $lt_compile\"" >&5)
(eval echo "\"\$as_me:7652: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:7636: \$? = $ac_status" >&5
echo "$as_me:7656: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -9974,7 +9994,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 9977 "configure"
#line 9997 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -10074,7 +10094,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
#line 10077 "configure"
#line 10097 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12414,11 +12434,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:12417: $lt_compile\"" >&5)
(eval echo "\"\$as_me:12437: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:12421: \$? = $ac_status" >&5
echo "$as_me:12441: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -12518,11 +12538,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:12521: $lt_compile\"" >&5)
(eval echo "\"\$as_me:12541: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:12525: \$? = $ac_status" >&5
echo "$as_me:12545: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -14088,11 +14108,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:14091: $lt_compile\"" >&5)
(eval echo "\"\$as_me:14111: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:14095: \$? = $ac_status" >&5
echo "$as_me:14115: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -14192,11 +14212,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:14195: $lt_compile\"" >&5)
(eval echo "\"\$as_me:14215: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:14199: \$? = $ac_status" >&5
echo "$as_me:14219: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -16395,11 +16415,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:16398: $lt_compile\"" >&5)
(eval echo "\"\$as_me:16418: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:16402: \$? = $ac_status" >&5
echo "$as_me:16422: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -16663,11 +16683,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:16666: $lt_compile\"" >&5)
(eval echo "\"\$as_me:16686: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
echo "$as_me:16670: \$? = $ac_status" >&5
echo "$as_me:16690: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -16767,11 +16787,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
(eval echo "\"\$as_me:16770: $lt_compile\"" >&5)
(eval echo "\"\$as_me:16790: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
echo "$as_me:16774: \$? = $ac_status" >&5
echo "$as_me:16794: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -20000,6 +20020,87 @@ else
fi
echo "$as_me:$LINENO: checking for GetINCHI in -linchi" >&5
echo $ECHO_N "checking for GetINCHI in -linchi... $ECHO_C" >&6
if test "${ac_cv_lib_inchi_GetINCHI+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-linchi $LIBS"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char GetINCHI ();
int
main ()
{
GetINCHI ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
(eval $ac_link) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_cxx_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_inchi_GetINCHI=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_inchi_GetINCHI=no
fi
rm -f conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_inchi_GetINCHI" >&5
echo "${ECHO_T}$ac_cv_lib_inchi_GetINCHI" >&6
if test $ac_cv_lib_inchi_GetINCHI = yes; then
LIBINCHI="-linchi"
else
LIBINCHI=""
fi
if test x"$LIBINCHI" == "x"; then
BUILD_INCHI_TRUE=
BUILD_INCHI_FALSE='#'
else
BUILD_INCHI_TRUE='#'
BUILD_INCHI_FALSE=
fi
#
# Handle user hints
#
@@ -21663,7 +21764,7 @@ echo "${ECHO_T}$scandirconst_cast" >&6
ac_config_commands="$ac_config_commands src/babelconfig.h"
ac_config_files="$ac_config_files Makefile data/Makefile src/Makefile src/math/Makefile src/GUI/Makefile src/formats/Makefile src/fingerprints/Makefile src/formats/xml/Makefile src/formats/inchi/Makefile test/Makefile test/cmltest/Makefile tools/Makefile doc/Makefile scripts/Makefile openbabel-2.0.pc"
ac_config_files="$ac_config_files Makefile data/Makefile src/Makefile src/math/Makefile src/formats/Makefile src/fingerprints/Makefile src/formats/xml/Makefile src/formats/inchi/Makefile test/Makefile test/cmltest/Makefile tools/Makefile doc/Makefile scripts/Makefile openbabel-2.0.pc"
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
@@ -21832,6 +21933,13 @@ echo "$as_me: error: conditional \"BUILD_XML\" was never defined.
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
if test -z "${BUILD_INCHI_TRUE}" && test -z "${BUILD_INCHI_FALSE}"; then
{ { echo "$as_me:$LINENO: error: conditional \"BUILD_INCHI\" was never defined.
Usually this means the macro was only invoked conditionally." >&5
echo "$as_me: error: conditional \"BUILD_INCHI\" was never defined.
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
if test -z "${BUILD_ZLIB_TRUE}" && test -z "${BUILD_ZLIB_FALSE}"; then
{ { echo "$as_me:$LINENO: error: conditional \"BUILD_ZLIB\" was never defined.
Usually this means the macro was only invoked conditionally." >&5
@@ -22287,7 +22395,6 @@ do
"data/Makefile" ) CONFIG_FILES="$CONFIG_FILES data/Makefile" ;;
"src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
"src/math/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/math/Makefile" ;;
"src/GUI/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/GUI/Makefile" ;;
"src/formats/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/formats/Makefile" ;;
"src/fingerprints/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/fingerprints/Makefile" ;;
"src/formats/xml/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/formats/xml/Makefile" ;;
@@ -22486,6 +22593,8 @@ s,@XML_CPPFLAGS@,$XML_CPPFLAGS,;t t
s,@XML_LIBS@,$XML_LIBS,;t t
s,@BUILD_XML_TRUE@,$BUILD_XML_TRUE,;t t
s,@BUILD_XML_FALSE@,$BUILD_XML_FALSE,;t t
s,@BUILD_INCHI_TRUE@,$BUILD_INCHI_TRUE,;t t
s,@BUILD_INCHI_FALSE@,$BUILD_INCHI_FALSE,;t t
s,@BUILD_ZLIB_TRUE@,$BUILD_ZLIB_TRUE,;t t
s,@BUILD_ZLIB_FALSE@,$BUILD_ZLIB_FALSE,;t t
s,@LIBOBJS@,$LIBOBJS,;t t
@@ -23206,3 +23315,5 @@ if test "$no_create" != yes; then
$ac_cs_success || { (exit 1); exit 1; }
fi
# src/GUI/Makefile \

View File

@@ -1,8 +1,9 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT([Open Babel], 2.1.0b1, openbabel-discuss@lists.sourceforge.net, openbabel)
AC_CONFIG_SRCDIR(src/typer.cpp)
AC_CONFIG_SRCDIR(src/zipstreamimpl.h)
AM_INIT_AUTOMAKE([no-define])
AM_MAINTAINER_MODE
AX_MAINTAINER_MODE_AUTO_SILENT
AM_CONFIG_HEADER(src/config.h)
AC_DEFINE_UNQUOTED([BABEL_VERSION], ["AC_PACKAGE_VERSION"], [The version of Open Babel])
@@ -31,7 +32,7 @@ AH_VERBATIM([OBAPI],
#define OBAPI __declspec(dllexport)
#endif
#else //Everything else (behaviour as original)
#define OBAPI
#define OBAPI
#endif
])
@@ -44,7 +45,7 @@ AH_VERBATIM([EXTERN],
#define EXTERN __declspec(dllexport) extern
#endif
#else //Everything else (behaviour as original)
#define EXTERN extern
#define EXTERN extern
#endif
])
@@ -158,6 +159,9 @@ AC_SUBST(LIBDL)
AM_PATH_XML2(2.6.5)
AM_CONDITIONAL(BUILD_XML, test x"$XML_LIBS" != "x")
AC_CHECK_LIB(inchi, GetINCHI, LIBINCHI="-linchi", LIBINCHI="")
AM_CONDITIONAL(BUILD_INCHI, test x"$LIBINCHI" == "x")
CHECK_ZLIB
AC_CHECK_LIB(z, inflateEnd)
AC_CHECK_HEADERS(zlib.h iconv.h)
@@ -200,8 +204,9 @@ AC_CONFIG_COMMANDS([src/babelconfig.h],
[cat src/config.h | grep -v PACKAGE >src/babelconfig.h])
AC_OUTPUT(Makefile data/Makefile src/Makefile src/math/Makefile \
src/GUI/Makefile \
src/formats/Makefile src/fingerprints/Makefile \
src/formats/xml/Makefile src/formats/inchi/Makefile \
test/Makefile test/cmltest/Makefile tools/Makefile \
doc/Makefile scripts/Makefile openbabel-2.0.pc)
# src/GUI/Makefile \

View File

@@ -63,12 +63,15 @@ AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@
BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@
BUILD_INCHI_FALSE = @BUILD_INCHI_FALSE@
BUILD_INCHI_TRUE = @BUILD_INCHI_TRUE@
BUILD_SCRIPTS_FALSE = @BUILD_SCRIPTS_FALSE@
BUILD_SCRIPTS_TRUE = @BUILD_SCRIPTS_TRUE@
BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@
@@ -93,6 +96,7 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DOXYGEN = @DOXYGEN@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
@@ -117,6 +121,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -143,9 +148,12 @@ XML2_CONFIG = @XML2_CONFIG@
XML_CPPFLAGS = @XML_CPPFLAGS@
XML_LIBS = @XML_LIBS@
ac_ct_AR = @ac_ct_AR@
ac_ct_AS = @ac_ct_AS@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
ac_ct_F77 = @ac_ct_F77@
ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
@@ -214,9 +222,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/Makefile'; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign data/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu data/Makefile
$(AUTOMAKE) --foreign data/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \

View File

@@ -27,7 +27,7 @@ static const char AromaticData[] = {
0x5B,0x23,0x37,0x72,0x44,0x33,0x5D,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x31,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x32,0x0A,0x5B,0x23,0x37,0x72,0x5D,0x28,0x2D,0x40,0x2A,0x29,0x2D,
0x40,0x2A,0x20,0x20,0x09,0x09,0x32,0x09,0x32,0x0A,0x5B,0x23,0x37,0x72,0x44,
0x40,0x2A,0x20,0x20,0x09,0x09,0x31,0x09,0x32,0x0A,0x5B,0x23,0x37,0x72,0x44,
0x32,0x5D,0x3D,0x40,0x2A,0x09,0x09,0x31,0x09,0x31,0x0A,0x5B,0x23,0x37,0x72,
0x44,0x33,0x2B,0x5D,0x09,0x09,0x31,0x09,0x31,0x0A,0x5B,0x23,0x37,0x72,0x44,
0x33,0x5D,0x3D,0x4F,0x09,0x09,0x31,0x09,0x31,0x0A,0x5B,0x23,0x37,0x72,0x44,

View File

@@ -30,7 +30,7 @@
#nitrogen patterns
[#7rD2] 1 2
[#7rD3] 1 2
[#7r](-@*)-@* 2 2
[#7r](-@*)-@* 1 2
[#7rD2]=@* 1 1
[#7rD3+] 1 1
[#7rD3]=O 1 1

View File

@@ -15,43 +15,43 @@ This file contains a binary representation of data tables
namespace OpenBabel
{
static const char AtomTypeData[] = {
0x49,0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,0x43,0x5D,0x09,0x09,0x09,0x09,0x33,
0x09,0x23,0x73,0x70,0x33,0x20,0x63,0x61,0x72,0x62,0x6F,0x6E,0x0A,0x49,0x4E,
0x54,0x48,0x59,0x42,0x09,0x5B,0x63,0x2C,0x24,0x28,0x43,0x3D,0x2A,0x29,0x5D,
0x09,0x09,0x09,0x32,0x09,0x23,0x73,0x70,0x32,0x20,0x63,0x61,0x72,0x62,0x6F,
0x6E,0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,0x24,0x28,0x5B,0x23,0x36,
0x5D,0x28,0x5B,0x23,0x38,0x44,0x31,0x5D,0x29,0x5B,0x23,0x38,0x44,0x31,0x5D,
0x29,0x5D,0x09,0x09,0x32,0x09,0x23,0x73,0x70,0x32,0x20,0x63,0x61,0x72,0x62,
0x6F,0x6E,0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,0x24,0x28,0x43,0x23,
0x2A,0x29,0x2C,0x24,0x28,0x43,0x28,0x3D,0x2A,0x29,0x3D,0x2A,0x29,0x5D,0x09,
0x09,0x31,0x09,0x23,0x73,0x70,0x20,0x20,0x63,0x61,0x72,0x62,0x6F,0x6E,0x0A,
0x49,0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,0x4E,0x5D,0x09,0x09,0x09,0x09,0x33,
0x09,0x23,0x73,0x70,0x33,0x20,0x6E,0x69,0x74,0x72,0x6F,0x67,0x65,0x6E,0x0A,
0x49,0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,0x6E,0x2C,0x24,0x28,0x4E,0x3D,0x2A,
0x29,0x2C,0x24,0x28,0x4E,0x5B,0x23,0x36,0x2C,0x23,0x37,0x2C,0x23,0x38,0x5D,
0x3D,0x2C,0x3A,0x2C,0x23,0x2A,0x29,0x5D,0x09,0x32,0x09,0x23,0x73,0x70,0x32,
0x20,0x6E,0x69,0x74,0x72,0x6F,0x67,0x65,0x6E,0x0A,0x49,0x4E,0x54,0x48,0x59,
0x42,0x20,0x20,0x5B,0x4E,0x44,0x31,0x2C,0x4E,0x44,0x32,0x2C,0x4E,0x44,0x33,
0x5D,0x61,0x09,0x09,0x09,0x32,0x09,0x23,0x73,0x70,0x32,0x20,0x6E,0x69,0x74,
0x72,0x6F,0x67,0x65,0x6E,0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,0x24,
0x28,0x4E,0x23,0x2A,0x29,0x2C,0x24,0x28,0x5B,0x4E,0x44,0x32,0x5D,0x28,0x3D,
0x2A,0x29,0x3D,0x2A,0x29,0x5D,0x09,0x09,0x31,0x09,0x23,0x73,0x70,0x20,0x20,
0x6E,0x69,0x74,0x72,0x6F,0x67,0x65,0x6E,0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,
0x09,0x5B,0x4F,0x5D,0x09,0x09,0x09,0x09,0x33,0x09,0x23,0x73,0x70,0x33,0x20,
0x6F,0x78,0x79,0x67,0x65,0x6E,0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,
0x6F,0x2C,0x24,0x28,0x4F,0x3D,0x2A,0x29,0x2C,0x24,0x28,0x4F,0x5B,0x23,0x36,
0x2C,0x23,0x37,0x2C,0x23,0x38,0x5D,0x3D,0x2C,0x3A,0x2A,0x29,0x5D,0x09,0x32,
0x09,0x23,0x73,0x70,0x32,0x20,0x6F,0x78,0x79,0x67,0x65,0x6E,0x0A,0x49,0x4E,
0x54,0x48,0x59,0x42,0x09,0x5B,0x24,0x28,0x5B,0x23,0x38,0x44,0x31,0x5D,0x5B,
0x23,0x36,0x5D,0x5B,0x23,0x38,0x44,0x31,0x5D,0x29,0x5D,0x09,0x09,0x32,0x09,
0x23,0x73,0x70,0x32,0x20,0x6F,0x78,0x79,0x67,0x65,0x6E,0x0A,0x49,0x4E,0x54,
0x48,0x59,0x42,0x09,0x5B,0x24,0x28,0x4F,0x23,0x2A,0x29,0x5D,0x09,0x09,0x09,
0x31,0x09,0x23,0x73,0x70,0x20,0x20,0x6F,0x78,0x79,0x67,0x65,0x6E,0x0A,0x49,
0x4E,0x54,0x48,0x59,0x42,0x20,0x20,0x5B,0x44,0x34,0x5D,0x20,0x20,0x20,0x20,
0x49,0x4E,0x54,0x48,0x59,0x42,0x20,0x20,0x5B,0x44,0x34,0x5D,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x33,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x23,0x61,0x6E,0x79,0x20,0x34,0x20,0x76,0x61,0x6C,0x65,0x6E,0x74,
0x20,0x61,0x74,0x6F,0x6D,0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,0x50,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x33,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x23,0x61,0x6E,0x79,0x20,0x34,0x20,0x76,0x61,0x6C,0x65,0x6E,
0x74,0x20,0x61,0x74,0x6F,0x6D,0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,
0x43,0x5D,0x09,0x09,0x09,0x09,0x33,0x09,0x23,0x73,0x70,0x33,0x20,0x63,0x61,
0x72,0x62,0x6F,0x6E,0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,0x63,0x2C,
0x24,0x28,0x43,0x3D,0x2A,0x29,0x5D,0x09,0x09,0x09,0x32,0x09,0x23,0x73,0x70,
0x32,0x20,0x63,0x61,0x72,0x62,0x6F,0x6E,0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,
0x09,0x5B,0x24,0x28,0x5B,0x23,0x36,0x5D,0x28,0x5B,0x23,0x38,0x44,0x31,0x5D,
0x29,0x5B,0x23,0x38,0x44,0x31,0x5D,0x29,0x5D,0x09,0x09,0x32,0x09,0x23,0x73,
0x70,0x32,0x20,0x63,0x61,0x72,0x62,0x6F,0x6E,0x0A,0x49,0x4E,0x54,0x48,0x59,
0x42,0x09,0x5B,0x24,0x28,0x43,0x23,0x2A,0x29,0x2C,0x24,0x28,0x43,0x28,0x3D,
0x2A,0x29,0x3D,0x2A,0x29,0x5D,0x09,0x09,0x31,0x09,0x23,0x73,0x70,0x20,0x20,
0x63,0x61,0x72,0x62,0x6F,0x6E,0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,
0x4E,0x5D,0x09,0x09,0x09,0x09,0x33,0x09,0x23,0x73,0x70,0x33,0x20,0x6E,0x69,
0x74,0x72,0x6F,0x67,0x65,0x6E,0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,
0x6E,0x2C,0x24,0x28,0x4E,0x3D,0x2A,0x29,0x2C,0x24,0x28,0x4E,0x5B,0x23,0x36,
0x2C,0x23,0x37,0x2C,0x23,0x38,0x5D,0x3D,0x2C,0x3A,0x2C,0x23,0x2A,0x29,0x5D,
0x09,0x32,0x09,0x23,0x73,0x70,0x32,0x20,0x6E,0x69,0x74,0x72,0x6F,0x67,0x65,
0x6E,0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,0x20,0x20,0x5B,0x4E,0x44,0x31,0x2C,
0x4E,0x44,0x32,0x2C,0x4E,0x44,0x33,0x5D,0x61,0x09,0x09,0x09,0x32,0x09,0x23,
0x73,0x70,0x32,0x20,0x6E,0x69,0x74,0x72,0x6F,0x67,0x65,0x6E,0x0A,0x49,0x4E,
0x54,0x48,0x59,0x42,0x09,0x5B,0x24,0x28,0x4E,0x23,0x2A,0x29,0x2C,0x24,0x28,
0x5B,0x4E,0x44,0x32,0x5D,0x28,0x3D,0x2A,0x29,0x3D,0x2A,0x29,0x5D,0x09,0x09,
0x31,0x09,0x23,0x73,0x70,0x20,0x20,0x6E,0x69,0x74,0x72,0x6F,0x67,0x65,0x6E,
0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,0x4F,0x5D,0x09,0x09,0x09,0x09,
0x33,0x09,0x23,0x73,0x70,0x33,0x20,0x6F,0x78,0x79,0x67,0x65,0x6E,0x0A,0x49,
0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,0x6F,0x2C,0x24,0x28,0x4F,0x3D,0x2A,0x29,
0x2C,0x24,0x28,0x4F,0x5B,0x23,0x36,0x2C,0x23,0x37,0x2C,0x23,0x38,0x5D,0x3D,
0x2C,0x3A,0x2A,0x29,0x5D,0x09,0x32,0x09,0x23,0x73,0x70,0x32,0x20,0x6F,0x78,
0x79,0x67,0x65,0x6E,0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,0x24,0x28,
0x5B,0x23,0x38,0x44,0x31,0x5D,0x5B,0x23,0x36,0x5D,0x5B,0x23,0x38,0x44,0x31,
0x5D,0x29,0x5D,0x09,0x09,0x32,0x09,0x23,0x73,0x70,0x32,0x20,0x6F,0x78,0x79,
0x67,0x65,0x6E,0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,0x24,0x28,0x4F,
0x23,0x2A,0x29,0x5D,0x09,0x09,0x09,0x31,0x09,0x23,0x73,0x70,0x20,0x20,0x6F,
0x78,0x79,0x67,0x65,0x6E,0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,0x09,0x5B,0x50,
0x5D,0x09,0x09,0x09,0x09,0x33,0x09,0x23,0x73,0x70,0x33,0x20,0x70,0x68,0x6F,
0x73,0x70,0x68,0x6F,0x72,0x75,0x73,0x0A,0x49,0x4E,0x54,0x48,0x59,0x42,0x09,
0x5B,0x23,0x31,0x35,0x3B,0x24,0x28,0x5B,0x50,0x44,0x31,0x5D,0x3D,0x2A,0x29,
@@ -115,116 +115,123 @@ static const char AtomTypeData[] = {
0x32,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x20,0x20,0x5B,0x6E,0x2B,0x5D,0x09,
0x09,0x09,0x33,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x20,0x20,0x5B,0x23,0x39,
0x44,0x30,0x5D,0x09,0x09,0x20,0x20,0x31,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,
0x09,0x5B,0x23,0x31,0x35,0x44,0x34,0x5D,0x09,0x09,0x09,0x34,0x0A,0x49,0x4D,
0x50,0x56,0x41,0x4C,0x09,0x5B,0x23,0x31,0x35,0x44,0x33,0x5D,0x09,0x09,0x09,
0x33,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x09,0x5B,0x23,0x31,0x35,0x44,0x32,
0x5D,0x09,0x09,0x09,0x33,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x09,0x5B,0x23,
0x31,0x35,0x44,0x31,0x5E,0x33,0x5D,0x09,0x09,0x33,0x0A,0x49,0x4D,0x50,0x56,
0x41,0x4C,0x09,0x5B,0x23,0x31,0x35,0x44,0x31,0x5E,0x32,0x5D,0x09,0x09,0x33,
0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x20,0x20,0x5B,0x23,0x31,0x35,0x44,0x30,
0x5D,0x20,0x20,0x20,0x20,0x20,0x33,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x20,
0x20,0x5B,0x24,0x28,0x5B,0x23,0x31,0x35,0x5D,0x3D,0x5B,0x23,0x36,0x5D,0x29,
0x5D,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x32,0x0A,0x49,0x4D,0x50,
0x56,0x41,0x4C,0x20,0x20,0x5B,0x70,0x44,0x32,0x5D,0x09,0x09,0x09,0x32,0x0A,
0x49,0x4D,0x50,0x56,0x41,0x4C,0x20,0x20,0x5B,0x24,0x28,0x5B,0x23,0x31,0x35,
0x5D,0x3D,0x5B,0x23,0x38,0x5D,0x29,0x5D,0x09,0x09,0x34,0x20,0x23,0x20,0x70,
0x68,0x6F,0x73,0x70,0x68,0x69,0x6E,0x61,0x74,0x65,0x20,0x28,0x64,0x6F,0x75,
0x62,0x6C,0x65,0x20,0x62,0x6F,0x6E,0x64,0x20,0x3D,0x20,0x6F,0x6E,0x65,0x20,
0x76,0x61,0x6C,0x65,0x6E,0x63,0x65,0x29,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,
0x09,0x5B,0x23,0x31,0x36,0x44,0x34,0x5D,0x09,0x09,0x09,0x34,0x0A,0x49,0x4D,
0x50,0x56,0x41,0x4C,0x09,0x5B,0x23,0x31,0x36,0x44,0x33,0x5D,0x09,0x09,0x09,
0x33,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x09,0x5B,0x23,0x31,0x36,0x44,0x32,
0x5D,0x09,0x09,0x09,0x32,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x09,0x5B,0x24,
0x28,0x5B,0x23,0x31,0x36,0x44,0x31,0x5D,0x2D,0x2A,0x29,0x5D,0x09,0x09,0x32,
0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x09,0x5B,0x23,0x31,0x36,0x44,0x31,0x5E,
0x32,0x5D,0x09,0x09,0x31,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x20,0x20,0x5B,
0x73,0x5D,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x32,0x0A,0x49,0x4D,0x50,0x56,0x41,
0x4C,0x20,0x20,0x5B,0x23,0x31,0x36,0x44,0x31,0x2D,0x5D,0x09,0x09,0x31,0x0A,
0x49,0x4D,0x50,0x56,0x41,0x4C,0x20,0x20,0x5B,0x23,0x31,0x36,0x44,0x30,0x5D,
0x09,0x09,0x20,0x20,0x32,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x20,0x20,0x5B,
0x23,0x31,0x37,0x44,0x30,0x5D,0x09,0x09,0x20,0x20,0x31,0x0A,0x49,0x4D,0x50,
0x56,0x41,0x4C,0x20,0x20,0x5B,0x23,0x33,0x35,0x44,0x30,0x5D,0x09,0x09,0x20,
0x20,0x31,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x20,0x20,0x5B,0x23,0x35,0x33,
0x20,0x20,0x5B,0x23,0x39,0x44,0x30,0x2D,0x5D,0x09,0x09,0x20,0x20,0x30,0x20,
0x23,0x5B,0x46,0x2D,0x5D,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x09,0x5B,0x23,
0x31,0x35,0x44,0x34,0x5D,0x09,0x09,0x09,0x34,0x0A,0x49,0x4D,0x50,0x56,0x41,
0x4C,0x09,0x5B,0x23,0x31,0x35,0x44,0x33,0x5D,0x09,0x09,0x09,0x33,0x0A,0x49,
0x4D,0x50,0x56,0x41,0x4C,0x09,0x5B,0x23,0x31,0x35,0x44,0x32,0x5D,0x09,0x09,
0x09,0x33,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x09,0x5B,0x23,0x31,0x35,0x44,
0x31,0x5E,0x33,0x5D,0x09,0x09,0x33,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x09,
0x5B,0x23,0x31,0x35,0x44,0x31,0x5E,0x32,0x5D,0x09,0x09,0x33,0x0A,0x49,0x4D,
0x50,0x56,0x41,0x4C,0x20,0x20,0x5B,0x23,0x31,0x35,0x44,0x30,0x5D,0x20,0x20,
0x20,0x20,0x20,0x33,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x20,0x20,0x5B,0x24,
0x28,0x5B,0x23,0x31,0x35,0x5D,0x3D,0x5B,0x23,0x36,0x5D,0x29,0x5D,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x32,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,
0x20,0x20,0x5B,0x70,0x44,0x32,0x5D,0x09,0x09,0x09,0x32,0x0A,0x49,0x4D,0x50,
0x56,0x41,0x4C,0x20,0x20,0x5B,0x24,0x28,0x5B,0x23,0x31,0x35,0x5D,0x3D,0x5B,
0x23,0x38,0x5D,0x29,0x5D,0x09,0x09,0x34,0x20,0x23,0x20,0x70,0x68,0x6F,0x73,
0x70,0x68,0x69,0x6E,0x61,0x74,0x65,0x20,0x28,0x64,0x6F,0x75,0x62,0x6C,0x65,
0x20,0x62,0x6F,0x6E,0x64,0x20,0x3D,0x20,0x6F,0x6E,0x65,0x20,0x76,0x61,0x6C,
0x65,0x6E,0x63,0x65,0x29,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x09,0x5B,0x23,
0x31,0x36,0x44,0x34,0x5D,0x09,0x09,0x09,0x34,0x0A,0x49,0x4D,0x50,0x56,0x41,
0x4C,0x09,0x5B,0x23,0x31,0x36,0x44,0x33,0x5D,0x09,0x09,0x09,0x33,0x0A,0x49,
0x4D,0x50,0x56,0x41,0x4C,0x09,0x5B,0x23,0x31,0x36,0x44,0x32,0x5D,0x09,0x09,
0x09,0x32,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x09,0x5B,0x24,0x28,0x5B,0x23,
0x31,0x36,0x44,0x31,0x5D,0x2D,0x2A,0x29,0x5D,0x09,0x09,0x32,0x0A,0x49,0x4D,
0x50,0x56,0x41,0x4C,0x09,0x5B,0x23,0x31,0x36,0x44,0x31,0x5E,0x32,0x5D,0x09,
0x09,0x31,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x20,0x20,0x5B,0x73,0x5D,0x20,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
0x20,0x20,0x20,0x20,0x20,0x32,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x20,0x20,
0x5B,0x23,0x31,0x36,0x44,0x31,0x2D,0x5D,0x09,0x09,0x31,0x0A,0x49,0x4D,0x50,
0x56,0x41,0x4C,0x20,0x20,0x5B,0x23,0x31,0x36,0x44,0x30,0x5D,0x09,0x09,0x20,
0x20,0x32,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x20,0x20,0x5B,0x23,0x31,0x37,
0x44,0x30,0x5D,0x09,0x09,0x20,0x20,0x31,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,
0x20,0x20,0x5B,0x23,0x35,0x5D,0x09,0x09,0x09,0x33,0x0A,0x49,0x4D,0x50,0x56,
0x41,0x4C,0x20,0x20,0x5B,0x61,0x73,0x5D,0x09,0x09,0x09,0x33,0x0A,0x45,0x58,
0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x37,0x5E,0x33,0x5D,0x09,0x09,0x09,0x09,
0x09,0x4E,0x33,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x37,0x58,
0x34,0x2B,0x5D,0x09,0x09,0x09,0x09,0x09,0x4E,0x33,0x2B,0x0A,0x45,0x58,0x54,
0x54,0x59,0x50,0x09,0x5B,0x23,0x37,0x5E,0x32,0x5D,0x09,0x09,0x09,0x09,0x09,
0x4E,0x70,0x6C,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x37,0x5E,
0x31,0x5D,0x09,0x09,0x09,0x09,0x09,0x4E,0x31,0x0A,0x45,0x58,0x54,0x54,0x59,
0x50,0x09,0x5B,0x24,0x28,0x4E,0x3D,0x2A,0x29,0x5D,0x09,0x09,0x09,0x09,0x4E,
0x32,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x24,0x28,0x5B,0x4E,0x72,
0x30,0x5D,0x43,0x28,0x3D,0x5B,0x4E,0x72,0x30,0x5D,0x29,0x5B,0x4E,0x72,0x30,
0x5D,0x29,0x5D,0x09,0x09,0x4E,0x67,0x2B,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,
0x09,0x5B,0x24,0x28,0x5B,0x4E,0x72,0x30,0x5D,0x3D,0x43,0x28,0x5B,0x4E,0x72,
0x30,0x5D,0x29,0x5B,0x4E,0x72,0x30,0x5D,0x29,0x5D,0x09,0x09,0x4E,0x67,0x2B,
0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x24,0x28,0x5B,0x4E,0x44,0x31,
0x5D,0x3D,0x43,0x5B,0x4E,0x44,0x31,0x5D,0x29,0x5D,0x09,0x09,0x09,0x4E,0x67,
0x2B,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x24,0x28,0x5B,0x4E,0x44,
0x31,0x5D,0x43,0x3D,0x5B,0x4E,0x44,0x31,0x5D,0x29,0x5D,0x09,0x09,0x09,0x4E,
0x67,0x2B,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x24,0x28,0x4E,0x28,
0x4F,0x29,0x2A,0x29,0x5D,0x09,0x09,0x09,0x09,0x4E,0x6F,0x78,0x0A,0x45,0x58,
0x54,0x54,0x59,0x50,0x09,0x5B,0x24,0x28,0x4E,0x43,0x3D,0x5B,0x4F,0x2C,0x53,
0x5D,0x29,0x5D,0x09,0x09,0x09,0x09,0x4E,0x61,0x6D,0x0A,0x45,0x58,0x54,0x54,
0x59,0x50,0x09,0x5B,0x24,0x28,0x4E,0x28,0x7E,0x5B,0x4F,0x44,0x31,0x5D,0x29,
0x7E,0x5B,0x4F,0x44,0x31,0x5D,0x29,0x5D,0x09,0x09,0x09,0x4E,0x74,0x72,0x0A,
0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x6E,0x5D,0x09,0x09,0x09,0x09,0x09,
0x4E,0x61,0x72,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x36,0x5E,
0x33,0x5D,0x09,0x09,0x09,0x09,0x09,0x43,0x33,0x0A,0x45,0x58,0x54,0x54,0x59,
0x50,0x09,0x5B,0x23,0x36,0x5E,0x32,0x5D,0x09,0x09,0x09,0x09,0x09,0x43,0x32,
0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x24,0x28,0x43,0x28,0x3D,0x4F,
0x29,0x5B,0x4F,0x44,0x31,0x5D,0x29,0x5D,0x09,0x09,0x09,0x09,0x43,0x61,0x63,
0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x63,0x5D,0x09,0x09,0x09,0x09,
0x09,0x43,0x61,0x72,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x36,
0x5E,0x31,0x5D,0x09,0x09,0x09,0x09,0x09,0x43,0x31,0x0A,0x45,0x58,0x54,0x54,
0x59,0x50,0x09,0x5B,0x23,0x36,0x2B,0x5D,0x09,0x09,0x09,0x09,0x09,0x43,0x2B,
0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x36,0x2D,0x5D,0x09,0x09,
0x09,0x09,0x09,0x43,0x2D,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,
0x38,0x5E,0x33,0x5D,0x09,0x09,0x09,0x09,0x09,0x4F,0x33,0x0A,0x45,0x58,0x54,
0x54,0x59,0x50,0x09,0x5B,0x23,0x38,0x5E,0x32,0x5D,0x09,0x09,0x09,0x09,0x09,
0x4F,0x32,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x20,0x20,0x5B,0x24,0x28,0x4F,
0x61,0x29,0x5D,0x09,0x09,0x09,0x09,0x09,0x4F,0x32,0x0A,0x45,0x58,0x54,0x54,
0x59,0x50,0x09,0x5B,0x24,0x28,0x5B,0x4F,0x44,0x32,0x5D,0x43,0x3D,0x5B,0x4F,
0x2C,0x53,0x5D,0x29,0x5D,0x09,0x09,0x09,0x4F,0x33,0x09,0x23,0x65,0x73,0x74,
0x65,0x72,0x20,0x6F,0x78,0x79,0x67,0x65,0x6E,0x0A,0x45,0x58,0x54,0x54,0x59,
0x50,0x20,0x20,0x5B,0x24,0x28,0x4F,0x61,0x29,0x5D,0x09,0x09,0x09,0x09,0x09,
0x4F,0x33,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x61,0x72,0x6F,0x6D,0x61,0x74,
0x69,0x63,0x20,0x65,0x74,0x68,0x65,0x72,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,
0x09,0x5B,0x23,0x38,0x2D,0x5D,0x09,0x09,0x09,0x09,0x09,0x4F,0x2D,0x0A,0x45,
0x58,0x54,0x54,0x59,0x50,0x20,0x20,0x5B,0x24,0x28,0x5B,0x23,0x38,0x44,0x31,
0x5D,0x7E,0x5B,0x23,0x36,0x5D,0x7E,0x5B,0x23,0x38,0x44,0x31,0x5D,0x29,0x5D,
0x09,0x09,0x09,0x4F,0x2E,0x63,0x6F,0x32,0x20,0x20,0x0A,0x45,0x58,0x54,0x54,
0x59,0x50,0x09,0x5B,0x23,0x31,0x35,0x5D,0x09,0x09,0x09,0x09,0x09,0x50,0x0A,
0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x31,0x35,0x58,0x34,0x2B,0x5D,
0x09,0x09,0x09,0x09,0x50,0x33,0x2B,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,
0x5B,0x23,0x31,0x35,0x3B,0x24,0x28,0x5B,0x23,0x31,0x35,0x44,0x34,0x5D,0x28,
0x7E,0x5B,0x4F,0x44,0x31,0x5D,0x29,0x28,0x7E,0x5B,0x4F,0x44,0x31,0x5D,0x29,
0x7E,0x5B,0x4F,0x44,0x31,0x5D,0x29,0x5D,0x09,0x50,0x61,0x63,0x0A,0x45,0x58,
0x54,0x54,0x59,0x50,0x20,0x20,0x5B,0x23,0x31,0x35,0x3B,0x24,0x28,0x5B,0x23,
0x31,0x35,0x44,0x33,0x5D,0x28,0x7E,0x5B,0x4F,0x44,0x31,0x5D,0x29,0x7E,0x5B,
0x4F,0x44,0x31,0x5D,0x29,0x5D,0x09,0x09,0x50,0x61,0x63,0x0A,0x45,0x58,0x54,
0x54,0x59,0x50,0x09,0x5B,0x23,0x31,0x36,0x5D,0x09,0x09,0x09,0x09,0x09,0x53,
0x33,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x31,0x36,0x44,0x33,
0x2B,0x2C,0x23,0x31,0x36,0x58,0x33,0x2B,0x5D,0x09,0x09,0x09,0x09,0x53,0x33,
0x2B,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x31,0x36,0x3B,0x73,
0x2C,0x24,0x28,0x5B,0x53,0x44,0x31,0x5D,0x3D,0x2A,0x29,0x5D,0x09,0x09,0x09,
0x53,0x32,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x31,0x36,0x44,
0x34,0x3B,0x24,0x28,0x53,0x28,0x3D,0x4F,0x29,0x28,0x3D,0x4F,0x29,0x29,0x5D,
0x09,0x09,0x09,0x53,0x6F,0x32,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,
0x23,0x31,0x36,0x44,0x33,0x3B,0x24,0x28,0x53,0x28,0x3D,0x4F,0x29,0x29,0x5D,
0x09,0x09,0x09,0x53,0x6F,0x78,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,
0x23,0x31,0x36,0x3B,0x24,0x28,0x5B,0x23,0x31,0x36,0x44,0x34,0x5D,0x28,0x7E,
0x5B,0x4F,0x44,0x31,0x5D,0x29,0x28,0x7E,0x5B,0x4F,0x44,0x31,0x5D,0x29,0x7E,
0x5B,0x4F,0x44,0x31,0x5D,0x29,0x5D,0x09,0x53,0x61,0x63,0x0A,0x45,0x58,0x54,
0x20,0x20,0x5B,0x23,0x31,0x37,0x44,0x30,0x2D,0x5D,0x09,0x20,0x20,0x30,0x20,
0x23,0x5B,0x43,0x6C,0x2D,0x5D,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x20,0x20,
0x5B,0x23,0x33,0x35,0x44,0x30,0x5D,0x09,0x09,0x20,0x20,0x31,0x0A,0x49,0x4D,
0x50,0x56,0x41,0x4C,0x20,0x20,0x5B,0x23,0x33,0x35,0x44,0x30,0x2D,0x5D,0x09,
0x20,0x20,0x30,0x20,0x23,0x5B,0x42,0x72,0x2D,0x5D,0x0A,0x49,0x4D,0x50,0x56,
0x41,0x4C,0x20,0x20,0x5B,0x23,0x35,0x33,0x44,0x30,0x5D,0x09,0x09,0x20,0x20,
0x31,0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x20,0x20,0x5B,0x23,0x35,0x33,0x44,
0x30,0x2D,0x5D,0x09,0x20,0x20,0x30,0x20,0x23,0x5B,0x49,0x2D,0x5D,0x0A,0x49,
0x4D,0x50,0x56,0x41,0x4C,0x20,0x20,0x5B,0x23,0x35,0x5D,0x09,0x09,0x09,0x33,
0x0A,0x49,0x4D,0x50,0x56,0x41,0x4C,0x20,0x20,0x5B,0x61,0x73,0x5D,0x09,0x09,
0x09,0x33,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x37,0x5E,0x33,
0x5D,0x09,0x09,0x09,0x09,0x09,0x4E,0x33,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,
0x09,0x5B,0x23,0x37,0x58,0x34,0x2B,0x5D,0x09,0x09,0x09,0x09,0x09,0x4E,0x33,
0x2B,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x37,0x5E,0x32,0x5D,
0x09,0x09,0x09,0x09,0x09,0x4E,0x70,0x6C,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,
0x09,0x5B,0x23,0x37,0x5E,0x31,0x5D,0x09,0x09,0x09,0x09,0x09,0x4E,0x31,0x0A,
0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x24,0x28,0x4E,0x3D,0x2A,0x29,0x5D,
0x09,0x09,0x09,0x09,0x4E,0x32,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,
0x24,0x28,0x5B,0x4E,0x72,0x30,0x5D,0x43,0x28,0x3D,0x5B,0x4E,0x72,0x30,0x5D,
0x29,0x5B,0x4E,0x72,0x30,0x5D,0x29,0x5D,0x09,0x09,0x4E,0x67,0x2B,0x0A,0x45,
0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x24,0x28,0x5B,0x4E,0x72,0x30,0x5D,0x3D,
0x43,0x28,0x5B,0x4E,0x72,0x30,0x5D,0x29,0x5B,0x4E,0x72,0x30,0x5D,0x29,0x5D,
0x09,0x09,0x4E,0x67,0x2B,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x24,
0x28,0x5B,0x4E,0x44,0x31,0x5D,0x3D,0x43,0x5B,0x4E,0x44,0x31,0x5D,0x29,0x5D,
0x09,0x09,0x09,0x4E,0x67,0x2B,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,
0x24,0x28,0x5B,0x4E,0x44,0x31,0x5D,0x43,0x3D,0x5B,0x4E,0x44,0x31,0x5D,0x29,
0x5D,0x09,0x09,0x09,0x4E,0x67,0x2B,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,
0x5B,0x24,0x28,0x4E,0x28,0x4F,0x29,0x2A,0x29,0x5D,0x09,0x09,0x09,0x09,0x4E,
0x6F,0x78,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x24,0x28,0x4E,0x43,
0x3D,0x5B,0x4F,0x2C,0x53,0x5D,0x29,0x5D,0x09,0x09,0x09,0x09,0x4E,0x61,0x6D,
0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x24,0x28,0x4E,0x28,0x7E,0x5B,
0x4F,0x44,0x31,0x5D,0x29,0x7E,0x5B,0x4F,0x44,0x31,0x5D,0x29,0x5D,0x09,0x09,
0x09,0x4E,0x74,0x72,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x6E,0x5D,
0x09,0x09,0x09,0x09,0x09,0x4E,0x61,0x72,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,
0x09,0x5B,0x23,0x36,0x5E,0x33,0x5D,0x09,0x09,0x09,0x09,0x09,0x43,0x33,0x0A,
0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x36,0x5E,0x32,0x5D,0x09,0x09,
0x09,0x09,0x09,0x43,0x32,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x24,
0x28,0x43,0x28,0x3D,0x4F,0x29,0x5B,0x4F,0x44,0x31,0x5D,0x29,0x5D,0x09,0x09,
0x09,0x09,0x43,0x61,0x63,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x63,
0x5D,0x09,0x09,0x09,0x09,0x09,0x43,0x61,0x72,0x0A,0x45,0x58,0x54,0x54,0x59,
0x50,0x09,0x5B,0x23,0x36,0x5E,0x31,0x5D,0x09,0x09,0x09,0x09,0x09,0x43,0x31,
0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x36,0x2B,0x5D,0x09,0x09,
0x09,0x09,0x09,0x43,0x2B,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,
0x36,0x2D,0x5D,0x09,0x09,0x09,0x09,0x09,0x43,0x2D,0x0A,0x45,0x58,0x54,0x54,
0x59,0x50,0x09,0x5B,0x23,0x38,0x5E,0x33,0x5D,0x09,0x09,0x09,0x09,0x09,0x4F,
0x33,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x38,0x5E,0x32,0x5D,
0x09,0x09,0x09,0x09,0x09,0x4F,0x32,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x20,
0x20,0x5B,0x24,0x28,0x4F,0x61,0x29,0x5D,0x09,0x09,0x09,0x09,0x09,0x4F,0x32,
0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x24,0x28,0x5B,0x4F,0x44,0x32,
0x5D,0x43,0x3D,0x5B,0x4F,0x2C,0x53,0x5D,0x29,0x5D,0x09,0x09,0x09,0x4F,0x33,
0x09,0x23,0x65,0x73,0x74,0x65,0x72,0x20,0x6F,0x78,0x79,0x67,0x65,0x6E,0x0A,
0x45,0x58,0x54,0x54,0x59,0x50,0x20,0x20,0x5B,0x24,0x28,0x4F,0x61,0x29,0x5D,
0x09,0x09,0x09,0x09,0x09,0x4F,0x33,0x20,0x20,0x20,0x20,0x20,0x20,0x23,0x61,
0x72,0x6F,0x6D,0x61,0x74,0x69,0x63,0x20,0x65,0x74,0x68,0x65,0x72,0x0A,0x45,
0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x38,0x2D,0x5D,0x09,0x09,0x09,0x09,
0x09,0x4F,0x2D,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x20,0x20,0x5B,0x24,0x28,
0x5B,0x23,0x38,0x44,0x31,0x5D,0x7E,0x5B,0x23,0x36,0x5D,0x7E,0x5B,0x23,0x38,
0x44,0x31,0x5D,0x29,0x5D,0x09,0x09,0x09,0x4F,0x2E,0x63,0x6F,0x32,0x20,0x20,
0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x31,0x35,0x5D,0x09,0x09,
0x09,0x09,0x09,0x50,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x31,
0x35,0x58,0x34,0x2B,0x5D,0x09,0x09,0x09,0x09,0x50,0x33,0x2B,0x0A,0x45,0x58,
0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x31,0x35,0x3B,0x24,0x28,0x5B,0x23,0x31,
0x35,0x44,0x34,0x5D,0x28,0x7E,0x5B,0x4F,0x44,0x31,0x5D,0x29,0x28,0x7E,0x5B,
0x4F,0x44,0x31,0x5D,0x29,0x7E,0x5B,0x4F,0x44,0x31,0x5D,0x29,0x5D,0x09,0x50,
0x61,0x63,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x20,0x20,0x5B,0x23,0x31,0x35,
0x3B,0x24,0x28,0x5B,0x23,0x31,0x35,0x44,0x33,0x5D,0x28,0x7E,0x5B,0x4F,0x44,
0x31,0x5D,0x29,0x7E,0x5B,0x4F,0x44,0x31,0x5D,0x29,0x5D,0x09,0x09,0x50,0x61,
0x63,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x31,0x36,0x5D,0x09,
0x09,0x09,0x09,0x09,0x53,0x33,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,
0x23,0x31,0x36,0x44,0x33,0x2B,0x2C,0x23,0x31,0x36,0x58,0x33,0x2B,0x5D,0x09,
0x09,0x09,0x09,0x53,0x33,0x2B,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,
0x23,0x31,0x36,0x3B,0x73,0x2C,0x24,0x28,0x5B,0x53,0x44,0x31,0x5D,0x3D,0x2A,
0x29,0x5D,0x09,0x09,0x09,0x53,0x32,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,
0x5B,0x23,0x31,0x36,0x44,0x34,0x3B,0x24,0x28,0x53,0x28,0x3D,0x4F,0x29,0x28,
0x3D,0x4F,0x29,0x29,0x5D,0x09,0x09,0x09,0x53,0x6F,0x32,0x0A,0x45,0x58,0x54,
0x54,0x59,0x50,0x09,0x5B,0x23,0x31,0x36,0x44,0x33,0x3B,0x24,0x28,0x53,0x28,
0x3D,0x4F,0x29,0x29,0x5D,0x09,0x09,0x09,0x53,0x6F,0x78,0x0A,0x45,0x58,0x54,
0x54,0x59,0x50,0x09,0x5B,0x23,0x31,0x36,0x3B,0x24,0x28,0x5B,0x23,0x31,0x36,
0x44,0x33,0x5D,0x28,0x7E,0x5B,0x4F,0x44,0x31,0x5D,0x29,0x7E,0x5B,0x4F,0x44,
0x31,0x5D,0x29,0x5D,0x09,0x09,0x53,0x61,0x63,0x0A,0x45,0x58,0x54,0x54,0x59,
0x50,0x09,0x5B,0x23,0x35,0x5D,0x09,0x09,0x09,0x09,0x09,0x42,0x32,0x0A,0x45,
0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x35,0x44,0x34,0x5D,0x09,0x09,0x09,
0x09,0x09,0x42,0x33,0x0A,0x00};
0x44,0x34,0x5D,0x28,0x7E,0x5B,0x4F,0x44,0x31,0x5D,0x29,0x28,0x7E,0x5B,0x4F,
0x44,0x31,0x5D,0x29,0x7E,0x5B,0x4F,0x44,0x31,0x5D,0x29,0x5D,0x09,0x53,0x61,
0x63,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x31,0x36,0x3B,0x24,
0x28,0x5B,0x23,0x31,0x36,0x44,0x33,0x5D,0x28,0x7E,0x5B,0x4F,0x44,0x31,0x5D,
0x29,0x7E,0x5B,0x4F,0x44,0x31,0x5D,0x29,0x5D,0x09,0x09,0x53,0x61,0x63,0x0A,
0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x35,0x5D,0x09,0x09,0x09,0x09,
0x09,0x42,0x32,0x0A,0x45,0x58,0x54,0x54,0x59,0x50,0x09,0x5B,0x23,0x35,0x44,
0x34,0x5D,0x09,0x09,0x09,0x09,0x09,0x42,0x33,0x0A,0x00};
} // namespace OpenBabel
#endif // OB_ATOMTYP_H

View File

@@ -20,6 +20,7 @@
# #
##############################################################################
INTHYB [D4] 3 #any 4 valent atom
INTHYB [C] 3 #sp3 carbon
INTHYB [c,$(C=*)] 2 #sp2 carbon
INTHYB [$([#6]([#8D1])[#8D1])] 2 #sp2 carbon
@@ -32,7 +33,6 @@ INTHYB [O] 3 #sp3 oxygen
INTHYB [o,$(O=*),$(O[#6,#7,#8]=,:*)] 2 #sp2 oxygen
INTHYB [$([#8D1][#6][#8D1])] 2 #sp2 oxygen
INTHYB [$(O#*)] 1 #sp oxygen
INTHYB [D4] 3 #any 4 valent atom
INTHYB [P] 3 #sp3 phosphorus
INTHYB [#15;$([PD1]=*)] 2 #sp2 phosphorus

View File

@@ -57,12 +57,15 @@ AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@
BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@
BUILD_INCHI_FALSE = @BUILD_INCHI_FALSE@
BUILD_INCHI_TRUE = @BUILD_INCHI_TRUE@
BUILD_SCRIPTS_FALSE = @BUILD_SCRIPTS_FALSE@
BUILD_SCRIPTS_TRUE = @BUILD_SCRIPTS_TRUE@
BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@
@@ -87,6 +90,7 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DOXYGEN = @DOXYGEN@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
@@ -111,6 +115,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -137,9 +142,12 @@ XML2_CONFIG = @XML2_CONFIG@
XML_CPPFLAGS = @XML_CPPFLAGS@
XML_LIBS = @XML_LIBS@
ac_ct_AR = @ac_ct_AR@
ac_ct_AS = @ac_ct_AS@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
ac_ct_F77 = @ac_ct_F77@
ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
@@ -199,9 +207,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu doc/Makefile
$(AUTOMAKE) --foreign doc/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \

View File

@@ -60,6 +60,8 @@ AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@
BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@
BUILD_INCHI_FALSE = @BUILD_INCHI_FALSE@
BUILD_INCHI_TRUE = @BUILD_INCHI_TRUE@
BUILD_SCRIPTS_FALSE = @BUILD_SCRIPTS_FALSE@
BUILD_SCRIPTS_TRUE = @BUILD_SCRIPTS_TRUE@
BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@
@@ -201,9 +203,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu scripts/Makefile'; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign scripts/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu scripts/Makefile
$(AUTOMAKE) --foreign scripts/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \

View File

@@ -6,6 +6,12 @@
#endif
%{
// used to set import/export for Cygwin DLLs
#ifdef WIN32
#define USING_OBDLL
#endif
#include "obutil.h"
#include "math/vector3.h"
#include "math/matrix3x3.h"

View File

@@ -1,7 +1,7 @@
# http://module-build.sourceforge.net/META-spec.html
#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
name: Chemistry-OpenBabel
version: 1.0.0
version: 1.2.0
version_from:
installdirs: site
requires:

View File

@@ -46,6 +46,7 @@ sub this {
package Chemistry::OpenBabel;
*OpenDatafile = *Chemistry::OpenBabelc::OpenDatafile;
*DoubleMultiply = *Chemistry::OpenBabelc::DoubleMultiply;
*DoubleAdd = *Chemistry::OpenBabelc::DoubleAdd;
*DoubleModulus = *Chemistry::OpenBabelc::DoubleModulus;

View File

@@ -1452,53 +1452,54 @@ SWIG_Perl_SetModule(swig_module_info *module) {
#define SWIGTYPE_p_p_double swig_types[58]
#define SWIGTYPE_p_p_int swig_types[59]
#define SWIGTYPE_p_std__dequeTint_t swig_types[60]
#define SWIGTYPE_p_std__istream swig_types[61]
#define SWIGTYPE_p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_t swig_types[62]
#define SWIGTYPE_p_std__mapTint_OpenBabel__OBAtom_p_t swig_types[63]
#define SWIGTYPE_p_std__mapTstd__string_std__string_t swig_types[64]
#define SWIGTYPE_p_std__ostream swig_types[65]
#define SWIGTYPE_p_std__out_of_range swig_types[66]
#define SWIGTYPE_p_std__pairTOpenBabel__OBAtom_p_OpenBabel__OBAtom_p_t swig_types[67]
#define SWIGTYPE_p_std__streampos swig_types[68]
#define SWIGTYPE_p_std__string swig_types[69]
#define SWIGTYPE_p_std__type_info swig_types[70]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBAtom_p_t swig_types[71]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBAtom_p_t__iterator swig_types[72]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBBond_p_t swig_types[73]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBBond_t swig_types[74]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator swig_types[75]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBExternalBond_t swig_types[76]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t swig_types[77]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t__iterator swig_types[78]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBInternalCoord_p_t swig_types[79]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBInternalCoord_p_t__iterator swig_types[80]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBMol_t swig_types[81]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBNodeBase_p_t swig_types[82]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBNodeBase_p_t__iterator swig_types[83]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBResidue_p_t__iterator swig_types[84]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBResidue_t swig_types[85]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_p_t swig_types[86]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_p_t__iterator swig_types[87]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_t swig_types[88]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBTorsion_t swig_types[89]
#define SWIGTYPE_p_std__vectorTOpenBabel__tripleTOpenBabel__OBAtom_p_OpenBabel__OBAtom_p_double_t_t swig_types[90]
#define SWIGTYPE_p_std__vectorTOpenBabel__vector3_t swig_types[91]
#define SWIGTYPE_p_std__vectorTdouble_p_t swig_types[92]
#define SWIGTYPE_p_std__vectorTdouble_p_t__iterator swig_types[93]
#define SWIGTYPE_p_std__vectorTdouble_t swig_types[94]
#define SWIGTYPE_p_std__vectorTint_t swig_types[95]
#define SWIGTYPE_p_std__vectorTstd__pairTint_int_t_t swig_types[96]
#define SWIGTYPE_p_std__vectorTstd__pairTstd__string_std__string_t_t swig_types[97]
#define SWIGTYPE_p_std__vectorTstd__string_t swig_types[98]
#define SWIGTYPE_p_std__vectorTstd__vectorTOpenBabel__vector3_t_t swig_types[99]
#define SWIGTYPE_p_std__vectorTstd__vectorTint_t_t swig_types[100]
#define SWIGTYPE_p_std__vectorTstd__vectorTint_t_t__iterator swig_types[101]
#define SWIGTYPE_p_std__vectorTstd__vectorTunsigned_int_t_t swig_types[102]
#define SWIGTYPE_p_std__vectorTunsigned_int_t swig_types[103]
#define SWIGTYPE_p_std__vectorTunsigned_short_t swig_types[104]
#define SWIGTYPE_p_unsigned_int swig_types[105]
static swig_type_info *swig_types[107];
static swig_module_info swig_module = {swig_types, 106, 0, 0, 0, 0};
#define SWIGTYPE_p_std__ifstream swig_types[61]
#define SWIGTYPE_p_std__istream swig_types[62]
#define SWIGTYPE_p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_t swig_types[63]
#define SWIGTYPE_p_std__mapTint_OpenBabel__OBAtom_p_t swig_types[64]
#define SWIGTYPE_p_std__mapTstd__string_std__string_t swig_types[65]
#define SWIGTYPE_p_std__ostream swig_types[66]
#define SWIGTYPE_p_std__out_of_range swig_types[67]
#define SWIGTYPE_p_std__pairTOpenBabel__OBAtom_p_OpenBabel__OBAtom_p_t swig_types[68]
#define SWIGTYPE_p_std__streampos swig_types[69]
#define SWIGTYPE_p_std__string swig_types[70]
#define SWIGTYPE_p_std__type_info swig_types[71]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBAtom_p_t swig_types[72]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBAtom_p_t__iterator swig_types[73]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBBond_p_t swig_types[74]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBBond_t swig_types[75]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBEdgeBase_p_t__iterator swig_types[76]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBExternalBond_t swig_types[77]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t swig_types[78]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_t__iterator swig_types[79]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBInternalCoord_p_t swig_types[80]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBInternalCoord_p_t__iterator swig_types[81]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBMol_t swig_types[82]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBNodeBase_p_t swig_types[83]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBNodeBase_p_t__iterator swig_types[84]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBResidue_p_t__iterator swig_types[85]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBResidue_t swig_types[86]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_p_t swig_types[87]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_p_t__iterator swig_types[88]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_t swig_types[89]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBTorsion_t swig_types[90]
#define SWIGTYPE_p_std__vectorTOpenBabel__tripleTOpenBabel__OBAtom_p_OpenBabel__OBAtom_p_double_t_t swig_types[91]
#define SWIGTYPE_p_std__vectorTOpenBabel__vector3_t swig_types[92]
#define SWIGTYPE_p_std__vectorTdouble_p_t swig_types[93]
#define SWIGTYPE_p_std__vectorTdouble_p_t__iterator swig_types[94]
#define SWIGTYPE_p_std__vectorTdouble_t swig_types[95]
#define SWIGTYPE_p_std__vectorTint_t swig_types[96]
#define SWIGTYPE_p_std__vectorTstd__pairTint_int_t_t swig_types[97]
#define SWIGTYPE_p_std__vectorTstd__pairTstd__string_std__string_t_t swig_types[98]
#define SWIGTYPE_p_std__vectorTstd__string_t swig_types[99]
#define SWIGTYPE_p_std__vectorTstd__vectorTOpenBabel__vector3_t_t swig_types[100]
#define SWIGTYPE_p_std__vectorTstd__vectorTint_t_t swig_types[101]
#define SWIGTYPE_p_std__vectorTstd__vectorTint_t_t__iterator swig_types[102]
#define SWIGTYPE_p_std__vectorTstd__vectorTunsigned_int_t_t swig_types[103]
#define SWIGTYPE_p_std__vectorTunsigned_int_t swig_types[104]
#define SWIGTYPE_p_std__vectorTunsigned_short_t swig_types[105]
#define SWIGTYPE_p_unsigned_int swig_types[106]
static swig_type_info *swig_types[108];
static swig_module_info swig_module = {swig_types, 107, 0, 0, 0, 0};
#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
@@ -1533,6 +1534,12 @@ SWIGEXPORT void SWIG_init (CV *cv, CPerlObj *);
#endif
// used to set import/export for Cygwin DLLs
#ifdef WIN32
#define USING_OBDLL
#endif
#include "obutil.h"
#include "math/vector3.h"
#include "math/matrix3x3.h"
@@ -10872,6 +10879,52 @@ XS(_wrap_delete_OBResidueData) {
}
XS(_wrap_OpenDatafile) {
{
std::ifstream *arg1 = 0 ;
std::string *arg2 = 0 ;
std::string result;
void *argp1 = 0 ;
int res1 = 0 ;
int res2 = SWIG_OLDOBJ ;
int argvi = 0;
dXSARGS;
if ((items < 2) || (items > 2)) {
SWIG_croak("Usage: OpenDatafile(fs,filename);");
}
res1 = SWIG_ConvertPtr(ST(0), &argp1, SWIGTYPE_p_std__ifstream, 0 );
if (!SWIG_IsOK(res1)) {
SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "OpenDatafile" "', argument " "1"" of type '" "std::ifstream &""'");
}
if (!argp1) {
SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "OpenDatafile" "', argument " "1"" of type '" "std::ifstream &""'");
}
arg1 = reinterpret_cast< std::ifstream * >(argp1);
{
std::string *ptr = (std::string *)0;
res2 = SWIG_AsPtr_std_string SWIG_PERL_CALL_ARGS_2(ST(1), &ptr);
if (!SWIG_IsOK(res2)) {
SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "OpenDatafile" "', argument " "2"" of type '" "std::string const &""'");
}
if (!ptr) {
SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "OpenDatafile" "', argument " "2"" of type '" "std::string const &""'");
}
arg2 = ptr;
}
result = OpenBabel::OpenDatafile(*arg1,(std::string const &)*arg2);
ST(argvi) = SWIG_From_std_string SWIG_PERL_CALL_ARGS_1(static_cast< std::string >(result)); argvi++ ;
if (SWIG_IsNewObj(res2)) delete arg2;
XSRETURN(argvi);
fail:
if (SWIG_IsNewObj(res2)) delete arg2;
SWIG_croak_null();
}
}
XS(_wrap_OBStopwatch_Start) {
{
OpenBabel::OBStopwatch *arg1 = (OpenBabel::OBStopwatch *) 0 ;
@@ -25304,7 +25357,7 @@ XS(_wrap_OBConversion_AddChemObject) {
{
OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
OpenBabel::OBBase *arg2 = (OpenBabel::OBBase *) 0 ;
int result;
bool result;
void *argp1 = 0 ;
int res1 = 0 ;
void *argp2 = 0 ;
@@ -25325,8 +25378,8 @@ XS(_wrap_OBConversion_AddChemObject) {
SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "OBConversion_AddChemObject" "', argument " "2"" of type '" "OpenBabel::OBBase *""'");
}
arg2 = reinterpret_cast< OpenBabel::OBBase * >(argp2);
result = (int)(arg1)->AddChemObject(arg2);
ST(argvi) = SWIG_From_int SWIG_PERL_CALL_ARGS_1(static_cast< int >(result)); argvi++ ;
result = (bool)(arg1)->AddChemObject(arg2);
ST(argvi) = SWIG_From_bool SWIG_PERL_CALL_ARGS_1(static_cast< bool >(result)); argvi++ ;
XSRETURN(argvi);
@@ -46003,6 +46056,7 @@ static swig_type_info _swigt__p_p_OpenBabel__OBFormat = {"_p_p_OpenBabel__OBForm
static swig_type_info _swigt__p_p_double = {"_p_p_double", "double **", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_p_int = {"_p_p_int", "int **", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__dequeTint_t = {"_p_std__dequeTint_t", "std::deque<int > *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__ifstream = {"_p_std__ifstream", "std::ifstream *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__istream = {"_p_std__istream", "std::istream *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_t = {"_p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_t", "std::map<char const *,OpenBabel::OBFormat *,OpenBabel::CharPtrLess > *|OpenBabel::FMapType *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__mapTint_OpenBabel__OBAtom_p_t = {"_p_std__mapTint_OpenBabel__OBAtom_p_t", "std::map<int,OpenBabel::OBAtom * > *", 0, 0, (void*)0, 0};
@@ -46111,6 +46165,7 @@ static swig_type_info *swig_type_initial[] = {
&_swigt__p_p_double,
&_swigt__p_p_int,
&_swigt__p_std__dequeTint_t,
&_swigt__p_std__ifstream,
&_swigt__p_std__istream,
&_swigt__p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_t,
&_swigt__p_std__mapTint_OpenBabel__OBAtom_p_t,
@@ -46219,6 +46274,7 @@ static swig_cast_info _swigc__p_p_OpenBabel__OBFormat[] = { {&_swigt__p_p_OpenB
static swig_cast_info _swigc__p_p_double[] = { {&_swigt__p_p_double, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_p_int[] = { {&_swigt__p_p_int, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__dequeTint_t[] = { {&_swigt__p_std__dequeTint_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__ifstream[] = { {&_swigt__p_std__ifstream, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__istream[] = { {&_swigt__p_std__istream, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_t[] = { {&_swigt__p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__mapTint_OpenBabel__OBAtom_p_t[] = { {&_swigt__p_std__mapTint_OpenBabel__OBAtom_p_t, 0, 0, 0},{0, 0, 0, 0}};
@@ -46327,6 +46383,7 @@ static swig_cast_info *swig_cast_initial[] = {
_swigc__p_p_double,
_swigc__p_p_int,
_swigc__p_std__dequeTint_t,
_swigc__p_std__ifstream,
_swigc__p_std__istream,
_swigc__p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_t,
_swigc__p_std__mapTint_OpenBabel__OBAtom_p_t,
@@ -46571,6 +46628,7 @@ static swig_command_info swig_commands[] = {
{"Chemistry::OpenBabelc::OBResidueData_LookupType", _wrap_OBResidueData_LookupType},
{"Chemistry::OpenBabelc::OBResidueData_AssignBonds", _wrap_OBResidueData_AssignBonds},
{"Chemistry::OpenBabelc::delete_OBResidueData", _wrap_delete_OBResidueData},
{"Chemistry::OpenBabelc::OpenDatafile", _wrap_OpenDatafile},
{"Chemistry::OpenBabelc::OBStopwatch_Start", _wrap_OBStopwatch_Start},
{"Chemistry::OpenBabelc::OBStopwatch_Lap", _wrap_OBStopwatch_Lap},
{"Chemistry::OpenBabelc::OBStopwatch_Elapsed", _wrap_OBStopwatch_Elapsed},

View File

@@ -519,6 +519,7 @@ class OBResidueData(OBGlobalDataBase):
OBResidueData_swigregister = _openbabel.OBResidueData_swigregister
OBResidueData_swigregister(OBResidueData)
OpenDatafile = _openbabel.OpenDatafile
FILE_SEP_CHAR = _openbabel.FILE_SEP_CHAR
class OBStopwatch(object):
thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')

View File

@@ -2527,67 +2527,68 @@ SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags)
#define SWIGTYPE_p_p_int swig_types[62]
#define SWIGTYPE_p_size_type swig_types[63]
#define SWIGTYPE_p_std__dequeTint_t swig_types[64]
#define SWIGTYPE_p_std__invalid_argument swig_types[65]
#define SWIGTYPE_p_std__istream swig_types[66]
#define SWIGTYPE_p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_std__allocatorTstd__pairTchar_const_pconst_OpenBabel__OBFormat_p_t_t_t swig_types[67]
#define SWIGTYPE_p_std__mapTint_OpenBabel__OBAtom_p_std__lessTint_t_std__allocatorTstd__pairTint_const_OpenBabel__OBAtom_p_t_t_t swig_types[68]
#define SWIGTYPE_p_std__mapTstd__string_std__string_std__lessTstd__string_t_std__allocatorTstd__pairTstd__string_const_std__string_t_t_t swig_types[69]
#define SWIGTYPE_p_std__ostream swig_types[70]
#define SWIGTYPE_p_std__pairTOpenBabel__OBAtom_p_OpenBabel__OBAtom_p_t swig_types[71]
#define SWIGTYPE_p_std__streampos swig_types[72]
#define SWIGTYPE_p_std__string swig_types[73]
#define SWIGTYPE_p_std__type_info swig_types[74]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBAtom_p_std__allocatorTOpenBabel__OBAtom_p_t_t swig_types[75]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBAtom_p_std__allocatorTOpenBabel__OBAtom_p_t_t__iterator swig_types[76]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBBond_p_std__allocatorTOpenBabel__OBBond_p_t_t swig_types[77]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBBond_std__allocatorTOpenBabel__OBBond_t_t swig_types[78]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBBond_std__allocatorTOpenBabel__OBBond_t_t__allocator_type swig_types[79]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBBond_std__allocatorTOpenBabel__OBBond_t_t__value_type swig_types[80]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBEdgeBase_p_std__allocatorTOpenBabel__OBEdgeBase_p_t_t__iterator swig_types[81]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBExternalBond_std__allocatorTOpenBabel__OBExternalBond_t_t swig_types[82]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_std__allocatorTOpenBabel__OBGenericData_p_t_t swig_types[83]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_std__allocatorTOpenBabel__OBGenericData_p_t_t__iterator swig_types[84]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBInternalCoord_p_std__allocatorTOpenBabel__OBInternalCoord_p_t_t swig_types[85]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBInternalCoord_p_std__allocatorTOpenBabel__OBInternalCoord_p_t_t__iterator swig_types[86]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBMol_std__allocatorTOpenBabel__OBMol_t_t swig_types[87]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBMol_std__allocatorTOpenBabel__OBMol_t_t__allocator_type swig_types[88]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBMol_std__allocatorTOpenBabel__OBMol_t_t__value_type swig_types[89]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBNodeBase_p_std__allocatorTOpenBabel__OBNodeBase_p_t_t swig_types[90]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBNodeBase_p_std__allocatorTOpenBabel__OBNodeBase_p_t_t__iterator swig_types[91]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBResidue_p_std__allocatorTOpenBabel__OBResidue_p_t_t__iterator swig_types[92]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBResidue_std__allocatorTOpenBabel__OBResidue_t_t swig_types[93]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBResidue_std__allocatorTOpenBabel__OBResidue_t_t__allocator_type swig_types[94]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBResidue_std__allocatorTOpenBabel__OBResidue_t_t__value_type swig_types[95]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_p_std__allocatorTOpenBabel__OBRing_p_t_t swig_types[96]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_p_std__allocatorTOpenBabel__OBRing_p_t_t__iterator swig_types[97]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_std__allocatorTOpenBabel__OBRing_t_t swig_types[98]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_std__allocatorTOpenBabel__OBRing_t_t__allocator_type swig_types[99]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_std__allocatorTOpenBabel__OBRing_t_t__value_type swig_types[100]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBTorsion_std__allocatorTOpenBabel__OBTorsion_t_t swig_types[101]
#define SWIGTYPE_p_std__vectorTOpenBabel__tripleTOpenBabel__OBAtom_p_OpenBabel__OBAtom_p_double_t_std__allocatorTOpenBabel__tripleTOpenBabel__OBAtom_p_OpenBabel__OBAtom_p_double_t_t_t swig_types[102]
#define SWIGTYPE_p_std__vectorTOpenBabel__vector3_std__allocatorTOpenBabel__vector3_t_t swig_types[103]
#define SWIGTYPE_p_std__vectorTOpenBabel__vector3_std__allocatorTOpenBabel__vector3_t_t__allocator_type swig_types[104]
#define SWIGTYPE_p_std__vectorTOpenBabel__vector3_std__allocatorTOpenBabel__vector3_t_t__value_type swig_types[105]
#define SWIGTYPE_p_std__vectorTdouble_p_std__allocatorTdouble_p_t_t swig_types[106]
#define SWIGTYPE_p_std__vectorTdouble_p_std__allocatorTdouble_p_t_t__iterator swig_types[107]
#define SWIGTYPE_p_std__vectorTdouble_std__allocatorTdouble_t_t swig_types[108]
#define SWIGTYPE_p_std__vectorTdouble_std__allocatorTdouble_t_t__allocator_type swig_types[109]
#define SWIGTYPE_p_std__vectorTint_std__allocatorTint_t_t swig_types[110]
#define SWIGTYPE_p_std__vectorTint_std__allocatorTint_t_t__allocator_type swig_types[111]
#define SWIGTYPE_p_std__vectorTstd__pairTint_int_t_std__allocatorTstd__pairTint_int_t_t_t swig_types[112]
#define SWIGTYPE_p_std__vectorTstd__pairTstd__string_std__string_t_std__allocatorTstd__pairTstd__string_std__string_t_t_t swig_types[113]
#define SWIGTYPE_p_std__vectorTstd__string_std__allocatorTstd__string_t_t swig_types[114]
#define SWIGTYPE_p_std__vectorTstd__vectorTOpenBabel__vector3_std__allocatorTOpenBabel__vector3_t_t_std__allocatorTstd__vectorTOpenBabel__vector3_std__allocatorTOpenBabel__vector3_t_t_t_t swig_types[115]
#define SWIGTYPE_p_std__vectorTstd__vectorTint_std__allocatorTint_t_t_std__allocatorTstd__vectorTint_std__allocatorTint_t_t_t_t swig_types[116]
#define SWIGTYPE_p_std__vectorTstd__vectorTint_std__allocatorTint_t_t_std__allocatorTstd__vectorTint_std__allocatorTint_t_t_t_t__allocator_type swig_types[117]
#define SWIGTYPE_p_std__vectorTstd__vectorTunsigned_int_std__allocatorTunsigned_int_t_t_std__allocatorTstd__vectorTunsigned_int_std__allocatorTunsigned_int_t_t_t_t swig_types[118]
#define SWIGTYPE_p_std__vectorTunsigned_int_std__allocatorTunsigned_int_t_t swig_types[119]
#define SWIGTYPE_p_std__vectorTunsigned_short_std__allocatorTunsigned_short_t_t swig_types[120]
#define SWIGTYPE_p_swig__PySwigIterator swig_types[121]
#define SWIGTYPE_p_unsigned_int swig_types[122]
#define SWIGTYPE_p_value_type swig_types[123]
static swig_type_info *swig_types[125];
static swig_module_info swig_module = {swig_types, 124, 0, 0, 0, 0};
#define SWIGTYPE_p_std__ifstream swig_types[65]
#define SWIGTYPE_p_std__invalid_argument swig_types[66]
#define SWIGTYPE_p_std__istream swig_types[67]
#define SWIGTYPE_p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_std__allocatorTstd__pairTchar_const_pconst_OpenBabel__OBFormat_p_t_t_t swig_types[68]
#define SWIGTYPE_p_std__mapTint_OpenBabel__OBAtom_p_std__lessTint_t_std__allocatorTstd__pairTint_const_OpenBabel__OBAtom_p_t_t_t swig_types[69]
#define SWIGTYPE_p_std__mapTstd__string_std__string_std__lessTstd__string_t_std__allocatorTstd__pairTstd__string_const_std__string_t_t_t swig_types[70]
#define SWIGTYPE_p_std__ostream swig_types[71]
#define SWIGTYPE_p_std__pairTOpenBabel__OBAtom_p_OpenBabel__OBAtom_p_t swig_types[72]
#define SWIGTYPE_p_std__streampos swig_types[73]
#define SWIGTYPE_p_std__string swig_types[74]
#define SWIGTYPE_p_std__type_info swig_types[75]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBAtom_p_std__allocatorTOpenBabel__OBAtom_p_t_t swig_types[76]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBAtom_p_std__allocatorTOpenBabel__OBAtom_p_t_t__iterator swig_types[77]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBBond_p_std__allocatorTOpenBabel__OBBond_p_t_t swig_types[78]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBBond_std__allocatorTOpenBabel__OBBond_t_t swig_types[79]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBBond_std__allocatorTOpenBabel__OBBond_t_t__allocator_type swig_types[80]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBBond_std__allocatorTOpenBabel__OBBond_t_t__value_type swig_types[81]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBEdgeBase_p_std__allocatorTOpenBabel__OBEdgeBase_p_t_t__iterator swig_types[82]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBExternalBond_std__allocatorTOpenBabel__OBExternalBond_t_t swig_types[83]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_std__allocatorTOpenBabel__OBGenericData_p_t_t swig_types[84]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBGenericData_p_std__allocatorTOpenBabel__OBGenericData_p_t_t__iterator swig_types[85]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBInternalCoord_p_std__allocatorTOpenBabel__OBInternalCoord_p_t_t swig_types[86]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBInternalCoord_p_std__allocatorTOpenBabel__OBInternalCoord_p_t_t__iterator swig_types[87]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBMol_std__allocatorTOpenBabel__OBMol_t_t swig_types[88]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBMol_std__allocatorTOpenBabel__OBMol_t_t__allocator_type swig_types[89]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBMol_std__allocatorTOpenBabel__OBMol_t_t__value_type swig_types[90]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBNodeBase_p_std__allocatorTOpenBabel__OBNodeBase_p_t_t swig_types[91]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBNodeBase_p_std__allocatorTOpenBabel__OBNodeBase_p_t_t__iterator swig_types[92]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBResidue_p_std__allocatorTOpenBabel__OBResidue_p_t_t__iterator swig_types[93]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBResidue_std__allocatorTOpenBabel__OBResidue_t_t swig_types[94]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBResidue_std__allocatorTOpenBabel__OBResidue_t_t__allocator_type swig_types[95]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBResidue_std__allocatorTOpenBabel__OBResidue_t_t__value_type swig_types[96]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_p_std__allocatorTOpenBabel__OBRing_p_t_t swig_types[97]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_p_std__allocatorTOpenBabel__OBRing_p_t_t__iterator swig_types[98]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_std__allocatorTOpenBabel__OBRing_t_t swig_types[99]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_std__allocatorTOpenBabel__OBRing_t_t__allocator_type swig_types[100]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBRing_std__allocatorTOpenBabel__OBRing_t_t__value_type swig_types[101]
#define SWIGTYPE_p_std__vectorTOpenBabel__OBTorsion_std__allocatorTOpenBabel__OBTorsion_t_t swig_types[102]
#define SWIGTYPE_p_std__vectorTOpenBabel__tripleTOpenBabel__OBAtom_p_OpenBabel__OBAtom_p_double_t_std__allocatorTOpenBabel__tripleTOpenBabel__OBAtom_p_OpenBabel__OBAtom_p_double_t_t_t swig_types[103]
#define SWIGTYPE_p_std__vectorTOpenBabel__vector3_std__allocatorTOpenBabel__vector3_t_t swig_types[104]
#define SWIGTYPE_p_std__vectorTOpenBabel__vector3_std__allocatorTOpenBabel__vector3_t_t__allocator_type swig_types[105]
#define SWIGTYPE_p_std__vectorTOpenBabel__vector3_std__allocatorTOpenBabel__vector3_t_t__value_type swig_types[106]
#define SWIGTYPE_p_std__vectorTdouble_p_std__allocatorTdouble_p_t_t swig_types[107]
#define SWIGTYPE_p_std__vectorTdouble_p_std__allocatorTdouble_p_t_t__iterator swig_types[108]
#define SWIGTYPE_p_std__vectorTdouble_std__allocatorTdouble_t_t swig_types[109]
#define SWIGTYPE_p_std__vectorTdouble_std__allocatorTdouble_t_t__allocator_type swig_types[110]
#define SWIGTYPE_p_std__vectorTint_std__allocatorTint_t_t swig_types[111]
#define SWIGTYPE_p_std__vectorTint_std__allocatorTint_t_t__allocator_type swig_types[112]
#define SWIGTYPE_p_std__vectorTstd__pairTint_int_t_std__allocatorTstd__pairTint_int_t_t_t swig_types[113]
#define SWIGTYPE_p_std__vectorTstd__pairTstd__string_std__string_t_std__allocatorTstd__pairTstd__string_std__string_t_t_t swig_types[114]
#define SWIGTYPE_p_std__vectorTstd__string_std__allocatorTstd__string_t_t swig_types[115]
#define SWIGTYPE_p_std__vectorTstd__vectorTOpenBabel__vector3_std__allocatorTOpenBabel__vector3_t_t_std__allocatorTstd__vectorTOpenBabel__vector3_std__allocatorTOpenBabel__vector3_t_t_t_t swig_types[116]
#define SWIGTYPE_p_std__vectorTstd__vectorTint_std__allocatorTint_t_t_std__allocatorTstd__vectorTint_std__allocatorTint_t_t_t_t swig_types[117]
#define SWIGTYPE_p_std__vectorTstd__vectorTint_std__allocatorTint_t_t_std__allocatorTstd__vectorTint_std__allocatorTint_t_t_t_t__allocator_type swig_types[118]
#define SWIGTYPE_p_std__vectorTstd__vectorTunsigned_int_std__allocatorTunsigned_int_t_t_std__allocatorTstd__vectorTunsigned_int_std__allocatorTunsigned_int_t_t_t_t swig_types[119]
#define SWIGTYPE_p_std__vectorTunsigned_int_std__allocatorTunsigned_int_t_t swig_types[120]
#define SWIGTYPE_p_std__vectorTunsigned_short_std__allocatorTunsigned_short_t_t swig_types[121]
#define SWIGTYPE_p_swig__PySwigIterator swig_types[122]
#define SWIGTYPE_p_unsigned_int swig_types[123]
#define SWIGTYPE_p_value_type swig_types[124]
static swig_type_info *swig_types[126];
static swig_module_info swig_module = {swig_types, 125, 0, 0, 0, 0};
#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
@@ -2682,6 +2683,12 @@ namespace swig {
}
// used to set import/export for Cygwin DLLs
#ifdef WIN32
#define USING_OBDLL
#endif
#include "obutil.h"
#include "math/vector3.h"
#include "math/matrix3x3.h"
@@ -21366,6 +21373,47 @@ SWIGINTERN PyObject *OBResidueData_swiginit(PyObject *SWIGUNUSEDPARM(self), PyOb
return SWIG_Python_InitShadowInstance(args);
}
SWIGINTERN PyObject *_wrap_OpenDatafile(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
std::ifstream *arg1 = 0 ;
std::string *arg2 = 0 ;
std::string result;
void *argp1 = 0 ;
int res1 = 0 ;
int res2 = SWIG_OLDOBJ ;
PyObject * obj0 = 0 ;
PyObject * obj1 = 0 ;
if(!PyArg_UnpackTuple(args,(char *)"OpenDatafile",2,2,&obj0,&obj1)) SWIG_fail;
res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_std__ifstream, 0 );
if (!SWIG_IsOK(res1)) {
SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "OpenDatafile" "', argument " "1"" of type '" "std::ifstream &""'");
}
if (!argp1) {
SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "OpenDatafile" "', argument " "1"" of type '" "std::ifstream &""'");
}
arg1 = reinterpret_cast< std::ifstream * >(argp1);
{
std::string *ptr = (std::string *)0;
res2 = SWIG_AsPtr_std_string(obj1, &ptr);
if (!SWIG_IsOK(res2)) {
SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "OpenDatafile" "', argument " "2"" of type '" "std::string const &""'");
}
if (!ptr) {
SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "OpenDatafile" "', argument " "2"" of type '" "std::string const &""'");
}
arg2 = ptr;
}
result = OpenBabel::OpenDatafile(*arg1,(std::string const &)*arg2);
resultobj = SWIG_From_std_string(static_cast< std::string >(result));
if (SWIG_IsNewObj(res2)) delete arg2;
return resultobj;
fail:
if (SWIG_IsNewObj(res2)) delete arg2;
return NULL;
}
SWIGINTERN PyObject *_wrap_OBStopwatch_Start(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
PyObject *resultobj = 0;
OpenBabel::OBStopwatch *arg1 = (OpenBabel::OBStopwatch *) 0 ;
@@ -33546,7 +33594,7 @@ SWIGINTERN PyObject *_wrap_OBConversion_AddChemObject(PyObject *SWIGUNUSEDPARM(s
PyObject *resultobj = 0;
OpenBabel::OBConversion *arg1 = (OpenBabel::OBConversion *) 0 ;
OpenBabel::OBBase *arg2 = (OpenBabel::OBBase *) 0 ;
int result;
bool result;
void *argp1 = 0 ;
int res1 = 0 ;
void *argp2 = 0 ;
@@ -33565,8 +33613,8 @@ SWIGINTERN PyObject *_wrap_OBConversion_AddChemObject(PyObject *SWIGUNUSEDPARM(s
SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "OBConversion_AddChemObject" "', argument " "2"" of type '" "OpenBabel::OBBase *""'");
}
arg2 = reinterpret_cast< OpenBabel::OBBase * >(argp2);
result = (int)(arg1)->AddChemObject(arg2);
resultobj = SWIG_From_int(static_cast< int >(result));
result = (bool)(arg1)->AddChemObject(arg2);
resultobj = SWIG_From_bool(static_cast< bool >(result));
return resultobj;
fail:
return NULL;
@@ -49949,6 +49997,7 @@ static PyMethodDef SwigMethods[] = {
{ (char *)"delete_OBResidueData", _wrap_delete_OBResidueData, METH_VARARGS, NULL},
{ (char *)"OBResidueData_swigregister", OBResidueData_swigregister, METH_VARARGS, NULL},
{ (char *)"OBResidueData_swiginit", OBResidueData_swiginit, METH_VARARGS, NULL},
{ (char *)"OpenDatafile", _wrap_OpenDatafile, METH_VARARGS, NULL},
{ (char *)"OBStopwatch_Start", _wrap_OBStopwatch_Start, METH_VARARGS, NULL},
{ (char *)"OBStopwatch_Lap", _wrap_OBStopwatch_Lap, METH_VARARGS, NULL},
{ (char *)"OBStopwatch_Elapsed", _wrap_OBStopwatch_Elapsed, METH_VARARGS, NULL},
@@ -50914,6 +50963,7 @@ static swig_type_info _swigt__p_p_double = {"_p_p_double", "double **", 0, 0, (v
static swig_type_info _swigt__p_p_int = {"_p_p_int", "int **", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_size_type = {"_p_size_type", "size_type *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__dequeTint_t = {"_p_std__dequeTint_t", "std::deque<int > *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__ifstream = {"_p_std__ifstream", "std::ifstream *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__invalid_argument = {"_p_std__invalid_argument", "std::invalid_argument *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__istream = {"_p_std__istream", "std::istream *", 0, 0, (void*)0, 0};
static swig_type_info _swigt__p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_std__allocatorTstd__pairTchar_const_pconst_OpenBabel__OBFormat_p_t_t_t = {"_p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_std__allocatorTstd__pairTchar_const_pconst_OpenBabel__OBFormat_p_t_t_t", "std::map<char const *,OpenBabel::OBFormat *,OpenBabel::CharPtrLess,std::allocator<std::pair<char const *const,OpenBabel::OBFormat * > > > *|OpenBabel::FMapType *", 0, 0, (void*)0, 0};
@@ -51040,6 +51090,7 @@ static swig_type_info *swig_type_initial[] = {
&_swigt__p_p_int,
&_swigt__p_size_type,
&_swigt__p_std__dequeTint_t,
&_swigt__p_std__ifstream,
&_swigt__p_std__invalid_argument,
&_swigt__p_std__istream,
&_swigt__p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_std__allocatorTstd__pairTchar_const_pconst_OpenBabel__OBFormat_p_t_t_t,
@@ -51166,6 +51217,7 @@ static swig_cast_info _swigc__p_p_double[] = { {&_swigt__p_p_double, 0, 0, 0},{
static swig_cast_info _swigc__p_p_int[] = { {&_swigt__p_p_int, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_size_type[] = { {&_swigt__p_size_type, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__dequeTint_t[] = { {&_swigt__p_std__dequeTint_t, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__ifstream[] = { {&_swigt__p_std__ifstream, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__invalid_argument[] = { {&_swigt__p_std__invalid_argument, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__istream[] = { {&_swigt__p_std__istream, 0, 0, 0},{0, 0, 0, 0}};
static swig_cast_info _swigc__p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_std__allocatorTstd__pairTchar_const_pconst_OpenBabel__OBFormat_p_t_t_t[] = { {&_swigt__p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_std__allocatorTstd__pairTchar_const_pconst_OpenBabel__OBFormat_p_t_t_t, 0, 0, 0},{0, 0, 0, 0}};
@@ -51292,6 +51344,7 @@ static swig_cast_info *swig_cast_initial[] = {
_swigc__p_p_int,
_swigc__p_size_type,
_swigc__p_std__dequeTint_t,
_swigc__p_std__ifstream,
_swigc__p_std__invalid_argument,
_swigc__p_std__istream,
_swigc__p_std__mapTchar_const_p_OpenBabel__OBFormat_p_OpenBabel__CharPtrLess_std__allocatorTstd__pairTchar_const_pconst_OpenBabel__OBFormat_p_t_t_t,

View File

@@ -2,6 +2,15 @@
from distutils.core import *
import os,sys
about = """The Open Babel package provides a Python wrapper
to the Open Babel C++ chemistry library. Open Babel is a project
designed to pick up where Babel left off, as a cross-platform program
and library designed to interconvert between many file formats used in
molecular modeling, computational chemistry, and many related
areas. It provides a broad base of chemical functionality for custom
development.
"""
def find_likely_directory():
"""Find (guess!) where Open Babel is installed.
@@ -15,7 +24,7 @@ def find_likely_directory():
sys.stderr.write("ERROR: $OPENBABEL_INSTALL (%s) is not a directory\n" % name)
else:
return ([name+"/include/openbabel-2.0",name+"/include/openbabel-2.0/openbabel"],
[name+"/lib/openbabel"])
[name+"/lib"])
else: # OPENBABEL_INSTALL is not set
sys.stderr.write("WARNING: Environment variable OPENBABEL_INSTALL is not set\n")
@@ -30,7 +39,7 @@ def find_likely_directory():
if os.path.isdir(dirname+"/include/openbabel-2.0"):
sys.stderr.write("INFO: Setting OPENBABEL_INSTALL to %s\n" % dirname)
return ([dirname+"/include/openbabel-2.0",dirname+"/include/openbabel-2.0/openbabel"],
[dirname+"/lib/openbabel"])
[dirname+"/lib"])
sys.stderr.write("ERROR: Cannot find Open Babel library directory\n")
return (None,None)
@@ -48,10 +57,34 @@ obExtension = Extension('_openbabel',
)
setup(name='openbabel',
version='1.1.0',
description='Python interface to Open Babel',
version='1.2.0',
author='Geoff Hutchison',
author_email='openbabel-scripting@lists.sourceforge.net',
url='http://openbabel.sourceforge.net/',
license='http://www.gnu.org/copyleft/gpl.html',
py_modules=['openbabel','pyopenbabel'],
ext_modules=[obExtension])
ext_modules=[obExtension],
description = 'openbabel: Python interface to the Open Babel chemistry library',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Console',
'Environment :: Other Environment',
'Intended Audience :: Education',
'Intended Audience :: Science/Research',
'License :: OSI Approved :: GNU General Public License (GPL)',
'Natural Language :: English',
'Operating System :: MacOS :: MacOS X',
'Operating System :: Microsoft :: Windows',
'Operating System :: OS Independent',
'Operating System :: POSIX',
'Operating System :: POSIX :: Linux',
'Operating System :: Unix',
'Programming Language :: C++',
'Programming Language :: Python',
'Topic :: Scientific/Engineering :: Bio-Informatics',
'Topic :: Scientific/Engineering :: Chemistry',
'Topic :: Software Development :: Libraries',
],
long_description = about,
)

View File

@@ -74,6 +74,7 @@ AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
@@ -104,6 +105,7 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DOXYGEN = @DOXYGEN@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
@@ -128,6 +130,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -154,9 +157,12 @@ XML2_CONFIG = @XML2_CONFIG@
XML_CPPFLAGS = @XML_CPPFLAGS@
XML_LIBS = @XML_LIBS@
ac_ct_AR = @ac_ct_AR@
ac_ct_AS = @ac_ct_AS@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
ac_ct_F77 = @ac_ct_F77@
ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
@@ -215,9 +221,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/GUI/Makefile'; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/GUI/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/GUI/Makefile
$(AUTOMAKE) --foreign src/GUI/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \

View File

@@ -478,9 +478,9 @@ with the output format.\nDo you wish to continue the conversion?",
m_pInFilename->Expand(FileList);
//redirect cerr & clog & cout
wxStreamToTextRedirector cerrCapture(m_pMessages, &std::cerr);
wxStreamToTextRedirector clogCapture(m_pMessages, &std::clog);
wxStreamToTextRedirector coutCapture(m_pOutText);
// wxStreamToTextRedirector cerrCapture(m_pMessages, &std::cerr);
// wxStreamToTextRedirector clogCapture(m_pMessages, &std::clog);
// wxStreamToTextRedirector coutCapture(m_pOutText);
m_pOutText->Freeze();//Otherwise seems to be redrawn after each char from cout
@@ -551,7 +551,7 @@ void OBGUIFrame::OnGetInputFile(wxCommandEvent& WXUNUSED(event))
DisplayInputFiles(filepatharray);
}
}
void OBGUIFrame::DisplayInputFiles(wxArrayString& filepatharray)
void OBGUIFrame::DisplayInputFiles(wxArrayString filepatharray)
{
int i, endsel=0, startsel=0;
if(!wxGetKeyState(WXK_CONTROL))
@@ -832,7 +832,7 @@ void OBGUIFrame::GetAvailableFormats()
OutputFilterString+="|AllFiles(*.*)|*.*||";
}
void OBGUIFrame::DisplayInFile(wxString& filename)
void OBGUIFrame::DisplayInFile(wxString filename)
{
m_pInText->Clear();
wxFileName fn(filename);

View File

@@ -89,10 +89,10 @@ public:
void OnSelectFormats(wxCommandEvent& event);
void OnRestrictFormats(wxCommandEvent& event);
void DisplayInFile(wxString& filename);
void DisplayInFile(wxString filename);
wxString GetInFileBasePath(){ return m_InFileBasePath;}
void DisplayMessage(wxString& message){m_pMessages->SetValue(message);}
void DisplayInputFiles(wxArrayString& filepatharray);
void DisplayInputFiles(wxArrayString filepatharray);
void SetInitialFocus();
private:

View File

@@ -131,6 +131,8 @@ AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@
BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@
BUILD_INCHI_FALSE = @BUILD_INCHI_FALSE@
BUILD_INCHI_TRUE = @BUILD_INCHI_TRUE@
BUILD_SCRIPTS_FALSE = @BUILD_SCRIPTS_FALSE@
BUILD_SCRIPTS_TRUE = @BUILD_SCRIPTS_TRUE@
BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@
@@ -309,9 +311,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/Makefile
$(AUTOMAKE) --foreign src/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \

View File

@@ -2,7 +2,7 @@
atom.cpp - Handle OBAtom class.
Copyright (C) 1998-2001 by OpenEye Scientific Software, Inc.
Some portions Copyright (C) 2001-2005 by Geoffrey R. Hutchison
Some portions Copyright (C) 2001-2006 by Geoffrey R. Hutchison
Some portions Copyright (C) 2003 by Michael Banck
This file is part of the Open Babel project.
@@ -113,7 +113,11 @@ namespace OpenBabel
OBAtom::~OBAtom()
{
if (_residue != NULL)
_residue->RemoveAtom(this);
{
cerr << " atom has residue " << _residue->GetName() << endl;
cerr << " and has " << _residue->GetNumAtoms() << endl;
_residue->RemoveAtom(this);
}
/*
if (!_vdata.empty())
{
@@ -391,6 +395,8 @@ namespace OpenBabel
OBResidue *OBAtom::GetResidue()
{
cerr << " called GetResidue " << endl;
if (_residue != NULL)
return _residue;
else if (!((OBMol*)GetParent())->HasChainsPerceived())
@@ -399,7 +405,14 @@ namespace OpenBabel
if ( chainsparser.PerceiveChains(*((OBMol*)GetParent())) )
return _residue;
else
return NULL;
{
if (_residue)
{
delete _residue;
_residue = NULL;
}
return NULL;
}
}
else
return NULL;
@@ -922,8 +935,10 @@ namespace OpenBabel
if (mol && !mol->HasImplicitValencePerceived())
atomtyper.AssignImplicitValence(*((OBMol*)((OBAtom*)this)->GetParent()));
int impval = _impval - GetHvyValence();
//Jan 05 Implicit valency now left alone; use spin multiplicity for implicit Hs
// _impval is assigned by the atomtyper -- same as calling GetImplicitValence()
int impval = _impval - GetValence();
// we need to modify this implicit valence if we're a radical center
int mult = GetSpinMultiplicity();
if(mult==2) //radical
impval-=1;
@@ -934,19 +949,19 @@ namespace OpenBabel
return((impval>0)?impval:0);
}
unsigned int OBAtom::ExplicitHydrogenCount(bool ExcludeIsotopes) const
{
//If ExcludeIsotopes is true, H atoms with _isotope!=0 are not included.
//This excludes D, T and H when _isotope exlicitly set to 1 rather than the default 0.
int numH=0;
OBAtom *atom;
vector<OBEdgeBase*>::iterator i;
for (atom = ((OBAtom*)this)->BeginNbrAtom(i);atom;atom = ((OBAtom*)this)->NextNbrAtom(i))
if (atom->IsHydrogen() && !(ExcludeIsotopes && atom->GetIsotope()!=0))
numH++;
unsigned int OBAtom::ExplicitHydrogenCount(bool ExcludeIsotopes) const
{
//If ExcludeIsotopes is true, H atoms with _isotope!=0 are not included.
//This excludes D, T and H when _isotope exlicitly set to 1 rather than the default 0.
int numH=0;
OBAtom *atom;
vector<OBEdgeBase*>::iterator i;
for (atom = ((OBAtom*)this)->BeginNbrAtom(i);atom;atom = ((OBAtom*)this)->NextNbrAtom(i))
if (atom->IsHydrogen() && !(ExcludeIsotopes && atom->GetIsotope()!=0))
numH++;
return(numH);
}
return(numH);
}
bool OBAtom::DeleteBond(OBBond *bond)
{

View File

@@ -14,7 +14,7 @@
#define EXTERN __declspec(dllexport) extern
#endif
#else //Everything else (behaviour as original)
#define EXTERN extern
#define EXTERN extern
#endif
@@ -125,7 +125,7 @@
#define OBAPI __declspec(dllexport)
#endif
#else //Everything else (behaviour as original)
#define OBAPI
#define OBAPI
#endif

View File

@@ -83,6 +83,9 @@ int DLHandler::findFiles (std::vector <std::string>& file_list,const std::string
if (paths.size() == 0)
paths.push_back("./"); // defaults to current directory
/* Old method using scandir. Replaced with readdir (below) as for example
* Solaris pre 10 doesn't implement scandir.
struct dirent **entries_pp;
int count;
@@ -100,7 +103,47 @@ int DLHandler::findFiles (std::vector <std::string>& file_list,const std::string
if (entries_pp)
free(entries_pp);
return count;
*
*/
DIR *dp;
struct dirent *entry;
for (unsigned int i = 0; i < paths.size(); i++)
{
currentPath=paths[i];
if ((dp = opendir(currentPath.c_str())) == NULL)
continue; // no big deal, this path causes an error
else
{
while((entry = readdir(dp)) != NULL)
{
if (matchFiles(entry) != 0)
file_list.push_back(currentPath + getSeparator() + (entry)->d_name);
}
closedir(dp); // calls free(dp) -- no memory leak
}
}
if (file_list.size() == 0)
return(-1); // error, didn't find any files at all
return file_list.size();
}
int DLHandler::findFiles (std::vector<std::string>& file_list,const std::string &filename)
{
if(filename.find_first_of("*?")==string::npos)
{
//no wildcard in filename
file_list.push_back(filename);
return -1;
}
int pos = filename.find_last_of("\\/");
if(pos!=string::npos)
return findFiles(file_list,filename.substr(pos+1), filename.substr(0,pos+1));
else
return findFiles(file_list,filename, "");
}
bool DLHandler::openLib(const string& lib_name)

View File

@@ -71,12 +71,15 @@ AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@
BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@
BUILD_INCHI_FALSE = @BUILD_INCHI_FALSE@
BUILD_INCHI_TRUE = @BUILD_INCHI_TRUE@
BUILD_SCRIPTS_FALSE = @BUILD_SCRIPTS_FALSE@
BUILD_SCRIPTS_TRUE = @BUILD_SCRIPTS_TRUE@
BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@
@@ -101,6 +104,7 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DOXYGEN = @DOXYGEN@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
@@ -125,6 +129,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -151,9 +156,12 @@ XML2_CONFIG = @XML2_CONFIG@
XML_CPPFLAGS = @XML_CPPFLAGS@
XML_LIBS = @XML_LIBS@
ac_ct_AR = @ac_ct_AR@
ac_ct_AS = @ac_ct_AS@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
ac_ct_F77 = @ac_ct_F77@
ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
@@ -209,9 +217,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/fingerprints/Makefile'; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/fingerprints/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/fingerprints/Makefile
$(AUTOMAKE) --foreign src/fingerprints/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \

View File

@@ -1,23 +1,29 @@
SUBDIRS = inchi
INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/data
# Make sure to install the inchi_api.h header
libopenbabelincludedir = $(includedir)/openbabel-2.0/openbabel
libopenbabelinclude_HEADERS = inchi_api.h obmolecformat.h
EXTRA_DIST = exampleformat.cpp
SUBDIRS =
if BUILD_XML
SUBDIRS += xml
endif
if BUILD_INCHI
SUBDIRS += inchi
endif
# Unfortunately there are a few formats which still cannot compile shared
# modules (e.g., Cygwin). So we need to keep a duplicate target for "libformats"
if !BUILD_SHARED
noinst_LTLIBRARIES = libformats.la
if BUILD_INCHI
libformats_la_LIBADD = inchi/libinchi.la
else
libformats_la_LIBADD = -linchi
endif
libformats_la_SOURCES = \
APIInterface.cpp \
CSRformat.cpp PQSformat.cpp alchemyformat.cpp \
@@ -151,7 +157,12 @@ hinformat_la_SOURCES = hinformat.cpp obmolecformat.cpp
hinformat_la_LDFLAGS = -module -avoid-version
inchiformat_la_SOURCES = inchiformat.cpp obmolecformat.cpp
if BUILD_INCHI
inchiformat_la_LDFLAGS = -module -avoid-version inchi/libinchi.la
else
inchiformat_la_LDFLAGS = -module -avoid-version
inchiformat_la_LIBADD = -linchi
endif
jaguarformat_la_SOURCES = jaguarformat.cpp obmolecformat.cpp
jaguarformat_la_LDFLAGS = -module -avoid-version

View File

@@ -37,6 +37,8 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
@BUILD_XML_TRUE@am__append_1 = xml
@BUILD_INCHI_TRUE@am__append_2 = inchi
subdir = src/formats
DIST_COMMON = $(libopenbabelinclude_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
@@ -235,7 +237,7 @@ am__hinformat_la_SOURCES_DIST = hinformat.cpp obmolecformat.cpp
@BUILD_SHARED_TRUE@ obmolecformat.lo
hinformat_la_OBJECTS = $(am_hinformat_la_OBJECTS)
@BUILD_SHARED_TRUE@am_hinformat_la_rpath = -rpath $(pkglibdir)
inchiformat_la_LIBADD =
inchiformat_la_DEPENDENCIES =
am__inchiformat_la_SOURCES_DIST = inchiformat.cpp obmolecformat.cpp
@BUILD_SHARED_TRUE@am_inchiformat_la_OBJECTS = inchiformat.lo \
@BUILD_SHARED_TRUE@ obmolecformat.lo
@@ -247,7 +249,8 @@ am__jaguarformat_la_SOURCES_DIST = jaguarformat.cpp obmolecformat.cpp
@BUILD_SHARED_TRUE@ obmolecformat.lo
jaguarformat_la_OBJECTS = $(am_jaguarformat_la_OBJECTS)
@BUILD_SHARED_TRUE@am_jaguarformat_la_rpath = -rpath $(pkglibdir)
@BUILD_SHARED_FALSE@libformats_la_DEPENDENCIES = inchi/libinchi.la
@BUILD_INCHI_TRUE@@BUILD_SHARED_FALSE@libformats_la_DEPENDENCIES = \
@BUILD_INCHI_TRUE@@BUILD_SHARED_FALSE@ inchi/libinchi.la
am__libformats_la_SOURCES_DIST = APIInterface.cpp CSRformat.cpp \
PQSformat.cpp alchemyformat.cpp amberformat.cpp \
balstformat.cpp bgfformat.cpp boxformat.cpp cacaoformat.cpp \
@@ -381,6 +384,12 @@ am__smilesformat_la_SOURCES_DIST = smilesformat.cpp obmolecformat.cpp
@BUILD_SHARED_TRUE@ obmolecformat.lo
smilesformat_la_OBJECTS = $(am_smilesformat_la_OBJECTS)
@BUILD_SHARED_TRUE@am_smilesformat_la_rpath = -rpath $(pkglibdir)
thermoformat_la_LIBADD =
am__thermoformat_la_SOURCES_DIST = thermoformat.cpp obmolecformat.cpp
@BUILD_SHARED_TRUE@am_thermoformat_la_OBJECTS = thermoformat.lo \
@BUILD_SHARED_TRUE@ obmolecformat.lo
thermoformat_la_OBJECTS = $(am_thermoformat_la_OBJECTS)
@BUILD_SHARED_TRUE@am_thermoformat_la_rpath = -rpath $(pkglibdir)
tinkerformat_la_LIBADD =
am__tinkerformat_la_SOURCES_DIST = tinkerformat.cpp
@BUILD_SHARED_TRUE@am_tinkerformat_la_OBJECTS = tinkerformat.lo
@@ -470,11 +479,11 @@ SOURCES = $(APIInterface_la_SOURCES) $(CSRformat_la_SOURCES) \
$(povrayformat_la_SOURCES) $(qchemformat_la_SOURCES) \
$(reportformat_la_SOURCES) $(rxnformat_la_SOURCES) \
$(shelxformat_la_SOURCES) $(smilesformat_la_SOURCES) \
$(tinkerformat_la_SOURCES) $(titleformat_la_SOURCES) \
$(turbomoleformat_la_SOURCES) $(unichemformat_la_SOURCES) \
$(viewmolformat_la_SOURCES) $(xedformat_la_SOURCES) \
$(xyzformat_la_SOURCES) $(yasaraformat_la_SOURCES) \
$(zindoformat_la_SOURCES)
$(thermoformat_la_SOURCES) $(tinkerformat_la_SOURCES) \
$(titleformat_la_SOURCES) $(turbomoleformat_la_SOURCES) \
$(unichemformat_la_SOURCES) $(viewmolformat_la_SOURCES) \
$(xedformat_la_SOURCES) $(xyzformat_la_SOURCES) \
$(yasaraformat_la_SOURCES) $(zindoformat_la_SOURCES)
DIST_SOURCES = $(am__APIInterface_la_SOURCES_DIST) \
$(am__CSRformat_la_SOURCES_DIST) \
$(am__PQSformat_la_SOURCES_DIST) \
@@ -523,6 +532,7 @@ DIST_SOURCES = $(am__APIInterface_la_SOURCES_DIST) \
$(am__rxnformat_la_SOURCES_DIST) \
$(am__shelxformat_la_SOURCES_DIST) \
$(am__smilesformat_la_SOURCES_DIST) \
$(am__thermoformat_la_SOURCES_DIST) \
$(am__tinkerformat_la_SOURCES_DIST) \
$(am__titleformat_la_SOURCES_DIST) \
$(am__turbomoleformat_la_SOURCES_DIST) \
@@ -542,19 +552,22 @@ libopenbabelincludeHEADERS_INSTALL = $(INSTALL_HEADER)
HEADERS = $(libopenbabelinclude_HEADERS)
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DIST_SUBDIRS = xml inchi
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@
BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@
BUILD_INCHI_FALSE = @BUILD_INCHI_FALSE@
BUILD_INCHI_TRUE = @BUILD_INCHI_TRUE@
BUILD_SCRIPTS_FALSE = @BUILD_SCRIPTS_FALSE@
BUILD_SCRIPTS_TRUE = @BUILD_SCRIPTS_TRUE@
BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@
@@ -579,6 +592,7 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DOXYGEN = @DOXYGEN@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
@@ -603,6 +617,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -629,9 +644,12 @@ XML2_CONFIG = @XML2_CONFIG@
XML_CPPFLAGS = @XML_CPPFLAGS@
XML_LIBS = @XML_LIBS@
ac_ct_AR = @ac_ct_AR@
ac_ct_AS = @ac_ct_AS@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
ac_ct_F77 = @ac_ct_F77@
ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
@@ -671,19 +689,18 @@ sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
SUBDIRS = inchi
INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/data
# Make sure to install the inchi_api.h header
libopenbabelincludedir = $(includedir)/openbabel-2.0/openbabel
libopenbabelinclude_HEADERS = inchi_api.h obmolecformat.h
EXTRA_DIST = exampleformat.cpp
# SUBDIRS += xml
SUBDIRS = $(am__append_1) $(am__append_2)
# Unfortunately there are a few formats which still cannot compile shared
# modules (e.g., Cygwin). So we need to keep a duplicate target for "libformats"
@BUILD_SHARED_FALSE@noinst_LTLIBRARIES = libformats.la
@BUILD_SHARED_FALSE@libformats_la_LIBADD = inchi/libinchi.la
@BUILD_INCHI_FALSE@@BUILD_SHARED_FALSE@libformats_la_LIBADD = -linchi
@BUILD_INCHI_TRUE@@BUILD_SHARED_FALSE@libformats_la_LIBADD = inchi/libinchi.la
@BUILD_SHARED_FALSE@libformats_la_SOURCES = \
@BUILD_SHARED_FALSE@ APIInterface.cpp \
@BUILD_SHARED_FALSE@ CSRformat.cpp PQSformat.cpp alchemyformat.cpp \
@@ -719,7 +736,7 @@ EXTRA_DIST = exampleformat.cpp
@BUILD_SHARED_TRUE@ mol2format.la mopacformat.la mpqcformat.la nwchemformat.la \
@BUILD_SHARED_TRUE@ pcmodelformat.la \
@BUILD_SHARED_TRUE@ pdbformat.la povrayformat.la qchemformat.la reportformat.la \
@BUILD_SHARED_TRUE@ rxnformat.la shelxformat.la smilesformat.la \
@BUILD_SHARED_TRUE@ rxnformat.la shelxformat.la smilesformat.la thermoformat.la \
@BUILD_SHARED_TRUE@ tinkerformat.la titleformat.la \
@BUILD_SHARED_TRUE@ turbomoleformat.la unichemformat.la viewmolformat.la \
@BUILD_SHARED_TRUE@ xedformat.la xyzformat.la yasaraformat.la zindoformat.la
@@ -785,7 +802,9 @@ EXTRA_DIST = exampleformat.cpp
@BUILD_SHARED_TRUE@hinformat_la_SOURCES = hinformat.cpp obmolecformat.cpp
@BUILD_SHARED_TRUE@hinformat_la_LDFLAGS = -module -avoid-version
@BUILD_SHARED_TRUE@inchiformat_la_SOURCES = inchiformat.cpp obmolecformat.cpp
@BUILD_SHARED_TRUE@inchiformat_la_LDFLAGS = -module -avoid-version inchi/libinchi.la
@BUILD_INCHI_FALSE@@BUILD_SHARED_TRUE@inchiformat_la_LDFLAGS = -module -avoid-version
@BUILD_INCHI_TRUE@@BUILD_SHARED_TRUE@inchiformat_la_LDFLAGS = -module -avoid-version inchi/libinchi.la
@BUILD_INCHI_FALSE@@BUILD_SHARED_TRUE@inchiformat_la_LIBADD = -linchi
@BUILD_SHARED_TRUE@jaguarformat_la_SOURCES = jaguarformat.cpp obmolecformat.cpp
@BUILD_SHARED_TRUE@jaguarformat_la_LDFLAGS = -module -avoid-version
@BUILD_SHARED_TRUE@mdlformat_la_SOURCES = mdlformat.cpp obmolecformat.cpp
@@ -818,9 +837,8 @@ EXTRA_DIST = exampleformat.cpp
@BUILD_SHARED_TRUE@shelxformat_la_LDFLAGS = -module -avoid-version
@BUILD_SHARED_TRUE@smilesformat_la_SOURCES = smilesformat.cpp obmolecformat.cpp
@BUILD_SHARED_TRUE@smilesformat_la_LDFLAGS = -module -avoid-version
# thermoformat_la_SOURCES = thermoformat.cpp obmolecformat.cpp
# thermoformat_la_LDFLAGS = -module -avoid-version
@BUILD_SHARED_TRUE@thermoformat_la_SOURCES = thermoformat.cpp obmolecformat.cpp
@BUILD_SHARED_TRUE@thermoformat_la_LDFLAGS = -module -avoid-version
@BUILD_SHARED_TRUE@tinkerformat_la_SOURCES = tinkerformat.cpp
@BUILD_SHARED_TRUE@tinkerformat_la_LDFLAGS = -module -avoid-version
@BUILD_SHARED_TRUE@titleformat_la_SOURCES = titleformat.cpp obmolecformat.cpp
@@ -852,9 +870,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/formats/Makefile'; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/formats/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/formats/Makefile
$(AUTOMAKE) --foreign src/formats/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
@@ -1004,6 +1022,8 @@ shelxformat.la: $(shelxformat_la_OBJECTS) $(shelxformat_la_DEPENDENCIES)
$(CXXLINK) $(am_shelxformat_la_rpath) $(shelxformat_la_LDFLAGS) $(shelxformat_la_OBJECTS) $(shelxformat_la_LIBADD) $(LIBS)
smilesformat.la: $(smilesformat_la_OBJECTS) $(smilesformat_la_DEPENDENCIES)
$(CXXLINK) $(am_smilesformat_la_rpath) $(smilesformat_la_LDFLAGS) $(smilesformat_la_OBJECTS) $(smilesformat_la_LIBADD) $(LIBS)
thermoformat.la: $(thermoformat_la_OBJECTS) $(thermoformat_la_DEPENDENCIES)
$(CXXLINK) $(am_thermoformat_la_rpath) $(thermoformat_la_LDFLAGS) $(thermoformat_la_OBJECTS) $(thermoformat_la_LIBADD) $(LIBS)
tinkerformat.la: $(tinkerformat_la_OBJECTS) $(tinkerformat_la_DEPENDENCIES)
$(CXXLINK) $(am_tinkerformat_la_rpath) $(tinkerformat_la_LDFLAGS) $(tinkerformat_la_OBJECTS) $(tinkerformat_la_LIBADD) $(LIBS)
titleformat.la: $(titleformat_la_OBJECTS) $(titleformat_la_DEPENDENCIES)

View File

@@ -103,7 +103,7 @@ bool CRK2DFormat::ReadMolecule(OBBase* pOb, OBConversion* pConv)
}
mol.SetDimension(2);
return ReadCRK(ifs,mol,"<Structure2D>");
return ReadCRK(ifs,mol,"Structure2D");
}
////////////////////////////////////////////////////////////////
@@ -201,7 +201,7 @@ bool CRK3DFormat::ReadMolecule(OBBase* pOb, OBConversion* pConv)
return false;
}
return CRK2DFormat::ReadCRK(ifs,mol,"<Structure3D>");
return CRK2DFormat::ReadCRK(ifs,mol,"Structure3D");
}
////////////////////////////////////////////////////////////////
@@ -254,8 +254,10 @@ bool CRK2DFormat::ReadCRK(std::istream &ifs,OBMol &mol,const char *classTag)
while (ifs.getline(buffer,BUFF_SIZE))
{
if (strstr(buffer,classTag))
foundClass=true;
if (strstr(buffer,classTag) && foundClass == false)
foundClass=true;
else if (strstr(buffer,classTag) && foundClass == true)
break;
else if (strstr(buffer,"<Atom"))
{
atomID=0;
@@ -403,7 +405,14 @@ bool CRK2DFormat::ReadCRK(std::istream &ifs,OBMol &mol,const char *classTag)
mol.EndModify();
// we likely have an </Property> line to gobble up
if (ifs.peek() != EOF && ifs.good())
{
ifs.getline(buffer,BUFF_SIZE);
if (strstr(buffer,"</Property>") == 0)
return false; // something messed up
}
return foundClass;
}

View File

@@ -4,6 +4,7 @@ INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/data
lib_LTLIBRARIES = libinchi.la
libinchi_la_LDFLAGS = -no-undefined
libinchi_la_SOURCES = \
IChICan2.c IChICano.c IChIPrt1.c IChIPrt2.c \
IChIPrt3.c IchiMak2.c IchiMake.c IchiNorm.c \
@@ -14,14 +15,15 @@ libinchi_la_SOURCES = \
strutil.c util.c
libinchiincludedir = $(includedir)/inchi
libinchiinclude_HEADERS = \
aux2atom.h comdef.h extr_ct.h ichi.h ichi_bns.h \
ichicano.h ichicant.h ichicomn.h ichicomp.h \
ichidrp.h ichierr.h ichimain.h ichimake.h \
ichinorm.h ichiparm.h ichiring.h ichisize.h \
ichister.h ichitaut.h ichitime.h inchi_api.h \
inchi_dll.h inchi_dll_main.h inpdef.h \
lreadmol.h mode.h strutil.h util.h
# Only install the required header to expose to the outside world
libinchiinclude_HEADERS = inchi_api.h
EXTRA_DIST = README.html COPYING.LIB
EXTRA_DIST = README.html COPYING.LIB \
aux2atom.h comdef.h extr_ct.h ichi.h ichi_bns.h \
ichicano.h ichicant.h ichicomn.h ichicomp.h \
ichidrp.h ichierr.h ichimain.h ichimake.h \
ichinorm.h ichiparm.h ichiring.h ichisize.h \
lreadmol.h mode.h strutil.h util.h inpdef.h \
ichister.h ichitaut.h ichitime.h \
inchi_dll.h inchi_dll_main.h

View File

@@ -89,12 +89,15 @@ AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@
BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@
BUILD_INCHI_FALSE = @BUILD_INCHI_FALSE@
BUILD_INCHI_TRUE = @BUILD_INCHI_TRUE@
BUILD_SCRIPTS_FALSE = @BUILD_SCRIPTS_FALSE@
BUILD_SCRIPTS_TRUE = @BUILD_SCRIPTS_TRUE@
BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@
@@ -119,6 +122,7 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DOXYGEN = @DOXYGEN@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
@@ -143,6 +147,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -169,9 +174,12 @@ XML2_CONFIG = @XML2_CONFIG@
XML_CPPFLAGS = @XML_CPPFLAGS@
XML_LIBS = @XML_LIBS@
ac_ct_AR = @ac_ct_AR@
ac_ct_AS = @ac_ct_AS@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
ac_ct_F77 = @ac_ct_F77@
ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
@@ -215,6 +223,7 @@ target_alias = @target_alias@
# Not sure if this is actually needed -GRH
INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/data
lib_LTLIBRARIES = libinchi.la
libinchi_la_LDFLAGS = -no-undefined
libinchi_la_SOURCES = \
IChICan2.c IChICano.c IChIPrt1.c IChIPrt2.c \
IChIPrt3.c IchiMak2.c IchiMake.c IchiNorm.c \
@@ -225,16 +234,17 @@ libinchi_la_SOURCES = \
strutil.c util.c
libinchiincludedir = $(includedir)/inchi
libinchiinclude_HEADERS = \
aux2atom.h comdef.h extr_ct.h ichi.h ichi_bns.h \
ichicano.h ichicant.h ichicomn.h ichicomp.h \
ichidrp.h ichierr.h ichimain.h ichimake.h \
ichinorm.h ichiparm.h ichiring.h ichisize.h \
ichister.h ichitaut.h ichitime.h inchi_api.h \
inchi_dll.h inchi_dll_main.h inpdef.h \
lreadmol.h mode.h strutil.h util.h
# Only install the required header to expose to the outside world
libinchiinclude_HEADERS = inchi_api.h
EXTRA_DIST = README.html COPYING.LIB \
aux2atom.h comdef.h extr_ct.h ichi.h ichi_bns.h \
ichicano.h ichicant.h ichicomn.h ichicomp.h \
ichidrp.h ichierr.h ichimain.h ichimake.h \
ichinorm.h ichiparm.h ichiring.h ichisize.h \
lreadmol.h mode.h strutil.h util.h inpdef.h \
ichister.h ichitaut.h ichitime.h \
inchi_dll.h inchi_dll_main.h
EXTRA_DIST = README.html COPYING.LIB
all: all-am
.SUFFIXES:
@@ -248,9 +258,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/formats/inchi/Makefile'; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/formats/inchi/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/formats/inchi/Makefile
$(AUTOMAKE) --foreign src/formats/inchi/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \

View File

@@ -31,7 +31,8 @@ GNU General Public License for more details.
#include "chiral.h"
using namespace std;
namespace OpenBabel {
namespace OpenBabel
{
class MOLFormat : public OBMoleculeFormat
{
@@ -114,6 +115,7 @@ Write Options, e.g. -x3\n \
istream &ifs = *pConv->GetInStream();
OBMol &mol = *pmol;
_mapcd.clear();
bool chiralWatch=false;
// Allows addition of further disconnected atoms to an existing molecule
int offset = mol.NumAtoms();
@@ -158,13 +160,13 @@ Write Options, e.g. -x3\n \
char type[5];
vector3 v;
OBAtom atom;
int charge, scanArgs;
int charge, scanArgs, stereo;
for (i = 0;i < natoms;i++) {
if (!ifs.getline(buffer,BUFF_SIZE))
return(false);
scanArgs = sscanf(buffer,"%lf %lf %lf %s %*d %d",&x,&y,&z,type,&charge);
scanArgs = sscanf(buffer,"%lf %lf %lf %s %*d %d %d",&x,&y,&z,type,&charge, &stereo);
if (scanArgs <4)
return(false);
v.SetX(x);v.SetY(y);v.SetZ(z);
@@ -175,9 +177,10 @@ Write Options, e.g. -x3\n \
if(iso)
atom.SetIsotope(iso);
if (scanArgs == 5) {
switch (charge) {
if (scanArgs >= 5)
{
switch (charge)
{
case 0: break;
case 3: atom.SetFormalCharge(1); break;
case 2: atom.SetFormalCharge(2); break;
@@ -188,12 +191,34 @@ Write Options, e.g. -x3\n \
}
}
if (scanArgs == 6) // set a stereo mark
{
//Stereo configuration: 0 none; 1 odd parity; 2 even parity; 3 unspecified)
if (stereo == 2)
{
chiralWatch=true;
atom.SetAntiClockwiseStereo();
}
else if (stereo == 1)
{
chiralWatch=true;
atom.SetClockwiseStereo();
}
else if(stereo == 3)
{
chiralWatch=true;
atom.SetChiral();
}
}
if (!mol.AddAtom(atom))
return(false);
if(chiralWatch) // fill the map with data for each chiral atom
_mapcd[mol.GetAtom(mol.NumAtoms())] = new OBChiralData;
atom.Clear();
}
int start,end,order,flag,stereo;
int start,end,order,flag;
for (i = 0;i < nbonds;i++) {
flag = 0;
if (!ifs.getline(buffer,BUFF_SIZE))
@@ -216,6 +241,22 @@ Write Options, e.g. -x3\n \
}
if (!mol.AddBond(start+offset,end+offset,order,flag)) return(false);
// after adding a bond to atom # "start+offset"
// search to see if atom is bonded to a chiral atom
map<OBAtom*,OBChiralData*>::iterator ChiralSearch;
ChiralSearch = _mapcd.find(mol.GetAtom(start+offset));
if (ChiralSearch!=_mapcd.end())
{
(ChiralSearch->second)->AddAtomRef(end+offset, input);
}
// after adding a bond to atom # "end + offset"
// search to see if atom is bonded to a chiral atom
ChiralSearch = _mapcd.find(mol.GetAtom(end+offset));
if (ChiralSearch!=_mapcd.end())
{
(ChiralSearch->second)->AddAtomRef(start+offset, input);
}
}
//CM start 18 Sept 2003
@@ -640,11 +681,11 @@ Write Options, e.g. -x3\n \
//TODO Bond Configuration 2 or 3D??
if (val == 1)
{
flag |= OB_WEDGE_BOND;//OB_TORUP_BOND; CM09/09/05
flag |= OB_WEDGE_BOND;
}
else if (val == 3)
{
flag |= OB_HASH_BOND;//OB_TORDOWN_BOND;
flag |= OB_HASH_BOND;
}
}
}

View File

@@ -180,7 +180,8 @@ bool MOL2Format::ReadMolecule(OBBase* pOb, OBConversion* pConv)
hasPartialCharges = true;
// Add residue information if it exists
if (resnum != -1 && resname != "")
if (resnum != -1 && resnum != 0 &&
strlen(resname) != 0 && strncmp(resname,"<1>", 3) != 0)
{
OBResidue *res = (mol.NumResidues() > 0) ?
mol.GetResidue(mol.NumResidues()-1) : NULL;

View File

@@ -84,9 +84,12 @@ public:
#ifdef _WIN32
typedef stdext::hash_map<std::string, unsigned> NameIndexType;
#else
typedef std::map<std::string, unsigned> NameIndexType;
#endif
static bool ReadNameIndex(NameIndexType& index, const std::string& datafilename,
OBFormat* pInFormat);
#endif
const std::type_info& GetType()
{

View File

@@ -362,7 +362,7 @@ namespace OpenBabel
static bool readIntegerFromRecord(char *buffer, unsigned int columnAsSpecifiedInPDB, long int *target)
{
char integerBuffer[6];
integerBuffer[5] = 0;
integerBuffer[5] = '\0';
strncpy(integerBuffer, buffer+columnAsSpecifiedInPDB-1, 5);
@@ -403,8 +403,10 @@ namespace OpenBabel
#else
strstream errorMsg;
#endif
string clearError;
// Setup strings and string buffers
vector<string> vs;
buffer[70] = '\0';
if (strlen(buffer) < 70)
{
@@ -412,46 +414,16 @@ namespace OpenBabel
<< " Problems reading a CONECT record.\n"
<< " According to the PDB specification,\n"
<< " the record should have 70 columns, but OpenBabel found "
<< strlen(buffer) << " columns.";
<< strlen(buffer) << " columns." << endl;
obErrorLog.ThrowError(__FUNCTION__, errorMsg.str() , obInfo);
errorMsg.str(clearError);
}
// Serial number of the first atom, read from column 7-11 of the
// connect record, to which the other atoms connect to.
long int startAtomSerialNumber;
if (readIntegerFromRecord(buffer, 7, &startAtomSerialNumber) == false)
{
errorMsg << "WARNING: Problems reading a PDB file\n"
<< " Problems reading a CONECT record.\n"
<< " According to the PDB specification,\n"
<< " columns 7-11 should contain the serial number of an atom.\n"
<< " THIS CONECT RECORD WILL BE IGNORED.";
obErrorLog.ThrowError(__FUNCTION__, errorMsg.str() , obWarning);
return(false);
}
// Find a pointer to the first atom.
OBAtom *firstAtom = 0L;
vector<OBNodeBase*>::iterator i;
for (OBAtom *a1 = mol.BeginAtom(i);a1;a1 = mol.NextAtom(i))
if (static_cast<long int>(a1->GetResidue()->
GetSerialNum(a1)) == startAtomSerialNumber)
{
firstAtom = a1;
break;
}
if (firstAtom == 0L)
{
errorMsg << "WARNING: Problems reading a PDB file:\n"
<< " Problems reading a CONECT record.\n"
<< " According to the PDB specification,\n"
<< " columns 7-11 should contain the serial number of an atom.\n"
<< " No atom was found with this serial number.\n"
<< " THIS CONECT RECORD WILL BE IGNORED.";
obErrorLog.ThrowError(__FUNCTION__, errorMsg.str() , obWarning);
return(false);
}
// A pointer to the first atom.
OBAtom *firstAtom = NULL;
// Serial numbers of the atoms which bind to firstAtom, read from
// columns 12-16, 17-21, 22-27 and 27-31 of the connect record. Note
// that we reserve space for 5 integers, but read only four of
@@ -463,16 +435,84 @@ namespace OpenBabel
// invalid
bool boundedAtomsSerialNumbersValid[5] = {false, false, false, false, false};
// Now read the serial numbers. If the first serial number is not
// present, this connect record probably contains only hydrogen
// bonds and salt bridges, which we ignore. In that case, we just
// exit gracefully.
boundedAtomsSerialNumbersValid[0] = readIntegerFromRecord(buffer, 12, boundedAtomsSerialNumbers+0);
if (boundedAtomsSerialNumbersValid[0] == false)
return(true);
boundedAtomsSerialNumbersValid[1] = readIntegerFromRecord(buffer, 17, boundedAtomsSerialNumbers+1);
boundedAtomsSerialNumbersValid[2] = readIntegerFromRecord(buffer, 22, boundedAtomsSerialNumbers+2);
boundedAtomsSerialNumbersValid[3] = readIntegerFromRecord(buffer, 27, boundedAtomsSerialNumbers+3);
// Pragmatic approach -- too many non-standard PDB files out there
// (including some old ones from us)
// So if we have a small number of atoms, then try to break by spaces
// Otherwise (i.e., NumAtoms() > 9,999 we need to go by position)
// We'll switch back and forth a few times to save duplicating common code
if (mol.NumAtoms() <= 9999)
{
// make sure we don't look at salt bridges or whatever, so cut the buffer short
buffer[32] = '\0';
tokenize(vs,buffer);
if( vs.empty() || vs.size() < 2)
return false;
vs.erase(vs.begin()); // remove "CONECT"
startAtomSerialNumber = atoi(vs[0].c_str());
}
else
{
if (readIntegerFromRecord(buffer, 7, &startAtomSerialNumber) == false)
{
errorMsg << "WARNING: Problems reading a PDB file\n"
<< " Problems reading a CONECT record.\n"
<< " According to the PDB specification,\n"
<< " columns 7-11 should contain the serial number of an atom.\n"
<< " THIS CONECT RECORD WILL BE IGNORED." << endl;
obErrorLog.ThrowError(__FUNCTION__, errorMsg.str() , obWarning);
return(false);
}
}
vector<OBNodeBase*>::iterator i;
for (OBAtom *a1 = mol.BeginAtom(i);a1;a1 = mol.NextAtom(i))
if (static_cast<long int>(a1->GetResidue()->
GetSerialNum(a1)) == startAtomSerialNumber)
{
firstAtom = a1;
break;
}
if (firstAtom == NULL)
{
errorMsg << "WARNING: Problems reading a PDB file:\n"
<< " Problems reading a CONECT record.\n"
<< " According to the PDB specification,\n"
<< " columns 7-11 should contain the serial number of an atom.\n"
<< " No atom was found with this serial number.\n"
<< " THIS CONECT RECORD WILL BE IGNORED." << endl;
obErrorLog.ThrowError(__FUNCTION__, errorMsg.str() , obWarning);
return(false);
}
if (mol.NumAtoms() < 9999)
{
if (vs.size() > 1) boundedAtomsSerialNumbers[0] = atoi(vs[1].c_str());
if (vs.size() > 2) boundedAtomsSerialNumbers[1] = atoi(vs[2].c_str());
if (vs.size() > 3) boundedAtomsSerialNumbers[2] = atoi(vs[3].c_str());
if (vs.size() > 4) boundedAtomsSerialNumbers[3] = atoi(vs[4].c_str());
unsigned int limit = 4;
if (vs.size() <= 4)
limit = vs.size() - 1;
for (unsigned int i = 0; i < limit; i++)
boundedAtomsSerialNumbersValid[i] = true;
}
else
{
// Now read the serial numbers. If the first serial number is not
// present, this connect record probably contains only hydrogen
// bonds and salt bridges, which we ignore. In that case, we just
// exit gracefully.
boundedAtomsSerialNumbersValid[0] = readIntegerFromRecord(buffer, 12, boundedAtomsSerialNumbers+0);
if (boundedAtomsSerialNumbersValid[0] == false)
return(true);
boundedAtomsSerialNumbersValid[1] = readIntegerFromRecord(buffer, 17, boundedAtomsSerialNumbers+1);
boundedAtomsSerialNumbersValid[2] = readIntegerFromRecord(buffer, 22, boundedAtomsSerialNumbers+2);
boundedAtomsSerialNumbersValid[3] = readIntegerFromRecord(buffer, 27, boundedAtomsSerialNumbers+3);
}
// Now iterate over the VALID boundedAtomsSerialNumbers and connect
// the atoms.
@@ -496,9 +536,9 @@ namespace OpenBabel
<< " and #" << boundedAtomsSerialNumbers[k]
<< " should be connected\n"
<< " However, an atom with serial #" << boundedAtomsSerialNumbers[k] << " was not found.\n"
<< " THIS CONECT RECORD WILL BE IGNORED.";
<< " THIS CONECT RECORD WILL BE IGNORED." << endl;
obErrorLog.ThrowError(__FUNCTION__, errorMsg.str() , obWarning);
break;
return(false);
}
// Figure the bond order
@@ -507,7 +547,7 @@ namespace OpenBabel
== boundedAtomsSerialNumbers[k+order+1]))
order++;
k += order;
// Generate the bond
mol.AddBond(firstAtom->GetIdx(), connectedAtom->GetIdx(), order+1);
}

View File

@@ -107,12 +107,15 @@ AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@
BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@
BUILD_INCHI_FALSE = @BUILD_INCHI_FALSE@
BUILD_INCHI_TRUE = @BUILD_INCHI_TRUE@
BUILD_SCRIPTS_FALSE = @BUILD_SCRIPTS_FALSE@
BUILD_SCRIPTS_TRUE = @BUILD_SCRIPTS_TRUE@
BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@
@@ -137,6 +140,7 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DOXYGEN = @DOXYGEN@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
@@ -161,6 +165,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -187,9 +192,12 @@ XML2_CONFIG = @XML2_CONFIG@
XML_CPPFLAGS = @XML_CPPFLAGS@
XML_LIBS = @XML_LIBS@
ac_ct_AR = @ac_ct_AR@
ac_ct_AS = @ac_ct_AS@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
ac_ct_F77 = @ac_ct_F77@
ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
@@ -257,9 +265,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/formats/xml/Makefile'; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/formats/xml/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/formats/xml/Makefile
$(AUTOMAKE) --foreign src/formats/xml/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \

View File

@@ -16,185 +16,186 @@ GNU General Public License for more details.
#include "mol.h"
#include "obconversion.h"
#include "obmolecformat.h"
#include "libxml/xmlreader.h"
#include "libxml/xmlwriter.h"
#include <libxml/xmlreader.h>
#include <libxml/xmlwriter.h>
namespace OpenBabel
{
//global utility in xml.cpp;
std::streamsize gettomatch(std::istream& is, char* buf, std::streamsize count, const char* match);
//forward declaration
class XMLBaseFormat;
//global utility in xml.cpp;
std::streamsize gettomatch(std::istream& is, char* buf, std::streamsize count, const char* match);
//forward declaration
class XMLBaseFormat;
//******************************************************
//XMLConversion class
//******************************************************
//XMLConversion class
/// An extended OBConversion class which includes a libxml2 reader for use with XML formats
/// Copies an OBConversion and then extends it with a XML parser.
/// Instances made on the heap are deleted when the original OBConversion object is.
class XMLConversion : public OBConversion
{
public:
///Existing OBConversion instance copied
XMLConversion(OBConversion* pConv);
/// An extended OBConversion class which includes a libxml2 reader for use with XML formats
/// Copies an OBConversion and then extends it with a XML parser.
/// Instances made on the heap are deleted when the original OBConversion object is.
class XMLConversion : public OBConversion
{
public:
///Existing OBConversion instance copied
XMLConversion(OBConversion* pConv);
///Frees reader and writer if necessary
~XMLConversion();
///Frees reader and writer if necessary
~XMLConversion();
bool SetupReader();///< opens libxml2 reader
bool SetupWriter();///< opens libxml2 writer
bool SetupReader();///< opens libxml2 reader
bool SetupWriter();///< opens libxml2 writer
///Parses the input xml stream and sends each element to the format's callback routines
bool ReadXML(XMLBaseFormat* pFormat, OBBase* pOb);
///Parses the input xml stream and sends each element to the format's callback routines
bool ReadXML(XMLBaseFormat* pFormat, OBBase* pOb);
typedef std::map<std::string, XMLBaseFormat*> NsMapType;
typedef std::map<std::string, XMLBaseFormat*> NsMapType;
///This static function returns a reference to the map
///Avoids "static initialization order fiasco"
static NsMapType& Namespaces()
///This static function returns a reference to the map
///Avoids "static initialization order fiasco"
static NsMapType& Namespaces()
{
static NsMapType* nsm = NULL;
if (!nsm)
nsm = new NsMapType;
return *nsm;
static NsMapType* nsm = NULL;
if (!nsm)
nsm = new NsMapType;
return *nsm;
};
static void RegisterXMLFormat(XMLBaseFormat* pFormat,
bool IsDefault=false, const char* uri=NULL);
static void RegisterXMLFormat(XMLBaseFormat* pFormat,
bool IsDefault=false, const char* uri=NULL);
///Returns the extended OBConversion class, making it if necessary
static XMLConversion* GetDerived(OBConversion* pConv, bool ForReading=true);
///Returns the extended OBConversion class, making it if necessary
static XMLConversion* GetDerived(OBConversion* pConv, bool ForReading=true);
///Because OBConversion::Convert is still using the unextended OBConversion object
///we need to obtain the conversion paramters from it when requested
bool IsLast()
///Because OBConversion::Convert is still using the unextended OBConversion object
///we need to obtain the conversion paramters from it when requested
bool IsLast()
{ return _pConv->IsLast(); }
int GetOutputIndex()
int GetOutputIndex()
{ return _pConv->GetOutputIndex(); }
xmlTextReaderPtr GetReader() const
{ return _reader; };
xmlTextReaderPtr GetReader() const
{ return _reader; };
xmlTextWriterPtr GetWriter() const
{ return _writer; };
xmlTextWriterPtr GetWriter() const
{ return _writer; };
void OutputToStream()
void OutputToStream()
{
int ret=xmlOutputBufferFlush(_buf);
int ret=xmlOutputBufferFlush(_buf);
}
static XMLBaseFormat* GetDefaultXMLClass() //TODO make dependent on object type
{ return _pDefault;};
static XMLBaseFormat* GetDefaultXMLClass() //TODO make dependent on object type
{ return _pDefault;};
void LookForNamespace()
{ _LookingForNamespace = true; };
void LookForNamespace()
{ _LookingForNamespace = true; };
///Static callback functions for xmlReaderForIO()
static int ReadStream(void * context, char * buffer, int len);
static int WriteStream(void * context, const char * buffer, int len);
//static int CloseStream(void* context);
///Static callback functions for xmlReaderForIO()
static int ReadStream(void * context, char * buffer, int len);
static int WriteStream(void * context, const char * buffer, int len);
//static int CloseStream(void* context);
std::string GetAttribute(const char* attrname);
std::string GetAttribute(const char* attrname);
///Sets value to element content. Returns false if there is no content.
std::string GetContent();
///Sets value to element content. Returns false if there is no content.
std::string GetContent();
///Sets value to element content as an integer. Returns false if there is no content.
bool GetContentInt(int& value);
///Sets value to element content as an integer. Returns false if there is no content.
bool GetContentInt(int& value);
///Sets value to element content as an double. Returns false if there is no content.
bool GetContentDouble(double& value);
///Sets value to element content as an double. Returns false if there is no content.
bool GetContentDouble(double& value);
private:
static XMLBaseFormat* _pDefault;
OBConversion* _pConv;
std::streampos _requestedpos, _lastpos;
xmlTextReaderPtr _reader;
xmlTextWriterPtr _writer;
xmlOutputBufferPtr _buf;
// xmlBufferPtr _buf;
bool _LookingForNamespace;
public:
bool _SkipNextRead;
};
private:
static XMLBaseFormat* _pDefault;
OBConversion* _pConv;
std::streampos _requestedpos, _lastpos;
xmlTextReaderPtr _reader;
xmlTextWriterPtr _writer;
xmlOutputBufferPtr _buf;
// xmlBufferPtr _buf;
bool _LookingForNamespace;
public:
bool _SkipNextRead;
};
//*************************************************
/// Abstract class containing common functionality for XML formats.
class XMLBaseFormat : public OBFormat
{
protected:
XMLConversion* _pxmlConv;
//*************************************************
/// Abstract class containing common functionality for XML formats.
class XMLBaseFormat : public OBFormat
{
protected:
XMLConversion* _pxmlConv;
//formating for output
std::string _prefix;
int baseindent, ind;
std::string nsdecl;
int _embedlevel;
//formating for output
std::string _prefix;
int baseindent, ind;
std::string nsdecl;
int _embedlevel;
public:
virtual const char* NamespaceURI()const=0;
virtual bool DoElement(const std::string& ElName){return false;};
virtual bool EndElement(const std::string& ElName){return false;};
/// The tag at the end of the chemical object e.g. "/molecule>"
virtual const char* EndTag(){return ">";};
public:
virtual const char* NamespaceURI()const=0;
virtual bool DoElement(const std::string& ElName){return false;};
virtual bool EndElement(const std::string& ElName){return false;};
/// The tag at the end of the chemical object e.g. "/molecule>"
virtual const char* EndTag(){return ">";};
protected:
xmlTextReaderPtr reader() const
protected:
xmlTextReaderPtr reader() const
{
return _pxmlConv->GetReader();
return _pxmlConv->GetReader();
}
xmlTextWriterPtr writer() const
xmlTextWriterPtr writer() const
{
return _pxmlConv->GetWriter();
return _pxmlConv->GetWriter();
}
void OutputToStream()
void OutputToStream()
{
_pxmlConv->OutputToStream();
_pxmlConv->OutputToStream();
}
};
};
//*************************************************
///Abstract class containing common functionality for XML formats which represent molecules
class XMLMoleculeFormat : public XMLBaseFormat
{
protected:
OBMol* _pmol;
//*************************************************
///Abstract class containing common functionality for XML formats which represent molecules
class XMLMoleculeFormat : public XMLBaseFormat
{
protected:
OBMol* _pmol;
public:
virtual bool ReadChemObject(OBConversion* pConv)
public:
virtual bool ReadChemObject(OBConversion* pConv)
{
return OBMoleculeFormat::ReadChemObjectImpl(pConv, this);
return OBMoleculeFormat::ReadChemObjectImpl(pConv, this);
};
virtual bool WriteChemObject(OBConversion* pConv)
virtual bool WriteChemObject(OBConversion* pConv)
{
return OBMoleculeFormat::WriteChemObjectImpl(pConv, this);
return OBMoleculeFormat::WriteChemObjectImpl(pConv, this);
};
virtual bool ReadMolecule(OBBase* pOb, OBConversion* pConv)
virtual bool ReadMolecule(OBBase* pOb, OBConversion* pConv)
{
_pmol = dynamic_cast<OBMol*>(pOb);
if(!_pmol)
return false;
_pmol = dynamic_cast<OBMol*>(pOb);
if(!_pmol)
return false;
_pxmlConv = XMLConversion::GetDerived(pConv,true);
if(!_pxmlConv)
return false;
_embedlevel = -1;
return _pxmlConv->ReadXML(this,pOb);
_pxmlConv = XMLConversion::GetDerived(pConv,true);
if(!_pxmlConv)
return false;
_embedlevel = -1;
return _pxmlConv->ReadXML(this,pOb);
};
const std::type_info& GetType()
const std::type_info& GetType()
{
return typeid(OBMol*);
return typeid(OBMol*);
};
};
};
}//namespace

View File

@@ -82,12 +82,15 @@ AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@
BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@
BUILD_INCHI_FALSE = @BUILD_INCHI_FALSE@
BUILD_INCHI_TRUE = @BUILD_INCHI_TRUE@
BUILD_SCRIPTS_FALSE = @BUILD_SCRIPTS_FALSE@
BUILD_SCRIPTS_TRUE = @BUILD_SCRIPTS_TRUE@
BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@
@@ -112,6 +115,7 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DOXYGEN = @DOXYGEN@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
@@ -136,6 +140,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -162,9 +167,12 @@ XML2_CONFIG = @XML2_CONFIG@
XML_CPPFLAGS = @XML_CPPFLAGS@
XML_LIBS = @XML_LIBS@
ac_ct_AR = @ac_ct_AR@
ac_ct_AS = @ac_ct_AS@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
ac_ct_F77 = @ac_ct_F77@
ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
@@ -224,9 +232,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/math/Makefile'; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/math/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/math/Makefile
$(AUTOMAKE) --foreign src/math/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \

File diff suppressed because it is too large Load Diff

View File

@@ -190,7 +190,7 @@ namespace OpenBabel
#define OB_POS_CHIRAL_ATOM (1<<10)
//! Atom has - chiral volume
#define OB_NEG_CHIRAL_ATOM (1<<11)
//! Atom has no hydrogen attached. Temporary use only during SMILES input
//! Atom has no hydrogen attached. Temporary use only during SMILES input
#define OB_ATOM_HAS_NO_H (1<<12)
// 13-16 currently unused
@@ -442,10 +442,10 @@ namespace OpenBabel
bool HtoMethyl();
//! Change the hybridization of this atom and modify the geometry accordingly
bool SetHybAndGeom(int);
//! Mark that atom has no hydrogens attached
void ForceNoH() {SetFlag(OB_ATOM_HAS_NO_H);}
//! Return true if atom has been marked as having no hydrogens attached
bool HasNoHForced() {return HasFlag(OB_ATOM_HAS_NO_H);}
//! Mark that atom has no hydrogens attached
void ForceNoH() {SetFlag(OB_ATOM_HAS_NO_H);}
//! Return true if atom has been marked as having no hydrogens attached
bool HasNoHForced() {return HasFlag(OB_ATOM_HAS_NO_H);}
//@}
//! \name Property information
@@ -654,6 +654,10 @@ namespace OpenBabel
//@{
bool IsAromatic() const;
bool IsInRing() const;
//! Is the bond a rotatable bond?
//! Currently, this function classifies any bond with at least one heavy
//! atom, no sp-hybrid atoms (e.g., a triple bond somewhere) not in a ring
//! as a potential rotor. No other bond typing is attempted.
bool IsRotor();
bool IsAmide();
bool IsPrimaryAmide();
@@ -785,8 +789,8 @@ namespace OpenBabel
virtual ~OBMol();
//! Assignment, copies atoms,bonds and OBGenericData
OBMol &operator=(const OBMol &mol);
//! Copies atoms and bonds but not OBGenericData
OBMol &operator+=(const OBMol &mol);
//! Copies atoms and bonds but not OBGenericData
OBMol &operator+=(const OBMol &mol);
void ReserveAtoms(int natoms)
{
@@ -842,7 +846,7 @@ namespace OpenBabel
unsigned int NumHvyAtoms();
//! \return the number of residues (i.e. OBResidue substituents)
unsigned int NumResidues() const { return(_residue.size()); }
//! \return the number of rotatble bonds
//! \return the number of rotatble bonds. See OBBond::IsRotor() for details
unsigned int NumRotors();
OBAtom *GetAtom(int);

View File

@@ -195,7 +195,8 @@ OBFormat* OBConversion::pDefaultFormat=NULL;
OBConversion::OBConversion(istream* is, ostream* os) :
pInFormat(NULL),pOutFormat(NULL), Index(0), StartNumber(1),
EndNumber(0), Count(-1), m_IsLast(true), MoreFilesToCome(false),
OneObjectOnly(false), pOb1(NULL), pAuxConv(NULL),m_IsFirstInput(true)
OneObjectOnly(false), CheckedForGzip(false), pOb1(NULL),
pAuxConv(NULL), m_IsFirstInput(true)
{
pInStream=is;
pOutStream=os;
@@ -252,6 +253,7 @@ OBConversion::OBConversion(const OBConversion& o)
pOb1 = o.pOb1;
ReadyToInput = o.ReadyToInput;
m_IsFirstInput = o.m_IsFirstInput;
CheckedForGzip = o.CheckedForGzip;
pAuxConv = NULL;
}
@@ -411,11 +413,14 @@ bool OBConversion::SetOutFormat(const char* outID)
//////////////////////////////////////////////////////
int OBConversion::Convert(istream* is, ostream* os)
{
if(is) pInStream=is;
if(is) {pInStream=is; CheckedForGzip = false;}
if(os) pOutStream=os;
ostream* pOrigOutStream = pOutStream;
#ifdef HAVE_LIBZ
if (!CheckedForGzip)
{
CheckedForGzip = true;
zlib_stream::zip_istream zIn(*pInStream);
if(zIn.is_gzip())
pInStream = &zIn;
@@ -427,6 +432,7 @@ int OBConversion::Convert(istream* is, ostream* os)
zOut.make_gzip();
pOutStream = &zOut;
}
}
#endif
int count = Convert();
@@ -688,13 +694,20 @@ OBFormat* OBConversion::FormatFromMIME(const char* MIME)
bool OBConversion::Read(OBBase* pOb, std::istream* pin)
{
if(pin)
{
pInStream=pin;
CheckedForGzip = false;
}
if(!pInFormat) return false;
#ifdef HAVE_LIBZ
if (!CheckedForGzip)
{
CheckedForGzip = true;
zlib_stream::zip_istream zIn(*pInStream);
if(zIn.is_gzip())
pInStream = &zIn;
}
#endif
return pInFormat->ReadMolecule(pOb, this);
}
@@ -776,8 +789,8 @@ bool OBConversion::WriteFile(OBBase* pOb, string filePath)
////////////////////////////////////////////
bool OBConversion::ReadString(OBBase* pOb, std::string input)
{
stringstream pin(input);
return Read(pOb,&pin);
stringstream *pin = new stringstream(input);
return Read(pOb, pin);
}
@@ -786,18 +799,18 @@ bool OBConversion::ReadFile(OBBase* pOb, std::string filePath)
{
if(!pInFormat) return false;
ifstream ifs;
ifstream *ifs = new ifstream;
ios_base::openmode imode =
pInFormat->Flags() & READBINARY ? ios_base::in|ios_base::binary : ios_base::in;
ifs.open(filePath.c_str(),imode);
if(!ifs)
ifs->open(filePath.c_str(),imode);
if(!ifs || !ifs->good())
{
cerr << "Cannot read from " << filePath << endl;
return false;
}
return Read(pOb,&ifs);
return Read(pOb,ifs);
}

View File

@@ -382,6 +382,8 @@ protected:
bool MoreFilesToCome;
bool OneObjectOnly;
bool ReadyToInput;
bool CheckedForGzip; ///< input stream was already checked if it is gzip-encoded
static int FormatFilesLoaded;
OBBase* pOb1;
std::streampos wInpos; ///<position in the input stream of the object being written

View File

@@ -145,7 +145,7 @@ Output from the error log typically looks like:
**/
OBMessageHandler::OBMessageHandler() :
_outputLevel(obWarning), _outputStream(&clog), _logging(true)
_outputLevel(obWarning), _outputStream(&clog), _logging(true), _maxEntries(100)
{
// StartErrorWrap(); // (don't turn on error wrapping by default)
}

File diff suppressed because it is too large Load Diff

View File

@@ -779,6 +779,8 @@ OBResidue::OBResidue()
_resnum = 0;
_resname = "";
_vdata.clear();
cerr << " created residue ! " << endl;
}
OBResidue::OBResidue(const OBResidue &src)
@@ -792,6 +794,8 @@ OBResidue::OBResidue(const OBResidue &src)
_atomid = src._atomid;
_hetatm = src._hetatm;
_sernum = src._sernum;
cerr << " copied residue ! " << endl;
}
OBResidue::~OBResidue()
@@ -800,14 +804,8 @@ OBResidue::~OBResidue()
for ( a = _atoms.begin() ; a != _atoms.end() ; a++ )
(*a)->SetResidue(NULL);
_atoms.clear();
/* if (!_vdata.empty())
{
vector<OBGenericData*>::iterator m;
for (m = _vdata.begin();m != _vdata.end();m++)
delete *m;
_vdata.clear();
}
*/
cerr << " deleted residue ! " << endl;
}
///////////////////////////////////////////////////////////////////////////////
@@ -865,11 +863,11 @@ void OBResidue::InsertAtom(OBAtom *atom)
void OBResidue::RemoveAtom(OBAtom *atom)
{
if (atom != NULL)
if (atom != NULL && _atoms.size())
{
for ( unsigned int i = 0 ; i < _atoms.size() ; i++ )
{
if (_atoms[i] == atom)
if (_atoms[i] != NULL && _atoms[i] == atom)
{
atom->SetResidue(NULL);
_atoms.erase(_atoms.begin() + i);

File diff suppressed because it is too large Load Diff

View File

@@ -21,7 +21,7 @@ EXTRA_DIST = smartsresults.txt smartstest.txt \
cml.sh test-set.sh \
matrix.pl unitcell.pl rings.pl \
smarts.pl test-set.pl cml.pl \
aromatest.pl
aromatest.pl aromatics.smi
matrixtest_SOURCES = matrixtest.cpp
ringtest_SOURCES = ringtest.cpp

View File

@@ -113,6 +113,8 @@ AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@
BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@
BUILD_INCHI_FALSE = @BUILD_INCHI_FALSE@
BUILD_INCHI_TRUE = @BUILD_INCHI_TRUE@
BUILD_SCRIPTS_FALSE = @BUILD_SCRIPTS_FALSE@
BUILD_SCRIPTS_TRUE = @BUILD_SCRIPTS_TRUE@
BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@
@@ -251,7 +253,7 @@ EXTRA_DIST = smartsresults.txt smartstest.txt \
cml.sh test-set.sh \
matrix.pl unitcell.pl rings.pl \
smarts.pl test-set.pl cml.pl \
aromatest.pl
aromatest.pl aromatics.smi
matrixtest_SOURCES = matrixtest.cpp
ringtest_SOURCES = ringtest.cpp
@@ -272,9 +274,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu test/Makefile
$(AUTOMAKE) --foreign test/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \

View File

@@ -35,14 +35,18 @@ int main(int argc,char *argv[])
{
if (argc != 2)
{
cout << "Usage: aromatest <file1>" << endl;
cout << "Usage: aromatest <file>" << endl;
cout << " Tests aromaticity perception -- all non-hydrogen atoms"
<< " are expected to be aromatic." << endl;
return(-1);
}
cout << endl << "# Testing aromaticity perception... " << endl;
ifstream ifs(argv[1]);
if (!ifs)
{
cerr << argv[0] << ": Cannot read input file!" << endl;
cout << "Bail out! Cannot read input file!" << endl;
return(-1);
}
@@ -52,7 +56,7 @@ int main(int argc,char *argv[])
pFormat = conv.FormatFromExt(argv[1]);
if ( pFormat == NULL )
{
cerr << argv[0] << ": Cannot read file format!" << endl;
cout << "Bail out! Cannot read file format!" << endl;
return(-1);
}
@@ -60,32 +64,43 @@ int main(int argc,char *argv[])
OBMol mol;
OBAtom *atom;
if (! conv.SetInAndOutFormats(pFormat, pFormat))
{
ThrowError("File format isn't loaded");
return (-1);
}
int molCount = 0;
while(ifs.peek() != EOF && ifs.good())
{
mol.Clear();
conv.Read(&mol);
molCount++;
unsigned int testCount = 1;
if (! conv.SetInAndOutFormats(pFormat, pFormat))
{
cout << "Bail out! File format isn't loaded" << endl;
return (-1);
}
int molCount = 0;
while(ifs.peek() != EOF && ifs.good())
{
mol.Clear();
conv.Read(&mol);
molCount++;
for(unsigned int i = 1;i <= mol.NumAtoms(); i++)
{
atom = mol.GetAtom(i);
if (atom->IsHydrogen())
continue;
if (atom->IsAromatic())
cout << "ok " << testCount++ << endl;
else
{
cout << "not ok " << testCount++ << " # atom isn't aromatic!"
<< endl;
cout << "# atom idx " << i
<< " in molecule " << molCount << " "
<< mol.GetTitle() << endl;
}
}
for(unsigned int i = 1;i <= mol.NumAtoms(); i++)
{
atom = mol.GetAtom(i);
if (!atom->IsHydrogen() && !atom->IsAromatic())
{
cerr << "Atom isn't aromatic!" << endl;
cerr << " atom idx " << i
<< " in molecule " << molCount << endl;
return(-1);
}
}
} // while reading molecules
} // while reading molecules
return(0);
// output the number of tests run
cout << "1.." << testCount-1 << endl;
return(0);
}

View File

@@ -1,6 +1,6 @@
#!/usr/bin/perl
system("./aromatest");
system("./aromatest aromatics.smi");
# If the program failed to execute, ignore the test
if ($? == -1) {

38
test/aromatics.smi Normal file
View File

@@ -0,0 +1,38 @@
c1ccco1 furan
c1cccs1 thiophene
c1cncs1 thiazole
c1cnco1 oxazole
c1ccno1 isoxazole
c1nnco1 1,3,4-oxadiazole
n1ccno1 1,2,5-oxadiazole
c1ncno1 1,2,4-oxadiazole
c1cnno1 1,2,3-oxadiazole
n1cnno1 1,2,3,5-oxatriazole
c1nnno1 1,2,3,4-oxatriazole
c1ccns1 isothaizole
c1nncs1 1,3,4-thiadiazole
c1cnns1 1,2,3-thiadiazole
n1ccns1 1,2,5-thiadiazole
c1ncns1 1,2,4-thiadiazole
c1nnns1 1,2,3,4-thiatriazole
n1cnns1 1,2,3,4-thiatriazole
c1ccc[se]1 selenophene
c1ccccc1 benzene
c1ccccn1 pyridine
c1ccnnn1 1,2,3-triazine
c1cncnn1 1,2,4-triazine
c1ncncn1 s-triazine
c1ccncn1 pyrimidine
c1cnccn1 pyrazine
c1cccnn1 pyridazine
c1nncnn1 1,2,4,5-tetrazine
c1cnnnn1 1,2,3,4-tetrazine
n1cnnnc1 1,2,3,5-tetrazine
c12ccccc1cccc2 naphthalene
c12ccccc1cc3c(cccc3)c2 anthracene
c12cccnc1cccc2 quinoline
c12cccc1ccccc2 azulene
n1nncc1 1H-1,2,3-triazole
n1nnnc1 1H-tetrazole
n1nccc1 1H-pyrazole
n1ncnc1 1H-1,2,4-triazole

View File

@@ -60,6 +60,8 @@ AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@
BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@
BUILD_INCHI_FALSE = @BUILD_INCHI_FALSE@
BUILD_INCHI_TRUE = @BUILD_INCHI_TRUE@
BUILD_SCRIPTS_FALSE = @BUILD_SCRIPTS_FALSE@
BUILD_SCRIPTS_TRUE = @BUILD_SCRIPTS_TRUE@
BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@
@@ -198,9 +200,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/cmltest/Makefile'; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/cmltest/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu test/cmltest/Makefile
$(AUTOMAKE) --foreign test/cmltest/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \

View File

@@ -5,11 +5,13 @@
# call, in case the test is called from somewhere eles
if `env | grep ^builddir > /dev/null 2>&1`; then
BABEL=$builddir/../src/babel
export BABEL_LIBDIR="$builddir/../src/formats/.libs:$builddir/../src/formats/xml/.libs"
BABEL_LIBDIR="$builddir/../src/formats/.libs:$builddir/../src/formats/xml/.libs"
export BABEL_LIBDIR
else
builddir=..
BABEL=../../src/babel
export BABEL_LIBDIR="`pwd`/../../src/formats/.libs:`pwd`/../../src/formats/xml/.libs"
BABEL_LIBDIR="../../src/formats/.libs:../../src/formats/xml/.libs"
export BABEL_LIBDIR
fi
# test input

File diff suppressed because it is too large Load Diff

View File

@@ -17,48 +17,47 @@
GNU General Public License for more details.
***********************************************************************/
#include <fstream>
#include <fstream>
#include "babelconfig.h"
#include "mol.h"
#include "obconversion.h"
#include "babelconfig.h"
#include "mol.h"
#include "obconversion.h"
namespace OpenBabel
{
bool SafeOpen(std::ifstream &fs, char *filename);
bool SafeOpen(std::ofstream &fs, char *filename);
}
namespace OpenBabel
{
bool SafeOpen(std::ifstream &fs, char *filename);
bool SafeOpen(std::ofstream &fs, char *filename);
}
using namespace std;
using namespace OpenBabel;
using namespace std;
using namespace OpenBabel;
void GenerateSmartsReference();
int main(int argc,char *argv[])
{
if (argc != 1)
{
if (strncmp(argv[1], "-g", 2))
{
cout << "Usage: smartstest" << endl;
cout << " Tests Open Babel SMILES/SMARTS pattern matching." << endl;
return 0;
}
else
{
GenerateSmartsReference();
return 0;
}
}
cout << endl << "# Testing SMARTS... " << endl;
void GenerateSmartsReference();
int main(int argc,char *argv[])
{
if (argc != 1)
{
if (strncmp(argv[1], "-g", 2))
{
cout << "Usage: smartstest" << endl;
cout << " Tests Open Babel SMILES/SMARTS pattern matching." << endl;
return 0;
}
else
{
GenerateSmartsReference();
return 0;
}
}
cout << endl << "# Testing SMARTS... " << endl;
#ifdef TESTDATADIR
string testdatadir = TESTDATADIR;
string smarts_file = testdatadir + "smartstest.txt";
string results_file = testdatadir + "smartsresults.txt";
string smilestypes_file = testdatadir + "attype.00.smi";
string testdatadir = TESTDATADIR;
string smarts_file = testdatadir + "smartstest.txt";
string results_file = testdatadir + "smartsresults.txt";
string smilestypes_file = testdatadir + "attype.00.smi";
#else
string smarts_file = "smartstest.txt";

View File

@@ -2,12 +2,13 @@
# Run "prove" on all Perl programs
TESTS="matrix.pl unitcell.pl rings.pl smarts.pl cml.pl test-set.pl"
TESTS="matrix.pl unitcell.pl rings.pl smarts.pl aromatest.pl cml.pl test-set.pl"
PROVE=prove
if [ -d ../src/formats/.libs ]; then
if [ "x${BABEL_LIBDIR}" = "x" ]; then
export BABEL_LIBDIR="`pwd`/../src/formats/.libs:`pwd`/../src/formats/xml/.libs"
BABEL_LIBDIR="`pwd`/../src/formats/.libs:`pwd`/../src/formats/xml/.libs"
export BABEL_LIBDIR
fi
fi

View File

@@ -92,12 +92,15 @@ AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BUILD_DOCS_FALSE = @BUILD_DOCS_FALSE@
BUILD_DOCS_TRUE = @BUILD_DOCS_TRUE@
BUILD_INCHI_FALSE = @BUILD_INCHI_FALSE@
BUILD_INCHI_TRUE = @BUILD_INCHI_TRUE@
BUILD_SCRIPTS_FALSE = @BUILD_SCRIPTS_FALSE@
BUILD_SCRIPTS_TRUE = @BUILD_SCRIPTS_TRUE@
BUILD_SHARED_FALSE = @BUILD_SHARED_FALSE@
@@ -122,6 +125,7 @@ CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DOXYGEN = @DOXYGEN@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
@@ -146,6 +150,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -172,9 +177,12 @@ XML2_CONFIG = @XML2_CONFIG@
XML_CPPFLAGS = @XML_CPPFLAGS@
XML_LIBS = @XML_LIBS@
ac_ct_AR = @ac_ct_AR@
ac_ct_AS = @ac_ct_AS@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_DLLTOOL = @ac_ct_DLLTOOL@
ac_ct_F77 = @ac_ct_F77@
ac_ct_OBJDUMP = @ac_ct_OBJDUMP@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
@@ -246,9 +254,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --gnu tools/Makefile
$(AUTOMAKE) --foreign tools/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \