[Avogadro-devel] python boost unresolved overloaded function type

2012-02-27 Thread Gary Kedziora
I have having trouble compiling ~/libavogadro/src/python/fragment.cpp.
 The issue appears to be that the python boost template function
arguments can not be resolved when there is a constant and non
constant version.  Here is the make output for an example:

[ 82%] Building CXX object
libavogadro/src/python/CMakeFiles/python-module.dir/fragment.cpp.o
cd /app/ccm/opt/build/avogadro/libavogadro/src/python 
/usr/bin/g++44   -Dpython_module_EXPORTS -D_BSD_SOURCE
-DHAVE_GCC_VISIBILITY -DENABLE_PYTHON -DQT_OPENGL_LIB -DQT_GUI_LIB
-DQT_CORE_LIB -DQT_NO_DEBUG -fvisibility=hidden
-fvisibility-inlines-hidden -fpermissive -O2 -g -Wnon-virtual-dtor
-Wno-long-long -ansi -Wcast-align -Wchar-subscripts -Wall -Wextra
-Wpointer-arith -Wformat-security -fno-check-new -fno-common -pedantic
-fPIC -I/app/ccm/opt/build/avogadro/libavogadro/include
-I/app/CSE/20111228/Release/qt-4.7.4/include
-I/app/CSE/20111228/Release/qt-4.7.4/include/QtOpenGL
-I/app/CSE/20111228/Release/qt-4.7.4/include/QtGui
-I/app/CSE/20111228/Release/qt-4.7.4/include/QtCore
-I/app/ccm/opt/build/avogadro/libavogadro/src
-I/u/home/app/ccm/opt/include/eigen2
-I/u/home/app/ccm/opt/include/openbabel-2.0
-I/u/home/app/CSE/20111228/Apps/boost-1.46.0/include
-I/app/CSE/20111228/Release/python-2.6.4/include/python2.6
-I/app/ccm/opt/src/avogadro/libavogadro/include
-I/app/ccm/opt/build/avogadro/libavogadro/src/python
-I/app/CSE/20111228/Analysis/numpy-1.3.0/lib/python2.6/site-packages/numpy/core/include
  -o CMakeFiles/python-module.dir/fragment.cpp.o -c
/app/ccm/opt/src/avogadro/libavogadro/src/python/fragment.cpp
/app/ccm/opt/src/avogadro/libavogadro/src/python/fragment.cpp: In
function 'void export_Fragment()':
/app/ccm/opt/src/avogadro/libavogadro/src/python/fragment.cpp:21:
error: no matching function for call to
'boost::python::class_Avogadro::Fragment,
boost::python::basesAvogadro::Primitive, mpl_::void_, mpl_::void_,
mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_,
mpl_::void_, mpl_::void_, boost::noncopyable_::noncopyable,
boost::python::detail::not_specified::add_property(const char [5],
unresolved overloaded function type, void
(Avogadro::Fragment::*)(QString), const char [26])'
make[2]: *** 
[libavogadro/src/python/CMakeFiles/python-module.dir/fragment.cpp.o]
Error 1
make[2]: Leaving directory `/u/home/app/ccm/opt/build/avogadro'
make[1]: *** [libavogadro/src/python/CMakeFiles/python-module.dir/all] Error 2
make[1]: Leaving directory `/u/home/app/ccm/opt/build/avogadro'
make: *** [all] Error 2


This has to do with initializing the name property of the Fragment
class for Python.  In ~/libavogadro/src/fragment.h, we have

  inline QString name() { return m_name; }
  inline const QString  name() const { return m_name; }

It seems that in situations where there are not const member functions
(or other const qualifies), this works ok.  I have run across this
type of problem with C++ the distant past, but don't remember much
about it.  Anyway, what solution would be acceptable for the Avogadro
developers?

Thanks,
Gary

--
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
___
Avogadro-devel mailing list
Avogadro-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/avogadro-devel


Re: [Avogadro-devel] python boost unresolved overloaded function type

2012-02-27 Thread Marcus D. Hanwell
On Mon, Feb 27, 2012 at 2:23 PM, Gary Kedziora gkedzi...@gmail.com wrote:
 I have having trouble compiling ~/libavogadro/src/python/fragment.cpp.
  The issue appears to be that the python boost template function
 arguments can not be resolved when there is a constant and non
 constant version.  Here is the make output for an example:

snip

 This has to do with initializing the name property of the Fragment
 class for Python.  In ~/libavogadro/src/fragment.h, we have

      inline QString name() { return m_name; }
      inline const QString  name() const { return m_name; }

 It seems that in situations where there are not const member functions
 (or other const qualifies), this works ok.  I have run across this
 type of problem with C++ the distant past, but don't remember much
 about it.  Anyway, what solution would be acceptable for the Avogadro
 developers?

You don't mention what version you are building, this should be fixed
in master as far as I am aware. If doing a git pull does not fix the
issue can you let me know what commit you are on (git show from the
source directory).

Thanks,

Marcus

--
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
___
Avogadro-devel mailing list
Avogadro-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/avogadro-devel