Drop Tcl USE_COMPAT_CONST and use const char* 71/4071/1
authorJim Phillips <jim@ks.uiuc.edu>
Fri, 27 Apr 2018 00:30:39 +0000 (19:30 -0500)
committerJim Phillips <jim@ks.uiuc.edu>
Fri, 27 Apr 2018 00:30:39 +0000 (19:30 -0500)
USE_COMPAT_CONST was for backwards compatibility with Tcl 8.3
and Tcl 8.4 has been out for over a decade.  Most changes are
mechanical, with some const propagation into related code.

Change-Id: Ieec6b339399a572e0732f7f61e4ba7753df1a15e

17 files changed:
src/ComputeTclBC.C
src/ComputeTclBC.h
src/DataExchanger.C
src/DataExchanger.ci
src/DataExchanger.h
src/GlobalMasterTcl.C
src/GlobalMasterTcl.h
src/Measure.C
src/Measure.h
src/Node.C
src/Node.h
src/ParseOptions.C
src/Pointer.h
src/ScriptTcl.C
src/ScriptTcl.h
src/TclCommands.C
src/TclCommands.h

index 797d5e1..8bf6be0 100644 (file)
@@ -12,7 +12,6 @@
 #include "Molecule.h"
 
 #ifdef NAMD_TCL
-#define USE_COMPAT_CONST
 #include <tcl.h>
 #endif
 #include "TclCommands.h"
@@ -126,7 +125,7 @@ void ComputeTclBC::doWork() {
 #ifdef NAMD_TCL
 
 int ComputeTclBC::Tcl_print(ClientData,
-        Tcl_Interp *, int argc, char *argv[]) {
+        Tcl_Interp *, int argc, const char *argv[]) {
   Tcl_DString msg;
   Tcl_DStringInit(&msg);
   for ( int i = 1; i < argc; ++i ) {
@@ -139,7 +138,7 @@ int ComputeTclBC::Tcl_print(ClientData,
 }
 
 int ComputeTclBC::Tcl_wrapmode(ClientData clientData,
-        Tcl_Interp *interp, int argc, char *argv[]) {
+        Tcl_Interp *interp, int argc, const char *argv[]) {
   if (argc != 2) {
     Tcl_SetResult(interp,"usage: wrapmode patch|input|cell|nearest",
                                                                TCL_VOLATILE);
index e0428ab..84399d9 100644 (file)
@@ -8,7 +8,6 @@
 #define COMPUTETCLBC_H
 
 #ifdef NAMD_TCL
-#define USE_COMPAT_CONST
 #include <tcl.h>
 #endif
 
@@ -47,8 +46,8 @@ private:
 
 #ifdef NAMD_TCL
   Tcl_Interp *interp;
-  static int Tcl_print(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_wrapmode(ClientData, Tcl_Interp *, int, char **);
+  static int Tcl_print(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_wrapmode(ClientData, Tcl_Interp *, int, const char **);
   static int Tcl_cleardrops(ClientData, Tcl_Interp *, int, Tcl_Obj * const []);
   static int Tcl_dropatom(ClientData, Tcl_Interp *, int, Tcl_Obj * const []);
   static int Tcl_nextatom(ClientData, Tcl_Interp *, int, Tcl_Obj * const []);
index 5a8b69a..d542a9b 100644 (file)
@@ -130,12 +130,12 @@ extern "C" {
     CPROXY_DE(CkpvAccess(BOCclass_group).dataExchanger)[CkMyPe()].recv_eval_result(msg);
   }
 
-  void replica_send(char *sndbuf, int sendcount, int destPart, int destPE) {
+  void replica_send(const char *sndbuf, int sendcount, int destPart, int destPE) {
     if ( CpvAccess(inEval) ) {
       packSend(destPE,destPart,sndbuf,sendcount,CkpvAccess(recv_data_idx),1);
       return;
     }
-    Pointer sendPointer(sndbuf);
+    ConstPointer sendPointer(sndbuf);
     CPROXY_DE(CkpvAccess(BOCclass_group).dataExchanger)[CkMyPe()].send(sendPointer,sendcount,destPart,destPE); 
     CpvAccess(breakScheduler) = 0;
     while(!CpvAccess(breakScheduler)) CsdSchedulePoll();
@@ -148,16 +148,16 @@ extern "C" {
     while(!CpvAccess(breakScheduler)) CsdSchedulePoll();
   }
 
-  void replica_sendRecv(char *sndbuf, int sendcount, int destPart, int destPE, DataMessage **precvMsg, int srcPart, int srcPE)  {
-    Pointer sendPointer(sndbuf);
+  void replica_sendRecv(const char *sndbuf, int sendcount, int destPart, int destPE, DataMessage **precvMsg, int srcPart, int srcPE)  {
+    ConstPointer sendPointer(sndbuf);
     Pointer recvPointer((char *) precvMsg);
     CPROXY_DE(CkpvAccess(BOCclass_group).dataExchanger)[CkMyPe()].sendRecv(sendPointer,sendcount,destPart,destPE,recvPointer,srcPart,srcPE);
     CpvAccess(breakScheduler) = 0;
     while(!CpvAccess(breakScheduler)) CsdSchedulePoll();
   }
 
-  void replica_eval(char *cmdbuf, int targPart, int targPE, DataMessage **precvMsg) {
-    Pointer sendPointer(cmdbuf);
+  void replica_eval(const char *cmdbuf, int targPart, int targPE, DataMessage **precvMsg) {
+    ConstPointer sendPointer(cmdbuf);
     Pointer recvPointer((char *) precvMsg);
     int sendcount = strlen(cmdbuf) + 1;
     CPROXY_DE(CkpvAccess(BOCclass_group).dataExchanger)[CkMyPe()].eval(sendPointer,sendcount,targPart,targPE,recvPointer);
index 4d1ee48..4807ab4 100644 (file)
@@ -11,9 +11,9 @@ module DataExchanger {
     entry void recv_red();
     entry void recv_bcast();
 
-    entry void send(Pointer srcPointer, int srcSize, int dstPart, int dst) {
+    entry void send(ConstPointer srcPointer, int srcSize, int dstPart, int dst) {
       serial {
-        packSend(dst,dstPart,(char*)srcPointer.data,srcSize,recv_data_idx);
+        packSend(dst,dstPart,(const char*)srcPointer.data,srcSize,recv_data_idx);
       }
       when recv_ack() serial { 
         CpvAccess(breakScheduler) = 1;
@@ -37,9 +37,9 @@ module DataExchanger {
       }
     };
 
-    entry void sendRecv(Pointer srcPointer, int srcSize, int dstPart, int dst, Pointer recvPointer, int srcPart, int src) {
+    entry void sendRecv(ConstPointer srcPointer, int srcSize, int dstPart, int dst, Pointer recvPointer, int srcPart, int src) {
       serial {
-        packSend(dst,dstPart,(char*)srcPointer.data,srcSize,recv_data_idx);
+        packSend(dst,dstPart,(const char*)srcPointer.data,srcSize,recv_data_idx);
         loop = 1;
       }
       while(loop) {
@@ -59,9 +59,9 @@ module DataExchanger {
       }
     };
 
-    entry void eval(Pointer srcPointer, int srcSize, int dstPart, int dst, Pointer recvPointer) {
+    entry void eval(ConstPointer srcPointer, int srcSize, int dstPart, int dst, Pointer recvPointer) {
       serial {
-        packSend(dst,dstPart,(char*)srcPointer.data,srcSize,recv_eval_command_idx);
+        packSend(dst,dstPart,(const char*)srcPointer.data,srcSize,recv_eval_command_idx);
       }
       when recv_eval_result(Pointer p) serial { 
         DataMessage *dmsg = (DataMessage*)p.data;
index 124e093..dd16640 100644 (file)
@@ -86,14 +86,14 @@ void recvReplicaDcdAck(ReplicaDcdAckMsg *msg);
 void recvData(DataMessage *dmsg); 
 void recvAck(DataMessage *dmsg); 
 
-void replica_send(char *sndbuf, int sendcount, int destPart, int destPE);
-void replica_sendRecv(char *sndbuf, int sendcount, int destPart, int destPE, DataMessage **precvMsg, int srcPart, int srcPE);
+void replica_send(const char *sndbuf, int sendcount, int destPart, int destPE);
+void replica_sendRecv(const char *sndbuf, int sendcount, int destPart, int destPE, DataMessage **precvMsg, int srcPart, int srcPE);
 void replica_recv(DataMessage **precvMsg, int srcPart, int srcPE);
 void replica_barrier();
 
 void replica_bcast(char *buf, int count, int root=0);
 void replica_min_double(double *dat, int count);
 
-void replica_eval(char *cmdbuf, int targPart, int targPE, DataMessage **precvMsg);
+void replica_eval(const char *cmdbuf, int targPart, int targPE, DataMessage **precvMsg);
 }
 #endif
index 849a5ff..d0e7475 100644 (file)
@@ -15,7 +15,6 @@
 #include "GlobalMasterTcl.h"
 
 #ifdef NAMD_TCL
-#define USE_COMPAT_CONST
 #include <tcl.h>
 #endif
 
@@ -26,7 +25,7 @@
 
 #ifdef NAMD_TCL
 int GlobalMasterTcl::Tcl_print(ClientData,
-       Tcl_Interp *, int argc, char *argv[]) {
+       Tcl_Interp *, int argc, const char *argv[]) {
   int arglen = 1;  int ai;
   for (ai=1; ai<argc; ++ai) { arglen += strlen(argv[ai]) + 1; }
   char *buf = new char[arglen];  *buf = 0;
@@ -39,17 +38,17 @@ int GlobalMasterTcl::Tcl_print(ClientData,
 
 
 int GlobalMasterTcl::Tcl_atomid(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   if (argc != 4) {
     Tcl_SetResult(interp,"wrong # args",TCL_VOLATILE);
     return TCL_ERROR;
   }
-  char *segid = argv[1];
+  const char *segid = argv[1];
   int resid;
   if (Tcl_GetInt(interp,argv[2],&resid) != TCL_OK) {
     return TCL_ERROR;
   }
-  char *aname = argv[3];
+  const char *aname = argv[3];
 
   Molecule *mol = (Molecule *)clientData;
   int atomid = mol->get_atom_from_name(segid,resid,aname);
@@ -68,7 +67,7 @@ int GlobalMasterTcl::Tcl_atomid(ClientData clientData,
 
 
 int GlobalMasterTcl::Tcl_addatom(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   DebugM(2,"Tcl_addatom called\n");
   if (argc != 2) {
     Tcl_SetResult(interp,"wrong # args",TCL_VOLATILE);
@@ -94,7 +93,7 @@ int GlobalMasterTcl::Tcl_addatom(ClientData clientData,
 
 
 int GlobalMasterTcl::Tcl_addgroup(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   DebugM(2,"Tcl_addgroup called\n");
   if (argc != 2) {
     Tcl_SetResult(interp,"wrong # args",TCL_VOLATILE);
@@ -109,7 +108,7 @@ int GlobalMasterTcl::Tcl_addgroup(ClientData clientData,
   group_list.resize(gcount);
 
   /* get the list of atoms that go in the group */
-  int listc, i;  char **listv;
+  int listc, i;  const char **listv;
   if (Tcl_SplitList(interp,argv[1],&listc,&listv) != TCL_OK) {
     return TCL_ERROR;
   }
@@ -144,7 +143,7 @@ int GlobalMasterTcl::Tcl_addgroup(ClientData clientData,
 
 /* this function is useless - it reconfigures whenever you add atoms! */
 int GlobalMasterTcl::Tcl_reconfig(ClientData clientData,
-       Tcl_Interp *interp, int argc, char **) {
+       Tcl_Interp *interp, int argc, const char **) {
   DebugM(2,"Tcl_reconfig called\n");
   if (argc != 1) {
     Tcl_SetResult(interp,"wrong # args",TCL_VOLATILE);
@@ -157,7 +156,7 @@ int GlobalMasterTcl::Tcl_reconfig(ClientData clientData,
 }
 
 int GlobalMasterTcl::Tcl_clearconfig(ClientData clientData,
-       Tcl_Interp *interp, int argc, char **) {
+       Tcl_Interp *interp, int argc, const char **) {
   DebugM(2,"Tcl_reconfig called\n");
   if (argc != 1) {
     Tcl_SetResult(interp,"wrong # args",TCL_VOLATILE);
@@ -170,7 +169,7 @@ int GlobalMasterTcl::Tcl_clearconfig(ClientData clientData,
 }
 
 int GlobalMasterTcl::Tcl_getstep(ClientData clientData,
-       Tcl_Interp *interp, int argc, char **) {
+       Tcl_Interp *interp, int argc, const char **) {
   DebugM(2,"Tcl_reconfig called\n");
   if (argc != 1) {
     Tcl_SetResult(interp,"wrong # args",TCL_VOLATILE);
@@ -502,7 +501,7 @@ int GlobalMasterTcl::Tcl_addforce(ClientData clientData,
 
 
 int GlobalMasterTcl::Tcl_addenergy(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[])
+       Tcl_Interp *interp, int argc, const char *argv[])
 {
   double energy;
   
index 27b92e6..60e399f 100644 (file)
@@ -12,7 +12,6 @@
 #define COMPUTETCL_H
 
 #ifdef NAMD_TCL
-#define USE_COMPAT_CONST
 #include <tcl.h>
 #endif
 
@@ -28,13 +27,13 @@ class GlobalMasterTcl : public GlobalMaster {
   void initialize();
 #ifdef NAMD_TCL
   Tcl_Interp *interp;
-  static int Tcl_print(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_atomid(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_getstep(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_addatom(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_addgroup(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_reconfig(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_clearconfig(ClientData, Tcl_Interp *, int, char **);
+  static int Tcl_print(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_atomid(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_getstep(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_addatom(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_addgroup(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_reconfig(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_clearconfig(ClientData, Tcl_Interp *, int, const char **);
   static int Tcl_loadcoords(ClientData, Tcl_Interp *, int, Tcl_Obj * const []);
   static int Tcl_loadmasses(ClientData, Tcl_Interp *, int, Tcl_Obj * const []);
   static int Tcl_loadforces(ClientData, Tcl_Interp *, int, Tcl_Obj * const []);
@@ -42,7 +41,7 @@ class GlobalMasterTcl : public GlobalMaster {
   static int Tcl_disabletotalforces(ClientData, Tcl_Interp *, int, Tcl_Obj * const []);
   static int Tcl_loadtotalforces(ClientData, Tcl_Interp *, int, Tcl_Obj * const []);
   static int Tcl_addforce(ClientData, Tcl_Interp *, int, Tcl_Obj * const []); 
-  static int Tcl_addenergy(ClientData, Tcl_Interp *, int, char **);
+  static int Tcl_addenergy(ClientData, Tcl_Interp *, int, const char **);
 #endif
 };
 
index 62c6629..b829f6a 100644 (file)
@@ -13,7 +13,7 @@
 #ifdef NAMD_TCL
 
 int Measure::wrapCommand(ClientData clientData,
-        Tcl_Interp *interp, int argc, char *argv[]) {
+        Tcl_Interp *interp, int argc, const char *argv[]) {
 
 /*
   double (wraped *)(Vector*, Molecule*, Parameters*);
@@ -29,7 +29,7 @@ int Measure::wrapCommand(ClientData clientData,
   return TCL_OK;
 }
 
-static int Tcl_centerOfNumber(ClientData, Tcl_Interp *interp, int argc, char *argv[]) {
+static int Tcl_centerOfNumber(ClientData, Tcl_Interp *interp, int argc, const char *argv[]) {
 
   Node *node = Node::Object();
   Molecule *molecule = node->molecule;
@@ -52,7 +52,7 @@ static int Tcl_centerOfNumber(ClientData, Tcl_Interp *interp, int argc, char *ar
   return TCL_OK;
 }
 
-static int Tcl_centerOfMass(ClientData, Tcl_Interp *interp, int argc, char *argv[]) {
+static int Tcl_centerOfMass(ClientData, Tcl_Interp *interp, int argc, const char *argv[]) {
 
   Node *node = Node::Object();
   Molecule *molecule = node->molecule;
@@ -76,7 +76,7 @@ static int Tcl_centerOfMass(ClientData, Tcl_Interp *interp, int argc, char *argv
   return TCL_OK;
 }
 
-static int Tcl_radiusOfGyration(ClientData, Tcl_Interp *interp, int argc, char *argv[]) {
+static int Tcl_radiusOfGyration(ClientData, Tcl_Interp *interp, int argc, const char *argv[]) {
 
   Node *node = Node::Object();
   Molecule *molecule = node->molecule;
index 9f3705e..a2dadb5 100644 (file)
@@ -12,7 +12,6 @@
 #define MEASURE_H
 
 #ifdef NAMD_TCL
-#define USE_COMPAT_CONST
 #include <tcl.h>
 
 class Measure {
@@ -20,7 +19,7 @@ public:
   static void createCommands(Tcl_Interp *);
   static void deleteCommands(Tcl_Interp *);
 private:
-  static int wrapCommand(ClientData, Tcl_Interp*, int, char**);
+  static int wrapCommand(ClientData, Tcl_Interp*, int, const char**);
 };
 
 #endif
index 1b11473..57ffe3c 100644 (file)
@@ -1221,7 +1221,7 @@ void Node::reloadGridforceGrid(const char * key) {
     DebugM(4, "reloadGridforceGrid(const char*) finished\n" << endi);
 }
 
-void Node::updateGridScale(char* key, Vector scale) {
+void Node::updateGridScale(const char* key, Vector scale) {
     DebugM(4, "updateGridScale(char*, Vector) called on node " << CkMyPe() << "\n" << endi);
     
     int gridnum;
index 707a6e6..8b969b9 100644 (file)
@@ -99,7 +99,7 @@ public:
 
   void reloadGridforceGrid(const char *key);
   void reloadGridforceGrid(int gridnum);
-  void updateGridScale(char* key, Vector scale);
+  void updateGridScale(const char* key, Vector scale);
   void updateGridScale(int gridnum, float sx, float sy, float sz);
 
   void reloadStructure(const char *, const char *);
index 9977d8c..fac9ca2 100644 (file)
@@ -18,7 +18,6 @@
 #include "strlib.h"            //  For strcasecmp and strncasecmp
 
 #ifdef NAMD_TCL
-#define USE_COMPAT_CONST
 #include <tcl.h>
 #endif
 
index c6a2276..6adffb9 100644 (file)
@@ -14,5 +14,18 @@ class Pointer {
   }
 };
 
+class ConstPointer {
+  public:
+
+  const void *data;
+
+  ConstPointer() { }
+  ConstPointer(const void *_data): data(_data) { }
+
+  void pup(PUP::er &p) {
+    pup_bytes(&p,&data,sizeof(data));
+  }
+};
+
 #endif
 
index da29dfe..76acd76 100644 (file)
@@ -38,7 +38,6 @@
 #include "qd.h"
 
 #ifdef NAMD_TCL
-#define USE_COMPAT_CONST
 #include <tcl.h>
 #endif
 #include "TclCommands.h"
@@ -268,7 +267,7 @@ static void namd_python_initialize(void *interp) {
   }
 }
 
-int ScriptTcl::Tcl_python(ClientData, Tcl_Interp *interp, int argc, char **argv) {
+int ScriptTcl::Tcl_python(ClientData, Tcl_Interp *interp, int argc, const char **argv) {
   if ( argc < 2 ) {
     Tcl_SetResult(interp,"args: script",TCL_VOLATILE);
     return TCL_ERROR;
@@ -352,7 +351,7 @@ int ScriptTcl::Tcl_python(ClientData, Tcl_Interp *interp, int argc, char **argv)
 
 #else // NAMD_PYTHON
 
-int ScriptTcl::Tcl_python(ClientData, Tcl_Interp *interp, int argc, char **argv) {
+int ScriptTcl::Tcl_python(ClientData, Tcl_Interp *interp, int argc, const char **argv) {
   Tcl_SetResult(interp,"python not enabled",TCL_VOLATILE);
   return TCL_ERROR;
 }
@@ -360,7 +359,7 @@ int ScriptTcl::Tcl_python(ClientData, Tcl_Interp *interp, int argc, char **argv)
 #endif // NAMD_PYTHON
 
 int ScriptTcl::Tcl_startup(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   if ( argc > 1 ) {
     Tcl_SetResult(interp,"no arguments needed",TCL_VOLATILE);
     return TCL_ERROR;
@@ -371,7 +370,7 @@ int ScriptTcl::Tcl_startup(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_exit(ClientData clientData,
-       Tcl_Interp *, int argc, char *argv[]) {
+       Tcl_Interp *, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   if ( CmiNumPartitions() > 1 ) {
     if ( ! script->initWasCalled ) CkPrintf("TCL: Running startup before exit due to replicas.\n");
@@ -387,7 +386,7 @@ int ScriptTcl::Tcl_exit(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_abort(ClientData,
-       Tcl_Interp *, int argc, char *argv[]) {
+       Tcl_Interp *, int argc, const char *argv[]) {
   Tcl_DString msg;
   Tcl_DStringInit(&msg);
   Tcl_DStringAppend(&msg,"TCL:",-1);
@@ -400,7 +399,7 @@ int ScriptTcl::Tcl_abort(ClientData,
   return TCL_OK;
 }
 
-int ScriptTcl::Tcl_numPes(ClientData, Tcl_Interp *interp, int argc, char **) {
+int ScriptTcl::Tcl_numPes(ClientData, Tcl_Interp *interp, int argc, const char **) {
   if ( argc > 1 ) {
     Tcl_SetResult(interp,"no arguments needed",TCL_VOLATILE);
     return TCL_ERROR;
@@ -409,7 +408,7 @@ int ScriptTcl::Tcl_numPes(ClientData, Tcl_Interp *interp, int argc, char **) {
   return TCL_OK;
 }
 
-int ScriptTcl::Tcl_numNodes(ClientData, Tcl_Interp *interp, int argc, char **) {
+int ScriptTcl::Tcl_numNodes(ClientData, Tcl_Interp *interp, int argc, const char **) {
   if ( argc > 1 ) {
     Tcl_SetResult(interp,"no arguments needed",TCL_VOLATILE);
     return TCL_ERROR;
@@ -418,7 +417,7 @@ int ScriptTcl::Tcl_numNodes(ClientData, Tcl_Interp *interp, int argc, char **) {
   return TCL_OK;
 }
 
-int ScriptTcl::Tcl_numPhysicalNodes(ClientData, Tcl_Interp *interp, int argc, char **) {
+int ScriptTcl::Tcl_numPhysicalNodes(ClientData, Tcl_Interp *interp, int argc, const char **) {
   if ( argc > 1 ) {
     Tcl_SetResult(interp,"no arguments needed",TCL_VOLATILE);
     return TCL_ERROR;
@@ -427,7 +426,7 @@ int ScriptTcl::Tcl_numPhysicalNodes(ClientData, Tcl_Interp *interp, int argc, ch
   return TCL_OK;
 }
 
-int ScriptTcl::Tcl_numReplicas(ClientData, Tcl_Interp *interp, int argc, char **) {
+int ScriptTcl::Tcl_numReplicas(ClientData, Tcl_Interp *interp, int argc, const char **) {
   if ( argc > 1 ) {
     Tcl_SetResult(interp,"no arguments needed",TCL_VOLATILE);
     return TCL_ERROR;
@@ -436,7 +435,7 @@ int ScriptTcl::Tcl_numReplicas(ClientData, Tcl_Interp *interp, int argc, char **
   return TCL_OK;
 }
 
-int ScriptTcl::Tcl_myReplica(ClientData, Tcl_Interp *interp, int argc, char **) {
+int ScriptTcl::Tcl_myReplica(ClientData, Tcl_Interp *interp, int argc, const char **) {
   if ( argc > 1 ) {
     Tcl_SetResult(interp,"no arguments needed",TCL_VOLATILE);
     return TCL_ERROR;
@@ -456,7 +455,7 @@ int ScriptTcl::Tcl_myReplica(ClientData, Tcl_Interp *interp, int argc, char **)
   } \
 } while ( 0 )
 
-int ScriptTcl::Tcl_replicaEval(ClientData, Tcl_Interp *interp, int argc, char **argv) {
+int ScriptTcl::Tcl_replicaEval(ClientData, Tcl_Interp *interp, int argc, const char **argv) {
   if ( argc != 3 ) {
     Tcl_SetResult(interp,"args: dest script",TCL_VOLATILE);
     return TCL_ERROR;
@@ -480,7 +479,7 @@ int ScriptTcl::Tcl_replicaEval(ClientData, Tcl_Interp *interp, int argc, char **
 #endif
 }
 
-int ScriptTcl::Tcl_replicaYield(ClientData, Tcl_Interp *interp, int argc, char **argv) {
+int ScriptTcl::Tcl_replicaYield(ClientData, Tcl_Interp *interp, int argc, const char **argv) {
   if ( argc > 2 ) {
     Tcl_SetResult(interp,"args: ?seconds?",TCL_VOLATILE);
     return TCL_ERROR;
@@ -502,7 +501,7 @@ int ScriptTcl::Tcl_replicaYield(ClientData, Tcl_Interp *interp, int argc, char *
 }
 
 
-int ScriptTcl::Tcl_replicaSendrecv(ClientData, Tcl_Interp *interp, int argc, char **argv) {
+int ScriptTcl::Tcl_replicaSendrecv(ClientData, Tcl_Interp *interp, int argc, const char **argv) {
   if ( argc < 3 || argc > 4 ) {
     Tcl_SetResult(interp,"args: data dest ?source?",TCL_VOLATILE);
     return TCL_ERROR;
@@ -531,7 +530,7 @@ int ScriptTcl::Tcl_replicaSendrecv(ClientData, Tcl_Interp *interp, int argc, cha
   return TCL_OK;
 }
 
-int ScriptTcl::Tcl_replicaSend(ClientData, Tcl_Interp *interp, int argc, char **argv) {
+int ScriptTcl::Tcl_replicaSend(ClientData, Tcl_Interp *interp, int argc, const char **argv) {
   if ( argc != 3 ) {
     Tcl_SetResult(interp,"args: data dest",TCL_VOLATILE);
     return TCL_ERROR;
@@ -544,7 +543,7 @@ int ScriptTcl::Tcl_replicaSend(ClientData, Tcl_Interp *interp, int argc, char **
   return TCL_OK;
 }
 
-int ScriptTcl::Tcl_replicaRecv(ClientData, Tcl_Interp *interp, int argc, char **argv) {
+int ScriptTcl::Tcl_replicaRecv(ClientData, Tcl_Interp *interp, int argc, const char **argv) {
   if (argc != 2 ) {
     Tcl_SetResult(interp,"args: source",TCL_VOLATILE);
     return TCL_ERROR;
@@ -565,7 +564,7 @@ int ScriptTcl::Tcl_replicaRecv(ClientData, Tcl_Interp *interp, int argc, char **
   return TCL_OK;
 }
 
-int ScriptTcl::Tcl_replicaBarrier(ClientData, Tcl_Interp *interp, int argc, char **) {
+int ScriptTcl::Tcl_replicaBarrier(ClientData, Tcl_Interp *interp, int argc, const char **) {
   if ( argc > 1 ) {
     Tcl_SetResult(interp,"no arguments needed",TCL_VOLATILE);
     return TCL_ERROR;
@@ -576,7 +575,7 @@ int ScriptTcl::Tcl_replicaBarrier(ClientData, Tcl_Interp *interp, int argc, char
   return TCL_OK;
 }
 
-int ScriptTcl::Tcl_replicaAtomSendrecv(ClientData clientData, Tcl_Interp *interp, int argc, char **argv) {
+int ScriptTcl::Tcl_replicaAtomSendrecv(ClientData clientData, Tcl_Interp *interp, int argc, const char **argv) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if ( ! Node::Object()->simParameters->replicaUniformPatchGrids ) {
@@ -634,7 +633,7 @@ int ScriptTcl::Tcl_replicaAtomSendrecv(ClientData clientData, Tcl_Interp *interp
   return TCL_OK;
 }
 
-int ScriptTcl::Tcl_replicaAtomSend(ClientData clientData, Tcl_Interp *interp, int argc, char **argv) {
+int ScriptTcl::Tcl_replicaAtomSend(ClientData clientData, Tcl_Interp *interp, int argc, const char **argv) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if ( ! Node::Object()->simParameters->replicaUniformPatchGrids ) {
@@ -671,7 +670,7 @@ int ScriptTcl::Tcl_replicaAtomSend(ClientData clientData, Tcl_Interp *interp, in
   return TCL_OK;
 }
 
-int ScriptTcl::Tcl_replicaAtomRecv(ClientData clientData, Tcl_Interp *interp, int argc, char **argv) {
+int ScriptTcl::Tcl_replicaAtomRecv(ClientData clientData, Tcl_Interp *interp, int argc, const char **argv) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if ( ! Node::Object()->simParameters->replicaUniformPatchGrids ) {
@@ -720,13 +719,13 @@ int ScriptTcl::Tcl_replicaAtomRecv(ClientData clientData, Tcl_Interp *interp, in
 
 
 int ScriptTcl::Tcl_stdout(ClientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   if (argc != 2) {
     Tcl_SetResult(interp, "wrong # args", TCL_VOLATILE);
     return TCL_ERROR;
   }
 
-  char *filename= argv[1];
+  const char *filename= argv[1];
   CkPrintf("TCL: redirecting stdout to file %s\n", filename);
 
   if ( ! freopen(filename, "a", stdout) ) {
@@ -737,7 +736,7 @@ int ScriptTcl::Tcl_stdout(ClientData,
 }
 
 int ScriptTcl::Tcl_print(ClientData,
-       Tcl_Interp *, int argc, char *argv[]) {
+       Tcl_Interp *, int argc, const char *argv[]) {
   Tcl_DString msg;
   Tcl_DStringInit(&msg);
   for ( int i = 1; i < argc; ++i ) {
@@ -750,7 +749,7 @@ int ScriptTcl::Tcl_print(ClientData,
 }
 
 int ScriptTcl::Tcl_config(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
 
 // Needs to handle the following cases as passed in by Tcl:
 //    name data #comment
@@ -775,18 +774,20 @@ int ScriptTcl::Tcl_config(ClientData clientData,
   int arglen = 1;  int ai;
   for (ai=1; ai<argc; ++ai) { arglen += strlen(argv[ai]) + 1; }
   char *data = new char[arglen];  *data = 0;
+  char *name = new char[arglen];  *name = 0;
 
   // find the end of the name
-  char *name, *s;
-  name = argv[1];
-  for ( s = name; *s && *s != '='; ++s );
+  const char *s = argv[1];
+  char *sn = name;
+  for ( ; *s && *s != '='; *(sn++) = *(s++) );
+  *sn = 0;
 
   // eliminate any comment
   for (ai=2; ai<argc; ++ai) { if (argv[ai][0] == '#') argc = ai; }
 
   // concatenate all the data items
   ai = 2;
-  if ( *s ) { *s = 0; ++s; strcat(data,s); }  // name=data or name=
+  if ( *s ) { ++s; strcat(data,s); }  // name=data or name=
   else if ( ai < argc && argv[ai][0] == '=' ) {  // name =data or name =
     strcat(data,argv[ai]+1);
     ++ai;
@@ -798,6 +799,7 @@ int ScriptTcl::Tcl_config(ClientData clientData,
 
   if ( ! *name ) {
     delete [] data;
+    delete [] name;
     Tcl_SetResult(interp,"error parsing config file",TCL_VOLATILE);
     return TCL_ERROR;
   }
@@ -807,9 +809,11 @@ int ScriptTcl::Tcl_config(ClientData clientData,
   if ( *data ) {
     script->config->add_element( name, strlen(name), data, strlen(data) );
     delete [] data;
+    delete [] name;
     return TCL_OK;
   }
   delete [] data;
+  delete [] name;
 
   StringList *strlist = script->config->find(name);
   if ( ! strlist ) {
@@ -821,13 +825,13 @@ int ScriptTcl::Tcl_config(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_isset_config(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   if (argc != 2) {
     Tcl_SetResult(interp,"wrong # args",TCL_VOLATILE);
     return TCL_ERROR;
   }
 
-  char *param = argv[1];
+  const char *param = argv[1];
   ScriptTcl *script = (ScriptTcl *)clientData;
   StringList *strlist = script->config->find(param);
   Tcl_SetResult(interp, (char*)(strlist ? "1" : "0"), TCL_VOLATILE);
@@ -848,13 +852,13 @@ static int atoBool(const char *s)
 }
 
 int ScriptTcl::Tcl_istrue_config(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   if (argc != 2) {
     Tcl_SetResult(interp,"wrong # args",TCL_VOLATILE);
     return TCL_ERROR;
   }
 
-  char *param = argv[1];
+  const char *param = argv[1];
   ScriptTcl *script = (ScriptTcl *)clientData;
   StringList *strlist = script->config->find(param);
   if ( ! strlist ) {
@@ -871,13 +875,13 @@ int ScriptTcl::Tcl_istrue_config(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_istrue_param(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   if (argc != 2) {
     Tcl_SetResult(interp,"wrong # args",TCL_VOLATILE);
     return TCL_ERROR;
   }
 
-  char *param = argv[1];
+  const char *param = argv[1];
   SimParameters *simParams = Node::Object()->simParameters;
   int val = simParams->istrueinparseopts(param);
   if ( val == -1 ) {
@@ -901,13 +905,13 @@ int ScriptTcl::Tcl_istrue_param(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_isset_param(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   if (argc != 2) {
     Tcl_SetResult(interp,"wrong # args",TCL_VOLATILE);
     return TCL_ERROR;
   }
 
-  char *param = argv[1];
+  const char *param = argv[1];
   SimParameters *simParams = Node::Object()->simParameters;
   int val = simParams->issetinparseopts(param);
   if ( val < 0 ) {
@@ -919,13 +923,13 @@ int ScriptTcl::Tcl_isset_param(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_param(ClientData clientData,
-        Tcl_Interp *interp, int argc, char *argv[]) {
+        Tcl_Interp *interp, int argc, const char *argv[]) {
   if (argc != 2 && argc != 3 && argc != 5) {
     Tcl_SetResult(interp,"wrong # args for NAMD config parameter",TCL_VOLATILE);
     return TCL_ERROR;
   }
 
-  char *param = argv[1];
+  const char *param = argv[1];
   if ( strlen(param) + 1 > MAX_SCRIPT_PARAM_SIZE ) {
     Tcl_SetResult(interp,"parameter name too long for NAMD config parameter",TCL_VOLATILE);
     return TCL_ERROR;
@@ -963,14 +967,14 @@ int ScriptTcl::Tcl_param(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_reinitvels(ClientData clientData,
-        Tcl_Interp *interp, int argc, char *argv[]) {
+        Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc != 2) {
     Tcl_SetResult(interp,"wrong # args",TCL_VOLATILE);
     return TCL_ERROR;
   }
-  char *temp = argv[1];
+  const char *temp = argv[1];
 
   script->setParameter("initialTemp",temp);
 
@@ -980,14 +984,14 @@ int ScriptTcl::Tcl_reinitvels(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_rescalevels(ClientData clientData,
-        Tcl_Interp *interp, int argc, char *argv[]) {
+        Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc != 2) {
     Tcl_SetResult(interp,"wrong # args",TCL_VOLATILE);
     return TCL_ERROR;
   }
-  char *factor = argv[1];
+  const char *factor = argv[1];
 
   script->setParameter("scriptArg1",factor);
 
@@ -997,7 +1001,7 @@ int ScriptTcl::Tcl_rescalevels(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_run(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc < 2) {
@@ -1059,7 +1063,7 @@ int ScriptTcl::Tcl_run(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_minimize(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc != 2) {
@@ -1101,14 +1105,14 @@ int ScriptTcl::Tcl_minimize(ClientData clientData,
 
 // move all atoms by a given vector
 int ScriptTcl::Tcl_moveallby(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc != 2) {
     Tcl_SetResult(interp, "wrong # args", TCL_VOLATILE);
     return TCL_ERROR;
   }
-  char **fstring;
+  const char **fstring;
   int fnum;
   double x, y, z;
   if (Tcl_SplitList(interp, argv[1], &fnum, &fstring) != TCL_OK)
@@ -1132,14 +1136,14 @@ int ScriptTcl::Tcl_moveallby(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_move(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc != 4) {
     Tcl_SetResult(interp,"wrong # args",TCL_VOLATILE);
     return TCL_ERROR;
   }
-  char **fstring;  int fnum;  int atomid;  int moveto;  double x, y, z;
+  const char **fstring;  int fnum;  int atomid;  int moveto;  double x, y, z;
   if (Tcl_GetInt(interp,argv[1],&atomid) != TCL_OK) return TCL_ERROR;
   if (argv[2][0]=='t' && argv[2][1]=='o' && argv[2][2]==0) moveto = 1;
   else if (argv[2][0]=='b' && argv[2][1]=='y' && argv[2][2]==0) moveto = 0;
@@ -1178,7 +1182,7 @@ int ScriptTcl::Tcl_move(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_output(ClientData clientData,
-        Tcl_Interp *interp, int argc, char *argv[]) {
+        Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc < 2) {
@@ -1239,7 +1243,7 @@ void ScriptTcl::measure(Vector *c) {
 }
 
 int ScriptTcl::Tcl_measure(ClientData clientData,
-        Tcl_Interp *interp, int argc, char *argv[]) {
+        Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc != 2) {
@@ -1266,7 +1270,7 @@ int ScriptTcl::Tcl_measure(ClientData clientData,
 // cv bias tempBias delete
 
 int ScriptTcl::Tcl_colvarbias(ClientData clientData,
-        Tcl_Interp *interp, int argc, char *argv[]) {
+        Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc < 4 || argc % 2) {
@@ -1308,7 +1312,7 @@ int ScriptTcl::Tcl_colvarbias(ClientData clientData,
 // Please use the "cv colvar" interface instead
 
 int ScriptTcl::Tcl_colvarvalue(ClientData clientData,
-        Tcl_Interp *interp, int argc, char *argv[]) {
+        Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc != 2) {
@@ -1359,7 +1363,7 @@ int ScriptTcl::Tcl_colvarvalue(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_colvarfreq(ClientData clientData,
-        Tcl_Interp *interp, int argc, char *argv[]) {
+        Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc != 2) {
@@ -1409,7 +1413,7 @@ int ScriptTcl::Tcl_colvars(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_checkpoint(ClientData clientData,
-        Tcl_Interp *interp, int argc, char *argv[]) {
+        Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc != 1) {
@@ -1423,7 +1427,7 @@ int ScriptTcl::Tcl_checkpoint(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_revert(ClientData clientData,
-        Tcl_Interp *interp, int argc, char *argv[]) {
+        Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc != 1) {
@@ -1448,7 +1452,7 @@ static int replica_hash(const char *key) {
 }
 
 int ScriptTcl::Tcl_checkpointReplica(ClientData clientData,
-        Tcl_Interp *interp, int argc, char *argv[]) {
+        Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc < 2 || argc > 3) {
@@ -1493,7 +1497,7 @@ int ScriptTcl::Tcl_checkpointReplica(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_replicaDcdFile(ClientData clientData,
-        Tcl_Interp *interp, int argc, char *argv[]) {
+        Tcl_Interp *interp, int argc, const char *argv[]) {
 #ifdef MEM_OPT_VERSION
   Tcl_SetResult(interp,"replicaDcdFile not supported in memory-optimized builds",TCL_VOLATILE);
   return TCL_ERROR;
@@ -1517,7 +1521,7 @@ int ScriptTcl::Tcl_replicaDcdFile(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_callback(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   if (argc != 2) {
     Tcl_SetResult(interp,"wrong # args",TCL_VOLATILE);
@@ -1550,7 +1554,7 @@ void ScriptTcl::doCallback(const char *labels, const char *data) {
 extern void read_binary_coors(char *fname, PDB *pdbobj);
 
 int ScriptTcl::Tcl_reinitatoms(ClientData clientData,
-        Tcl_Interp *interp, int argc, char *argv[]) {
+        Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc > 2) {
@@ -1648,7 +1652,7 @@ static int get_lattice_from_ts(Lattice *lattice, const molfile_timestep_t *ts)
 }
 
 int ScriptTcl::Tcl_coorfile(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc == 4 && !strcmp(argv[1], "open")) {
@@ -1741,7 +1745,7 @@ int ScriptTcl::Tcl_coorfile(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_dumpbench(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc != 2) {
@@ -1822,7 +1826,7 @@ int ScriptTcl::Tcl_consForceConfig(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_reloadCharges(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
   if (argc != 2) {
@@ -1839,11 +1843,11 @@ int ScriptTcl::Tcl_reloadCharges(ClientData clientData,
 
 // BEGIN gf
 int ScriptTcl::Tcl_reloadGridforceGrid(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
 
-  char *key = NULL;
+  const char *key = NULL;
   if (argc == 1) {
       // nothing ... key is NULL, then Node::reloadGridforceGrid uses the
       // default key, which is used internally when the gridforce*
@@ -1863,12 +1867,12 @@ int ScriptTcl::Tcl_reloadGridforceGrid(ClientData clientData,
 }
 
 int ScriptTcl::Tcl_updateGridScale(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
 
   Vector scale(1.0f,1.0f,1.0f);
-  char *key = NULL;
+  const char *key = NULL;
   if (argc == 4) {
       // nothing ... key is NULL, then Node::updateGridScale uses the
       // default key, which is used internally when the gridforce*
@@ -1895,7 +1899,7 @@ int ScriptTcl::Tcl_updateGridScale(ClientData clientData,
 // END gf
 
 int ScriptTcl::Tcl_reloadStructure(ClientData clientData,
-       Tcl_Interp *interp, int argc, char *argv[]) {
+       Tcl_Interp *interp, int argc, const char *argv[]) {
   ScriptTcl *script = (ScriptTcl *)clientData;
   script->initcheck();
 
index ccb79e5..3cf78dd 100644 (file)
@@ -16,7 +16,6 @@
 #include "Broadcasts.h"
 
 #ifdef NAMD_TCL
-#define USE_COMPAT_CONST
 #include <tcl.h>
 #endif
 
@@ -59,61 +58,61 @@ private:
   friend class GlobalMasterTcl;
   friend class colvarproxy_namd;
   Tcl_Interp *interp;
-  static int Tcl_python(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_startup(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_exit(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_abort(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_numPes(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_numNodes(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_numPhysicalNodes(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_numReplicas(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_myReplica(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_replicaEval(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_replicaYield(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_replicaSendrecv(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_replicaSend(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_replicaRecv(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_replicaBarrier(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_replicaAtomSendrecv(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_replicaAtomSend(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_replicaAtomRecv(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_stdout(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_print(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_config(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_isset_config(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_istrue_config(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_param(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_isset_param(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_istrue_param(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_reinitvels(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_rescalevels(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_run(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_minimize(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_move(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_moveallby(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_output(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_measure(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_colvarbias(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_colvarvalue(ClientData, Tcl_Interp *, int, char **);
+  static int Tcl_python(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_startup(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_exit(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_abort(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_numPes(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_numNodes(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_numPhysicalNodes(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_numReplicas(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_myReplica(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_replicaEval(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_replicaYield(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_replicaSendrecv(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_replicaSend(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_replicaRecv(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_replicaBarrier(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_replicaAtomSendrecv(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_replicaAtomSend(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_replicaAtomRecv(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_stdout(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_print(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_config(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_isset_config(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_istrue_config(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_param(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_isset_param(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_istrue_param(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_reinitvels(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_rescalevels(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_run(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_minimize(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_move(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_moveallby(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_output(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_measure(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_colvarbias(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_colvarvalue(ClientData, Tcl_Interp *, int, const char **);
   static int Tcl_colvars(ClientData, Tcl_Interp *, int, Tcl_Obj *const objv[]);
-  static int Tcl_colvarfreq(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_checkpoint(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_revert(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_checkpointReplica(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_replicaDcdFile(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_callback(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_reinitatoms(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_coorfile(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_dumpbench(ClientData, Tcl_Interp *, int, char **);
+  static int Tcl_colvarfreq(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_checkpoint(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_revert(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_checkpointReplica(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_replicaDcdFile(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_callback(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_reinitatoms(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_coorfile(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_dumpbench(ClientData, Tcl_Interp *, int, const char **);
   static int Tcl_consForceConfig(ClientData, Tcl_Interp *, int, Tcl_Obj *const objv[]);
-  static int Tcl_reloadCharges(ClientData, Tcl_Interp *, int, char **);
-  static int Tcl_reloadGridforceGrid(ClientData, Tcl_Interp *, int, char **);  // BEGIN, END gf
-  static int Tcl_updateGridScale(ClientData, Tcl_Interp *, int, char **);      // BEGIN, END gf
-  static int Tcl_reloadStructure(ClientData, Tcl_Interp *, int, char **);
+  static int Tcl_reloadCharges(ClientData, Tcl_Interp *, int, const char **);
+  static int Tcl_reloadGridforceGrid(ClientData, Tcl_Interp *, int, const char **);    // BEGIN, END gf
+  static int Tcl_updateGridScale(ClientData, Tcl_Interp *, int, const char **);        // BEGIN, END gf
+  static int Tcl_reloadStructure(ClientData, Tcl_Interp *, int, const char **);
   char *callbackname;
   void doCallback(const char *labels, const char *data);
   int doCallback() { return ! ! callbackname; }
-  char *measure_command;
+  const char *measure_command;
   int measure_result;
 #endif
 };
index eed944b..bc15df7 100644 (file)
@@ -15,7 +15,6 @@
 
 #ifdef NAMD_TCL
 
-#define USE_COMPAT_CONST
 #include <tcl.h>
 
 #include "Matrix4.C"
index 9bb44bb..573dc5c 100644 (file)
@@ -9,7 +9,6 @@
 
 #ifdef NAMD_TCL
 
-#define USE_COMPAT_CONST
 #include <tcl.h>
 
 int tcl_vector_math_init(Tcl_Interp *);