%module OpenBabel // These fields are renamed to valid constant names %rename(U1MA) OpenBabel::OBResidueIndex::_1MA; %rename(U1MG) OpenBabel::OBResidueIndex::_1MG; %rename(U2MG) OpenBabel::OBResidueIndex::_2MG; %rename(U7MG) OpenBabel::OBResidueIndex::_7MG; %rename(U5MU) OpenBabel::OBResidueIndex::_5MU; %rename(U5MC) OpenBabel::OBResidueIndex::_5MC; %{ // used to set import/export for Cygwin DLLs #ifdef WIN32 #define USING_OBDLL #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include %} %include "std_map.i" %include "std_vector.i" %include "std_string.i" namespace std { %define VVTEMPLATE_WRAP(name, T) %feature("ignore") vector< vector >::append; %feature("ignore") vector< vector >::assign; %feature("ignore") vector< vector >::back; %feature("ignore") vector< vector >::begin; %feature("ignore") vector< vector >::capacity; %feature("ignore") vector< vector >::clear; %feature("ignore") vector< vector >::empty; %feature("ignore") vector< vector >::end; %feature("ignore") vector< vector >::erase; %feature("ignore") vector< vector >::front; %feature("ignore") vector< vector >::get_allocator; %feature("ignore") vector< vector >::insert; %feature("ignore") vector< vector >::pop; %feature("ignore") vector< vector >::pop_back; %feature("ignore") vector< vector >::push_back; %feature("ignore") vector< vector >::rbegin; %feature("ignore") vector< vector >::rend; %feature("ignore") vector< vector >::reserve; %feature("ignore") vector< vector >::resize; %feature("ignore") vector< vector >::size; %feature("ignore") vector< vector >::swap; %template(VectorV ## name) vector< vector >; %enddef %define VECTORTEMPLATE_WRAP(vectorname, T) %feature("ignore") vector::append; %feature("ignore") vector::assign; %feature("ignore") vector::back; %feature("ignore") vector::begin; %feature("ignore") vector::capacity; %feature("ignore") vector::clear; %feature("ignore") vector::empty; %feature("ignore") vector::end; %feature("ignore") vector::erase; %feature("ignore") vector::front; %feature("ignore") vector::get_allocator; %feature("ignore") vector::insert; %feature("ignore") vector::pop; %feature("ignore") vector::pop_back; %feature("ignore") vector::push_back; %feature("ignore") vector::rbegin; %feature("ignore") vector::rend; %feature("ignore") vector::reserve; %feature("ignore") vector::resize; %feature("ignore") vector::size; %feature("ignore") vector::swap; %template(Vector ## vectorname) vector; %enddef VECTORTEMPLATE_WRAP(Int, int) VECTORTEMPLATE_WRAP(UnsignedInt, unsigned int) VVTEMPLATE_WRAP(Int, int) VECTORTEMPLATE_WRAP(Double, double) VECTORTEMPLATE_WRAP(String, std::string) VECTORTEMPLATE_WRAP(Vector3, OpenBabel::vector3) VECTORTEMPLATE_WRAP(OBMol, OpenBabel::OBMol) VECTORTEMPLATE_WRAP(OBBond, OpenBabel::OBBond) VECTORTEMPLATE_WRAP(OBResidue, OpenBabel::OBResidue) VECTORTEMPLATE_WRAP(OBRing, OpenBabel::OBRing) VECTORTEMPLATE_WRAP(pOBRing, OpenBabel::OBRing*) VECTORTEMPLATE_WRAP(pOBGenericData, OpenBabel::OBGenericData*) } %define CAST_GENERICDATA_TO(subclass) %inline %{ OpenBabel::OB ## subclass *to ## subclass(OpenBabel::OBGenericData *data) { return (OpenBabel::OB ## subclass *) data; } %} %enddef CAST_GENERICDATA_TO(AngleData) CAST_GENERICDATA_TO(AtomClassData) CAST_GENERICDATA_TO(ChiralData) CAST_GENERICDATA_TO(CommentData) CAST_GENERICDATA_TO(ConformerData) CAST_GENERICDATA_TO(ExternalBondData) CAST_GENERICDATA_TO(GridData) CAST_GENERICDATA_TO(MatrixData) CAST_GENERICDATA_TO(NasaThermoData) CAST_GENERICDATA_TO(PairData) // CAST_GENERICDATA_TO(PairTemplate) CAST_GENERICDATA_TO(RateData) CAST_GENERICDATA_TO(RotamerList) CAST_GENERICDATA_TO(RotationData) CAST_GENERICDATA_TO(SerialNums) CAST_GENERICDATA_TO(SetData) CAST_GENERICDATA_TO(SymmetryData) CAST_GENERICDATA_TO(TorsionData) CAST_GENERICDATA_TO(UnitCell) CAST_GENERICDATA_TO(VectorData) CAST_GENERICDATA_TO(VibrationData) CAST_GENERICDATA_TO(VirtualBond) // These methods are renamed to valid method names %rename(inc) *::operator++; %rename(good) *::operator bool; %rename(deref) *::operator->; %rename(add) *::operator+=; %rename(idx) *::operator[]; %ignore *::DescribeBits; %ignore *::operator=; %ignore *::operator*=; %ignore *::operator/=; %ignore *::operator-=; %ignore *::operator!=; %ignore *::operator&=; %ignore *::operator^=; %ignore *::operator|=; %import %include %include %include %include %warnfilter(503) OpenBabel::matrix3x3; // Not wrapping any of the overloaded operators %include %import # CloneData should be used instead of the following method %ignore OpenBabel::OBBase::SetData; %include %include %include %import %import // To avoid warning in oberror.h about "Nothing known about std::binary_function" namespace std { template class binary_function {}; } %template(Dummy) std::binary_function ; %include // To avoid warning in oberror.h about "Nothing known about std::stringbuf" namespace std { class stringbuf {}; } %warnfilter(503) OpenBabel::OBError; // Not wrapping any of the overloaded operators %include %include %include %include %include %include %include %include %include %include %include %include %ignore OpenBabel::FptIndex; %include %include # Ignore shadowed methods %ignore OpenBabel::OBForceField::VectorSubtract(const double *const, const double *const, double *); %ignore OpenBabel::OBForceField::VectorMultiply(const double *const, const double, double *); #ifdef HAVE_EIGEN %{ #include #include %} #else %ignore OpenBabel::OBForceField::FastRotorSearch; %ignore OpenBabel::OBForceField::DiverseConfGen; #endif %include %include %include %warnfilter(503) OpenBabel::OBBitVec; // Not wrapping any of the overloaded operators %include %ignore OpenBabel::OBRotor::GetRotAtoms() const; %include %ignore OpenBabel::Swab; %include # The following %ignores avoid warning messages due to shadowed classes. # This does not imply a loss of functionality as (in this case) # the shadowed class is identical (from the point of view of SWIG) to # the shadowing class. # This is because C++ references (&) are transformed by SWIG back into # pointers, so that OBAtomIter(OBMol &) would be treated the same as # OBAtomIter(OBMol *). %ignore OBAtomAtomIter(OBAtom &); %ignore OBAtomBondIter(OBAtom &); %ignore OBMolAngleIter(OBMol &); %ignore OBMolAtomIter(OBMol &); %ignore OBMolAtomBFSIter(OBMol &); %ignore OBMolAtomDFSIter(OBMol &); %ignore OBMolAtomBFSIter(OBMol &, int); %ignore OBMolAtomDFSIter(OBMol &, int); %ignore OBMolBondIter(OBMol &); %ignore OBMolBondBFSIter(OBMol &); %ignore OBMolBondBFSIter(OBMol &, int); %ignore OBMolPairIter(OBMol &); %ignore OBMolRingIter(OBMol &); %ignore OBMolTorsionIter(OBMol &); %ignore OBResidueIter(OBMol &); %ignore OBResidueAtomIter(OBResidue &); %ignore *::operator=; %include