Program Listing for File DataPoint.h

Return to documentation for file (necsim/DataPoint.h)

//This file is part of necsim project which is released under MIT license.
//See file **LICENSE.txt** or visit https://opensource.org/licenses/MIT) for full license details.
#ifndef DATAPOINT_H
#define DATAPOINT_H

#include <iostream>
#include "Logging.h"
#include "Step.h"

using namespace std;
namespace necsim
{
    class DataPoint : virtual public MapLocation
    {

    private:
        // the next individual in the loop of those that have the same xypos
        unsigned long next_lineage;
        // points to the position in the coalescence tree
        unsigned long reference;
        // points to the position in the SpeciesList file.
        unsigned long list_position;
        // the reference number within the linked lineage_indices of wrapped lineages
        unsigned long nwrap;
        // the max-min number
        double min_max;
    public:

        DataPoint() : next_lineage(0), reference(0), list_position(0), nwrap(0), min_max(0)
        {

        }

        ~DataPoint() = default;

        void setup(unsigned long x, unsigned long y, long xwrap_in, long ywrap_in, unsigned long reference_in,
                   unsigned long list_position_in, double min_max_in);

        void setup(unsigned long reference_in, unsigned long list_position_in, double min_max_in);

        void setup(const DataPoint &datin);

        void setReference(unsigned long z);

        void setNext(unsigned long x);

        void setListPosition(unsigned long l);

        void setNwrap(unsigned long n);

        void setMinmax(double d);

        unsigned long getXpos() const;

        unsigned long getYpos() const;

        long getXwrap() const;

        long getYwrap() const;

        unsigned long getReference() const;

        unsigned long getNext() const;

        unsigned long getListpos() const;

        unsigned long getNwrap() const;

        double getMinmax() const;

        void decreaseNwrap();

        template<class T> void setEndpoint(const T &location)
        {
            x = location.x;
            y = location.y;
            xwrap = location.xwrap;
            ywrap = location.ywrap;
        }

        friend ostream &operator<<(ostream &os, const DataPoint &d);

        friend istream &operator>>(istream &is, DataPoint &d);

#ifdef DEBUG
        void logActive(const int &level);
#endif // DEBUG
    };
}
#endif // DATAPOINT_H