Difference for src/colvarscript.C from version 1.7 to 1.8

version 1.7version 1.8
Line 1
Line 1
 // -*- c++ -*- // -*- c++ -*-
  
  // This file is part of the Collective Variables module (Colvars).
  // The original version of Colvars and its updates are located at:
  // https://github.com/colvars/colvars
  // Please update all Colvars source files before making any changes.
  // If you wish to distribute your changes, please submit them to the
  // Colvars repository at GitHub.
  
 #include <cstdlib> #include <cstdlib>
 #include <stdlib.h> #include <stdlib.h>
 #include <string.h> #include <string.h>
  
 #include "colvarscript.h" #include "colvarscript.h"
  #include "colvardeps.h"
  
  
 colvarscript::colvarscript(colvarproxy *p) colvarscript::colvarscript(colvarproxy *p)
Line 256
Line 264
   }   }
  
   if (subcmd == "delete") {   if (subcmd == "delete") {
     if (cv->biases.size() > 0) {     size_t i;
       result = "Cannot delete a colvar currently used by biases, delete those biases first";     for (i = 0; i < cv->biases.size(); i++) {
       return COLVARSCRIPT_ERROR;       delete cv->biases[i];
     }     }
      cv->biases.resize(0);
     // colvar destructor is tasked with the cleanup     // colvar destructor is tasked with the cleanup
     delete cv;     delete cv;
     // TODO this could be done by the destructors     // TODO this could be done by the destructors
Line 331
Line 340
     return COLVARS_OK;     return COLVARS_OK;
   }   }
  
   if (subcmd == "state") {   if ((subcmd == "get") || (subcmd == "set") || (subcmd == "state")) {
     cv->print_state();     return proc_features(cv, argc, argv);
     return COLVARS_OK; 
   }   }
  
   result = "Syntax error\n" + help_string();   result = "Syntax error\n" + help_string();
Line 372
Line 380
     return COLVARS_OK;     return COLVARS_OK;
   }   }
  
   if (subcmd == "state") { 
     b->print_state(); 
     return COLVARS_OK; 
   } 
  
   // Subcommands for MW ABF   // Subcommands for MW ABF
   if (subcmd == "bin") {   if (subcmd == "bin") {
     int r = b->current_bin();     int r = b->current_bin();
Line 413
Line 416
     return COLVARS_OK;     return COLVARS_OK;
   }   }
  
    if ((subcmd == "get") || (subcmd == "set") || (subcmd == "state")) {
      return proc_features(b, argc, argv);
    }
  
   if (argc >= 4) {   if (argc >= 4) {
     std::string param = argv[3];     std::string param = argv[3];
     if (subcmd == "count") {     if (subcmd == "count") {
Line 434
Line 441
 } }
  
  
  int colvarscript::proc_features(colvardeps *obj,
                                  int argc, char const *argv[]) {
    // size was already checked before calling
    std::string subcmd = argv[2];
  
    if (argc == 3) {
      if (subcmd == "state") {
        // TODO make this returned as result?
        obj->print_state();
        return COLVARS_OK;
      }
  
      // get and set commands require more arguments
      result = "Syntax error\n" + help_string();
      return COLVARSCRIPT_ERROR;
    }
  
    if ((subcmd == "get") || (subcmd == "set")) {
      std::vector<colvardeps::feature *> &features = obj->features();
      std::string const req_feature(argv[3]);
      colvardeps::feature *f = NULL;
      int fid = 0;
      for (fid = 0; fid < int(features.size()); fid++) {
        if (features[fid]->description ==
            colvarparse::to_lower_cppstr(req_feature)) {
          f = features[fid];
          break;
        }
      }
  
      if (f == NULL) {
  
        result = "Error: feature \""+req_feature+"\" does not exist.\n";
        return COLVARSCRIPT_ERROR;
  
      } else {
  
        if (! obj->is_available(fid)) {
          result = "Error: feature \""+req_feature+"\" is unavailable.\n";
          return COLVARSCRIPT_ERROR;
        }
  
        if (subcmd == "get") {
          result = cvm::to_str(obj->is_enabled(fid) ? 1 : 0);
          return COLVARS_OK;
        }
  
        if (subcmd == "set") {
          if (argc == 5) {
            std::string const yesno =
              colvarparse::to_lower_cppstr(std::string(argv[4]));
            if ((yesno == std::string("yes")) ||
                (yesno == std::string("on")) ||
                (yesno == std::string("1"))) {
              obj->enable(fid);
              return COLVARS_OK;
            } else if ((yesno == std::string("no")) ||
                (yesno == std::string("off")) ||
                (yesno == std::string("0"))) {
              // TODO disable() function does not exist yet,
              // dependencies will not be resolved
              // obj->disable(fid);
              obj->feature_states[fid]->enabled = false;
              return COLVARS_OK;
            }
          }
          result = "Syntax error\n" + help_string();
          return COLVARSCRIPT_ERROR;
        }
      }
    }
  
    result = "Syntax error\n" + help_string();
    return COLVARSCRIPT_ERROR;
  }
  
  
 std::string colvarscript::help_string() std::string colvarscript::help_string()
 { {
   std::string buf;   std::string buf;
Line 471
Line 555
   colvar <name> addforce <F>  -- apply given force on colvar <name>\n\   colvar <name> addforce <F>  -- apply given force on colvar <name>\n\
   colvar <name> getconfig     -- return config string of colvar <name>\n\   colvar <name> getconfig     -- return config string of colvar <name>\n\
   colvar <name> cvcflags <fl> -- enable or disable cvcs according to 0/1 flags\n\   colvar <name> cvcflags <fl> -- enable or disable cvcs according to 0/1 flags\n\
    colvar <name> get <f>       -- get the value of the colvar feature <f>\n\
    colvar <name> set <f> <val> -- set the value of the colvar feature <f>\n\
 \n\ \n\
 Accessing biases:\n\ Accessing biases:\n\
   bias <name> energy          -- return the current energy of bias <name>\n\   bias <name> energy          -- return the current energy of bias <name>\n\
   bias <name> update          -- recalculate bias <name>\n\   bias <name> update          -- recalculate bias <name>\n\
   bias <name> delete          -- delete bias <name>\n\   bias <name> delete          -- delete bias <name>\n\
   bias <name> getconfig       -- return config string of bias <name>\n";   bias <name> getconfig       -- return config string of bias <name>\n\
    bias <name> get <f>         -- get the value of the bias feature <f>\n\
    bias <name> set <f> <val>   -- set the value of the bias feature <f>\n\
  ";
  
   return buf;   return buf;
 } }


Legend:
Removed in v.1.7 
changed lines
 Added in v.1.8



Made by using version 1.53 of cvs2html