From 122e1ca6cce616b4b9724fb8cec88ff149a384e1 Mon Sep 17 00:00:00 2001
From: asantamaria <asantamaria@iri.upc.edu>
Date: Sat, 5 May 2018 23:08:37 +0200
Subject: [PATCH] Add conditional YAML read for matchers

---
 .../bruteforce/matcher_bruteforce_load_yaml.cpp     | 13 ++++++++-----
 .../matcher_bruteforce_hamming_load_yaml.cpp        | 12 ++++++++----
 .../matcher_bruteforce_hamming_2_load_yaml.cpp      | 12 ++++++++----
 .../matcher_bruteforce_l1_load_yaml.cpp             | 12 ++++++++----
 .../flannbased/matcher_flannbased_load_yaml.cpp     | 12 ++++++++----
 5 files changed, 40 insertions(+), 21 deletions(-)

diff --git a/src/matchers/bruteforce/matcher_bruteforce_load_yaml.cpp b/src/matchers/bruteforce/matcher_bruteforce_load_yaml.cpp
index 994843b..3b4dfc0 100644
--- a/src/matchers/bruteforce/matcher_bruteforce_load_yaml.cpp
+++ b/src/matchers/bruteforce/matcher_bruteforce_load_yaml.cpp
@@ -21,13 +21,16 @@ static ParamsBasePtr createParamsBRUTEFORCEMatcher(const std::string & _filename
     if (!yaml_params.IsNull())
     {
         Node d_yaml = yaml_params["matcher"];
-
         if(d_yaml["type"].as<string>() == "BRUTEFORCE")
         {
-        	params_ptr->match_type	= d_yaml["match type"].as<int>();
-        	params_ptr->roi_width   = d_yaml["roi"]["width"].as<unsigned int>();
-        	params_ptr->roi_height  = d_yaml["roi"]["height"].as<unsigned int>();
-        	params_ptr->min_norm_score = d_yaml["min normalized score"].as<double>();
+            if (d_yaml["match type"])
+                params_ptr->match_type  = d_yaml["match type"].as<int>();
+            if (d_yaml["min normalized score"])
+                params_ptr->min_norm_score = d_yaml["min normalized score"].as<double>();
+            if (d_yaml["roi"]["width"])
+                params_ptr->roi_width   = d_yaml["roi"]["width"].as<unsigned int>();
+            if (d_yaml["roi"]["height"])
+                params_ptr->roi_height  = d_yaml["roi"]["height"].as<unsigned int>();
         }else
         {
             std::cerr << "Bad configuration file. Wrong type " << d_yaml["type"].as<string>() << std::endl;
diff --git a/src/matchers/bruteforce_hamming/matcher_bruteforce_hamming_load_yaml.cpp b/src/matchers/bruteforce_hamming/matcher_bruteforce_hamming_load_yaml.cpp
index 3b59654..002b3bd 100644
--- a/src/matchers/bruteforce_hamming/matcher_bruteforce_hamming_load_yaml.cpp
+++ b/src/matchers/bruteforce_hamming/matcher_bruteforce_hamming_load_yaml.cpp
@@ -23,10 +23,14 @@ static ParamsBasePtr createParamsBRUTEFORCE_HAMMINGMatcher(const std::string & _
         Node d_yaml = yaml_params["matcher"];
         if(d_yaml["type"].as<string>() == "BRUTEFORCE_HAMMING")
         {
-        	params_ptr->match_type	= d_yaml["match type"].as<int>();
-        	params_ptr->roi_width   = d_yaml["roi"]["width"].as<unsigned int>();
-        	params_ptr->roi_height  = d_yaml["roi"]["height"].as<unsigned int>();
-        	params_ptr->min_norm_score = d_yaml["min normalized score"].as<double>();
+            if (d_yaml["match type"])
+                params_ptr->match_type  = d_yaml["match type"].as<int>();
+            if (d_yaml["min normalized score"])
+                params_ptr->min_norm_score = d_yaml["min normalized score"].as<double>();
+            if (d_yaml["roi"]["width"])
+                params_ptr->roi_width   = d_yaml["roi"]["width"].as<unsigned int>();
+            if (d_yaml["roi"]["height"])
+                params_ptr->roi_height  = d_yaml["roi"]["height"].as<unsigned int>();
         }else
         {
             std::cerr << "Bad configuration file. Wrong type " << d_yaml["type"].as<string>() << std::endl;
diff --git a/src/matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2_load_yaml.cpp b/src/matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2_load_yaml.cpp
index a5b878f..0d8c913 100644
--- a/src/matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2_load_yaml.cpp
+++ b/src/matchers/bruteforce_hamming_2/matcher_bruteforce_hamming_2_load_yaml.cpp
@@ -23,10 +23,14 @@ static ParamsBasePtr createParamsBRUTEFORCE_HAMMING_2Matcher(const std::string &
         Node d_yaml = yaml_params["matcher"];
         if(d_yaml["type"].as<string>() == "BRUTEFORCE_HAMMING_2")
         {
-        	params_ptr->match_type	= d_yaml["match type"].as<int>();
-        	params_ptr->roi_width   = d_yaml["roi"]["width"].as<unsigned int>();
-        	params_ptr->roi_height  = d_yaml["roi"]["height"].as<unsigned int>();
-        	params_ptr->min_norm_score = d_yaml["min normalized score"].as<double>();
+            if (d_yaml["match type"])
+                params_ptr->match_type  = d_yaml["match type"].as<int>();
+            if (d_yaml["min normalized score"])
+                params_ptr->min_norm_score = d_yaml["min normalized score"].as<double>();
+            if (d_yaml["roi"]["width"])
+                params_ptr->roi_width   = d_yaml["roi"]["width"].as<unsigned int>();
+            if (d_yaml["roi"]["height"])
+                params_ptr->roi_height  = d_yaml["roi"]["height"].as<unsigned int>();
         }else
         {
             std::cerr << "Bad configuration file. Wrong type " << d_yaml["type"].as<string>() << std::endl;
diff --git a/src/matchers/bruteforce_l1/matcher_bruteforce_l1_load_yaml.cpp b/src/matchers/bruteforce_l1/matcher_bruteforce_l1_load_yaml.cpp
index 8d8b557..bd10edb 100644
--- a/src/matchers/bruteforce_l1/matcher_bruteforce_l1_load_yaml.cpp
+++ b/src/matchers/bruteforce_l1/matcher_bruteforce_l1_load_yaml.cpp
@@ -23,10 +23,14 @@ static ParamsBasePtr createParamsBRUTEFORCE_L1Matcher(const std::string & _filen
         Node d_yaml = yaml_params["matcher"];
         if(d_yaml["type"].as<string>() == "BRUTEFORCE_L1")
         {
-        	params_ptr->match_type	= d_yaml["match type"].as<int>();
-        	params_ptr->roi_width   = d_yaml["roi"]["width"].as<unsigned int>();
-        	params_ptr->roi_height  = d_yaml["roi"]["height"].as<unsigned int>();
-        	params_ptr->min_norm_score = d_yaml["min normalized score"].as<double>();
+            if (d_yaml["match type"])
+                params_ptr->match_type  = d_yaml["match type"].as<int>();
+            if (d_yaml["min normalized score"])
+                params_ptr->min_norm_score = d_yaml["min normalized score"].as<double>();
+            if (d_yaml["roi"]["width"])
+                params_ptr->roi_width   = d_yaml["roi"]["width"].as<unsigned int>();
+            if (d_yaml["roi"]["height"])
+                params_ptr->roi_height  = d_yaml["roi"]["height"].as<unsigned int>();
         }else
         {
             std::cerr << "Bad configuration file. Wrong type " << d_yaml["type"].as<string>() << std::endl;
diff --git a/src/matchers/flannbased/matcher_flannbased_load_yaml.cpp b/src/matchers/flannbased/matcher_flannbased_load_yaml.cpp
index d17c048..1c6f8dd 100644
--- a/src/matchers/flannbased/matcher_flannbased_load_yaml.cpp
+++ b/src/matchers/flannbased/matcher_flannbased_load_yaml.cpp
@@ -23,10 +23,14 @@ static ParamsBasePtr createParamsFLANNBASEDMatcher(const std::string & _filename
         Node d_yaml = yaml_params["matcher"];
         if(d_yaml["type"].as<string>() == "FLANNBASED")
         {
-        	params_ptr->match_type	= d_yaml["match type"].as<int>();
-        	params_ptr->roi_width   = d_yaml["roi"]["width"].as<unsigned int>();
-        	params_ptr->roi_height  = d_yaml["roi"]["height"].as<unsigned int>();
-        	params_ptr->min_norm_score = d_yaml["min normalized score"].as<double>();
+            if (d_yaml["match type"])
+                params_ptr->match_type	= d_yaml["match type"].as<int>();
+            if (d_yaml["min normalized score"])
+                params_ptr->min_norm_score = d_yaml["min normalized score"].as<double>();
+        	if (d_yaml["roi"]["width"])
+        	    params_ptr->roi_width   = d_yaml["roi"]["width"].as<unsigned int>();
+        	if (d_yaml["roi"]["height"])
+        	    params_ptr->roi_height  = d_yaml["roi"]["height"].as<unsigned int>();
         }else
         {
             std::cerr << "Bad configuration file. Wrong type " << d_yaml["type"].as<string>() << std::endl;
-- 
GitLab