From 4a2a273b50b37611868e74da74739c1313e7ac5a Mon Sep 17 00:00:00 2001 From: "Joshua Moerman (joshua-desktop)" Date: Sat, 23 Apr 2011 22:09:06 +0200 Subject: [PATCH] more to headers, some cleanup --- Attractor.cpp | 3 +- AttractorKernel.hpp | 84 +++++++++++++++++++-------------------- Projector.cpp | 52 ------------------------ Projector.hpp | 64 +++++++++++++++++++++-------- projectors/Normalizer.cpp | 5 ++- 5 files changed, 95 insertions(+), 113 deletions(-) diff --git a/Attractor.cpp b/Attractor.cpp index 16be1b0..9dd8b8f 100644 --- a/Attractor.cpp +++ b/Attractor.cpp @@ -22,7 +22,8 @@ Attractor::Attractor(const std::string& filename) : kernel(0), projector(0) { projector = Projector::createProjector(system.getChild(system.getValue("Projector")), kernel->getDimension()); } -Attractor::Attractor(){ +Attractor::Attractor() : + kernel(0), projector(0) { stfu::node kernel_node; switch(rand()%3){ case 0: diff --git a/AttractorKernel.hpp b/AttractorKernel.hpp index 35d223c..5966cff 100644 --- a/AttractorKernel.hpp +++ b/AttractorKernel.hpp @@ -8,48 +8,6 @@ #include "stfu/stf.hpp" class AttractorKernel { -private: - -#pragma mark - -#pragma mark memory - void allocate() { - parameters = new double[numberOfParameters]; - vectorNew = new double[dimension]; - vectorOld = new double[dimension]; - } - - void dealloc() { - delete[] vectorOld; - vectorOld = NULL; - delete[] vectorNew; - vectorNew = NULL; - delete[] parameters; - parameters = NULL; - } - -protected: - double* parameters; - double* vectorNew; - double* vectorOld; - - unsigned int numberOfParameters; - unsigned int dimension; - - AttractorKernel(const unsigned int dimension, const unsigned int numberOfParameters) : - numberOfParameters(numberOfParameters), dimension(dimension) { - - try { - allocate(); - } catch(std::exception& e) { - LogError("Couldn't construct Attractorkernel: %s\n", e.what()); - dealloc(); - } - - std::fill_n(parameters, numberOfParameters, 0.0); - std::fill_n(vectorNew, dimension, 0.0); - std::fill_n(vectorOld, dimension, 0.0); - } - public: virtual ~AttractorKernel() { dealloc(); @@ -112,9 +70,49 @@ public: } #pragma mark - -#pragma mark factory function +#pragma mark factory functions static AttractorKernel* createAttractorKernel(stfu::node& attractorKernel); + static AttractorKernel* randomAttractorKernel(); + +protected: + double* parameters; + double* vectorNew; + double* vectorOld; + + unsigned int numberOfParameters; + unsigned int dimension; + + AttractorKernel(const unsigned int dimension, const unsigned int numberOfParameters) : + parameters(0), vectorNew(0), vectorOld(0), + numberOfParameters(numberOfParameters), dimension(dimension) { + + try { + allocate(); + } catch(std::exception& e) { + LogError("Couldn't construct Attractorkernel: %s\n", e.what()); + dealloc(); + } + std::fill_n(parameters, numberOfParameters, 0.0); + std::fill_n(vectorNew, dimension, 0.0); + std::fill_n(vectorOld, dimension, 0.0); + } + +private: + void allocate() { + parameters = new double[numberOfParameters]; + vectorNew = new double[dimension]; + vectorOld = new double[dimension]; + } + + void dealloc() { + delete[] vectorOld; + vectorOld = NULL; + delete[] vectorNew; + vectorNew = NULL; + delete[] parameters; + parameters = NULL; + } }; diff --git a/Projector.cpp b/Projector.cpp index aa61e8b..8d9c13e 100644 --- a/Projector.cpp +++ b/Projector.cpp @@ -1,62 +1,10 @@ #include "Logger.hpp" #include "Projector.hpp" -#include - -#include "Canvas.hpp" - -#pragma mark - -#pragma mark memory - -Projector::Projector(unsigned int inputDimension, unsigned int outputDimension) : canvas(0), projector(0), projectedPoint(0), inputDimension(inputDimension), outputDimension(outputDimension), ready(true) { - try { - allocate(); - } catch(std::exception& e) { - LogError("Couldn't construct Projector: %s\n", e.what()); - deallocate(); - } - std::fill_n(projectedPoint, outputDimension, 0.0); -} - -Projector::~Projector() { - deallocate(); -} - -void Projector::allocate() { - projectedPoint = new double[outputDimension]; -} - -void Projector::deallocate() { - delete[] projectedPoint; - projectedPoint = NULL; -} - -#pragma mark - -#pragma mark plot - -void Projector::plot(const double* point) { - project(point); - - if(ready) { - if(canvas != NULL) { - canvas->plot(projectedPoint); - } - - if(projector != NULL) { - projector->plot(projectedPoint); - } - } -} - -#pragma mark - -#pragma mark factory function - #include "projectors/Normalizer.hpp" Projector* Projector::createProjector(stfu::node& projector, unsigned int input_dimension) { - Projector* output = new Normalizer(input_dimension); - return output; } diff --git a/Projector.hpp b/Projector.hpp index 2777c0a..6add515 100644 --- a/Projector.hpp +++ b/Projector.hpp @@ -1,14 +1,49 @@ #ifndef PROJECTOR_HPP #define PROJECTOR_HPP -#include "stfu/stf.hpp" +#include "Logger.hpp" +#include -class Canvas; +#include "stfu/stf.hpp" +#include "Canvas.hpp" class Projector { -private: - void allocate(); - void deallocate(); +public: + // SHOULD NOT BE HERE + Canvas* canvas; + + Projector(unsigned int inputDimension, unsigned int outputDimension) : + canvas(0), projector(0), projectedPoint(0), + inputDimension(inputDimension), outputDimension(outputDimension), + ready(true) { + try { + allocate(); + } catch(std::exception& e) { + LogError("Couldn't construct Projector: %s\n", e.what()); + deallocate(); + } + std::fill_n(projectedPoint, outputDimension, 0.0); + } + + virtual ~Projector() { + deallocate(); + } + + void plot(const double* point) { + project(point); + + if(ready) { + if(canvas != NULL) { + canvas->plot(projectedPoint); + } + + if(projector != NULL) { + projector->plot(projectedPoint); + } + } + } + + static Projector* createProjector(stfu::node& projector, unsigned int input_dimension); protected: Projector* projector; @@ -22,18 +57,15 @@ protected: virtual void project(const double* point) = 0; -public: - // SHOULD NOT BE HERE - Canvas* canvas; - - Projector(unsigned int inputDimension, unsigned int outputDimension); - virtual ~Projector(); - - // delegates forward trough the chain, know wha i'm sayin'? - void plot(const double* point); +private: + void allocate() { + projectedPoint = new double[outputDimension]; + } - // factory function - static Projector* createProjector(stfu::node& projector, unsigned int input_dimension); + void deallocate() { + delete[] projectedPoint; + projectedPoint = NULL; + } }; #endif // PROJECTOR_HPP diff --git a/projectors/Normalizer.cpp b/projectors/Normalizer.cpp index 0d742bd..b2155e5 100644 --- a/projectors/Normalizer.cpp +++ b/projectors/Normalizer.cpp @@ -4,7 +4,10 @@ #pragma mark - #pragma mark memory -Normalizer::Normalizer(unsigned int dimension) : Projector(dimension, dimension), factor(1) { +Normalizer::Normalizer(unsigned int dimension) : + Projector(dimension, dimension), + range_min(0), range_max(0), offset(0), + factor(1) { ready = false; try {