Program Listing for File TransformedSolution.h

Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/unit_tests/testEvolve/TransformedSolution.h)

#ifndef __TRANSFORMED_SOLUTION_H
#define __TRANSFORMED_SOLUTION_H

#include "RealEvolutionQuantity.h"
#include "../../Core/Functions.h"
#include <vector>
#include <list>

namespace Evolve {

    class TransformedSolution {
    private:
        std::vector< const std::list<double> *> __transformed_orbit;

//        std::vector< const std::list<double> *>  __transformed_deriv;

        std::vector< std::list<const Core::OneArgumentDiffFunction *> >
            __transforms;

        std::list<double> __change_ages;

     public:
        TransformedSolution() :
            __transformed_orbit(NUM_REAL_QUANTITIES, NULL),
//            __transformed_deriv(NUM_REAL_QUANTITIES)
            __transforms(AGE)
        {};

        TransformedSolution(
            const std::vector<const Core::OneArgumentDiffFunction *> &
                transforms,

            double start_age
        ) :
            __transformed_orbit(NUM_REAL_QUANTITIES, NULL),
//            __transformed_deriv(NUM_REAL_QUANTITIES)
            __transforms(AGE)
        {
            add_transformation(transforms, start_age);
        }

        void add_transformation(
            //The order is defined by RealEvolutionQuantity.
            const std::vector<const Core::OneArgumentDiffFunction *> &
                transforms,

            double change_age
        );

        const std::vector< const std::list<double> * > &operator()(
            const std::vector< const std::list<double> * > &solution
        );

        const std::vector< const std::list<double> * >
            &get_transformed_solution() const
            {return __transformed_orbit;}

/*        const std::list<double> *get_tabulated_var_deriv(
                EvolVarType var_type) const;*/

        ~TransformedSolution();
    };

} //End Evolve namespace.

#endif