From ad57a17f48c897aa6e315a4391a5cb6b036ffe8d Mon Sep 17 00:00:00 2001
From: Giacomo Fiorin <giacomo.fiorin@gmail.com>
Date: Mon, 24 Oct 2016 16:48:20 -0400
Subject: [PATCH] Add C-linkage wrapper for colvarscript (useful with ctypes)

---
 lib/colvars/colvarscript.cpp | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/lib/colvars/colvarscript.cpp b/lib/colvars/colvarscript.cpp
index 86b52ac819..a43907b07d 100644
--- a/lib/colvars/colvarscript.cpp
+++ b/lib/colvars/colvarscript.cpp
@@ -14,6 +14,36 @@ colvarscript::colvarscript(colvarproxy *p)
 {
 }
 
+
+extern "C" {
+
+  // Generic hooks; NAMD and VMD have Tcl-specific versions in the respective proxies
+
+  int run_colvarscript_command(int argc, const char **argv)
+  {
+    colvarproxy *cvp = cvm::proxy;
+    if (!cvp) {
+      return -1;
+    }
+    if (!cvp->script) {
+      cvm::error("Called run_colvarscript_command without a script object initialized.\n");
+      return -1;
+    }
+    return cvp->script->run(argc, argv);
+  }
+
+  const char * get_colvarscript_result()
+  {
+    colvarproxy *cvp = cvm::proxy;
+    if (!cvp->script) {
+      cvm::error("Called run_colvarscript_command without a script object initialized.\n");
+      return "";
+    }
+    return cvp->script->result.c_str();
+  }
+}
+
+
 /// Run method based on given arguments
 int colvarscript::run(int argc, char const *argv[]) {
 
-- 
GitLab