From 994b94ce67d8dee536807a0be12f6cf15d1e1308 Mon Sep 17 00:00:00 2001 From: Noel O'Boyle Date: Sun, 6 Jun 2010 15:10:17 +0000 Subject: [PATCH] Bring Ruby bindings into synch with Python bindings --- scripts/openbabel-ruby.i | 118 ++++++++++++++++++++++++++++++++------- 1 file changed, 99 insertions(+), 19 deletions(-) diff --git a/scripts/openbabel-ruby.i b/scripts/openbabel-ruby.i index ca42cd5a3..0fd771837 100644 --- a/scripts/openbabel-ruby.i +++ b/scripts/openbabel-ruby.i @@ -58,31 +58,101 @@ %include "std_string.i" namespace std { -%template (VectorInt) vector; -%template (VectorUnsignedInt) vector; -%template (VVInt) vector< vector >; -%template (VectorDouble) vector; -%template (VectorString) vector; -%template (VVector3) vector; -%template (VectorMol) vector; -%template (VectorBond) vector; -%template (VectorResidue) vector; -%template (VectorRing) vector; -%template (VectorpRing) vector; -%template (VectorGenericData) vector; +%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::OBPairData *toPairData(OpenBabel::OBGenericData *data) { - return (OpenBabel::OBPairData *) data; -} - -OpenBabel::OBUnitCell *toUnitCell(OpenBabel::OBGenericData *data) { - return (OpenBabel::OBUnitCell *) data; +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++; @@ -96,6 +166,9 @@ OpenBabel::OBUnitCell *toUnitCell(OpenBabel::OBGenericData *data) { %ignore *::operator/=; %ignore *::operator-=; %ignore *::operator!=; +%ignore *::operator&=; +%ignore *::operator^=; +%ignore *::operator|=; %import @@ -150,8 +223,15 @@ namespace std { class stringbuf {}; } %ignore OpenBabel::OBForceField::VectorMultiply(const double *const, const double, double *); %include +%include %include +%warnfilter(503) OpenBabel::OBBitVec; // Not wrapping any of the overloaded operators +%include +%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