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