Changeset 348


Ignore:
Timestamp:
04/09/15 23:51:28 (9 years ago)
Author:
Maciej Komosinski
Message:
  • explicit c_str() in SString instead of (const char*) cast
  • genetic converters and GenMan? are now thread-local which enables multi-threaded simulator separation
Location:
cpp
Files:
56 edited

Legend:

Unmodified
Added
Removed
  • cpp/common/threads.h

    r346 r348  
    9090};
    9191
    92 #else
     92#else //ifdef MULTITHREADED
    9393
    9494template<class T> class ThreadSingleton
     
    102102};
    103103
    104 #endif
     104template<class T> class ThreadSingletonPtr
     105{
     106T *object;
     107
     108  public:
     109
     110ThreadSingletonPtr():object(NULL) {}
     111T* get() {return object;}
     112T* setptr(T* o) {T* previous=object; object=o; return previous;}
     113};
     114
     115#endif //ifdef MULTITHREADED
    105116
    106117////////////////////////////////////
  • cpp/frams/_demos/f0_variants_test.cpp

    r286 r348  
    7979DefaultGenoConvManager gcm;
    8080gcm.addDefaultConverters();
    81 Geno::useConverters(gcm);
     81Geno::useConverters(&gcm);
    8282
     83Geno::Validators validators;
     84Geno::useValidators(&validators);
    8385ModelGenoValidator model_validator;
    84 Geno::addValidator(&model_validator); //This simple validator handles all cases where a converter for a particular format is available but there is no genetic operator. Converters may be less strict in detecting invalid genotypes but it is better than nothing
     86validators+=&model_validator; //This simple validator handles all cases where a converter for a particular format is available but there is no genetic operator. Converters may be less strict in detecting invalid genotypes but it is better than nothing
    8587
    8688SString gen(argc>1?argv[1]:"X[|G:1.23]");
    87 if (!strcmp(gen,"-"))
     89if (!strcmp(gen.c_str(),"-"))
    8890        {
    8991        gen=0;
     
    9294        }
    9395Geno g(gen);
    94 printf("\nSource genotype: '%s'\n",(const char*)g.getGene());
     96printf("\nSource genotype: '%s'\n",g.getGene().c_str());
    9597printf("                  ( format %c %s)\n",
    96        g.getFormat(), (const char*)g.getComment());
     98       g.getFormat(), g.getComment().c_str());
    9799
    98100Model m(g);//.getConverted('0'));
     
    112114save_as_f0(f0_no_skipping_defaults,m,false);
    113115
    114 printf("\n==== with defdata (skips default values) ======\n%s\n",(const char*)f0_skipping_defaults);
    115 printf("\n==== without defdata (saves all fields) ======\n%s\n",(const char*)f0_no_skipping_defaults);
     116printf("\n==== with defdata (skips default values) ======\n%s\n",f0_skipping_defaults.c_str());
     117printf("\n==== without defdata (saves all fields) ======\n%s\n",f0_no_skipping_defaults.c_str());
    116118
    117119return 0;
  • cpp/frams/_demos/full_props.cpp

    r286 r348  
    9797Geno f0_g;
    9898m.makeGeno(f0_g,NULL,reverse);//third arg is "handle_defaults" == whether f0 should omit default property values
    99 puts((const char*)f0_g.toString());
     99puts(f0_g.toString().c_str());
    100100
    101101return 0;
  • cpp/frams/_demos/geno_test.cpp

    r286 r348  
    2424        }
    2525SString gen(argv[1]);
    26 if (!strcmp(gen,"-"))
     26if (!strcmp(gen.c_str(),"-"))
    2727        {
    2828        gen=0;
  • cpp/frams/_demos/genoconv_test.cpp

    r286 r348  
    7777{
    7878SString dst;
    79 const char* src=in;
     79const char* src=in.c_str();
    8080const char* t;
    8181int insideneuron=0;
     
    112112{
    113113printf("Genotype:\n%s\nFormat: %c\nValid: %s\nComment: %s\n",
    114         (const char*)g.getGene(),g.getFormat(),g.isValid()?"yes":"no",(const char*)g.getComment());
     114        g.getGene().c_str(),g.getFormat(),g.isValid()?"yes":"no",g.getComment().c_str());
    115115}
    116116
     
    124124gcm.addConverter(new GenoConv_Test2());
    125125gcm.addConverter(new GenoConv_Test3());
    126 Geno::useConverters(gcm);
     126Geno::useConverters(&gcm);
    127127
     128Geno::Validators validators;
    128129ModelGenoValidator model_validator;
    129 Geno::addValidator(&model_validator);
     130validators+=&model_validator;
     131Geno::useValidators(&validators);
    130132
    131133const char* src=(argc>1)?argv[1]:"X";
  • cpp/frams/_demos/genomanipulation.cpp

    r291 r348  
    3434        const char* type=pi.type(i);
    3535        if (*type=='p') continue;
    36         printf("%2d. %8s = %-20s %-3s %-10s  %-10s\n",i,pi.id(i),(const char*)pi.get(i),pi.type(i),pi.name(i),pi.grname(pi.group(i)));
     36        printf("%2d. %8s = %-20s %-3s %-10s  %-10s\n",i,pi.id(i),pi.get(i).c_str(),pi.type(i),pi.name(i),pi.grname(pi.group(i)));
    3737        }
    3838}
     
    4747pi.getMinMax(i,minprop,maxprop,def);
    4848printf("      Change property #%d to random value from range [%g..%g]\n",i,minprop,maxprop);
    49 printf("      Current value of '%s' (%s) is '%s'\n",pi.id(i),pi.name(i),(const char*)pi.get(i));
     49printf("      Current value of '%s' (%s) is '%s'\n",pi.id(i),pi.name(i),pi.get(i).c_str());
    5050char t[100];
    5151sprintf(t,"%g",minprop+(rnd01)*(maxprop-minprop));
    5252printf("      Setting new value... [ using ParamInterface::set() ]\n");
    5353pi.set(i,t);
    54 printf("      The value is now '%s'\n",(const char*)pi.get(i));
     54printf("      The value is now '%s'\n",pi.get(i).c_str());
    5555}
    5656
     
    7979CHANGE_ONE_PROPERTY(p->extraProperties());
    8080p->getModel().close();
    81 printf("\nLet's see f0... (check out part #%d !)\n\n%s\n", p->refno, (const char*)p->getModel().getF0Geno().getGene());
     81printf("\nLet's see f0... (check out part #%d !)\n\n%s\n", p->refno, p->getModel().getF0Geno().getGene().c_str());
    8282}
    8383
     
    9191j->getModel().close();
    9292printf("The Part's position is changed, but everything else stays intact:\n\n%s\n",
    93        (const char*)j->getModel().getF0Geno().getGene());
     93       j->getModel().getF0Geno().getGene().c_str());
    9494}
    9595
     
    104104j->getModel().close();
    105105printf("Position of the second Part referenced by this joint (part #%d) is now changed:\n\n%s\n",
    106        j->part2->refno, (const char*)j->getModel().getF0Geno().getGene());
     106       j->part2->refno, j->getModel().getF0Geno().getGene().c_str());
    107107printf("If no delta fields are defined, they will be computed automatically.\n"
    108108       "You can always delete existing delta values by using Joint::resetDelta().\n"
     
    112112j->resetDelta();
    113113j->getModel().close();
    114 printf("As you can see, Joint's delta fields have altered:\n\n%s\n", (const char*)j->getModel().getF0Geno().getGene());
     114printf("As you can see, Joint's delta fields have altered:\n\n%s\n", j->getModel().getF0Geno().getGene().c_str());
    115115}
    116116
     
    123123j->getModel().close();
    124124printf("f0 is now:\n\n%s\n...so this is %s joint.\n",
    125        (const char*)j->getModel().getF0Geno().getGene(), option?"a delta":"an absolute");
     125       j->getModel().getF0Geno().getGene().c_str(), option?"a delta":"an absolute");
    126126
    127127}
     
    155155CHANGE_ONE_PROPERTY(j->extraProperties());
    156156j->getModel().close();
    157 printf("And after that we have this genotype:\n\n%s\n", (const char*)j->getModel().getF0Geno().getGene());
     157printf("And after that we have this genotype:\n\n%s\n", j->getModel().getF0Geno().getGene().c_str());
    158158}
    159159
     
    178178printf("\nThe most unusual thing is 'details' field (d).\n"
    179179       "It is something like separate object with its own set of properties.\n"
    180        "Currently the value of 'd' is '%s'.\n",(const char*)n->getDetails());
     180       "Currently the value of 'd' is '%s'.\n",n->getDetails().c_str());
    181181
    182182{
    183183NeuroClass* cl=n->getClass();
    184184if (!cl)
    185         printf("It should contain the class name but the meaning of '%s' is unknown\n",(const char*)n->getDetails());
     185        printf("It should contain the class name but the meaning of '%s' is unknown\n",n->getDetails().c_str());
    186186else
    187187{
    188188
    189189printf("'%s' is the class name (Neuro::getClassName() == '%s') and means '%s'.\n",
    190        (const char*)cl->getName(),(const char*)cl->getName(),(const char*)cl->getLongName());
     190       cl->getName().c_str(),cl->getName().c_str(),cl->getLongName().c_str());
    191191printf("Neuro::getClass() gives you information about basic characteristic\n"
    192192       "of the class, that can be analyzed automatically.\n");
     
    208208        p.update();
    209209        n->getModel().close();
    210         printf("After that, 'details' contains the new object: '%s'.\n",(const char*)n->getDetails());
     210        printf("After that, 'details' contains the new object: '%s'.\n",n->getDetails().c_str());
    211211        }
    212212else
     
    224224        NeuroClass* cl=n->getClass(i);
    225225        Param p=cl->getProperties();
    226         printf("%2d.%6s  %-20s  %2d\n",i,(const char*)cl->getName(),(const char*)cl->getLongName(),p.getPropCount());
     226        printf("%2d.%6s  %-20s  %2d\n",i,cl->getName().c_str(),cl->getLongName().c_str(),p.getPropCount());
    227227        }
    228228int cl=rand() % n->getClassCount();
    229 printf("\nLet's change the Neuro's class to '%s'...\n",(const char*)n->getClassName(cl));
     229printf("\nLet's change the Neuro's class to '%s'...\n",n->getClassName(cl).c_str());
    230230n->getModel().open();
    231231n->setClass(n->getClass(cl));
     
    242242if (n->getInputCount()>0)
    243243{
    244         printf("Info for input #0 = \"%s\"\n",(const char*)n->getInputInfo(0));
    245         printf("Info for input #0, field \"%s\" = \"%s\"\n", "abc", (const char*)n->getInputInfo(0,"abc"));
     244        printf("Info for input #0 = \"%s\"\n",n->getInputInfo(0).c_str());
     245        printf("Info for input #0, field \"%s\" = \"%s\"\n", "abc", n->getInputInfo(0,"abc").c_str());
    246246        n->setInputInfo(0,"test",44);
    247247        n->setInputInfo(0,"abc","yeah");
     
    250250n->getModel().close();
    251251printf("The final object description will be then: '%s'\nAnd the full f0 genotype:\n\n%s\n",
    252        (const char*)n->getDetails(), (const char*)n->getModel().getF0Geno().getGene());
     252       n->getDetails().c_str(), n->getModel().getF0Geno().getGene().c_str());
    253253
    254254
     
    257257void findingConverters()
    258258{
    259 GenoConverter *gc=Geno::getConverters().findConverters(0,'1');
     259GenoConverter *gc=Geno::getConverters()->findConverters(0,'1');
    260260if (gc) printf("found converter accepting f1: \"%s\"\n",gc->name);
    261261SListTempl<GenoConverter*> found;
    262 Geno::getConverters().findConverters(&found,-1,'0');
     262Geno::getConverters()->findConverters(&found,-1,'0');
    263263printf("found %d converter(s) producing f0\n",found.size());
    264264}
     
    274274
    275275SString gen(argc>1?argv[1]:"X[|G:1.23]");
    276 if (!strcmp(gen,"-"))
     276if (!strcmp(gen.c_str(),"-"))
    277277        {
    278278        gen=0;
     
    281281        }
    282282Geno g(gen);
    283 printf("\nSource genotype: '%s'\n",(const char*)g.getGene());
     283printf("\nSource genotype: '%s'\n",g.getGene().c_str());
    284284printf("                  ( format %c %s)\n",
    285        g.getFormat(), (const char*)g.getComment());
     285       g.getFormat(), g.getComment().c_str());
    286286
    287287Model m(g);//.getConverted('0'));
     
    292292        return 2;       
    293293        }
    294 printf("Converted to f0:\n%s\n",(const char*)m.getF0Geno().getGene());
     294printf("Converted to f0:\n%s\n",m.getF0Geno().getGene().c_str());
    295295
    296296printf("Model contains: %d part(s)\n"
     
    340340                NeuroItem *ni=n->getNeuroItem(j);
    341341                printf("        item #%d - '%s', conn=%d, weight=%g\n",
    342                        j,(const char*)ni->getDetails(),ni->conn_refno,ni->weight);
     342                       j,ni->getDetails().c_str(),ni->conn_refno,ni->weight);
    343343                }
    344344        }
  • cpp/frams/_demos/genooper_test.cpp

    r286 r348  
    99{
    1010        printf("Genotype: %s\nFormat: %c\nValid: %s\nComment: %s\n",
    11                 (const char*)g.getGene(), g.getFormat(), g.isValid() ? "yes" : "no", g.getComment().len() == 0 ? "(empty)" : (const char*)g.getComment());
     11                g.getGene().c_str(), g.getFormat(), g.isValid() ? "yes" : "no", g.getComment().len() == 0 ? "(empty)" : g.getComment().c_str());
    1212}
    1313
     
    4747        printGenAndTitle(gvalidated, "validated");
    4848
    49         printf("\nHTMLized: %s\n", (const char*)genetics.genman.HTMLize((const char*)gvalidated.getGene()));
     49        printf("\nHTMLized: %s\n", genetics.genman.HTMLize(gvalidated.getGene().c_str()).c_str());
    5050
    5151        return 0;
  • cpp/frams/_demos/geometry/apices_test.cpp

    r286 r348  
    4747        // Finishing result Model and printing its genotype.
    4848        resultModel.close();
    49         puts((const char*)resultModel.getF0Geno().toString());
     49        puts(resultModel.getF0Geno().toString().c_str());
    5050}
    5151
  • cpp/frams/_demos/geometry/geometrytestutils.cpp

    r318 r348  
    2525               
    2626                fprintf(stderr, "%d. (%6d chars) %s\n", count, genotype->genotype.len(),
    27                         (const char*)genotype->name);
     27                        genotype->name.c_str());
    2828        }
    2929       
    3030        if (loader.getStatus() == MiniGenotypeLoader::OnError)
    3131        {
    32                 fprintf(stderr, "Error: %s\n", (const char*)loader.getError());
     32                fprintf(stderr, "Error: %s\n", loader.getError().c_str());
    3333                return 2;
    3434        }
     
    5858                count++;
    5959               
    60                 if ((genoIndex == count) || (strcmp((const char*)genotype->name, genoName) == 0))
     60                if ((genoIndex == count) || (strcmp(genotype->name.c_str(), genoName) == 0))
    6161                {
    6262                        Model model(genotype->genotype);
     
    7575        if (loader.getStatus() == MiniGenotypeLoader::OnError)
    7676        {
    77                 fprintf(stderr, "Error: %s\n", (const char*)loader.getError());
     77                fprintf(stderr, "Error: %s\n", loader.getError().c_str());
    7878                return 2;
    7979        }
     
    156156                "GENO_ID - either genotype name or index (1-based)\n"
    157157                "SHAPE - 1=ellipsoid, 2=cuboid, 3=cylinder, others or none=random\n",
    158                 (const char*)header);
     158                header.c_str());
    159159        return 1;
    160160}
     
    220220                "DENSITY - minimal number of samples per unit\n"
    221221                "SHAPE - 1=ellipsoid, 2=cuboid, 3=cylinder, others or none=random\n",
    222                 (const char*)header);
     222                header.c_str());
    223223        return 1;
    224224}
  • cpp/frams/_demos/geometry/info_test.cpp

    r286 r348  
    7272        // Finishing result Model and printing its genotype.
    7373        resultModel.close();
    74         puts((const char*)resultModel.getF0Geno().toString());
     74        puts(resultModel.getF0Geno().toString().c_str());
    7575       
    7676        // Printing calculated values.
  • cpp/frams/_demos/geometry/surface_test.cpp

    r286 r348  
    4747        // Finishing result Model and printing its genotype.
    4848        resultModel.close();
    49         puts((const char*)resultModel.getF0Geno().toString());
     49        puts(resultModel.getF0Geno().toString().c_str());
    5050}
    5151
  • cpp/frams/_demos/geometry/volume_test.cpp

    r286 r348  
    3939        // Finishing result Model and printing its genotype.
    4040        resultModel.close();
    41         puts((const char*)resultModel.getF0Geno().toString());
     41        puts(resultModel.getF0Geno().toString().c_str());
    4242}
    4343
  • cpp/frams/_demos/loader_test.cpp

    r299 r348  
    4545                else
    4646                        {
    47                         if (strcmp((const char*)loaded->name,selected))
     47                        if (strcmp(loaded->name.c_str(),selected))
    4848                                continue;
    4949                        }
    50                 puts((const char*)loaded->genotype);
     50                puts(loaded->genotype.c_str());
    5151                return 0;
    5252                }
    53         fprintf(stderr,"%d. %s\t(%d characters)\n",count,(const char*)loaded->name,loaded->genotype.len());
     53        fprintf(stderr,"%d. %s\t(%d characters)\n",count,loaded->name.c_str(),loaded->genotype.len());
    5454        }
    5555// the loop repeats until loaded==NULL, which could be beacause of error
    5656if (loader.getStatus()==MiniGenotypeLoader::OnError)
    57         fprintf(stderr,"Error: %s",(const char*)loader.getError());
     57        fprintf(stderr,"Error: %s",loader.getError().c_str());
    5858// (otherwise it was the end of the file)
    5959if (selected)
  • cpp/frams/_demos/loader_test_param.cpp

    r330 r348  
    8484                {
    8585                case MultiParamLoader::OnComment:
    86                         fprintf(stderr, "comment: '%s'\n", (const char*)loader.getComment());
     86                        fprintf(stderr, "comment: '%s'\n", loader.getComment().c_str());
    8787                        break;
    8888
     
    9292                        // In fact, this method is used not just for truly unknown objects but also for
    9393                        // dynamic objects that cannot be added using MultiParamLoader.addObject().
    94                         fprintf(stderr, "unknown object found: '%s' (will be skipped)\n", (const char*)loader.getObjectName());
     94                        fprintf(stderr, "unknown object found: '%s' (will be skipped)\n", loader.getObjectName().c_str());
    9595                        break;
    9696
     
    9898                        fprintf(stderr, "loaded:\n");
    9999                        for (int i = 0; i < param.getPropCount(); i++)
    100                                 fprintf(stderr, "%s=%s\n", param.id(i), (const char*)param.getText(i));
    101                         fprintf(stderr, "type of 'x1' is: %s\n", (const char*)data.x1.typeDescription());
    102                         fprintf(stderr, "type of 'x2' is: %s\n", (const char*)data.x2.typeDescription());
     100                                fprintf(stderr, "%s=%s\n", param.id(i), param.getText(i).c_str());
     101                        fprintf(stderr, "type of 'x1' is: %s\n", data.x1.typeDescription().c_str());
     102                        fprintf(stderr, "type of 'x2' is: %s\n", data.x2.typeDescription().c_str());
    103103                        fprintf(stderr, "-----\n\n");
    104104                        param.save(&virt_stdout);
     
    112112
    113113                case MultiParamLoader::OnError:
    114                         fprintf(stderr, "Error: %s", (const char*)loader.getError());
     114                        fprintf(stderr, "Error: %s", loader.getError().c_str());
    115115                }
    116116        }
  • cpp/frams/_demos/multiline_f0_test.cpp

    r286 r348  
    1919
    2020SString gen(argc>1?argv[1]:"X[|G:1.23]");
    21 if (!strcmp(gen,"-"))
     21if (!strcmp(gen.c_str(),"-"))
    2222        {
    2323        gen=0;
     
    2626        }
    2727Geno g(gen);
    28 printf("\nSource genotype: '%s'\n",(const char*)g.getGene());
     28printf("\nSource genotype: '%s'\n",g.getGene().c_str());
    2929printf("                  ( format %c %s)\n",
    30        g.getFormat(), (const char*)g.getComment());
     30       g.getFormat(), g.getComment().c_str());
    3131
    3232Model m(g);//.getConverted('0'));
     
    3737        return 2;       
    3838        }
    39 printf("Converted to f0:\n%s\n",(const char*)m.getF0Geno().getGene());
     39printf("Converted to f0:\n%s\n",m.getF0Geno().getGene().c_str());
    4040
    4141printf("\nusing Param::save() to create the \"expanded\" form of the f0 genotype...\n(MultiParamLoader should be able to load this)");
     
    8787        }
    8888
    89 printf("\n============================\n%s\n",(const char*)f.getString());
     89printf("\n============================\n%s\n",f.getString().c_str());
    9090
    9191return 0;
  • cpp/frams/_demos/neuro_layout_test.cpp

    r317 r348  
    9494        }
    9595SString gen(argv[1]);
    96 if (!strcmp(gen,"-"))
     96if (!strcmp(gen.c_str(),"-"))
    9797        {
    9898        gen=0;
     
    116116        {
    117117        int *xywh=nn_layout.GetXYWH(i);
    118         printf("#%-3d %s\t%d,%d\t%dx%d\n",i,(const char*)m.getNeuro(i)->getClassName(),
     118        printf("#%-3d %s\t%d,%d\t%dx%d\n",i,m.getNeuro(i)->getClassName().c_str(),
    119119               xywh[0],xywh[1],xywh[2],xywh[3]);
    120120        }
     
    130130        {
    131131        int *xywh=nn_layout.GetXYWH(i);
    132         SString label=SString::sprintf("%d:%s",i,(const char*)m.getNeuro(i)->getClassName());
    133         screen.put(xywh[0],xywh[1],(const char*)label);
     132        SString label=SString::sprintf("%d:%s",i,m.getNeuro(i)->getClassName().c_str());
     133        screen.put(xywh[0],xywh[1],label.c_str());
    134134        }
    135135screen.print();
  • cpp/frams/_demos/neuro_test.cpp

    r288 r348  
    6969        }
    7070SString gen(argv[1]);
    71 if (!strcmp(gen,"-"))
     71if (!strcmp(gen.c_str(),"-"))
    7272        {
    7373        gen=0;
     
    9898                        {
    9999                        if (no_impl) no_impl_names+=',';
    100                         no_impl_names+=SString::sprintf("#%d.%s",i,(const char*)n->getClassName());
     100                        no_impl_names+=SString::sprintf("#%d.%s",i,n->getClassName().c_str());
    101101                        no_impl++;
    102102                        }
     
    104104                        {
    105105                        if (init_err) init_err_names+=',';
    106                         init_err_names+=SString::sprintf("#%d.%s",i,(const char*)n->getClassName());
     106                        init_err_names+=SString::sprintf("#%d.%s",i,n->getClassName().c_str());
    107107                        init_err++;
    108108                        }
    109109                }
    110110        printf("\n");
    111         if (no_impl) printf("%d x missing implementation (%s)\n",no_impl,(const char*)no_impl_names);
    112         if (init_err) printf("%d x failed initialization (%s)\n",init_err,(const char*)init_err_names);
     111        if (no_impl) printf("%d x missing implementation (%s)\n",no_impl,no_impl_names.c_str());
     112        if (init_err) printf("%d x failed initialization (%s)\n",init_err,init_err_names.c_str());
    113113        }
    114114int steps=1;
     
    119119        {
    120120        n=m.getNeuro(i);
    121         printf("\t#%d.%s",i,(const char*)n->getClassName());
     121        printf("\t#%d.%s",i,n->getClassName().c_str());
    122122        }
    123123printf("\n");
  • cpp/frams/_demos/part_shapes.cpp

    r319 r348  
    5252
    5353        m.close();
    54         puts((const char*)m.getF0Geno().toString());
     54        puts(m.getF0Geno().toString().c_str());
    5555        // the genotype can be fed directly to the genotype viewer, like this:
    5656        // part_shapes | theater -g -
  • cpp/frams/_demos/printconvmap.cpp

    r286 r348  
    5656SString g2=gen2;
    5757stripstring(g2);
    58 const char* g=g1;
     58const char* g=g1.c_str();
    5959y=0;
    6060MultiRange *mr;
    6161MultiRange emptyrange;
    6262printN(' ',GEN1MAX);
    63 printf("   %s\n",(const char*)g2);
     63printf("   %s\n",g2.c_str());
    6464int begin=map.getBegin();
    6565int end=map.getEnd();
     
    8383        if ((y2-y) > GEN1MAX) y2=y+GEN1MAX;
    8484        if (y2>(y+len1)) y2=y+len1;
    85         printmapping(g+y,y2-y,*mr,g2,g2.len());
     85        printmapping(g+y,y2-y,*mr,g2.c_str(),g2.len());
    8686        y=y2;
    8787        }
  • cpp/frams/_demos/serial_test.cpp

    r319 r348  
    6060                                {
    6161                                printIndent(indent+3);
    62                                 printf("key \"%s\"\n",(const char*)it->key);
     62                                printf("key \"%s\"\n",it->key.c_str());
    6363                                print((ExtValue*)it->value,indent+6,&next_trace);
    6464                                }
     
    6767                }
    6868        }
    69 puts((const char*)v->getString());
     69puts(v->getString().c_str());
    7070}
    7171
  • cpp/frams/_demos/shapeconvert.cpp

    r286 r348  
    8787
    8888        Geno f0_g = newmodel.getF0Geno();
    89         puts((const char*)f0_g.toString());
     89        puts(f0_g.toString().c_str());
    9090
    9191        return 0;
  • cpp/frams/canvas/neurodiagram.cpp

    r286 r348  
    271271        if (size.y > 4 * textHeight())
    272272        {
    273                 const char* t = label;
     273                const char* t = label.c_str();
    274274                setColor(ColorDefs::neurosymbol);
    275275                drawAlignedText(size.x / 2, size.y - textHeight(), 0, t);
     
    445445NeuroProbe::NeuroProbe(NeuroSymbol* ns)
    446446:DCanvasWindow(DCanvasWindow::Title + DCanvasWindow::Border + DCanvasWindow::Close + DCanvasWindow::Size,
    447   (const char*)ns->getLabel(), &neurochart, &neurochart)
     447  ns->getLabel().c_str(), &neurochart, &neurochart)
    448448{
    449449        holdismine = 0;
  • cpp/frams/config/version.h

    r286 r348  
    33// See LICENSE.txt for details.
    44
    5 #define MAIN_REL_ID "4.0"
     5#define MAIN_REL_ID "4.2rc1"
  • cpp/frams/errmgr/stderrors.cpp

    r286 r348  
    2929        {
    3030        SString msg2=SString(msg)+": \"%s\" (adjusted to \"%s\")";
    31         FMprintf(msgobj,msgfun,FMLV_WARN,(const char*)msg2,(const char*)in,(const char*)corrected);
     31        FMprintf(msgobj,msgfun,FMLV_WARN,msg2.c_str(),in.c_str(),corrected.c_str());
    3232        }
    3333return corrected;
  • cpp/frams/genetics/f1/conv_f1.cpp

    r319 r348  
    102102SString GenoConv_f1::convert(SString &i,MultiMap *map)
    103103{
    104 const char* g=(const char*)i;
     104const char* g=i.c_str();
    105105Builder builder(g,map?1:0);
    106106builder.model.open();
     
    403403                                        lastNeuroClassParam();
    404404                                        //special handling: muscle properties (can be overwritten by subsequent property assignments)
    405                                         if (!strcmp(cls->getName(),"|"))
     405                                        if (!strcmp(cls->getName().c_str(),"|"))
    406406                                                {
    407407                                                neuro_cls_param->setDoubleById("p",lastjoint_muscle_power);
    408408                                                neuro_cls_param->setDoubleById("r",props.bendrange);
    409409                                                }
    410                                         else if (!strcmp(cls->getName(),"@"))
     410                                        else if (!strcmp(cls->getName().c_str(),"@"))
    411411                                                {
    412412                                                neuro_cls_param->setDoubleById("p",lastjoint_muscle_power);
     
    485485        SString name(begin,colon-begin);
    486486        SString value(colon+1,end-(colon+1));
    487         addClassParam(name,value);
    488         }
    489 }
     487        addClassParam(name.c_str(),value.c_str());
     488        }
     489}
  • cpp/frams/genetics/f4/f4_general.cpp

    r287 r348  
    714714        // transform geno from string to nodes
    715715        f4rootnode = new f4_node();
    716         res = f4_processrec((const char*)genome, (unsigned)0, f4rootnode);
     716        res = f4_processrec(genome.c_str(), (unsigned)0, f4rootnode);
    717717        if ((res < 0) || (1 != f4rootnode->childCount()))
    718718        {
     
    11971197                buf = (char*)realloc(buf, len + 1);
    11981198        }
    1199         strcpy(buf, (const char*)out);
     1199        strcpy(buf, out.c_str());
    12001200}
    12011201
  • cpp/frams/genetics/f9/oper_f9.cpp

    r319 r348  
    4242                if (strchr(turtle_commands_f9, gene[i])) validated += gene[i];  //validated contains only turtle_commands_f9
    4343        free(gene);
    44         gene = strdup(validated); //reallocate
     44        gene = strdup(validated.c_str()); //reallocate
    4545        return GENOPER_OK;
    4646}
     
    8484                }
    8585                free(gene);
    86                 gene = strdup(newgeno); //reallocate
     86                gene = strdup(newgeno.c_str()); //reallocate
    8787        }
    8888
  • cpp/frams/genetics/fF/conv_fF.cpp

    r319 r348  
    3939{
    4040        fF_growth_params gp;
    41         if (!gp.load(in)) //invalid input genotype?
     41        if (!gp.load(in.c_str())) //invalid input genotype?
    4242                return ""; //so we return an invalid f0 genotype
    4343
  • cpp/frams/genetics/fF/fF_genotype.h

    r286 r348  
    4343                SString tmp;
    4444                param.save2(tmp, NULL/*object containing default values for comparison*/, false/*add CR*/, false/*force field names*/);
    45                 return string((const char*)tmp);
     45                return string(tmp.c_str());
    4646        }
    4747};
  • cpp/frams/genetics/fT/oper_fTest.cpp

    r319 r348  
    7777                if (strchr("ATGC", gene[i])) validated += gene[i];  //validated contains only ATGC
    7878        free(gene);
    79         gene = strdup(validated); //reallocate
     79        gene = strdup(validated.c_str()); //reallocate
    8080        return GENOPER_OK;
    8181}
  • cpp/frams/genetics/genman.cpp

    r344 r348  
    199199{
    200200        SString ggs=g.getGene();
    201         const char *gg = ggs;
     201        const char *gg = ggs.c_str();
    202202        GenoOperators *gf = getOper_f(g.getFormat());
    203203        int check1;
     
    237237        if (gf == NULL)
    238238                return Geno(SString::empty(), -1, SString::empty(), SString::sprintf("GENOPER_NOOPER: Validate(): don't know how to handle genetic format %c", format));
    239         char *g2 = strdup(geny.getGene()); //copy for validation
     239        char *g2 = strdup(geny.getGene().c_str()); //copy for validation
    240240        int res = gf->validate(g2);
    241241        SString sg2 = g2;
     
    263263        while (!ok)
    264264        {
    265                 char *gn = strdup(gv.getGene()); //copy for mutation
     265                char *gn = strdup(gv.getGene().c_str()); //copy for mutation
    266266                chg = 0;
    267267                if (gf->mutate(gn, chg, method) == GENOPER_OK)
     
    284284                if (!ok && (count - pcount > 100))
    285285                {
    286                         FMprintf("GenMan", "Mutate", 2, "Tried 100x and failed: %s", (const char*)g.getGene());
     286                        FMprintf("GenMan", "Mutate", 2, "Tried 100x and failed: %s", g.getGene().c_str());
    287287                        return Geno("", -1, "", "GENOPER_OPFAIL: Mutate() tried 100x and failed");
    288288                }
    289289        }
    290290        mutchg += chg;
    291         if (history) saveLink((const char*)g.getGene(), "", (const char*)gv.getGene(), chg);
     291        if (history) saveLink(g.getGene().c_str(), "", gv.getGene().c_str(), chg);
    292292        SString mutinfo;
    293         if (extmutinfo == 0) mutinfo = SString::sprintf("%.2f%% mutation of '%s'", 100 * chg, (const char*)g.getName()); else
    294                 if (extmutinfo == 1) mutinfo = SString::sprintf("%.2f%% mutation(%d) of '%s'", 100 * chg, method, (const char*)g.getName()); else
    295                         mutinfo = SString::sprintf("%.2f%% mutation(%s) of '%s'", 100 * chg, gf->mutation_method_names ? gf->mutation_method_names[method] : "unspecified method name", (const char*)g.getName());
     293        if (extmutinfo == 0) mutinfo = SString::sprintf("%.2f%% mutation of '%s'", 100 * chg, g.getName().c_str()); else
     294                if (extmutinfo == 1) mutinfo = SString::sprintf("%.2f%% mutation(%d) of '%s'", 100 * chg, method, g.getName().c_str()); else
     295                        mutinfo = SString::sprintf("%.2f%% mutation(%s) of '%s'", 100 * chg, gf->mutation_method_names ? gf->mutation_method_names[method] : "unspecified method name", g.getName().c_str());
    296296        gv.setComment(mutinfo);
    297297        return gv;
     
    324324        {
    325325                float chg1, chg2;
    326                 char *g1n = strdup(g1.getGene()); //copy for crossover
    327                 char *g2n = strdup(g2.getGene()); //copy for crossover
     326                char *g1n = strdup(g1.getGene().c_str()); //copy for crossover
     327                char *g2n = strdup(g2.getGene().c_str()); //copy for crossover
    328328                chg1 = chg2 = 0;
    329329                if (gf->crossOver(g1n, g2n, chg1, chg2) == GENOPER_OK)
     
    351351                if (!ok && (count - pcount > 100))
    352352                {
    353                         FMprintf("GenMan", "CrossOver", 2, "Tried 100x and failed: %s and %s", (const char*)g1.getGene(), (const char*)g2.getGene());
     353                        FMprintf("GenMan", "CrossOver", 2, "Tried 100x and failed: %s and %s", g1.getGene().c_str(), g2.getGene().c_str());
    354354                        return Geno("", -1, "", "GENOPER_OPFAIL: CrossOver() tried 100x and failed");
    355355                }
     
    357357        // result in g1v
    358358        xochg += chg;
    359         if (history) saveLink((const char*)g1.getGene(), (const char*)g2.getGene(), (const char*)g1v.getGene(), chg);
     359        if (history) saveLink(g1.getGene().c_str(), g2.getGene().c_str(), g1v.getGene().c_str(), chg);
    360360        SString xoinfo = SString::sprintf("Crossing over of '%s' (%.2f%%) and '%s' (%.2f%%)",
    361                 (const char*)g1.getName(), 100 * chg, (const char*)g2.getName(), 100 * (1 - chg));
     361                g1.getName().c_str(), 100 * chg, g2.getName().c_str(), 100 * (1 - chg));
    362362        g1v.setComment(xoinfo);
    363363        return g1v;
     
    369369        if (format != g2.getFormat()) return GENOPER_NOOPER;
    370370        GenoOperators *gf = getOper_f(format);
    371         if (!gf) return GENOPER_NOOPER; else return gf->similarity(g1.getGene(), g2.getGene());
     371        if (!gf) return GENOPER_NOOPER; else return gf->similarity(g1.getGene().c_str(), g2.getGene().c_str());
    372372}
    373373
     
    378378        GenoOperators *gf = getOper_f(G.getFormat());
    379379        if (!gf) return GENSTYLE_CS(0, 0); //black & valid
    380         else return gf->style(G.getGene(), pos);
     380        else return gf->style(G.getGene().c_str(), pos);
    381381}
    382382
     
    391391                if (posmapped == -1) styletab[pos] = GENSTYLE_COMMENT;
    392392                else if (!gf) styletab[pos] = GENSTYLE_CS(0, 0); //black & valid
    393                 else styletab[pos] = gf->style(geny, posmapped);
     393                else styletab[pos] = gf->style(geny.c_str(), posmapped);
    394394        }
    395395}
     
    448448void GenMan::p_htmlize(ExtValue *args, ExtValue *ret)
    449449{
    450         ret->setString(HTMLize(args->getString()));
     450        ret->setString(HTMLize(args->getString().c_str()));
    451451}
    452452
    453453void GenMan::p_htmlizeshort(ExtValue *args, ExtValue *ret)
    454454{
    455         ret->setString(HTMLizeShort(args->getString()));
     455        ret->setString(HTMLizeShort(args->getString().c_str()));
    456456}
    457457
  • cpp/frams/genetics/geno.cpp

    r346 r348  
    77#include <frams/model/model.h>
    88
    9 GenoConvManager *Geno::converters = NULL;
    10 
    11 THREAD_LOCAL_DEF(Geno::Validators, geno_validators);
    12 
    13 Geno::Validators& Geno::getValidators() {return tlsGetRef(geno_validators);}
     9THREAD_LOCAL_DEF_PTR(Geno::Validators, geno_validators);
     10THREAD_LOCAL_DEF_PTR(GenoConvManager, geno_converters);
     11
     12Geno::Validators* Geno::getValidators() {return tlsGetPtr(geno_validators);}
     13GenoConvManager* Geno::getConverters() {return tlsGetPtr(geno_converters);}
     14
     15Geno::Validators* Geno::useValidators(Validators* val)
     16{return tlsSetPtr(geno_validators,val);}
     17GenoConvManager* Geno::useConverters(GenoConvManager* gcm)
     18{return tlsSetPtr(geno_converters,gcm);}
    1419
    1520void Geno::init(const SString& genstring, char genformat, const SString& genname, const SString& comment)
     
    7883        if (!name.len()) name = genname;
    7984        if (!txt.len()) txt = comment;
    80         multiline = (strchr((const char*)gen, '\n') != 0);
     85        multiline = (strchr(gen.c_str(), '\n') != 0);
    8186        // mapoutshift...?
    8287}
     
    237242        if (isvalid >= 0) return;
    238243        if (gen.len() == 0) { isvalid = 0; return; }
    239         Validators& vals=getValidators();
    240         FOREACH(GenoValidator*, v, vals)
     244        Validators* vals=getValidators();
     245        if (vals!=NULL)
     246                {
     247        FOREACH(GenoValidator*, v, (*vals))
    241248                if ((isvalid = v->testGenoValidity(*this)) >= 0)
    242249                        return;
     250                }
    243251        isvalid = 0;
    244252        FMprintf("Geno", "validate", FMLV_WARN, "Wrong configuration? No genotype validators defined for genetic format f%c.", format);
     
    255263        if (otherformat == getFormat()) { if (converter_missing) *converter_missing = false; return *this; }
    256264#ifndef NO_GENOCONVMANAGER
     265        GenoConvManager *converters=getConverters();
    257266        if (converters)
    258267        {
  • cpp/frams/genetics/geno.h

    r346 r348  
    118118
    119119        // managing global Geno-related objects (used for validation and conversion)
    120         static Validators& getValidators();
    121         static void addValidator(GenoValidator* gv,int at_position=9999) { getValidators().insert(at_position,gv); }
    122         static void removeValidator(GenoValidator* gv) { getValidators() -= gv; }
    123         static void useConverters(GenoConvManager& gcm) { converters = &gcm; }
    124         static GenoConvManager &getConverters() { return *converters; }
    125 protected:
    126         static GenoConvManager *converters;
     120        static Validators* useValidators(Validators* val);
     121        static Validators* getValidators();
     122
     123        static GenoConvManager* useConverters(GenoConvManager* gcm);
     124        static GenoConvManager* getConverters();
    127125};
    128126
  • cpp/frams/genetics/oper_fx.cpp

    r286 r348  
    192192        for (int i = 0; i<Neuro::getClassCount(); i++)
    193193        {
    194                 const char *n = Neuro::getClass(i)->name;
     194                const char *n = Neuro::getClass(i)->name.c_str();
    195195                int l = (int)strlen(n);
    196196                if (len >= l && l>Len && (strncmp(s, n, l) == 0)) { I = Neuro::getClass(i); Len = l; }
  • cpp/frams/genetics/preconfigured.h

    r346 r348  
    1818DefaultGenoConvManager gcm;
    1919GenMan genman;
     20Geno::Validators validators;
    2021ModelGenoValidator model_validator; //validation through conversion
    2122
     
    2324        {
    2425        gcm.addDefaultConverters(); //without converters, the application would only handle "format 0" genotypes
    25         Geno::useConverters(gcm);
     26        Geno::useConverters(&gcm);
    2627
    27         Geno::addValidator(&genman); //primary validation: use the extended validity checking (through dedicated genetic operators)
    28         Geno::addValidator(&model_validator); //secondary validation: this simple validator handles all cases when there is no dedicated genetic validation operator, but a converter for a particular format is available. Converters may be less strict in detecting invalid genotypes but using them and checking whether they produced a valid f0 genotype is also some way to tell whether the initial genotype was valid. Otherwise, without dedicated genetic validation operator, we would have no validity check at all.
    29         }
    30 };
    31 
    32 /** Initialization procedure for applications adding their own validators */
    33 class PreconfiguredGenetics_NoValidators
    34 {
    35   public:
    36 DefaultGenoConvManager gcm;
    37 
    38 PreconfiguredGenetics_NoValidators()
    39         {
    40         gcm.addDefaultConverters(); //without converters, the application would only handle "format 0" genotypes
    41         Geno::useConverters(gcm);
     28        Geno::useValidators(&validators);
     29        validators+=&genman; //primary validation: use the extended validity checking (through dedicated genetic operators)
     30        validators+=&model_validator; //secondary validation: this simple validator handles all cases when there is no dedicated genetic validation operator, but a converter for a particular format is available. Converters may be less strict in detecting invalid genotypes but using them and checking whether they produced a valid f0 genotype is also some way to tell whether the initial genotype was valid. Otherwise, without dedicated genetic validation operator, we would have no validity check at all.
    4231        }
    4332};
    4433
    4534#endif
    46 
  • cpp/frams/model/autoname.cpp

    r343 r348  
    3838        unsigned int s1 = 0, s2 = 0, s3 = 0;
    3939        SString g = model.getGeno().getGene();
    40         const char *x = g;
     40        const char *x = g.c_str();
    4141        for (; *x; x++) { s1 += *x; s2 = s2**x + *x; s3 = (s3^*x) + *x; }
    4242        char* t = buf;
  • cpp/frams/model/model.cpp

    r319 r348  
    331331                FMprintf("Model","build",FMLV_ERROR,
    332332                         geno.getName().len()?"illegal f0 code at line %d (%s)":"illegal f0 code at line %d",
    333                          lnum,(const char*)geno.getName());
     333                         lnum,geno.getName().c_str());
    334334                f0errorposition=lastpos;
    335335                if (convmap) delete convmap;
     
    473473                }
    474474        }
    475 g=Geno(gen,'0');
     475g=Geno(gen.c_str(),'0');
    476476}
    477477
     
    559559int Model::singleStepBuild(const SString &line,const MultiRange* srcrange)
    560560{
    561 int pos=0; const char*t=(const char*)line;
     561int pos=0; const char*t=line.c_str();
    562562for (;*t;t++,pos++)
    563563        if (!strchr(" \r\t",*t)) break;
     
    943943                                FMprintf("Model","internalCheck",FMLV_ERROR,
    944944                                         "delta joint cycle detected at joint#%d (%s)",
    945                                          i,(const char*)geno.getName());
     945                                         i,geno.getName().c_str());
    946946                                }
    947947                        j->resetDeltaMarkers();
     
    979979                        ret=0;
    980980                        FMprintf("Model","internalCheck",FMLV_ERROR,"delta too big in joint #%d (%s)",
    981                                  i,(const char*)geno.getName());
     981                                 i,geno.getName().c_str());
    982982                        }
    983983                        else if (j->d()<getMinJoint().d.x)
     
    985985                        ret=0;
    986986                        FMprintf("Model","internalCheck",FMLV_ERROR,"delta too small in joint #%d (%s)",
    987                                  i,(const char*)geno.getName());
     987                                 i,geno.getName().c_str());
    988988                        }
    989989                                }
     
    993993                {
    994994                FMprintf("Model","internalCheck",FMLV_ERROR,"illegal part references in joint #%d (%s)",
    995                          i,(const char*)geno.getName());
     995                         i,geno.getName().c_str());
    996996                ret=0;
    997997                }
     
    10721072                        {
    10731073                        FMprintf("Model","internalCheck",FMLV_ERROR,"not all parts connected (eg.#0-#%d) (%s)",
    1074                                  i,(const char*)geno.getName());
     1074                                 i,geno.getName().c_str());
    10751075                        ret=0;
    10761076                        break;
     
    10851085                {
    10861086                FMprintf("Model","internalCheck",FMLV_ERROR,"illegal self connection, joint #%d (%s)",
    1087                          i,(const char*)geno.getName());
     1087                         i,geno.getName().c_str());
    10881088                ret=0;
    10891089                break;
     
    10961096                        {
    10971097                        FMprintf("Model","internalCheck",FMLV_ERROR,"illegal duplicate joints #%d and #%d (%s)",
    1098                                  i,k,(const char*)geno.getName());
     1098                                 i,k,geno.getName().c_str());
    10991099                        ret=0;
    11001100                        break;
  • cpp/frams/neuro/impl/neuroimpl-fuzzy-f0.cpp

    r286 r348  
    2323      break;
    2424    else
    25       numbers[have++]=atof(t);
     25      numbers[have++]=atof(t.c_str());
    2626
    2727  //check if number of read numbers (separated with semicolon) is equal to declared
     
    122122        t += str.charAt(pos++);
    123123      pos++;
    124       rules[j][k]=atol(t); //convert cut out string into number
     124      rules[j][k]=atol(t.c_str()); //convert cut out string into number
    125125      //fuzzy sets - odd index table - are counted from 0,
    126126      //so if 5 fuzzy sets declared, values acceptable are 0,1,2,3,4
  • cpp/frams/neuro/impl/neuroimpl-fuzzy.cpp

    r286 r348  
    3535  rulesDef = new int[2*rulesNr];    //for each rule remembers number of inputs and outputs
    3636  //check correctness of string and fill in the rulesDef
    37   if (FuzzyF0String::countInputsOutputs(fuzzyRulesString, rulesDef, rulesNr) == 0)
     37  if (FuzzyF0String::countInputsOutputs(fuzzyRulesString.c_str(), rulesDef, rulesNr) == 0)
    3838  {
    3939    defuzzParam = new double[rulesNr]; // parameters used in defuzyfication process
  • cpp/frams/neuro/neurofactory.cpp

    r286 r348  
    9999if (removed.len())
    100100        FMprintf("NeuroFactory","removeUninmplemented",FMLV_INFO,
    101          "Removed Neuro classes: %s",(const char*)removed);
     101         "Removed Neuro classes: %s",removed.c_str());
    102102}
    103103
  • cpp/frams/neuro/neuroimpl.cpp

    r288 r348  
    7373        if (!ni) { errorcount++;
    7474                FMprintf("NeuroNetImpl","create",FMLV_WARN,"neuron #%d (%s) implementation not available",
    75                          i,(const char*)n->getClassName());
     75                         i,n->getClassName().c_str());
    7676                continue; } // implementation not available?!
    7777        ni->owner=this;
     
    8888                { ni->status=NeuroImpl::InitError; errorcount++;
    8989                FMprintf("NeuroNetImpl","create",FMLV_WARN,"neuron #%d (%s) initialization failed",
    90                          i,(const char*)n->getClassName());
     90                         i,n->getClassName().c_str());
    9191                continue; }
    9292        ni->status=NeuroImpl::InitOk;
  • cpp/frams/neuro/neurolibparam.cpp

    r286 r348  
    5151        t+=n;
    5252        }
    53 return t;
     53return t.c_str();
    5454}
    5555
     
    5959t=Neuro::getClass(i)->getLongName();
    6060t+=" ("; t+=Neuro::getClassName(i); t+=")";
    61 return t;
     61return t.c_str();
    6262}
    6363
     
    6666static SString t;
    6767t=Neuro::getClass(i)->getSummary();
    68 return t;
     68return t.c_str();
    6969}
    7070
  • cpp/frams/param/multiparamload.cpp

    r333 r348  
    107107        else if (status==BeforeUnknown)
    108108                {
    109                 FMprintf("MultiParamLoader","go",FMLV_WARN,"Skipping object '%s'",(const char*)lastunknown);
     109                FMprintf("MultiParamLoader","go",FMLV_WARN,"Skipping object '%s'",lastunknown.c_str());
    110110                loadObjectNow(&emptyparam,false);
    111111                continue;
     
    126126                if (buf.startsWith("#include"))
    127127                        {
    128                         const char* t=strchr((const char*)buf,'\"'),*t2=0;
     128                        const char* t=strchr(buf.c_str(),'\"'),*t2=0;
    129129                        if (t)
    130130                                t2=strchr(t+1,'\"');
     
    137137                                {
    138138                                const char* thisfilename=file->VgetPath();
    139                                 FMprintf("MultiParamLoader","go",FMLV_WARN,"invalid \"%s\"%s%s",(const char*)buf,
     139                                FMprintf("MultiParamLoader","go",FMLV_WARN,"invalid \"%s\"%s%s",buf.c_str(),
    140140                                         (thisfilename?" in ":""),(thisfilename?thisfilename:""));
    141141                                }
     
    157157                FOREACH(ExtObject*,o,objects)
    158158                        {
    159                         if (!strcmp(o->interfaceName(),lastunknown)) {lastobject=*o; break;}
     159                        if (!strcmp(o->interfaceName(),lastunknown.c_str())) {lastobject=*o; break;}
    160160                        }
    161161                        if (!lastobject.isEmpty())
     
    202202        newfilename=filename;
    203203
    204 if (alreadyIncluded(newfilename))
     204if (alreadyIncluded(newfilename.c_str()))
    205205        {
    206206        FMprintf("MultiParamLoader","include",FMLV_WARN,"circular reference ignored (\"%s\")",
    207                     (const char*)filename);
     207                    filename.c_str());
    208208        return;
    209209        }
    210210
    211 VirtFILE *f=Vfopen(newfilename,FOPEN_READ_BINARY);
     211VirtFILE *f=Vfopen(newfilename.c_str(),FOPEN_READ_BINARY);
    212212if (!f)
    213213        {
    214         FMprintf("MultiParamLoader","include",FMLV_WARN,"\"%s\" not found",(const char*)newfilename);
     214        FMprintf("MultiParamLoader","include",FMLV_WARN,"\"%s\" not found",newfilename.c_str());
    215215        }
    216216else
  • cpp/frams/param/mutableparam.cpp

    r286 r348  
    3333        if (ignoreprefix)
    3434                {
    35       const char *noprefix=(const char*)groupname(i);
     35      const char *noprefix=groupname(i).c_str();
    3636      if ((int)strlen(noprefix) < skipprefix) continue;
    3737                noprefix+=skipprefix;
    38                 if (!strcmp(noprefix,(const char*)name)) return i;
     38                if (!strcmp(noprefix,name.c_str())) return i;
    3939                }
    4040                else
     
    183183void MutableParam::p_addprop(ExtValue *args,ExtValue *ret)
    184184{
    185 int i=addProperty(0,args[2].getString(),args[1].getString(),args[0].getString());
     185int i=addProperty(0,args[2].getString().c_str(),args[1].getString().c_str(),args[0].getString().c_str());
    186186ret->setInt(i);
    187187}
     
    284284        {
    285285        SString *n=(SString*)store(i);
    286         int prop=p.findId((const char*)*n);
     286        int prop=p.findId(n->c_str());
    287287        if (prop<0)
    288                 prop=p.addProperty(0,(const char*)*n,"x",0,0,0,0,-1);
     288                prop=p.addProperty(0,n->c_str(),"x",0,0,0,0,-1);
    289289        p.setExtValue(prop,*(ExtValue*)store(i+1));
    290290        }
  • cpp/frams/param/mutableparam.h

    r286 r348  
    3636int getGroupCount() {return groups.size();}
    3737int getPropCount() {return entries.size()+staticprops;}
    38 const char *grname(int i) {return (i>=groups.size()) ? 0 : (const char*)groupname(i);}
     38const char *grname(int i) {return (i>=groups.size()) ? 0 : groupname(i).c_str();}
    3939int grmember(int g,int a);
    4040
  • cpp/frams/param/param.cpp

    r343 r348  
    301301                ws = get(i);
    302302        quoteTilde(ws);
    303         w = ws;
     303        w = ws.c_str();
    304304        if (ws.len() > 50) cr = 1;
    305305        else for (t = w; *t; t++) if ((*t == 10) || (*t == 13)) { cr = 1; break; }
     
    372372                        { // string - special case
    373373                                SString str = getString(i);
    374                                 if (strContainsOneOf(str, ", \\\n\r\t\""))
     374                                if (strContainsOneOf(str.c_str(), ", \\\n\r\t\""))
    375375                                {
    376376                                        t += "\"";
     
    403403        {
    404404                if (linenum) (*linenum)++;
    405                 const char* t = (const char*)buf;
     405                const char* t = buf.c_str();
    406406                p0 = t; while ((*p0 == ' ') || (*p0 == '\t')) p0++;
    407407                if (!*p0) break;
     
    419419                                        czytdotyldy(f, s);
    420420                                        int lfcount = 1;
    421                                         const char* tmp = s;
     421                                        const char* tmp = s.c_str();
    422422                                        while (tmp)
    423423                                                if ((tmp = strchr(tmp, '\n')))
     
    430430                                        if (linenum && (flags(i)&PARAM_LINECOMMENT))
    431431                                                s = SString::sprintf("@file %s\n@line %d\n", f->VgetPath(), *linenum + 1) + s;
    432                                         set(i, (const char*)s);
     432                                        set(i, s.c_str());
    433433                                        if (linenum)
    434434                                                (*linenum) += lfcount;
     
    445445                {
    446446                        SString name(p0, p_len);
    447                         FMprintf("ParamInterface", "load", FMLV_WARN, "Unknown property '%s' while reading object '%s' (ignored)", (const char*)name, getName());
     447                        FMprintf("ParamInterface", "load", FMLV_WARN, "Unknown property '%s' while reading object '%s' (ignored)", name.c_str(), getName());
    448448                }
    449449
     
    454454                        if (linenum)
    455455                        {
    456                                 const char* tmp = s;
     456                                const char* tmp = s.c_str();
    457457                                int lfcount = 1;
    458458                                while (tmp)
     
    562562                        if (v.type == TObj)
    563563                        {
    564                                 FMprintf("ParamInterface", "set", FMLV_WARN, "Getting integer value from object reference (%s)", (const char*)v.getString());
     564                                FMprintf("ParamInterface", "set", FMLV_WARN, "Getting integer value from object reference (%s)", v.getString().c_str());
    565565                                return 0;
    566566                        }
    567567                        else
    568                                 return setInt(i, (const char*)v.getString());
     568                                return setInt(i, v.getString().c_str());
    569569                }
    570570        case 'f':
     
    574574                        if (v.type == TObj)
    575575                        {
    576                                 FMprintf("ParamInterface", "set", FMLV_WARN, "Getting floating point value from object reference (%s)", (const char*)v.getString());
     576                                FMprintf("ParamInterface", "set", FMLV_WARN, "Getting floating point value from object reference (%s)", v.getString().c_str());
    577577                                return 0;
    578578                        }
    579579                        else
    580                                 return setDouble(i, (const char*)v.getString());
     580                                return setDouble(i, v.getString().c_str());
    581581                }
    582582        case 's': { SString t = v.getString(); return setString(i, t); }
     
    990990static const char *getline(const SString &s, int &poz, int &len)
    991991{
    992         const char *beg = (const char*)s + poz;
    993         if (poz >= s.len()) { poz = s.len(); len = 0; return (const char*)s + s.len(); }
     992        const char *beg = s.c_str() + poz;
     993        if (poz >= s.len()) { poz = s.len(); len = 0; return s.c_str() + s.len(); }
    994994        const char *lf = strchr(beg, '\n');
    995         if (!lf) { lf = (const char*)s + s.len() - 1; poz = s.len(); }
    996         else { poz = (int)(lf - (const char*)s) + 1; if (poz > s.len()) poz = s.len(); }
     995        if (!lf) { lf = s.c_str() + s.len() - 1; poz = s.len(); }
     996        else { poz = (int)(lf - s.c_str()) + 1; if (poz > s.len()) poz = s.len(); }
    997997        while (lf >= beg) if ((*lf == '\n') || (*lf == '\r')) lf--; else break;
    998998        len = (int)(lf - beg) + 1;
     
    10141014        SString tmpvalue;
    10151015        if (poz >= s.len()) return fields_loaded;
    1016         t = (const char*)s + poz;
     1016        t = s.c_str() + poz;
    10171017
    10181018        lin = getline(s, poz, len); // all fields must be encoded in a single line
     
    10601060                        {
    10611061                                SString name(t, (int)(equals_sign - t));
    1062                                 FMprintf("Param", "load2", FMLV_WARN, "Unknown property '%s' while reading object '%s' (ignored)", (const char*)name, getName());
     1062                                FMprintf("Param", "load2", FMLV_WARN, "Unknown property '%s' while reading object '%s' (ignored)", name.c_str(), getName());
    10631063                        }
    10641064                        t = equals_sign + 1; // t=value
     
    10811081                                tmpvalue.copyFrom(quote + 1, (int)(quote2 - quote) - 1);
    10821082                                sstringUnquote(tmpvalue);
    1083                                 value = tmpvalue;
     1083                                value = tmpvalue.c_str();
    10841084                                valstop = quote2;
    10851085                        }
  • cpp/frams/param/param.h

    r333 r348  
    274274                        SString actual = get(i);
    275275                        FMprintf("Param", "set", FMLV_WARN, "Setting '%s.%s = %s' exceeded allowed range (too %s). Adjusted to %s.",
    276                                 getName(), id(i), (const char*)svaluetoset, (setflags&PSET_HITMAX) ? "big" : "small", (const char*)actual);
     276                                getName(), id(i), svaluetoset.c_str(), (setflags&PSET_HITMAX) ? "big" : "small", actual.c_str());
    277277                }
    278278        }
  • cpp/frams/param/paramobj.cpp

    r326 r348  
    5858                t->name = maybedup(dupentries, "create new object");
    5959                SString tmp = SString::sprintf("p o%s()", pi->getName());
    60                 t->type = maybedup(dupentries, (const char*)tmp);
     60                t->type = maybedup(dupentries, tmp.c_str());
    6161                t->help = maybedup(dupentries, pi->help(i));
    6262                t->flags = 0;
  • cpp/frams/util/extvalue.cpp

    r337 r348  
    269269                        if (tmp.len() > 30) tmp = tmp.substr(0, 30) + "...";
    270270                        if (type == TString) tmp = SString("\"") + tmp + SString("\"");
    271                         FMprintf("ExtValue", "getObjectTarget", FMLV_WARN, "%s object expected, %s found", classname, (const char*)tmp);
     271                        FMprintf("ExtValue", "getObjectTarget", FMLV_WARN, "%s object expected, %s found", classname, tmp.c_str());
    272272                }
    273273                return NULL;
     
    329329static ExtValue::CompareResult compareString(const SString &a, const SString &b)
    330330{
    331         const char* s1 = (const char*)a;
    332         const char* s2 = (const char*)b;
     331        const char* s1 = a.c_str();
     332        const char* s2 = b.c_str();
    333333        return longsign(strcmp(s1, s2));
    334334}
     
    415415                        if (context->v1 && context->v2)
    416416                                msg += SString::sprintf(": %s %s %s",
    417                                 (const char*)context->v1->typeAndValue(),
     417                                context->v1->typeAndValue().c_str(),
    418418                                cmp_op_names[op - CmpFIRST],
    419                                 (const char*)context->v2->typeAndValue());
    420                 }
    421                 FMprintf("ExtValue", "interpretCompare", FMLV_ERROR, "%s", (const char*)msg);
     419                                context->v2->typeAndValue().c_str());
     420                }
     421                FMprintf("ExtValue", "interpretCompare", FMLV_ERROR, "%s", msg.c_str());
    422422                ret = -1;
    423423        }
     
    448448                {
    449449                case TDouble:
    450                         FMprintf("ExtValue", "add", FMLV_WARN, "Adding %s to %s", (const char*)src.typeAndValue(), (const char*)typeAndValue());
     450                        FMprintf("ExtValue", "add", FMLV_WARN, "Adding %s to %s", src.typeAndValue().c_str(), typeAndValue().c_str());
    451451                        setDouble(double(getInt()) + src.getDouble());
    452452                        return;
     
    487487        default:;
    488488        }
    489         FMprintf("ExtValue", "add", FMLV_ERROR, "Can't add %s to %s", (const char*)src.typeAndValue(), (const char*)typeAndValue());
     489        FMprintf("ExtValue", "add", FMLV_ERROR, "Can't add %s to %s", src.typeAndValue().c_str(), typeAndValue().c_str());
    490490}
    491491
     
    502502                        return;
    503503                case TDouble:
    504                         FMprintf("ExtValue", "subtract", FMLV_WARN, "Subtracting %s from %s", (const char*)src.typeAndValue(), (const char*)typeAndValue());
     504                        FMprintf("ExtValue", "subtract", FMLV_WARN, "Subtracting %s from %s", src.typeAndValue().c_str(), typeAndValue().c_str());
    505505                        setDouble(double(getInt()) - src.getDouble());
    506506                        return;
     
    520520        default:;
    521521        }
    522         FMprintf("ExtValue", "subtract", FMLV_ERROR, "Can't subtract %s from %s", (const char*)src.typeAndValue(), (const char*)typeAndValue());
     522        FMprintf("ExtValue", "subtract", FMLV_ERROR, "Can't subtract %s from %s", src.typeAndValue().c_str(), typeAndValue().c_str());
    523523}
    524524
     
    535535                        return;
    536536                case TDouble:
    537                         FMprintf("ExtValue", "multiply", FMLV_WARN, "Multiplying %s by %s", (const char*)typeAndValue(), (const char*)src.typeAndValue());
     537                        FMprintf("ExtValue", "multiply", FMLV_WARN, "Multiplying %s by %s", typeAndValue().c_str(), src.typeAndValue().c_str());
    538538                        setDouble(double(getInt())*src.getDouble());
    539539                        return;
     
    591591        default:;
    592592        }
    593         FMprintf("ExtValue", "multiply", FMLV_WARN, "Can't multiply %s by %s", (const char*)typeAndValue(), (const char*)src.typeAndValue());
     593        FMprintf("ExtValue", "multiply", FMLV_WARN, "Can't multiply %s by %s", typeAndValue().c_str(), src.typeAndValue().c_str());
    594594}
    595595
     
    621621        if (a == 0.0)
    622622        {
    623                 FMprintf("ExtValue", "divide", FMLV_CRITICAL, "Division by zero: %s/0.0", (const char*)getString());
     623                FMprintf("ExtValue", "divide", FMLV_CRITICAL, "Division by zero: %s/0.0", getString().c_str());
    624624                setInvalid();
    625625        }
     
    630630                if (!finite(tmp))
    631631                {
    632                         FMprintf("ExtValue", "divide", FMLV_CRITICAL, "Overflow %s/%g", (const char*)getString(), a); setInvalid();
     632                        FMprintf("ExtValue", "divide", FMLV_CRITICAL, "Overflow %s/%g", getString().c_str(), a); setInvalid();
    633633                }
    634634                else
     
    652652                        return;
    653653                case TDouble:
    654                         FMprintf("ExtValue", "divide", FMLV_WARN, "Dividing %s by %s", (const char*)typeAndValue(), (const char*)src.typeAndValue());
     654                        FMprintf("ExtValue", "divide", FMLV_WARN, "Dividing %s by %s", typeAndValue().c_str(), src.typeAndValue().c_str());
    655655                        divDouble(src.ddata());
    656656                        return;
     
    674674        default:;
    675675        }
    676         FMprintf("ExtValue", "divide", FMLV_ERROR, "Can't divide %s by %s", (const char*)typeAndValue(), (const char*)src.typeAndValue());
     676        FMprintf("ExtValue", "divide", FMLV_ERROR, "Can't divide %s by %s", typeAndValue().c_str(), src.typeAndValue().c_str());
    677677}
    678678
     
    687687        //            ^-cur     ^-next
    688688        //            ^^^^^^^^^^___sub
    689         const char* begin = (const char*)fmt, *end = begin + fmt.len(), *curr = begin;
     689        const char* begin = fmt.c_str(), *end = begin + fmt.len(), *curr = begin;
    690690        int type = 0;
    691691
     
    733733                switch (type)
    734734                {
    735                 case 'd': a = args.getNext(); ret += SString::sprintf((const char*)sub, a ? a->getInt() : 0); break;
    736                 case 'f': a = args.getNext(); ret += SString::sprintf((const char*)sub, a ? a->getDouble() : 0); break;
    737                 case 's': {a = args.getNext(); SString tmp; if (a) tmp = a->getString(); ret += SString::sprintf((const char*)sub, (const char*)tmp); } break;
     735                case 'd': a = args.getNext(); ret += SString::sprintf(sub.c_str(), a ? a->getInt() : 0); break;
     736                case 'f': a = args.getNext(); ret += SString::sprintf(sub.c_str(), a ? a->getDouble() : 0); break;
     737                case 's': {a = args.getNext(); SString tmp; if (a) tmp = a->getString(); ret += SString::sprintf(sub.c_str(), tmp.c_str()); } break;
    738738                case 't': case 'T':
    739739                {
     
    779779
    780780        case TObj: case TUnknown: case TInvalid:
    781                 FMprintf("ExtValue", "modulo", FMLV_WARN, "Can't apply modulo to %s", (const char*)typeDescription());
     781                FMprintf("ExtValue", "modulo", FMLV_WARN, "Can't apply modulo to %s", typeDescription().c_str());
    782782
    783783        default:;
     
    835835        case TInt: return idata();
    836836        case TDouble: return (int)ddata();
    837         case TString: return getInt((const char*)sdata());
     837        case TString: return getInt(sdata().c_str());
    838838        case TObj:
    839                 FMprintf("ExtValue", "getInt", FMLV_WARN, "Getting integer value from object reference (%s)", (const char*)getString());
     839                FMprintf("ExtValue", "getInt", FMLV_WARN, "Getting integer value from object reference (%s)", getString().c_str());
    840840                return (paInt)(intptr_t)odata().param;
    841841        default:;
     
    850850        case TDouble: return ddata();
    851851        case TInt: return (double)idata();
    852         case TString: return getDouble((const char*)sdata());
     852        case TString: return getDouble(sdata().c_str());
    853853        case TObj:
    854                 FMprintf("ExtValue", "getDouble", FMLV_WARN, "Getting floating point value from object reference (%s)", (const char*)getString());
     854                FMprintf("ExtValue", "getDouble", FMLV_WARN, "Getting floating point value from object reference (%s)", getString().c_str());
    855855                return (double)(intptr_t)odata().param;
    856856        default:;
     
    10951095                ExtValue tmp;
    10961096                ret = tmp.deserialize(ret);
    1097                 ParamInterface *cls = findDeserializableClass(clsname);
     1097                ParamInterface *cls = findDeserializableClass(clsname.c_str());
    10981098                if (cls && (tmp.getType() != TUnknown) && (tmp.getType() != TInvalid))
    10991099                {
     
    11341134                }
    11351135                setEmpty();
    1136                 FMprintf("ExtValue", "deserialize", FMLV_WARN, "object of class \"%s\" could not be deserialized", (const char*)clsname);
     1136                FMprintf("ExtValue", "deserialize", FMLV_WARN, "object of class \"%s\" could not be deserialized", clsname.c_str());
    11371137                return ret;
    11381138        }
  • cpp/frams/util/hashtable.cpp

    r286 r348  
    161161        printf(" %d:",n);
    162162        for (;e;e=e->next)
    163                 printf(" (%x)%s=%p",e->hash,(const char*)e->key,e->value);
     163                printf(" (%x)%s=%p",e->hash,e->key.c_str(),e->value);
    164164        printf("\n");
    165165        }
  • cpp/frams/util/sstring.cpp

    r347 r348  
    251251void SString::operator+=(const SString&s)
    252252{
    253 append((const char*)s,s.len());
     253append(s.c_str(),s.len());
    254254}
    255255
     
    323323int SString::indexOf(const SString & substring,int start) const
    324324{
    325 char *found=strstr(buf->txt+start,((const char*)substring));
     325char *found=strstr(buf->txt+start,substring.c_str());
    326326return found?found-buf->txt:-1;
    327327}
     
    341341int SString::startsWith(const char *pattern) const
    342342{
    343 const char *t=(const char*)(*this);
     343const char *t=this->c_str();
    344344for (;*pattern;pattern++,t++)
    345345        if (*t != *pattern) return 0;
     
    358358{
    359359SString tmp=SString::sprintf("%.15g",d);
    360 if ((!strchr(tmp,'.'))&&(!strchr(tmp,'e'))) tmp+=".0";
     360if ((!strchr(tmp.c_str(),'.'))&&(!strchr(tmp.c_str(),'e'))) tmp+=".0";
    361361return tmp;
    362362}
  • cpp/frams/util/sstring.h

    r286 r348  
    144144int indexOf(const SString & substring,int start=0) const;
    145145
    146 operator const char*() const {return buf->txt;} ///< get SString's readonly buffer
     146const char* c_str() const {return buf->txt;} ///< get SString's readonly buffer
    147147//operator char*() {detachCopy(len()); return buf->txt;} ///< get SString's writable buffer
    148148void operator=(const char*t); ///< assign from const char*
  • cpp/frams/util/sstringutils.cpp

    r319 r348  
    6363int quoteTilde(SString &target)
    6464{
    65         const char* x = target;
     65        const char* x = target.c_str();
    6666        SString tmp;
    6767        char *f;
     
    8888int unquoteTilde(SString &target)
    8989{
    90         const char* x = target;
     90        const char* x = target.c_str();
    9191        SString tmp;
    9292        char *f;
     
    134134bool sstringQuote(SString& target)
    135135{
    136         const char* x = target;
     136        const char* x = target.c_str();
    137137        bool changed = 0;
    138138        SString tmp;
     
    169169int sstringUnquote(SString &target)
    170170{
    171         const char* x = target;
     171        const char* x = target.c_str();
    172172        SString tmp;
    173173        char *f;
     
    200200int strFindField(const SString& txt, const SString& name, int &end)
    201201{
    202         const char* t = txt, *n;
     202        const char* t = txt.c_str(), *n;
    203203        int pos = 0;
    204204        while (1)
    205205        {
    206206                n = strchr(t + pos, ',');
    207                 if ((!strncmp(t + pos, name, name.len())) && (t[pos + name.len()] == '='))
     207                if ((!strncmp(t + pos, name.c_str(), name.len())) && (t[pos + name.len()] == '='))
    208208                {
    209209                        if (n) end = n - t; else end = txt.len();
     
    234234                char *b = t;
    235235                if (txt.len()) *(t++) = ',';
    236                 strcpy(t, name); t += name.len();
     236                strcpy(t, name.c_str()); t += name.len();
    237237                *(t++) = '=';
    238                 strcpy(t, value); t += value.len();
     238                strcpy(t, value.c_str()); t += value.len();
    239239                txt.endAppend(t - b);
    240240        }
     
    253253                        char *t = txt.directWrite(txt.len() + value.len() - (e - p));
    254254                        memmove(t + p + value.len(), t + e, txt.len() - e);
    255                         memmove(t + p, value, value.len());
     255                        memmove(t + p, value.c_str(), value.len());
    256256                        txt.endWrite(txt.len() + value.len() - (e - p));
    257257                }
     
    261261SString trim(SString& s)
    262262{
    263         const unsigned char*b = (const unsigned char*)(const char*)s;
     263        const unsigned char*b = (const unsigned char*)s.c_str();
    264264        const unsigned char*e = b + s.len();
    265265        while ((b < e) && (*b <= ' ')) b++;
     
    275275bool removeCR(SString& s)
    276276{
    277         const char* p = (const char*)s;
     277        const char* p = s.c_str();
    278278        const char* cr = strchr(p, '\r');
    279279        if (!cr) return false;
     
    299299                SString after = pattern.substr(aster + 1);
    300300                if (!word.len()) return false;
    301                 if (before.len()) if (!word.startsWith(before)) return false;
     301                if (before.len()) if (!word.startsWith(before.c_str())) return false;
    302302                if (after.len())
    303303                        if ((word.len() < after.len())
    304                                 || (strcmp((const char*)after, ((const char*)word) + word.len() - after.len())))
     304                                || (strcmp(after.c_str(), word.c_str() + word.len() - after.len())))
    305305                                return false;
    306306                return true;
  • cpp/frams/virtfile/stringfile.cpp

    r295 r348  
    1313        int need = (int)(size*nmemb);
    1414        if (need > have) { nmemb = have / size; need = (int)(size*nmemb); }
    15         memcpy(ptr, ((const char*)str) + pos, need);
     15        memcpy(ptr, str.c_str() + pos, need);
    1616        pos += need;
    1717        return nmemb;
     
    3232        if (size < 0) size = 0;
    3333        if (have > size) have = size - 1;
    34         const char* src = ((const char*)str) + pos;
     34        const char* src = str.c_str() + pos;
    3535        char *dest = s;
    3636        while (have-- > 0)
  • cpp/frams/vm/framscript.l

    r335 r348  
    115115int len=src.len();
    116116SString ret((len*11)/10+10);
    117 const char*t=(const char*)src;
     117const char*t=src.c_str();
    118118while(len>0)
    119119        {
  • cpp/frams/vm/framscript.y

    r345 r348  
    467467                   {trctx.err->printf("%s can't be iterated\n",str($4)); return 1;}
    468468           if ($4.objname)
    469                    trctx.out->printf("move %s.iterator,m[--m0]\n",(const char*)$4.getString());
     469                   trctx.out->printf("move %s.iterator,m[--m0]\n",$4.getString().c_str());
    470470           else
    471471                   trctx.out->printf("move s%d,m1\nmove [m1].\"iterator\",m[--m0]\n",0);
     
    662662
    663663       | OBJNAME ':' IDENT    {$$.constant=0; $$.ident=0;
    664                               trctx.out->printf("push %s:%s\n",(const char*)$1.getString(),
    665                                                  (const char*)$3.getString());
     664                              trctx.out->printf("push %s:%s\n",$1.getString().c_str(),
     665                                                 $3.getString().c_str());
    666666                              trstack.adjust(-1);
    667667                              }
     
    688688        trstack.adjust(-1);}
    689689        else if (globalOk($1))
    690         { trctx.out->printf("push @%s\n%s @%s\n",(const char*)$1.getString(),
    691                             $2.getInt()?"inc":"dec",(const char*)$1.getString());
     690        { trctx.out->printf("push @%s\n%s @%s\n",$1.getString().c_str(),
     691                            $2.getInt()?"inc":"dec",$1.getString().c_str());
    692692        trstack.adjust(-1);}
    693693        else {badVariable($$,$1); return 1;}
     
    697697                                if (!handleAssignOp($$,$1,$3,assign_op_names[$2.getInt()]))
    698698                                if (globalOk($1)) {SString t="@"; t+=$1.getString();
    699                                   handleAssignOp2($$,(const char*)t,$3,assign_op_names[$2.getInt()],0,1);}
     699                                  handleAssignOp2($$,t.c_str(),$3,assign_op_names[$2.getInt()],0,1);}
    700700                                else { badVariable($$,$1); return 1; }
    701701                              }
     
    895895                  if ($3.constant)
    896896                          {
    897                           handleAssignOp2($$,(const char*)t,$5,assign_op_names[$4.getInt()],0,1);
     897                          handleAssignOp2($$,t.c_str(),$5,assign_op_names[$4.getInt()],0,1);
    898898                          }
    899899                  else
     
    902902                          t=$1.getString();t+=".[m1]";
    903903                          trctx.out->printf("move s0,m1\n",str($1));
    904                           handleAssignOp2($$,(const char*)t,$5,assign_op_names[$4.getInt()],sp,0);
     904                          handleAssignOp2($$,t.c_str(),$5,assign_op_names[$4.getInt()],sp,0);
    905905                          if (sp) {trctx.out->printf("inc m0\n"); trstack.adjust(1);}
    906906                          }
     
    10081008     | FUNCTION IDENT
    10091009             { trctx.emitLine(); $$.constant=0; $$.ident=0; SString t=":"; t+=$1.getString(); $$.setString(t);
    1010              trctx.out->printf("push :%s\n",(const char*)$2.getString());
     1010             trctx.out->printf("push :%s\n",$2.getString().c_str());
    10111011             trstack.adjust(-1);
    10121012             }
     
    10531053                             {sp=1; trctx.out->printf("move s1,m1\n");}
    10541054                     t="[m1]."; t+=str($3);
    1055                      handleAssignOp2($$,(const char*)t,$5,assign_op_names[$4.getInt()],sp,0);
     1055                     handleAssignOp2($$,t.c_str(),$5,assign_op_names[$4.getInt()],sp,0);
    10561056                     if (sp) {trctx.out->printf("inc m0\n");trstack.adjust(1);}
    10571057                     }
     
    12951295SString ret((len*11)/10+10);
    12961296ret+='\"';
    1297 const char*t=(const char*)s;
     1297const char*t=s.c_str();
    12981298while(len>0)
    12991299        {
     
    14641464SymTabEntry* found=trstack.globals.find(var.getString());
    14651465if (found) return true;
    1466 return framscriptIsGlobalName(var.getString());
     1466return framscriptIsGlobalName(var.getString().c_str());
    14671467}
    14681468
     
    15391539else if (globalOk(var))
    15401540        {
    1541         trctx.out->printf("push @%s\n",(const char*)var.getString());
     1541        trctx.out->printf("push @%s\n",var.getString().c_str());
    15421542        trstack.adjust(-1);
    15431543        return true;
Note: See TracChangeset for help on using the changeset viewer.