- Timestamp:
- 06/22/16 16:41:58 (8 years ago)
- Location:
- cpp/frams/_demos
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
cpp/frams/_demos/loader_test_geno.cpp
r515 r520 11 11 12 12 \include loader_test.cpp 13 */13 */ 14 14 15 int main(int argc, char*argv[])15 int main(int argc, char*argv[]) 16 16 { 17 if (argc<2)17 if (argc < 2) 18 18 { 19 fprintf(stderr,"Arguments: filename [genotype name or index (1-based) [field name]]\n"20 21 22 );23 return 1;19 fprintf(stderr, "Arguments: filename [genotype name or index (1-based) [field name]]\n" 20 "If a genotype is indicated (by providing the optional genotype identifier), the program will output the raw genotype, suitable for Framsticks Theater's genotype viewer mode. If a genotype and a field name is given, the field value (instead of the raw genotype) is printed. If the second argument is not given, the genotype names from the file will be listed.\n" 21 "Example: loader_test walking.gen \"Basic Quadruped\" | theater -g -\n" 22 ); 23 return 1; 24 24 } 25 25 26 long count=0,totalsize=0;27 StdioFileSystem_autoselect stdiofilesys;28 MiniGenotypeLoader loader(argv[1]);29 const char* selected=(argc<3)?NULL:argv[2];30 const char* field_name=(argc<4)?NULL:argv[3];31 int selected_index=(selected&&isdigit(selected[0]))?atol(selected):0;32 // using char* constructor (passing the file name to open)33 MiniGenotype *loaded;34 while(loaded=loader.loadNextGenotype())26 long count = 0, totalsize = 0; 27 StdioFileSystem_autoselect stdiofilesys; 28 MiniGenotypeLoader loader(argv[1]); 29 const char* selected = (argc < 3) ? NULL : argv[2]; 30 const char* field_name = (argc < 4) ? NULL : argv[3]; 31 int selected_index = (selected&&isdigit(selected[0])) ? atol(selected) : 0; 32 // using char* constructor (passing the file name to open) 33 MiniGenotype *loaded; 34 while (loaded = loader.loadNextGenotype()) 35 35 { // if loaded != NULL then the "org:" object data was 36 37 count++;38 totalsize+=loaded->genotype.len();39 if (selected)36 // loaded into MiniGenotype object 37 count++; 38 totalsize += loaded->genotype.len(); 39 if (selected) 40 40 { 41 if (selected_index)41 if (selected_index) 42 42 { 43 if (selected_index!=count)44 continue;43 if (selected_index != count) 44 continue; 45 45 } 46 else46 else 47 47 { 48 if (strcmp(loaded->name.c_str(),selected))49 continue;48 if (strcmp(loaded->name.c_str(), selected)) 49 continue; 50 50 } 51 if (field_name)51 if (field_name) 52 52 { 53 Param p(minigenotype_paramtab,loaded);54 int field_index=p.findId(field_name);55 if (field_index<0)53 Param p(minigenotype_paramtab, loaded); 54 int field_index = p.findId(field_name); 55 if (field_index < 0) 56 56 { 57 printf("Field '%s' not found\n",field_name);58 return 3;57 printf("Field '%s' not found\n", field_name); 58 return 3; 59 59 } 60 else61 puts(p.get(field_index).c_str());62 60 else 61 puts(p.get(field_index).c_str()); 62 } 63 63 else 64 64 puts(loaded->genotype.c_str()); 65 return 0; 66 } 67 fprintf(stderr, "%d. %s\t(%d characters)\n", count, loaded->name.c_str(), loaded->genotype.len()); 68 } 69 // the loop repeats until loaded==NULL, which could be beacause of error 70 if (loader.getStatus() == MiniGenotypeLoader::OnError) 71 fprintf(stderr, "Error: %s", loader.getError().c_str()); 72 // (otherwise it was the end of the file) 73 if (selected) 74 { 75 fprintf(stderr, "genotype %s not found in %s\n", selected, argv[1]); 76 return 2; 77 } 78 else 79 { 80 fprintf(stderr, "\ntotal: %d items, %d characters\n", count, totalsize); 65 81 return 0; 66 }67 fprintf(stderr,"%d. %s\t(%d characters)\n",count,loaded->name.c_str(),loaded->genotype.len());68 }69 // the loop repeats until loaded==NULL, which could be beacause of error70 if (loader.getStatus()==MiniGenotypeLoader::OnError)71 fprintf(stderr,"Error: %s",loader.getError().c_str());72 // (otherwise it was the end of the file)73 if (selected)74 {75 fprintf(stderr,"genotype %s not found in %s\n",selected,argv[1]);76 return 2;77 }78 else79 {80 fprintf(stderr,"\ntotal: %d items, %d characters\n",count,totalsize);81 return 0;82 82 } 83 83 } -
cpp/frams/_demos/loader_test_param.cpp
r391 r520 14 14 Additional information and messages are printed to standard error. 15 15 You can redirect one or both streams if needed. 16 16 17 17 A sample input file for this program is "loader_test_param.in", 18 18 so you can run this program from the "cpp" directory as 19 19 ./loader_test_param frams/_demos/loader_test_param.in 20 20 21 21 \include loader_test_param.cpp 22 22 */ -
cpp/frams/_demos/saver_test_geno.cpp
r517 r520 11 11 12 12 \include saver_test_geno.cpp 13 */13 */ 14 14 15 int main(int argc, char*argv[])15 int main(int argc, char*argv[]) 16 16 { 17 if (argc<3)17 if (argc < 3) 18 18 { 19 fprintf(stderr,"Arguments: filename number_of_genotypes\n"20 21 );22 return 1;19 fprintf(stderr, "Arguments: filename number_of_genotypes\n" 20 "Example: saver_test_geno file.gen 3\n" 21 ); 22 return 1; 23 23 } 24 24 25 StdioFileSystem_autoselect stdiofilesys;26 VirtFILE *f=Vfopen(argv[1],"w");27 if (f)25 StdioFileSystem_autoselect stdiofilesys; 26 VirtFILE *f = Vfopen(argv[1], "w"); 27 if (f) 28 28 { 29 int N=atoi(argv[2]);30 MiniGenotype g;31 Param p(minigenotype_paramtab,&g);32 g.clear();33 printf("Saving %d genotypes to %s\n",N,argv[1]);34 for(int i=1;i<=N;i++)29 int N = atoi(argv[2]); 30 MiniGenotype g; 31 Param p(minigenotype_paramtab, &g); 32 g.clear(); 33 printf("Saving %d genotypes to %s\n", N, argv[1]); 34 for (int i = 1; i <= N; i++) 35 35 { 36 g.name=SString::sprintf("Genotype#%d",i);37 g.genotype=""; for(int x=0;x<i;x++) g.genotype+="X";38 g.velocity=0.1*i;39 g.energy0=1;40 g.info="Saved by saver_test_geno.cpp";41 g.is_valid=1;42 p.save(f,"org");36 g.name = SString::sprintf("Genotype#%d", i); 37 g.genotype = ""; for (int x = 0; x < i; x++) g.genotype += "X"; 38 g.velocity = 0.1*i; 39 g.energy0 = 1; 40 g.info = "Saved by saver_test_geno.cpp"; 41 g.is_valid = 1; 42 p.save(f, "org"); 43 43 } 44 delete f;45 return 0;44 delete f; 45 return 0; 46 46 } 47 else47 else 48 48 { 49 printf("Could not write to %s\n",argv[1]);50 return 1;49 printf("Could not write to %s\n", argv[1]); 50 return 1; 51 51 } 52 52 }
Note: See TracChangeset
for help on using the changeset viewer.