]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
CCAR: change the datastream types management (use string now as the dataflow types)
authorcaremoli <caremoli>
Mon, 28 Jan 2008 09:42:56 +0000 (09:42 +0000)
committercaremoli <caremoli>
Mon, 28 Jan 2008 09:42:56 +0000 (09:42 +0000)
change the implementation type management (use an enum now : either SO, PY or EXE)
and adds an implementation name that will be used with EXE implementation type as
the executable name

src/ModuleCatalog/SALOME_ModuleCatalog_Acomponent_impl.cxx
src/ModuleCatalog/SALOME_ModuleCatalog_Acomponent_impl.hxx
src/ModuleCatalog/SALOME_ModuleCatalog_Handler.cxx
src/ModuleCatalog/SALOME_ModuleCatalog_Handler.hxx
src/ModuleCatalog/SALOME_ModuleCatalog_Parser.hxx
src/ModuleCatalog/SALOME_ModuleCatalog_impl.cxx
src/ModuleCatalog/SALOME_ModuleCatalog_impl.hxx

index 2e9b3160dc6f7151a7d79c3c51f36a384d105990..3208d6e8965bd744d6b34fee98b7e492e6f0dbc7 100644 (file)
@@ -413,13 +413,22 @@ CORBA::Boolean SALOME_ModuleCatalog_AcomponentImpl::multistudy()
 
 //----------------------------------------------------------------------
 // Function : implementation type
-// Purpose  : define if a component is implemented in C++ or Python
+// Purpose  : return the implementation type :  C++ (dyn lib), Python (module) or executable
 //----------------------------------------------------------------------
-CORBA::Boolean SALOME_ModuleCatalog_AcomponentImpl::implementation_type()
+SALOME_ModuleCatalog::ImplType SALOME_ModuleCatalog_AcomponentImpl::implementation_type()
 {
   return _Component.implementationType ;
 }
 
+//----------------------------------------------------------------------
+// Function : implementation name
+// Purpose  : return the implementation name to exec if the default one is not convenient
+//----------------------------------------------------------------------
+char* SALOME_ModuleCatalog_AcomponentImpl::implementation_name()
+{
+  return _Component.implname ;
+}
+
 //----------------------------------------------------------------------
 // Function : component_type
 // Purpose  : define the type of the component
index 943d5d02e2237ceb94e112264cc8c7caa0cb5c48..e693d70f40c5d23e933c8e87d39a9e1d43b3b2dd 100644 (file)
@@ -135,11 +135,17 @@ public:
   */
   virtual char* component_icone();
 
-  //! method to define if a component is implemented in C++ or Python
+  //! method to define if a component is implemented in a dyn lib a python module or an executable
   /*!
-    \return true if it's a C++ component 
+    \return an enum SO or PY or EXE
   */
-  virtual CORBA::Boolean implementation_type();
+  virtual SALOME_ModuleCatalog::ImplType implementation_type();
+
+  //! method to obtain the implementation name of the component if the default one is not convenient
+  /*!
+    \return the implementation name to exec
+  */
+  virtual char* implementation_name();
 
 private :
 
index 97c257dedf538bf1161d02e5711b3d283886c7a8..bf3e999521fdcbc694f82826d46f49bdd80fc62e 100644 (file)
@@ -68,6 +68,7 @@ SALOME_ModuleCatalog_Handler::SALOME_ModuleCatalog_Handler(ParserPathPrefixes& p
   test_component_multistudy = "component-multistudy";
   test_component_icon       = "component-icone" ;
   test_component_impltype   = "component-impltype";
+  test_component_implname   = "component-implname";
   test_component_version    = "component-version";
   test_component_comment    = "component-comment";
 
@@ -481,7 +482,11 @@ void SALOME_ModuleCatalog_Handler::ProcessXmlDocument(xmlDocPtr theDoc)
 
           // Tag test_component_impltype
           if ( !xmlStrcmp(aComponentSubNode->name, (const xmlChar*)test_component_impltype) )
-            _aModule.implementationType = atoi(aContent.c_str());
+            _aModule.implementationType = aContent;
+
+          // Tag test_component_implname
+          if ( !xmlStrcmp(aComponentSubNode->name, (const xmlChar*)test_component_implname) )
+            _aModule.implementationName = aContent;
 
           // Tag test_component_icon
           if ( !xmlStrcmp(aComponentSubNode->name, (const xmlChar*)test_component_icon) )
index 22f7c416af191ca84c653252947ec887a9848d80..50758d6a6e4cef3d8fa676eff6ff28cf7aa1a56d 100644 (file)
@@ -64,6 +64,7 @@ private:
   const char *test_component_multistudy ;
   const char *test_component_icon ;
   const char *test_component_impltype;
+  const char *test_component_implname;
   const char *test_component_version;
   const char *test_component_comment;
   
index 8369f99177c6934a68a3d418e5e7930604b791d6..4a330bf9d34286d4be9260c356fc9105a35072e8 100644 (file)
@@ -96,7 +96,8 @@ struct ParserComponent
   std::string         constraint;
   ParserInterfaces    interfaces;
   ParserPathPrefixes  prefixes;
-  bool                implementationType;
+  std::string         implementationType;
+  std::string         implementationName;
   std::string         version;
   std::string         comment;
 };
index e794b05a5a7350d86042fff8bcc125cd568cbd5a..5e3760e222fd0038923cc3a56c84fe2edf51fdb9 100644 (file)
@@ -96,20 +96,7 @@ SALOME_ModuleCatalogImpl::SALOME_ModuleCatalogImpl(int argc, char** argv, CORBA:
   ComponentTypeConvert[OTHER]
     = SALOME_ModuleCatalog::OTHER;
 
-  // Conversion rules for datastream parameters type and dependency
-  DataStreamTypeConvert["UNKNOWN"] 
-    = SALOME_ModuleCatalog::DATASTREAM_UNKNOWN;
-  DataStreamTypeConvert["INTEGER"] 
-    = SALOME_ModuleCatalog::DATASTREAM_INTEGER;
-  DataStreamTypeConvert["FLOAT"]   
-    = SALOME_ModuleCatalog::DATASTREAM_FLOAT;
-  DataStreamTypeConvert["DOUBLE"]  
-    = SALOME_ModuleCatalog::DATASTREAM_DOUBLE;
-  DataStreamTypeConvert["STRING"]  
-    = SALOME_ModuleCatalog::DATASTREAM_STRING;
-  DataStreamTypeConvert["BOOLEAN"] 
-    = SALOME_ModuleCatalog::DATASTREAM_BOOLEAN;
-
+  // Conversion rules for datastream parameters dependency
   DataStreamDepConvert["UNDEFINED"] 
     = SALOME_ModuleCatalog::DATASTREAM_UNDEFINED;
   DataStreamDepConvert["T"]
@@ -759,7 +746,13 @@ void SALOME_ModuleCatalogImpl::duplicate
   C_corba.multistudy = C_parser.multistudy;
   C_corba.icon = CORBA::string_dup(C_parser.icon.c_str());
   C_corba.type = ComponentTypeConvert[C_parser.type];
-  C_corba.implementationType = C_parser.implementationType;
+  if(C_parser.implementationType == "EXE")
+    C_corba.implementationType=SALOME_ModuleCatalog::EXE;
+  else if(C_parser.implementationType == "PY")
+    C_corba.implementationType=SALOME_ModuleCatalog::PY;
+  else
+    C_corba.implementationType=SALOME_ModuleCatalog::SO;
+  C_corba.implname = CORBA::string_dup(C_parser.implementationName.c_str());
 
   unsigned int _length = C_parser.interfaces.size();
   C_corba.interfaces.length(_length);
@@ -880,32 +873,12 @@ void SALOME_ModuleCatalogImpl::duplicate
 (SALOME_ModuleCatalog::ServicesDataStreamParameter & P_corba,
  const ParserDataStreamParameter & P_parser)
 {
-  std::map < std::string, 
-    SALOME_ModuleCatalog::DataStreamType >::const_iterator it_type;
-
   std::map < std::string, 
     SALOME_ModuleCatalog::DataStreamDependency >::const_iterator it_dep;
 
   // duplicate parameter name
   P_corba.Parametername = CORBA::string_dup(P_parser.name.c_str());
   
-  // doesn't work ??? 
-  //   it_type = DataStreamTypeConvert.find(P_parser.type);
-  //   P_corba.Parametertype
-  //     = (it_type == DataStreamTypeConvert.end()) 
-  //     ? it_type->second : SALOME_ModuleCatalog::DATASTREAM_UNKNOWN;
-
-  if(MYDEBUG) SCRUTE(P_parser.type);
-  P_corba.Parametertype = SALOME_ModuleCatalog::DATASTREAM_UNKNOWN;
-  for (it_type = DataStreamTypeConvert.begin(); 
-       it_type != DataStreamTypeConvert.end(); 
-       it_type++)
-    if (P_parser.type.compare(it_type->first) == 0) {
-      P_corba.Parametertype = it_type->second;
-      break;
-    }
-  if(MYDEBUG) SCRUTE(P_corba.Parametertype);
-
   // duplicate parameter type
 
   // doesn't work ??? 
@@ -913,6 +886,10 @@ void SALOME_ModuleCatalogImpl::duplicate
   //   P_corba.Parametertype
   //     = (it_type == DataStreamTypeConvert.end()) 
   //     ? it_type->second : SALOME_ModuleCatalog::DATASTREAM_UNKNOWN;
+
+  P_corba.Parametertype = CORBA::string_dup(P_parser.type.c_str());
+
+  // duplicate parameter dependency
   
   if(MYDEBUG) SCRUTE(P_parser.dependency);
   P_corba.Parameterdependency = SALOME_ModuleCatalog::DATASTREAM_UNDEFINED;
index fc4d269feb95f8dd3e596f3b63bbdf1fe2893228..40650ac9f751a2d0312a2de570b0dbe7ff638855 100644 (file)
@@ -217,9 +217,6 @@ private:
   ParserComponents    _personal_module_list ;
   ParserPathPrefixes  _personal_path_list ; 
 
-  std::map <std::string, SALOME_ModuleCatalog::DataStreamType> 
-  DataStreamTypeConvert;
-
   std::map <std::string, SALOME_ModuleCatalog::DataStreamDependency> 
   DataStreamDepConvert;