On Tue, Dec 1, 2009 at 12:43 PM, Riccardo Corradini <riccardocorrad...@yahoo.it> wrote: > > Dear Jaroslav > after goggling a lot I found a nice example that I converted to fix the > MPI_Comunicator problem > > Here there is the code adjusted from > http://www.codeguru.com/cpp/cpp/cpp_mfc/article.php/c4031/ > > there are just two files Comm.h and Comexample.cc > > #define FILL_COMM(RNAME,LNAME) \ > MPI_Comm RNAME##comm = MPI_LNAME;\ > > #include "mpi.h" > > > > #define READ_ONLY 1 > #define WRITE_ONLY 2 > #define READ_WRITE 3 > > template <typename Container, typename ValueType, int nPropType> > class property > { > public: > property() > { > m_cObject = NULL; > Set = NULL; > Get = NULL; > } > //-- This to set a pointer to the class that contain the > // property -- > void setContainer(Container* cObject) > { > m_cObject = cObject; > } > //-- Set the set member function that will change the value -- > void setter(void (Container::*pSet)(ValueType value)) > { > if((nPropType == WRITE_ONLY) || (nPropType == READ_WRITE)) > Set = pSet; > else > Set = NULL; > } > //-- Set the get member function that will retrieve the value -- > void getter(ValueType (Container::*pGet)()) > { > if((nPropType == READ_ONLY) || (nPropType == READ_WRITE)) > Get = pGet; > else > Get = NULL; > } > //-- Overload the '=' sign to set the value using the set > // member -- > ValueType operator =(const ValueType& value) > { > assert(m_cObject != NULL); > assert(Set != NULL); > (m_cObject->*Set)(value); > return value; > } > //-- To make possible to cast the property class to the > // internal type -- > operator ValueType() > { > assert(m_cObject != NULL); > assert(Get != NULL); > return (m_cObject->*Get)(); > } > private: > Container* m_cObject; //-- Pointer to the module that > // contains the property -- > void (Container::*Set)(ValueType value); > //-- Pointer to set member function -- > ValueType (Container::*Get)(); > //-- Pointer to get member function -- > }; > > > class PropTest > { > public: > PropTest() > { > Comm.setContainer(this); > Comm.setter(&PropTest::setComm); > Comm.getter(&PropTest::getComm); > } > MPI_Comm getComm() > { > return m_nComm; > } > void setComm(MPI_Comm nComm) > { > m_nComm = nComm; > } > property<PropTest,MPI_Comm,READ_WRITE> Comm; > > > private: > MPI_Comm m_nComm; > }; > > > And the DLD function > #include <octave/oct.h> > #include "Comm.h" > DEFUN_DLD(CommExample,args,,"A simple example using a C++ class holding > Comunicator as property") > { > > // Example setting > PropTest SetTest; > SetTest.Comm = MPI_COMM_WORLD; > // Example getting > MPI_Comm ex_comm; > ex_comm = SetTest.Comm; > // the problem is how could SetTest comunicate with GNU Octave ? > } > > I think the situation here is simpler because we have a simple class holding > all pieces of info and perhaps the pointers to this class are easier to > handle.. and more universal among different MPI implementations ... > What do you think ? > Thanks a lot in advance for all your patience and help. > Bests > Riccardo > >
Hi Riccardo, unfortunately I still don't have time for MPI, so do whatever you want now, I'll throw my ideas in later. -- RNDr. Jaroslav Hajek computing expert & GNU Octave developer Aeronautical Research and Test Institute (VZLU) Prague, Czech Republic url: www.highegg.matfyz.cz ------------------------------------------------------------------------------ Join us December 9, 2009 for the Red Hat Virtual Experience, a free event focused on virtualization and cloud computing. Attend in-depth sessions from your desk. Your couch. Anywhere. http://p.sf.net/sfu/redhat-sfdev2dev _______________________________________________ Octave-dev mailing list Octave-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/octave-dev