Public Member Functions | Private Member Functions | Private Attributes

chomp::multiwork::mwSubWorker< dim, coord > Class Template Reference

This class defines a worker for the multi-work subdivision framework. More...

#include <mwsubdiv.h>

Inheritance diagram for chomp::multiwork::mwSubWorker< dim, coord >:
chomp::multiwork::mwWorker chomp::multiwork::mwTask

List of all members.

Public Member Functions

 mwSubWorker (fcompute _compute)
 The constructor.

Private Member Functions

int Process (mwData &data)
 A function for processing the data by a worker.

Private Attributes

fcompute compute
 The address of a function to use for the computations.

Detailed Description

template<int dim, class coord>
class chomp::multiwork::mwSubWorker< dim, coord >

This class defines a worker for the multi-work subdivision framework.

Definition at line 108 of file mwsubdiv.h.


Constructor & Destructor Documentation

template<int dim, class coord >
chomp::multiwork::mwSubWorker< dim, coord >::mwSubWorker ( fcompute  _compute  )  [inline]

The constructor.

Definition at line 126 of file mwsubdiv.h.

                                                            :
        compute (_compute)
{
        return;
} /* mwSubWorker<dim,coord>::mwSubWorker */


Member Function Documentation

template<int dim, class coord >
int chomp::multiwork::mwSubWorker< dim, coord >::Process ( mwData data  )  [private, virtual]

A function for processing the data by a worker.

Reimplemented from chomp::multiwork::mwWorker.

Definition at line 135 of file mwsubdiv.h.

References chomp::multiwork::mwSubWorker< dim, coord >::compute, and chomp::homology::sout.

{
        // decode the number of the data pack to process
        int current = 0;
        data >> current;

        // say which data pack is being processed
        sout << "- " << current << ".\n";

        // decode the subdivision level
        int level = 0;
        data >> level;

        // decode the information on whether this is a full box or a probe
        bool full = false;
        data >> full;

        // the intervals
        double left [dim];
        double right [dim];
        for (int i = 0; i < dim; ++ i)
        {
                data >> left [i];
                if (full)
                        data >> right [i];
        }

        // the marker of the end of data
        int dataEndMarker = 0;
        data >> dataEndMarker;
        if (dataEndMarker != 13)
        {
                data. Reset ();
                sout << "! Incompatible data received. Rejecting it.\n";
                return mwReject;
        }

        // rune one set of computations
        int result = compute (left, full ? right : left, dim, level);

        // if the result is wrong then reject this piece of data
        if (result < 0)
        {
                sout << "! Data no. " << current <<
                        " produced a negative result. Rejecting it.\n";
                return mwReject;
        }

        // say what has been computed
        sout << "= " << current << " " << result << ".\n";

        // send back the data containing the result of the processing
        data. Reset ();
        data << current;
        data << result;
        return mwOk;
} /* mwSubWorker<dim,coord>::Process */


Member Data Documentation

template<int dim, class coord>
fcompute chomp::multiwork::mwSubWorker< dim, coord >::compute [private]

The address of a function to use for the computations.

Definition at line 119 of file mwsubdiv.h.

Referenced by chomp::multiwork::mwSubWorker< dim, coord >::Process().


The documentation for this class was generated from the following file: