-// Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#include <Basics_DirUtils.hxx>
#include <Basics_Utils.hxx>
-#include <regex>
#include <cstdlib> // getenv, system
#include <boost/filesystem.hpp>
+#include <boost/regex.hpp>
namespace boofs = boost::filesystem;
#ifdef WIN32
#undef SMESH_CAUGHT
#define SMESH_CAUGHT error =
+constexpr char MESHGEMS_OLD_STYLE[] = "MESHGEMS_OLD_STYLE";
+
namespace
{
bool isURL( LibraryFile & libraryFile )
{
- enum { SCHEME = 2, AUTHORITY = 4, PATH = 5 }; // sub-strings
- std::regex urlRegex ( R"(^(([^:\/?#]+):)?(//([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?)",
- std::regex::extended );
- std::smatch matchResult;
-
- libraryFile._isURL = false;
- if ( std::regex_match( libraryFile._name, matchResult, urlRegex ))
- libraryFile._isURL = ( !matchResult.str( SCHEME ).empty() &&
- !matchResult.str( AUTHORITY ).empty() &&
- !matchResult.str( PATH ).empty() );
-
+ {// round1
+ enum { SCHEME = 2, AUTHORITY = 4, PATH = 5 }; // sub-strings
+ boost::regex urlRegex ( R"(^(([^:\/?#]+):)?(//([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?)",
+ boost::regex::extended );
+ boost::smatch matchResult;
+
+ libraryFile._isURL = false;
+ if ( boost::regex_match( libraryFile._name, matchResult, urlRegex ))
+ libraryFile._isURL = ( !matchResult.str( SCHEME ).empty() &&
+ !matchResult.str( AUTHORITY ).empty() &&
+ !matchResult.str( PATH ).empty() );
+ }
+ if(libraryFile._isURL)
+ return true;
+ {// round2
+ enum { HOST = 2, PORT = 3, PATH = 4 }; // sub-strings
+ boost::regex urlRegex ( R"(^(([^:\/?#]+):)?([^/]+)?(/[^#]*))",
+ boost::regex::extended );
+ boost::smatch matchResult;
+
+ libraryFile._isURL = false;
+ if ( boost::regex_match( libraryFile._name, matchResult, urlRegex ))
+ libraryFile._isURL = ( !matchResult.str( HOST ).empty() &&
+ !matchResult.str( PORT ).empty() &&
+ !matchResult.str( PATH ).empty() );
+ }
return libraryFile._isURL;
}
*/
//================================================================================
- bool SignCAD( void* meshgems_cad, std::string& error )
+ bool SignCAD_After( void* meshgems_cad, std::string& error )
{
LibraryFile libraryFile;
if ( !loadLibrary( error, libraryFile ))
}
return ok;
}
+
+ bool SignCAD( void* meshgems_cad, std::string& error )
+ {
+ const char *meshGemsOldStyleEnvVar( getenv( MESHGEMS_OLD_STYLE ) );
+ if ( !meshGemsOldStyleEnvVar || strlen(meshGemsOldStyleEnvVar) == 0 )
+ return SignCAD_After(meshgems_cad, error);
+ else
+ return true;
+ }
//================================================================================
/*!
*/
//================================================================================
- bool SignMesh( void* meshgems_mesh, std::string& error )
+ bool SignMesh_After( void* meshgems_mesh, std::string& error )
{
LibraryFile libraryFile;
if ( !loadLibrary( error, libraryFile ))
}
return ok;
}
+
+ bool SignMesh( void* meshgems_mesh, std::string& error )
+ {
+ const char *meshGemsOldStyleEnvVar( getenv( MESHGEMS_OLD_STYLE ) );
+ if ( !meshGemsOldStyleEnvVar || strlen(meshGemsOldStyleEnvVar) == 0 )
+ return SignMesh_After(meshgems_mesh, error);
+ else
+ return true;
+ }
//================================================================================
/*!
*/
//================================================================================
- std::string GetKey(const std::string& gmfFile,
- int nbVertex,
- int nbEdge,
- int nbFace,
- int nbVol,
- std::string& error)
+ std::string GetKey_After(const std::string& gmfFile,
+ int nbVertex,
+ int nbEdge,
+ int nbFace,
+ int nbVol,
+ std::string& error)
{
std::string key;
LibraryFile libraryFile;
return key;
}
+ std::string GetKey(const std::string& gmfFile,
+ int nbVertex,
+ int nbEdge,
+ int nbFace,
+ int nbVol,
+ std::string& error)
+ {
+ const char *meshGemsOldStyleEnvVar( getenv( MESHGEMS_OLD_STYLE ) );
+ if ( !meshGemsOldStyleEnvVar || strlen(meshGemsOldStyleEnvVar) == 0 )
+ return GetKey_After(gmfFile,nbVertex,nbEdge,nbFace,nbVol,error);
+ else
+ return std::string("0");
+ }
+
//================================================================================
/*!
* \brief Return false if libMeshGemsKeyGenerator.so is not functional