Program Listing for File SpeciesAbundancesHandler.h

Return to documentation for file (necsim/SpeciesAbundancesHandler.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 SPECIES_ABUNDANCES_H
#define SPECIES_ABUNDANCES_H

#include <vector>
#include <map>
#include <memory>
#include "RNGController.h"

using namespace std;
using namespace random_numbers;
namespace necsim
{
    class SpeciesAbundancesHandler
    {
    protected:

        shared_ptr<RNGController> random;
        unsigned long max_species_id;
        unsigned long metacommunity_size;
        unsigned long local_community_size;
        long double speciation_rate;
    public:

        SpeciesAbundancesHandler();

        virtual ~SpeciesAbundancesHandler() = default;;

        virtual void setup(shared_ptr<RNGController> random, const unsigned long &metacommunity_size,
                           const long double &speciation_rate, const unsigned long &local_community_size);

        virtual unsigned long getRandomSpeciesID() = 0;

        virtual void setAbundanceList(const shared_ptr<map<unsigned long, unsigned long>> &abundance_list_in);

        virtual void setAbundanceList(shared_ptr<vector<unsigned long>> abundance_list_in);
    };
}
#endif //SPECIES_ABUNDANCES_H