Changeset 973 for cpp/frams/genetics/fB


Ignore:
Timestamp:
07/03/20 00:37:13 (4 years ago)
Author:
Maciej Komosinski
Message:

Increased SString and std::string compatibility: introduced length(), size(), and capacity(), and removed legacy methods that have std::string equivalents

Location:
cpp/frams/genetics/fB
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • cpp/frams/genetics/fB/fB_conv.cpp

    r954 r973  
    11// This file is a part of Framsticks SDK.  http://www.framsticks.com/
    2 // Copyright (C) 1999-2018  Maciej Komosinski and Szymon Ulatowski.
     2// Copyright (C) 1999-2020  Maciej Komosinski and Szymon Ulatowski.
    33// See LICENSE.txt for details.
    44
     
    8080                int endoffset = 0;
    8181                if (gene.indexOf("zz", 0) != -1) endoffset = 2;
    82                 if (gene.len() - endoffset < 3)
     82                if (gene.length() - endoffset < 3)
    8383                {
    8484                        fH_StickHandle *handle = new fH_StickHandle(dims, start, end);
     
    124124                if (gene.indexOf("zz", 0) != -1) endoffset = 2;
    125125                int nclassdefcount = 1;
    126                 while (z < gene.len() - endoffset)
     126                while (z < gene.length() - endoffset)
    127127                {
    128128                        if (processNextLetter(creature, handle, par, gene, propindex, z, ranges, nclassdefcount) == -1)
     
    185185                        }
    186186                        nextid++;
    187                 }
    188                 while (genotype[nextid] == '"');
     187                } while (genotype[nextid] == '"');
    189188                i = nextid;
    190189        }
  • cpp/frams/genetics/fB/fB_general.h

    r802 r973  
    11// This file is a part of Framsticks SDK.  http://www.framsticks.com/
    2 // Copyright (C) 1999-2018  Maciej Komosinski and Szymon Ulatowski.
     2// Copyright (C) 1999-2020  Maciej Komosinski and Szymon Ulatowski.
    33// See LICENSE.txt for details.
    44
     
    3535                do {
    3636                        count++;
    37                         if (start < genotype.len())
     37                        if (start < genotype.length())
    3838                                result = getNextGene(start, genotype, tmp, start);
    3939                        else
     
    5252                do {
    5353                        count++;
    54                         if (start < geno.len())
     54                        if (start < geno.length())
    5555                                getNextGene(start, geno, tmp, start);
    5656                        else
     
    8989                } while (quotecount % 2 != 0 && end != -1);
    9090
    91                 if (end == -1) end = genotype.len();
     91                if (end == -1) end = genotype.length();
    9292                else end += 2;
    9393                start -= 1;
     
    124124                } while (quotecount % 2 != 0 && end != -1);
    125125
    126                 if (end == -1) end = genotype.len();
     126                if (end == -1) end = genotype.length();
    127127                else end += 2;
    128128                start -= 1;
  • cpp/frams/genetics/fB/fB_oper.cpp

    r961 r973  
    4747                int endoffset = 0;
    4848                if (gene.indexOf("zz", 0) != -1) endoffset = 2;
    49                 if (gene.len() - endoffset < 3)
     49                if (gene.length() - endoffset < 3)
    5050                {
    5151                        return true; // genes with length < 3 are always sticks
     
    8383        }
    8484        // check if rest of characters are lowercase
    85         for (int i = genstart; i < genotype.len(); i++)
     85        for (int i = genstart; i < genotype.length(); i++)
    8686        {
    8787                if (!islower(genotype[i]))
     
    144144                fix = true;
    145145        }
    146         for (int i = pos; i < genotype.len(); i++)
     146        for (int i = pos; i < genotype.length(); i++)
    147147        {
    148148                // if character is not alphabetic - error
     
    208208        std::list<SString> res;
    209209        int i = 0;
    210         while (i < genotype.len())
     210        while (i < genotype.length())
    211211        {
    212212                // if character is not alphabetic - error
     
    252252                std::advance(it, rndid);
    253253                SString t = (*it);
    254                 if ((*it).len() == 1)
     254                if ((*it).length() == 1)
    255255                {
    256256                        if (rndUint(2) == 0)
     
    264264                                else (*it).directWrite()[0] = (*it)[0] + 1;
    265265                        }
    266                         chg = 1.0 / line.len();
     266                        chg = 1.0 / line.length();
    267267                }
    268268                else
     
    270270                        // first method needs to extract quotes
    271271                        SString def = (*it);
    272                         def = def.substr(1, def.len() - 2);
     272                        def = def.substr(1, def.length() - 2);
    273273                        Geno_fH::mutateNeuronProperties(def);
    274274                        SString res = "\"";
     
    276276                        res += "\"";
    277277                        (*it) = res;
    278                         chg = (double)def.len() / line.len();
     278                        chg = (double)def.length() / line.length();
    279279                }
    280280                line = detokenizeSequence(&tokenized);
     
    296296                        res += "\"";
    297297                        tokenized.insert(it, res);
    298                         chg = (double)classdef.len() / line.len();
     298                        chg = (double)classdef.length() / line.length();
    299299                        line = detokenizeSequence(&tokenized);
    300300                        break;
     
    304304        case FB_INSERTION:
    305305        {
    306                 chg = 1.0 / line.len();
     306                chg = 1.0 / line.length();
    307307                std::list<SString> tokenized = tokenizeSequence(line);
    308308                int rndid = rndUint(tokenized.size()); // select random insertion point
     
    317317        case FB_DELETION:
    318318        {
    319                 chg = 1.0 / line.len();
     319                chg = 1.0 / line.length();
    320320                std::list<SString> tokenized = tokenizeSequence(line);
    321321                std::list<SString>::iterator it = tokenized.begin();
     
    332332                SString gene = fB_GenoHelpers::getGene(rndgene, line, start, end);
    333333                if (gene.indexOf("zz", 0) == -1) gene += "zz";
    334                 chg = (float)gene.len() / line.len();
     334                chg = (float)gene.length() / line.length();
    335335                line = gene + line;
    336336                break;
     
    364364                //                      line.substr(cuts[1], cuts[2] - cuts[1]) + first + line.substr(cuts[3]);
    365365                line = detokenizeSequence(&res);
    366                 chg = (float)(cuts[3] - cuts[2] + cuts[1] - cuts[0]) / line.len();
     366                chg = (float)(cuts[3] - cuts[2] + cuts[1] - cuts[0]) / line.length();
    367367                break;
    368368        }
     
    412412                // add this gene to the beginning of the second parent genotype
    413413                child2 = gene + parent2;
    414                 chg2 = (float)parent2.len() / (float)child2.len();
     414                chg2 = (float)parent2.length() / (float)child2.length();
    415415                // do the same for second parent
    416416                choice = rndUint(fB_GenoHelpers::geneCount(parent2));
    417417                gene = fB_GenoHelpers::getGene(choice, parent2, start, end);
    418418                child1 = gene + parent1;
    419                 chg1 = (float)parent1.len() / (float)child1.len();
     419                chg1 = (float)parent1.length() / (float)child1.length();
    420420                break;
    421421        }
     
    523523        free(g1);
    524524        free(g2);
    525         if (child1.len() > 0 && child2.len() == 0)
     525        if (child1.length() > 0 && child2.length() == 0)
    526526        {
    527527                child1 = strdims + "\n" + child1;
     
    529529                g2 = strdup("");
    530530        }
    531         else if (child2.len() > 0 && child1.len() == 0)
     531        else if (child2.length() > 0 && child1.length() == 0)
    532532        {
    533533                child2 = strdims + "\n" + child2;
Note: See TracChangeset for help on using the changeset viewer.