Fuzzy libray for embedded targets developed by zerokol. Read more on: http://zerokol.com/product/51e93616e84c5571b7000018/2/en edit by Bruno Alfano - corrected deallocation of FuzzyOutput

Fuzzy library by Zerokol. Read more on: http://zerokol.com/product/51e93616e84c5571b7000018/2/en

edit by Bruno Alfano - corrected deallocation bug for FuzzyOutput

Committer:
astaff15
Date:
Wed Jun 24 15:08:13 2015 +0000
Revision:
2:460b409e26e8
Parent:
0:66cd67db4f1b
Corrected FuzzyOutput destructor bug

Who changed what in which revision?

UserRevisionLine numberNew contents of line
astaff15 0:66cd67db4f1b 1 /*
astaff15 0:66cd67db4f1b 2 * Robotic Research Group (RRG)
astaff15 0:66cd67db4f1b 3 * State University of Piaui (UESPI), Brazil - Piauí - Teresina
astaff15 0:66cd67db4f1b 4 *
astaff15 0:66cd67db4f1b 5 * FuzzyIO.cpp
astaff15 0:66cd67db4f1b 6 *
astaff15 0:66cd67db4f1b 7 * Author: Msc. Marvin Lemos <marvinlemos@gmail.com>
astaff15 0:66cd67db4f1b 8 * AJ Alves <aj.alves@zerokol.com>
astaff15 0:66cd67db4f1b 9 * Co authors: Douglas S. Kridi <douglaskridi@gmail.com>
astaff15 0:66cd67db4f1b 10 * Kannya Leal <kannyal@hotmail.com>
astaff15 0:66cd67db4f1b 11 */
astaff15 0:66cd67db4f1b 12 #include "FuzzyIO.h"
astaff15 0:66cd67db4f1b 13
astaff15 0:66cd67db4f1b 14 // CONSTRUTORES
astaff15 0:66cd67db4f1b 15 FuzzyIO::FuzzyIO(){
astaff15 0:66cd67db4f1b 16 }
astaff15 0:66cd67db4f1b 17
astaff15 0:66cd67db4f1b 18 FuzzyIO::FuzzyIO(int index){
astaff15 0:66cd67db4f1b 19 this->index = index;
astaff15 0:66cd67db4f1b 20 // Iniciando os ponteiros como nulo
astaff15 0:66cd67db4f1b 21 this->fuzzySets = NULL;
astaff15 0:66cd67db4f1b 22 this->fuzzySetsCursor = NULL;
astaff15 0:66cd67db4f1b 23 }
astaff15 0:66cd67db4f1b 24
astaff15 0:66cd67db4f1b 25 // DESTRUTOR
astaff15 0:66cd67db4f1b 26 FuzzyIO::~FuzzyIO(){
astaff15 0:66cd67db4f1b 27 this->cleanFuzzySets(this->fuzzySets);
astaff15 0:66cd67db4f1b 28 }
astaff15 0:66cd67db4f1b 29
astaff15 0:66cd67db4f1b 30 // MÉTODOS PÚBLICOS
astaff15 0:66cd67db4f1b 31 int FuzzyIO::getIndex(){
astaff15 0:66cd67db4f1b 32 return this->index;
astaff15 0:66cd67db4f1b 33 }
astaff15 0:66cd67db4f1b 34
astaff15 0:66cd67db4f1b 35 void FuzzyIO::setCrispInput(float crispInput){
astaff15 0:66cd67db4f1b 36 this->crispInput = crispInput;
astaff15 0:66cd67db4f1b 37 }
astaff15 0:66cd67db4f1b 38
astaff15 0:66cd67db4f1b 39 float FuzzyIO::getCrispInput(){
astaff15 0:66cd67db4f1b 40 return this->crispInput;
astaff15 0:66cd67db4f1b 41 }
astaff15 0:66cd67db4f1b 42
astaff15 0:66cd67db4f1b 43 bool FuzzyIO::addFuzzySet(FuzzySet* fuzzySet){
astaff15 0:66cd67db4f1b 44 fuzzySetArray *aux;
astaff15 0:66cd67db4f1b 45 // Alocando espaço na memória
astaff15 0:66cd67db4f1b 46 if((aux = (fuzzySetArray *) malloc(sizeof(fuzzySetArray))) == NULL){
astaff15 0:66cd67db4f1b 47 return false;
astaff15 0:66cd67db4f1b 48 }
astaff15 0:66cd67db4f1b 49 aux->fuzzySet = fuzzySet;
astaff15 0:66cd67db4f1b 50 aux->next = NULL;
astaff15 0:66cd67db4f1b 51
astaff15 0:66cd67db4f1b 52 if(this->fuzzySets == NULL){
astaff15 0:66cd67db4f1b 53 this->fuzzySets = aux;
astaff15 0:66cd67db4f1b 54 this->fuzzySetsCursor = aux;
astaff15 0:66cd67db4f1b 55 }else{
astaff15 0:66cd67db4f1b 56 this->fuzzySetsCursor->next = aux;
astaff15 0:66cd67db4f1b 57 this->fuzzySetsCursor = aux;
astaff15 0:66cd67db4f1b 58 }
astaff15 0:66cd67db4f1b 59 return true;
astaff15 0:66cd67db4f1b 60 }
astaff15 0:66cd67db4f1b 61
astaff15 0:66cd67db4f1b 62 void FuzzyIO::resetFuzzySets(){
astaff15 0:66cd67db4f1b 63 fuzzySetArray* fuzzySetsAux;
astaff15 0:66cd67db4f1b 64 fuzzySetsAux = this->fuzzySets;
astaff15 0:66cd67db4f1b 65 // Calculando as pertinências de totos os FuzzyInputs
astaff15 0:66cd67db4f1b 66 while(fuzzySetsAux != NULL){
astaff15 0:66cd67db4f1b 67 fuzzySetsAux->fuzzySet->reset();
astaff15 0:66cd67db4f1b 68 fuzzySetsAux = fuzzySetsAux->next;
astaff15 0:66cd67db4f1b 69 }
astaff15 0:66cd67db4f1b 70 }
astaff15 0:66cd67db4f1b 71
astaff15 0:66cd67db4f1b 72 // MÉTODOS PROTEGIDOS
astaff15 0:66cd67db4f1b 73 void FuzzyIO::cleanFuzzySets(fuzzySetArray *aux){
astaff15 0:66cd67db4f1b 74 if(aux != NULL){
astaff15 0:66cd67db4f1b 75 // Esvaziando a memória alocada
astaff15 0:66cd67db4f1b 76 this->cleanFuzzySets(aux->next);
astaff15 0:66cd67db4f1b 77 free(aux);
astaff15 0:66cd67db4f1b 78 }
astaff15 0:66cd67db4f1b 79 }