00001
00007
00008
00009
00010
00011 #ifndef SCRIPTTCL_H
00012 #define SCRIPTTCL_H
00013
00014 #include "converse.h"
00015 #include "NamdTypes.h"
00016 #include "Broadcasts.h"
00017
00018 #ifdef NAMD_TCL
00019 #define USE_COMPAT_CONST
00020 #include <tcl.h>
00021 #endif
00022
00023 class ConfigList;
00024 class NamdState;
00025
00026 class ScriptTcl {
00027 public:
00028 ScriptTcl();
00029 ~ScriptTcl();
00030 void load(char *scriptFile);
00031 void run(char *scriptFile);
00032 void measure(Vector *);
00033 private:
00034 char *scriptFile;
00035 ConfigList *config;
00036 NamdState *state;
00037 void suspend(void);
00038 int runWasCalled;
00039 void barrier();
00040 void initcheck();
00041 void reinitAtoms();
00042 SimpleBroadcastObject<int> scriptBarrier;
00043 int barrierStep;
00044 void runController(int task);
00045 void setParameter(const char* param, const char* value);
00046 void setParameter(const char* param, int value);
00047 #ifdef NAMD_TCL
00048 friend class Controller;
00049 friend class GlobalMasterTcl;
00050 Tcl_Interp *interp;
00051 static int Tcl_exit(ClientData, Tcl_Interp *, int, char **);
00052 static int Tcl_abort(ClientData, Tcl_Interp *, int, char **);
00053 static int Tcl_print(ClientData, Tcl_Interp *, int, char **);
00054 static int Tcl_config(ClientData, Tcl_Interp *, int, char **);
00055 static int Tcl_param(ClientData, Tcl_Interp *, int, char **);
00056 static int Tcl_reinitvels(ClientData, Tcl_Interp *, int, char **);
00057 static int Tcl_rescalevels(ClientData, Tcl_Interp *, int, char **);
00058 static int Tcl_run(ClientData, Tcl_Interp *, int, char **);
00059 static int Tcl_minimize(ClientData, Tcl_Interp *, int, char **);
00060 static int Tcl_move(ClientData, Tcl_Interp *, int, char **);
00061 static int Tcl_moveallby(ClientData, Tcl_Interp *, int, char **);
00062 static int Tcl_output(ClientData, Tcl_Interp *, int, char **);
00063 static int Tcl_measure(ClientData, Tcl_Interp *, int, char **);
00064 static int Tcl_checkpoint(ClientData, Tcl_Interp *, int, char **);
00065 static int Tcl_revert(ClientData, Tcl_Interp *, int, char **);
00066 static int Tcl_callback(ClientData, Tcl_Interp *, int, char **);
00067 static int Tcl_reinitatoms(ClientData, Tcl_Interp *, int, char **);
00068 static int Tcl_coorfile(ClientData, Tcl_Interp *, int, char **);
00069 static int Tcl_dumpbench(ClientData, Tcl_Interp *, int, char **);
00070 static int Tcl_consForceConfig(ClientData, Tcl_Interp *, int, Tcl_Obj *const objv[]);
00071 static int Tcl_reloadCharges(ClientData, Tcl_Interp *, int, char **);
00072 char *callbackname;
00073 void doCallback(const char *labels, const char *data);
00074 int doCallback() { return ! ! callbackname; }
00075 char *measure_command;
00076 int measure_result;
00077 #endif
00078 };
00079
00080 #endif
00081