From 483c73630a82fe8fbe9fe74cc8bbdd23a13d8b6b Mon Sep 17 00:00:00 2001
From: gcontini <1121667+gcontini@users.noreply.github.com>
Date: 周六, 15 2月 2020 23:49:50 +0800
Subject: [PATCH] pc identifiers work

---
 src/library/locate/LocatorFactory.cpp |   45 +++++++++++++++++++--------------------------
 1 files changed, 19 insertions(+), 26 deletions(-)

diff --git a/src/library/locate/LocatorFactory.cpp b/src/library/locate/LocatorFactory.cpp
index be9cd67..c60d4d5 100644
--- a/src/library/locate/LocatorFactory.cpp
+++ b/src/library/locate/LocatorFactory.cpp
@@ -5,44 +5,37 @@
  *      Author: Gabriele Contini
  */
 
-#include "build_properties.h"
-
 #include "LocatorStrategy.hpp"
 #include "LocatorFactory.hpp"
 #include "ApplicationFolder.hpp"
-//#include "EnvironmentVarData.hpp"
+#include "EnvironmentVarData.hpp"
 #include "EnvironmentVarLocation.hpp"
 #include "ExternalDefinition.hpp"
 
 namespace license {
 namespace locate {
+static std::vector<std::unique_ptr<LocatorStrategy>> extra_strategies;
 
-using namespace std;
-
-FUNCTION_RETURN LocatorFactory::getActiveStrategies(
-		vector<unique_ptr<LocatorStrategy>> &strategies,
-		const char *locationHint) {
-#if(FIND_LICENSE_NEAR_MODULE)
-	strategies.push_back(
-			unique_ptr<LocatorStrategy>(
-					(LocatorStrategy*) new ApplicationFolder()));
-#endif
-#if(FIND_LICENSE_WITH_ENV_VAR)
-	strategies.push_back(
-			unique_ptr<LocatorStrategy>(
-					(LocatorStrategy*) new EnvironmentVarLocation()));
-//	strategies.push_back(
-//			unique_ptr<LocatorStrategy>(
-//					(LocatorStrategy*) new EnvironmentVarData()));
-#endif
+bool LocatorFactory::find_license_near_moduleb = FIND_LICENSE_NEAR_MODULE;
+bool LocatorFactory::find_license_with_env_varb = FIND_LICENSE_WITH_ENV_VAR;
+FUNCTION_RETURN LocatorFactory::get_active_strategies(std::vector<std::unique_ptr<LocatorStrategy>> &strategies,
+													  const LicenseLocation *locationHint) {
+	if (find_license_near_moduleb) {
+		strategies.push_back(
+			std::unique_ptr<LocatorStrategy>(dynamic_cast<LocatorStrategy *>(new ApplicationFolder())));
+	}
+	if (find_license_with_env_varb) {
+		strategies.push_back(
+			std::unique_ptr<LocatorStrategy>(dynamic_cast<LocatorStrategy *>(new EnvironmentVarLocation())));
+		strategies.push_back(
+			std::unique_ptr<LocatorStrategy>(dynamic_cast<LocatorStrategy *>(new EnvironmentVarData())));
+	}
 	if (locationHint != nullptr) {
 		strategies.push_back(
-				unique_ptr<LocatorStrategy>(
-						(LocatorStrategy*) new ExternalDefinition(locationHint)));
+			std::unique_ptr<LocatorStrategy>(dynamic_cast<LocatorStrategy *>(new ExternalDefinition(locationHint))));
 	}
 	return strategies.size() > 0 ? FUNC_RET_OK : FUNC_RET_NOT_AVAIL;
-
 }
 
-}
-}
+}  // namespace locate
+}  // namespace license

--
Gitblit v1.9.1