From 566e92b2189802fa1599e50de025a6e34278a76d Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Tue, 16 Aug 2016 21:27:57 +0000
Subject: [PATCH] Experimental: if a onelab parameter does exist when doing a
 query, try to see if it's not a Gmsh option. If it is, return its value.

---
 Common/gmshLocalNetworkClient.cpp | 32 +++++++++++++++++++++++++++++--
 1 file changed, 30 insertions(+), 2 deletions(-)

diff --git a/Common/gmshLocalNetworkClient.cpp b/Common/gmshLocalNetworkClient.cpp
index af96039249..69c071e790 100644
--- a/Common/gmshLocalNetworkClient.cpp
+++ b/Common/gmshLocalNetworkClient.cpp
@@ -244,11 +244,39 @@ bool gmshLocalNetworkClient::receiveMessage(gmshLocalNetworkClient *master)
       }
       else if(ptype == "number"){
         std::vector<onelab::number> par; get(par, name);
-        if(par.size() == 1) reply = par[0].toChar();
+        if(par.empty()){ // try to see if it's not a Gmsh option
+          std::string::size_type dot = name.find('.');
+          if(dot != std::string::npos){
+            double val;
+            if(GmshGetOption(name.substr(0, dot), name.substr(dot + 1), val)){
+              par.resize(1);
+              par[0].setName(name);
+              par[0].setValue(val);
+              reply = par[0].toChar();
+            }
+          }
+        }
+        else{
+          reply = par[0].toChar();
+        }
       }
       else if(ptype == "string"){
         std::vector<onelab::string> par; get(par, name);
-        if(par.size() == 1) reply = par[0].toChar();
+        if(par.empty()){ // try to see if it's not a Gmsh option
+          std::string::size_type dot = name.find('.');
+          if(dot != std::string::npos){
+            std::string val;
+            if(GmshGetOption(name.substr(0, dot), name.substr(dot + 1), val)){
+              par.resize(1);
+              par[0].setName(name);
+              par[0].setValue(val);
+              reply = par[0].toChar();
+            }
+          }
+        }
+        else{
+          reply = par[0].toChar();
+        }
       }
       else
         Msg::Error("Unknown ONELAB parameter type in query: %s", ptype.c_str());
-- 
GitLab