From c0476dfb8f41308536feeaeb7fb91973f02cc955 Mon Sep 17 00:00:00 2001
From: Olivier Sauter <olivier.sauter@epfl.ch>
Date: Tue, 8 Aug 2017 15:37:16 +0000
Subject: [PATCH] take liuqe from expression if not explicitely specified,
 liuqe.m2 is used if in expression to set liuqe 2, enforces liuqe if given in
 parameters

git-svn-id: https://spcsvn.epfl.ch/repos/TCV/gdat/trunk@8142 d63d8f72-b253-0410-a779-e742ad2e26cf
---
 crpptbx/TCV/gdat_tcv.m | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/crpptbx/TCV/gdat_tcv.m b/crpptbx/TCV/gdat_tcv.m
index 381e67ba..8d3e14cb 100644
--- a/crpptbx/TCV/gdat_tcv.m
+++ b/crpptbx/TCV/gdat_tcv.m
@@ -195,10 +195,14 @@ else
 end
 
 % extract parameters from pairs of varargin:
+i_liuqe_set_in_pairs = 0; % to know if liuqe was not set explicitely thus use value in expression later
 if (nargin>=ivarargin_first_char)
   if mod(nargin-ivarargin_first_char+1,2)==0
     for i=1:2:nargin-ivarargin_first_char+1
       if ischar(varargin_eff{i})
+        if strcmp(varargin_eff{i},'liuqe')
+          i_liuqe_set_in_pairs = 1;
+        end
         % enforce lower case for any character driven input
         if ischar(varargin_eff{i+1}) && ~strcmp('path',varargin_eff{i})
           gdat_params.(lower(varargin_eff{i})) = lower(varargin_eff{i+1});
@@ -376,9 +380,40 @@ if strcmp(mapping_for_tcv.method(1:3),'tdi')
           ichar_after_liuqe = 7;
           if strcmp(mapping_for_tcv.expression(ij+ichar_after_liuqe),'2') || ...
                 strcmp(mapping_for_tcv.expression(ij+ichar_after_liuqe),'3')
+            if i_liuqe_set_in_pairs==0
+              gdat_params.liuqe = str2num(mapping_for_tcv.expression(ij+ichar_after_liuqe));
+              gdat_data.gdat_params = gdat_params;
+              substr_liuqe_tcv_eq = mapping_for_tcv.expression(ij+ichar_after_liuqe);
+            end
             ichar_after_liuqe = 8;
           end
           mapping_for_tcv.expression = [mapping_for_tcv.expression(1:ij+6) substr_liuqe_tcv_eq mapping_for_tcv.expression(ij+ichar_after_liuqe:end)];
+        else
+          % check if liuqe, liuqe2 or liuqe3 is given in expression
+          ij = regexpi(mapping_for_tcv.expression,'LIUQE[^\.]','once');
+          if ~isempty(ij)
+            ichar_after_liuqe = 5;
+            if strcmp(mapping_for_tcv.expression(ij+ichar_after_liuqe),'2') || ...
+                  strcmp(mapping_for_tcv.expression(ij+ichar_after_liuqe),'3')
+              if i_liuqe_set_in_pairs==0
+                gdat_params.liuqe = 10+str2num(mapping_for_tcv.expression(ij+ichar_after_liuqe));
+                gdat_data.gdat_params = gdat_params;
+                substr_liuqe_tcv_eq = mapping_for_tcv.expression(ij+ichar_after_liuqe);
+              end
+              ichar_after_liuqe = 6;
+            else
+              if i_liuqe_set_in_pairs==0
+                gdat_params.liuqe = 11;
+                gdat_data.gdat_params = gdat_params;
+                substr_liuqe_tcv_eq = '';
+              end
+            end
+            if i_liuqe_set_in_pairs==1 && liuqe_matlab==1
+              % enforce matlab liuqe version even matlab if asked for
+              substr_liuqe_tcv_eq = ['.M' substr_liuqe_tcv_eq];
+            end
+            mapping_for_tcv.expression = [mapping_for_tcv.expression(1:ij+4) substr_liuqe_tcv_eq mapping_for_tcv.expression(ij+ichar_after_liuqe:end)];
+          end
         end
       else
         ij = regexpi(mapping_for_tcv.expression,'LIUQE.*\.M','once');
@@ -474,6 +509,7 @@ if strcmp(mapping_for_tcv.method(1:3),'tdi')
     mapping_for_tcv.gdat_timedim = mapping_for_tcv.timedim;
   end
   gdat_data.data_fullpath=[mapping_for_tcv.expression];
+  gdat_data.label=[mapping_for_tcv.expression];
   gdat_data.help = aatmp.help;
 
   % end of method "tdi"
-- 
GitLab