Log In | Get Help   
Home My Page Projects Code Snippets Project Openings Mareframe
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files
[mareframe] View of /trunk/gadget/suitfuncptrvector.cc
[mareframe] / trunk / gadget / suitfuncptrvector.cc Repository:
ViewVC logotype

View of /trunk/gadget/suitfuncptrvector.cc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (download) (annotate)
Mon Feb 10 17:09:07 2014 UTC (10 years, 4 months ago) by agomez
File size: 4436 byte(s)
Initial version based on Gadget 2.2.00
#include "suitfuncptrvector.h"
#include "errorhandler.h"
#include "gadget.h"
#include "global.h"

SuitFuncPtrVector::~SuitFuncPtrVector() {
  if (v != 0) {
    delete[] v;
    v = 0;
  }
}

void SuitFuncPtrVector::resize(SuitFunc* value) {
  int i;
  if (v == 0) {
    v = new SuitFunc*[1];
  } else {
    SuitFunc** vnew = new SuitFunc*[size + 1];
    for (i = 0; i < size; i++)
      vnew[i] = v[i];
    delete[] v;
    v = vnew;
  }
  v[size] = value;
  size++;
}

void SuitFuncPtrVector::Delete(int pos, Keeper* const keeper) {
  int i;
  if (size > 1) {
    SuitFunc** vnew = new SuitFunc*[size - 1];
    for (i = 0; i < pos; i++)
      vnew[i] = v[i];
    for (i = pos; i < size - 1; i++)
      vnew[i] = v[i + 1];
    for (i = 0; i < v[pos]->numConstants(); i++)
      v[pos]->getConstants()[i].Delete(keeper);
    delete[] v;
    v = vnew;
    size--;
  } else {
    delete[] v;
    v = 0;
    size = 0;
  }
}

void SuitFuncPtrVector::readSuitFunction(CommentStream& infile,
  const char* suitname, const TimeClass* const TimeInfo, Keeper* const keeper) {

  SuitFunc* tempFunc = 0;

  if ((strcasecmp(suitname, "expsuitfunca") == 0) || (strcasecmp(suitname, "exponential") == 0)) {
    tempFunc = new ExpSuitFuncA();

  } else if ((strcasecmp(suitname, "constsuitfunc") == 0) || (strcasecmp(suitname, "constant") == 0)) {
    tempFunc = new ConstSuitFunc();

  } else if (strcasecmp(suitname, "straightline") == 0) {
    tempFunc = new StraightSuitFunc();

  } else if (strcasecmp(suitname, "straightlineunbounded") == 0) {
    tempFunc = new StraightUnboundedSuitFunc();

  } else if ((strcasecmp(suitname, "newexponentiall50") == 0) || (strcasecmp(suitname, "expsuitfuncl50") == 0) || (strcasecmp(suitname, "exponentiall50") == 0)){
    handle.logFileMessage(LOGWARN, "\nNote that this exponentiall50 has had a factor of 4 removed from the source code");

    tempFunc = new ExpSuitFuncL50();

  } else if ((strcasecmp(suitname, "andersensuitfunc") == 0) || (strcasecmp(suitname, "andersen") == 0)) {
    tempFunc = new AndersenSuitFunc();

  } else if (strcasecmp(suitname, "richards") == 0) {
    tempFunc = new RichardsSuitFunc();

  } else if (strcasecmp(suitname, "gamma") == 0) {
    tempFunc = new GammaSuitFunc();

  } else if (strcasecmp(suitname, "newinverse") == 0) {
    tempFunc = new InverseSuitFunc();

  } else if (strcasecmp(suitname, "andersenfleet") == 0) {
    tempFunc = new AndersenFleetSuitFunc();

    /*  } else if ((strcasecmp(suitname, "expsuitfuncl50") == 0) || (strcasecmp(suitname, "exponentiall50") == 0)) {
    handle.logFileMessage(LOGFAIL, "\nThe exponentiall50 suitability function is no longer supported\nUse the newexponentiall50 suitability function instead\nNote that this function has had a factor of 4 removed from the source code");
    */
  } else if (strcasecmp(suitname, "inverse") == 0) {
    handle.logFileMessage(LOGFAIL, "\nThe inverse suitability function is no longer supported\nUse the newinverse suitability function instead\nNote that this function has had a factor of 4 removed from the source code");

  } else if (strcasecmp(suitname, "improvedexpsuitfunc") == 0) {
    handle.logFileMessage(LOGFAIL, "\nThe improvedexpsuitfunc suitability function is no longer supported");

  } else if (strcasecmp(suitname, "improvedandextendedexpsuitfunc") == 0) {
    handle.logFileMessage(LOGFAIL, "\nThe improvedandextendedexpsuitfunc suitability function is no longer supported");

  } else if (strcasecmp(suitname, "extendedexpsuitfuncl50") == 0) {
    handle.logFileMessage(LOGFAIL, "\nThe extendedexpsuitfuncl50 suitability function is no longer supported");

  } else if (strcasecmp(suitname, "badexpsuitfuncl50") == 0) {
    handle.logFileMessage(LOGFAIL, "\nThe badexpsuitfuncl50 suitability function is no longer supported");

  } else if (strcasecmp(suitname, "surveyselection") == 0) {
    handle.logFileMessage(LOGFAIL, "\nThe surveyselection suitability function is no longer supported");

  } else if (strcasecmp(suitname, "cloglog") == 0) {
    handle.logFileMessage(LOGFAIL, "\nThe cloglog suitability function is no longer supported");

  } else if (strcasecmp(suitname, "combination") == 0) {
    handle.logFileMessage(LOGFAIL, "\nThe combination suitability function is no longer supported");

  } else
    handle.logFileMessage(LOGFAIL, "no valid suitability function found");

  tempFunc->readConstants(infile, TimeInfo, keeper);
  this->resize(tempFunc);
}

root@forge.cesga.es
ViewVC Help
Powered by ViewVC 1.0.0  

Powered By FusionForge