peo modified

git-svn-id: svn://scm.gforge.inria.fr/svnroot/paradiseo@927 331e1502-861f-0410-8da2-ba01fb791d7f
This commit is contained in:
canape 2008-02-11 12:27:19 +00:00
commit 240685493b
15 changed files with 103 additions and 244 deletions

View file

@ -42,7 +42,7 @@
#include "messaging.h"
template <class EOT> void pack (const eoPop <EOT> & __pop)
template <class EOT> void pack (eoPop <EOT> & __pop)
{
pack ((unsigned) __pop.size ());
@ -61,4 +61,23 @@ template <class EOT> void unpack (eoPop <EOT> & __pop)
unpack (__pop [i]);
}
template <class MOEOT> void pack (moeoArchive < MOEOT > & __pop)
{
pack ((unsigned) __pop.size ());
for (unsigned i = 0; i < __pop.size (); i ++)
pack (__pop [i]);
}
template <class MOEOT> void unpack (moeoArchive < MOEOT > & __pop)
{
unsigned n;
unpack (n);
__pop.resize (n);
for (unsigned i = 0; i < n; i ++)
unpack (__pop [i]);
}
#endif

View file

@ -129,7 +129,7 @@ template< class TYPESELECT , class TYPEREPLACE> void peoAsyncIslandMig< TYPESELE
{
lock ();
::pack( coop_em.front()->getKey() );
em.front().pack();
::pack(em.front());
coop_em.pop();
em.pop();
unlock();
@ -140,7 +140,7 @@ template< class TYPESELECT, class TYPEREPLACE> void peoAsyncIslandMig< TYPESELE
{
lock ();
TYPEREPLACE mig;
mig.unpack();
::unpack(mig);
imm.push( mig );
unlock();
}

View file

@ -40,59 +40,6 @@
#include "core/eoVector_mesg.h"
#include "core/messaging.h"
/**************************************************************************************/
/************************** DEFINE A DATA ******************************************/
/**************************************************************************************/
//! @class peoData
//! @brief Abstract class for a data exchanged by migration
//! @version 1.0
//! @date january 2008
class peoData
{
public:
//! @brief Function realizing packages
virtual void pack ()
{}
//! @brief Function reconstituting packages
virtual void unpack ()
{}
};
//! @class peoPop
//! @brief Specific class for a migration of a population
//! @see peoData eoPop
//! @version 1.0
//! @date january 2008
template<class EOT>
class peoPop: public eoPop<EOT>, public peoData
{
public:
//! @brief Function realizing packages
virtual void pack ()
{
::pack ((unsigned) this->size ());
for (unsigned i = 0; i < this->size (); i ++)
::pack ((*this)[i]);
}
//! @brief Function reconstituting packages
virtual void unpack ()
{
unsigned n;
::unpack (n);
this->resize (n);
for (unsigned i = 0; i < n; i ++)
::unpack ((*this)[i]);
}
};
/**************************************************************************************/
/************************** DEFINE A CONTINUATOR ***********************************/
/**************************************************************************************/

View file

@ -153,7 +153,7 @@ template< class TYPESELECT, class TYPEREPLACE > peoSyncIslandMig< TYPESELECT,TYP
template< class TYPESELECT, class TYPEREPLACE > void peoSyncIslandMig< TYPESELECT, TYPEREPLACE > :: pack()
{
::pack( coop_em.front()->getKey() );
em.front().pack();
::pack(em.front());
coop_em.pop();
em.pop();
}
@ -161,7 +161,7 @@ template< class TYPESELECT, class TYPEREPLACE > void peoSyncIslandMig< TYPESELEC
template< class TYPESELECT, class TYPEREPLACE > void peoSyncIslandMig< TYPESELECT, TYPEREPLACE > :: unpack()
{
TYPEREPLACE mig;
mig.unpack();
::unpack(mig);
imm.push( mig );
explicitPassive = true;
}