Salome HOME
ENV: Windows porting.
authorenv <env@opencascade.com>
Wed, 13 Jul 2005 07:10:09 +0000 (07:10 +0000)
committerenv <env@opencascade.com>
Wed, 13 Jul 2005 07:10:09 +0000 (07:10 +0000)
38 files changed:
src/DataTypeCatalog/SALOME_DataTypeCatalog_impl.cxx
src/GenericObj/SALOME_GenericObj_i.cc
src/Logger/SALOME_Logger_Server.cxx
src/Logger/SALOME_Trace.cxx
src/ModuleCatalog/SALOME_ModuleCatalog_Acomponent_impl.cxx
src/ModuleCatalog/SALOME_ModuleCatalog_impl.cxx
src/NamingService/NamingService_WaitForServerReadiness.cxx
src/NamingService/SALOME_NamingService.cxx
src/NamingService/SALOME_NamingService.hxx
src/Notification/NOTIFICATION.hxx
src/Notification/NOTIFICATION_Consumer.hxx
src/Notification/NOTIFICATION_Supplier.hxx
src/Registry/RegistryConnexion.cxx
src/Registry/RegistryConnexion.hxx
src/Registry/RegistryService.cxx
src/ResourcesManager/SALOME_LoadRateManager.hxx
src/ResourcesManager/SALOME_ResourcesManager.cxx
src/ResourcesManager/SALOME_ResourcesManager.hxx
src/RessourcesCatalog/SALOME_RessourcesCatalog_impl.cxx
src/SALOMELocalTrace/LocalTraceBufferPool.hxx
src/SALOMELocalTrace/LocalTraceCollector.cxx
src/SALOMELocalTrace/LocalTraceCollector.hxx
src/SALOMELocalTrace/utilities.h
src/SALOMETraceCollector/SALOMETraceCollector.cxx
src/SALOMETraceCollector/SALOMETraceCollector.hxx
src/SALOMETraceCollector/TraceCollector_WaitForServerReadiness.cxx
src/Utils/OpUtil.hxx
src/Utils/Utils_CommException.hxx
src/Utils/Utils_DESTRUCTEUR_GENERIQUE.cxx
src/Utils/Utils_Identity.cxx
src/Utils/Utils_Identity.hxx
src/Utils/Utils_Mutex.cxx
src/Utils/Utils_Mutex.hxx
src/Utils/Utils_ORB_INIT.hxx
src/Utils/Utils_SALOME_Exception.cxx
src/Utils/Utils_SALOME_Exception.hxx
src/Utils/Utils_SignalsHandler.h
src/Utils/duplicate.cxx

index cb5337e674b5090a4889c827a797b73f908ebf08..13f3584f2fb97bb1ede4df71ae32562d861f144c 100644 (file)
@@ -310,7 +310,11 @@ SALOME_DataTypeCatalogImpl::_verify_data_type(ListOfParserDataType datatypelist)
 
    // Parse if parents data type name of a data type are defined in the 
    // datatype catalog
+#ifndef WNT
   for (unsigned int ind = 0; ind < _datatype_list.size(); ind++)
+#else
+  for (ind = 0; ind < _datatype_list.size(); ind++)
+#endif
     {
       // Scrute data type parents
       // MESSAGE("Treatment of " << _datatype_list[ind].Parserdata_name);
index e5281e72b77a5fb4d4a210b9bdad789df3e660b8..90b7ac39f1bca1704be18f7595823ad81bab033c 100644 (file)
@@ -41,7 +41,11 @@ GenericObj_i::GenericObj_i(PortableServer::POA_ptr thePOA): myRefCounter(1){
     MESSAGE("GenericObj_i::GenericObj_i() - this = "<<this<<
            "; CORBA::is_nil(thePOA) = "<<CORBA::is_nil(thePOA));
   if(CORBA::is_nil(thePOA))
+#ifndef WNT
     myPOA = PortableServer::RefCountServantBase::_default_POA();
+#else
+    myPOA = RefCountServantBase::_default_POA();
+#endif
   else
     myPOA = PortableServer::POA::_duplicate(thePOA);
 }
index 708a93f516a60a23e4e3d134c8e644e7240dea39..58685ea6af7047bf327206a2c2b30bf4b2bd095c 100644 (file)
 #ifndef __WIN32__
 # include <unistd.h>
 #endif
+
+#ifdef WNT
+#include <omnithread/pthread_nt.h>
+#endif
+
 omni_mutex Logger::myLock;
 
 /////////////////////////////////////////////////////////////////////
@@ -46,7 +51,11 @@ void Logger::putMessage(const char* message)
 {
   myLock.lock();
   if (m_putIntoFile)
-    m_outputFile << message << std::flush;
+#ifndef WNT
+       m_outputFile << message << std::flush;
+#else
+       m_outputFile << message << flush;
+#endif
   else
     std::cout << message;
   myLock.unlock();
@@ -84,7 +93,11 @@ int main(int argc, char **argv)
 
       for (i = 1; i <= NumberOfTries; i++) 
          {
+#ifndef WNT
                  if (i != 1) nanosleep(&ts_req, &ts_rem);
+#else
+                 if (i != 1) Sleep(TIMESleep / 1000000);
+#endif
                  try 
                  {
                          obj = orb->resolve_initial_references("RootPOA") ;
@@ -154,4 +167,5 @@ int main(int argc, char **argv)
     {
       std::cerr << "Caught unknown exception." << std::endl;
     }
+  return 0;
 }
index 705f066bdb1eae055bf46ab0953b06670e552cb4..1bdf1d73706ac900e38d5bc0e7189b5370e4dc0d 100644 (file)
 #include <iostream>
 using namespace std;
 
+#ifdef WNT
+#include <omnithread/pthread_nt.h>
+#endif
+
 //////////////////////////////////////////////////////////////////////
 // Construction/Destruction
 //////////////////////////////////////////////////////////////////////
@@ -53,7 +57,11 @@ int SALOME_Trace::Initialize(CORBA::ORB_ptr theOrb) {
 
   // searchin for naming service for 0.25*40=10 seconds
   for (i = 1; i <= NumberOfTries; i++) {
+#ifndef WNT
     if (i != 1) nanosleep(&ts_req,&ts_rem);
+#else
+       if (i != 1) Sleep(TIMESleep / 1000000);
+#endif
     try{ 
       if(CORBA::is_nil(obj))
        obj = theOrb->resolve_initial_references("RootPOA");
@@ -84,7 +92,11 @@ int SALOME_Trace::Initialize(CORBA::ORB_ptr theOrb) {
     name[0].id=CORBA::string_dup("Logger");    
     
     for(i = 1; i <= NumberOfTries; i++){
+#ifndef WNT
       if (i != 1) nanosleep(&ts_req, &ts_rem);
+#else
+         if (i != 1) Sleep(TIMESleep / 1000000);
+#endif
       try {
        obj = inc->resolve(name);
        if (!CORBA::is_nil(obj)) m_pInterfaceLogger = SALOME_Logger::Logger::_narrow(obj);
index ad1c341694a121db358bf5b88dec0dd8580e8f2e..228c4953809ec02110c02b1cd00490e33bf9a95f 100644 (file)
@@ -493,16 +493,24 @@ void SALOME_ModuleCatalog_AcomponentImpl::duplicate
   // duplicate out Parameters
   _length = S_in.ServiceoutParameter.length();
   S_out.ServiceoutParameter.length(_length);
-  
+
+#ifndef WNT  
   for (unsigned int ind2 = 0; ind2 < _length ; ind2 ++)
+#else
+  for (ind2 = 0; ind2 < _length ; ind2 ++)
+#endif
     duplicate(S_out.ServiceoutParameter[ind2],
              S_in.ServiceoutParameter[ind2]);
   
   // duplicate in DataStreamParameters
   _length = S_in.ServiceinDataStreamParameter.length();
   S_out.ServiceinDataStreamParameter.length(_length);
-  
+
+#ifndef WNT
   for (unsigned int ind2 = 0; ind2 < _length ; ind2 ++)
+#else
+  for (ind2 = 0; ind2 < _length ; ind2 ++)
+#endif
     duplicate(S_out.ServiceinDataStreamParameter[ind2],
              S_in.ServiceinDataStreamParameter[ind2]);
   
@@ -511,7 +519,11 @@ void SALOME_ModuleCatalog_AcomponentImpl::duplicate
   if(MYDEBUG) SCRUTE(_length);
   S_out.ServiceoutDataStreamParameter.length(_length);
   
+#ifndef WNT
   for (unsigned int ind2 = 0; ind2 < _length ; ind2 ++)
+#else
+  for (ind2 = 0; ind2 < _length ; ind2 ++)
+#endif
     duplicate(S_out.ServiceoutDataStreamParameter[ind2],
              S_in.ServiceoutDataStreamParameter[ind2]);
 }
index 845e341dcda6f62634e35b2b1331cb52710ff745..0c63992f076e6613cd708939e9d9bbdc7e75be86 100644 (file)
@@ -251,7 +251,11 @@ SALOME_ModuleCatalogImpl::GetComponentList()
   
   // The components in the general catalog are taken only if they're
   // not defined in the personal catalog
+#ifndef WNT
   for(unsigned int ind=0; ind < _general_module_list.size();ind++){
+#else
+  for(ind=0; ind < _general_module_list.size();ind++){
+#endif
     _find = false;
     for(unsigned int ind1=0; ind1 < _personal_module_list.size();ind1++){
       // searching if the component is already defined in 
@@ -312,7 +316,11 @@ SALOME_ModuleCatalogImpl::GetComponentIconeList()
   
   // The components in the general catalog are taken only if they're
   // not defined in the personal catalog
+#ifndef WNT
   for(unsigned int ind=0; ind < _general_module_list.size();ind++){
+#else
+  for(ind=0; ind < _general_module_list.size();ind++){
+#endif
     _find = false;
     for(unsigned int ind1=0; ind1 < _personal_module_list.size();ind1++){
       // searching if the component is aleready defined in 
@@ -403,7 +411,11 @@ SALOME_ModuleCatalogImpl::GetTypedComponentList(SALOME_ModuleCatalog::ComponentT
   
   // The components in the general catalog are taken only if they're
   // not defined in the personal catalog
+#ifndef WNT
   for (unsigned int ind=0; ind < _general_module_list.size();ind++)
+#else
+  for (ind=0; ind < _general_module_list.size();ind++)
+#endif
     {
       _find = false;
 
@@ -662,16 +674,24 @@ void SALOME_ModuleCatalogImpl::duplicate
   // duplicate out Parameters
   _length = S_parser.outParameters.size();
   S_corba.ServiceoutParameter.length(_length);
-  
+
+#ifndef WNT
   for (unsigned int ind2 = 0; ind2 < _length ; ind2 ++)
+#else
+  for (ind2 = 0; ind2 < _length ; ind2 ++)
+#endif
     duplicate(S_corba.ServiceoutParameter[ind2],
              S_parser.outParameters[ind2]);
   
   // duplicate in DataStreamParameters
   _length = S_parser.inDataStreamParameters.size();
   S_corba.ServiceinDataStreamParameter.length(_length);
-  
+
+#ifndef WNT
   for (unsigned int ind2 = 0; ind2 < _length ; ind2 ++)
+#else
+  for (ind2 = 0; ind2 < _length ; ind2 ++)
+#endif
     duplicate(S_corba.ServiceinDataStreamParameter[ind2],
              S_parser.inDataStreamParameters[ind2]);
   
@@ -679,8 +699,12 @@ void SALOME_ModuleCatalogImpl::duplicate
   _length = S_parser.outDataStreamParameters.size();
   if(MYDEBUG) SCRUTE(_length);
   S_corba.ServiceoutDataStreamParameter.length(_length);
-  
+
+#ifndef WNT
   for (unsigned int ind2 = 0; ind2 < _length ; ind2 ++)
+#else
+  for (ind2 = 0; ind2 < _length ; ind2 ++)
+#endif
     duplicate(S_corba.ServiceoutDataStreamParameter[ind2],
              S_parser.outDataStreamParameters[ind2]);
 }
@@ -790,7 +814,11 @@ SALOME_ModuleCatalogImpl::_verify_path_prefix(ParserPathPrefixes & pathList)
     }
 
   // Parse if a computer name is twice in the list of computers
+#ifndef WNT
   for (unsigned int ind = 0; ind < _machine_list.size(); ind++)
+#else
+  for (ind = 0; ind < _machine_list.size(); ind++)
+#endif
     {
      for (unsigned int ind1 = ind+1 ; ind1 < _machine_list.size(); ind1++)
        {
index 6108b2dc31961f228ac11b0a027af3ac47bdb1c9..6b150367084f6124f46cab86e529f1d599e6f078 100644 (file)
@@ -79,13 +79,21 @@ void NamingService_WaitForServerReadiness(SALOME_NamingService* NS,
                  break; // server found, no more try to do
                }
              MESSAGE("Server "<< serverName <<" not yet ready, waiting...");
+#ifndef WNT
              int a = nanosleep(&ts_req,&ts_rem); // wait before retry
+#else
+                 Sleep(TIMESleep/1000000);
+#endif
            }
        }
       catch( ServiceUnreachable& )
        {
          MESSAGE("CORBA::COMM_FAILURE: Naming Service not yet ready, waiting...");
+#ifndef WNT
          int a = nanosleep(&ts_req,&ts_rem); // wait before retry
+#else
+         Sleep(TIMESleep/1000000);
+#endif
        }
     }
   if (!found)
index f39bb93e10fd78eec59a1ad86a148e19ca442a36..0a4af7c3cc884ba598d6cba95c301924b87d6883 100644 (file)
@@ -702,7 +702,11 @@ char* SALOME_NamingService::Current_Directory()
   char* return_Path = new char[length_path +2];
   return_Path[0] = '/' ;
   return_Path[1] = '\0' ;
+#ifndef WNT
   for (int k = 0 ; k <i ;k++) 
+#else
+  for (k = 0 ; k <i ;k++) 
+#endif
     { 
       //SCRUTE(result_path[k])
        strcat(return_Path,result_path[k]);
index 1f32054983cbc9f9a70413852b4590986bbb55cb..8fb27f025589ca7cc490be66bb4f0a8b66b28bda 100644 (file)
 //class ServiceUnreachable;
 #include "ServiceUnreachable.hxx"
 
-class SALOME_NamingService
+#if defined NAMINGSERVICE_EXPORTS
+#if defined WIN32
+#define NAMINGSERVICE_EXPORT __declspec( dllexport )
+#else
+#define NAMINGSERVICE_EXPORT
+#endif
+#else
+#if defined WNT
+#define NAMINGSERVICE_EXPORT __declspec( dllimport )
+#else
+#define NAMINGSERVICE_EXPORT
+#endif
+#endif
+
+class NAMINGSERVICE_EXPORT SALOME_NamingService
 {
 public:
   //! default constructor
index 4e8a08e069a6e3ea7818e15291b0b48a38d03cd7..3bc49294b28e9be4cc469233d7056362b01f2ff8 100644 (file)
 #include "NOTIFICATION_Supplier.hxx"
 #include "NOTIFICATION_Consumer.hxx"
 
-char* NOTIFICATION_date();
-CosNA_EventChannel_ptr NOTIFICATION_channel();
+
+#if defined NOTIFICATION_EXPORTS
+#if defined WIN32
+#define NOTIFICATION_EXPORT __declspec( dllexport )
+#else
+#define NOTIFICATION_EXPORT
+#endif
+#else
+#if defined WNT
+#define NOTIFICATION_EXPORT __declspec( dllimport )
+#else
+#define NOTIFICATION_EXPORT
+#endif
+#endif
+
+NOTIFICATION_EXPORT char* NOTIFICATION_date();
+NOTIFICATION_EXPORT CosNA_EventChannel_ptr NOTIFICATION_channel();
 
 #endif
index 26470597c0bb4611936d0b3c88e1a168745ba8ef..653fca33f7877317460a2f9b8d2e58c702b274ec 100644 (file)
 #ifndef NOTIFICATION_Consumer_HXX
 #define NOTIFICATION_Consumer_HXX
 
-class NOTIFICATION_Consumer: public POA_CosNotifyComm::StructuredPullConsumer {
+#if defined NOTIFICATION_EXPORTS
+#if defined WIN32
+#define NOTIFICATION_EXPORT __declspec( dllexport )
+#else
+#define NOTIFICATION_EXPORT
+#endif
+#else
+#if defined WNT
+#define NOTIFICATION_EXPORT __declspec( dllimport )
+#else
+#define NOTIFICATION_EXPORT
+#endif
+#endif
+
+class NOTIFICATION_EXPORT NOTIFICATION_Consumer: public POA_CosNotifyComm::StructuredPullConsumer {
   public:
     NOTIFICATION_Consumer();
     virtual ~NOTIFICATION_Consumer();
index 77f44d07bcfdb03d49e6a3aaf0b335cfdede9e64..0f7070226ebc7d2256daf194356c062806a55e8c 100644 (file)
 #ifndef NOTIFICATION_Supplier_HXX
 #define NOTIFICATION_Supplier_HXX
 
-class NOTIFICATION_Supplier: public POA_CosNotifyComm::StructuredPushSupplier {
+#if defined NOTIFICATION_EXPORTS
+#if defined WIN32
+#define NOTIFICATION_EXPORT __declspec( dllexport )
+#else
+#define NOTIFICATION_EXPORT
+#endif
+#else
+#if defined WNT
+#define NOTIFICATION_EXPORT __declspec( dllimport )
+#else
+#define NOTIFICATION_EXPORT
+#endif
+#endif
+
+class NOTIFICATION_EXPORT NOTIFICATION_Supplier: public POA_CosNotifyComm::StructuredPushSupplier {
   public:
     NOTIFICATION_Supplier(const char* instanceName, bool notif);
     virtual ~NOTIFICATION_Supplier();
index bf33e0882160df3254002ade8f6ce16a170cc1f9..de079550f02b23089ff8bb595921d38a9f839fa4 100644 (file)
@@ -98,7 +98,11 @@ RegistryConnexion::~RegistryConnexion()
                _VarComponents->remove( _Id ) ;
        }
        _Id   = 0 ;
+#ifndef WNT
        delete [] _Ior;
+#else
+       delete [] (char*) _Ior;
+#endif
        _Ior = 0;
        _SessionName = "";
        _Name = "" ;
@@ -121,7 +125,7 @@ void RegistryConnexion::add( const char *aName )
                infos.pid       = lesInfos.pid() ;
                infos.machine   = CORBA::string_dup( lesInfos.host_char() ) ;
                infos.adip      = CORBA::string_dup( lesInfos.adip() ) ;
-               infos.uid       = lesInfos.uid() ;
+               infos.uid       = (long)lesInfos.uid() ;
                infos.pwname    = CORBA::string_dup( lesInfos.pwname() ) ;
                infos.tc_start  = lesInfos.start() ;
                infos.tc_hello  = 0 ;
index 5b945cd41ae6aa77674087e02c0cadbf2ee0ab80..c241618ef8730cd152a29be6bd425bbfae5469f9 100644 (file)
 #include CORBA_CLIENT_HEADER(SALOME_Registry)
 #include <string>
 
-class RegistryConnexion
+#if defined REGISTRY_EXPORTS
+#if defined WIN32
+#define REGISTRY_EXPORT __declspec( dllexport )
+#else
+#define REGISTRY_EXPORT
+#endif
+#else
+#if defined WNT
+#define REGISTRY_EXPORT __declspec( dllimport )
+#else
+#define REGISTRY_EXPORT
+#endif
+#endif
+
+class REGISTRY_EXPORT RegistryConnexion
 {
 protected :
        const char*                     _Ior            ; // engine ior
index 8aed1d77fe959abf52e7056c2226a024bb4b9e75..0992377c3c7d92a8f57e41b7dc9830fa769fce17 100644 (file)
@@ -35,7 +35,9 @@ extern "C"
 # include <time.h>
 }
 
+#ifndef WNT
 #include <unistd.h>
+#endif
 using namespace std;
 
 /* ------------------------------*/
@@ -70,7 +72,11 @@ RegistryService::~RegistryService()
        _Compteur = -1 ;
        if ( _SessionName )
        {
+#ifndef WNT
                delete [] _SessionName ;
+#else
+               delete [] (char*)_SessionName ;
+#endif
                _SessionName = 0 ;
        }
        END_OF("RegistryService::~RegistryService()") ;
index 9a5d984416b4c07c06633c30a797077e2f989ff6..ab45f35c1e4615894c3fb32ebc902e400175c584 100644 (file)
@@ -5,7 +5,22 @@
 #include CORBA_CLIENT_HEADER(SALOME_ContainerManager)
 #include <string>
 
-class SALOME_LoadRateManager
+
+#if defined RESOURCESMANAGER_EXPORTS
+#if defined WIN32
+#define RESOURCESMANAGER_EXPORT __declspec( dllexport )
+#else
+#define RESOURCESMANAGER_EXPORT
+#endif
+#else
+#if defined WNT
+#define RESOURCESMANAGER_EXPORT __declspec( dllimport )
+#else
+#define RESOURCESMANAGER_EXPORT
+#endif
+#endif
+
+class RESOURCESMANAGER_EXPORT SALOME_LoadRateManager
 {
 public:
   std::string FindBest(const Engines::MachineList& hosts);
index 244bd96ff2c32242e68ceab7d41f19e813193529..388cc49875a3b07ba207af911db0c3cb753837e8 100644 (file)
@@ -6,7 +6,12 @@
 #include <qdom.h>
 
 #include <stdlib.h>
+#ifndef WNT
 #include <unistd.h>
+#else
+#include <io.h>
+#include <process.h>
+#endif
 #include <fstream>
 #include <iostream>
 #include <string.h>
@@ -176,6 +181,26 @@ string SALOME_ResourcesManager::FindBest(const Engines::MachineList& listOfMachi
   return _dynamicResourcesSelecter.FindBest(listOfMachines);
 }
 
+bool Engines_Container_i::isPythonContainer(const char* ContainerName)
+{
+  bool ret=false;
+  int len=strlen(ContainerName);
+  if(len>=2)
+    if(strcmp(ContainerName+len-2,"Py")==0)
+      ret=true;
+  return ret;
+}
+
+bool isPythonContainer(const char* ContainerName)
+{
+  bool ret=false;
+  int len=strlen(ContainerName);
+  if(len>=2)
+    if(strcmp(ContainerName+len-2,"Py")==0)
+      ret=true;
+  return ret;
+}
+
 string SALOME_ResourcesManager::BuildTempFileToLaunchRemoteContainer(const string& machine,const char *containerName)
 {
   _TmpFileName=BuildTemporaryFileName();
@@ -198,7 +223,7 @@ string SALOME_ResourcesManager::BuildTempFileToLaunchRemoteContainer(const strin
   tempOutputFile << "source " << resInfo.PreReqFilePath << endl;
   // ! env vars
   tempOutputFile << (*(resInfo.ModulesPath.find("KERNEL"))).second << "/bin/salome/";
-  if(Engines_Container_i::isPythonContainer(containerName))
+  if(isPythonContainer(containerName))
     tempOutputFile << "SALOME_ContainerPy.py ";
   else
     tempOutputFile << "SALOME_Container ";
@@ -374,7 +399,13 @@ string SALOME_ResourcesManager::BuildTemporaryFileName() const
   char *temp=new char[19];
   strcpy(temp,"/tmp/command");
   strcat(temp,"XXXXXX");
+#ifndef WNT
   mkstemp(temp);
+#else
+  char aPID[80];
+  itoa(getpid(), aPID, 10);
+  strcat(temp,aPID);
+#endif
   string command(temp);
   delete [] temp;
   command += ".sh";
index c0b6ef38530492a15d9dcd5a6e33e1921cbc99d4..c62c86e70221d6f827087fd978dbf9d956620255 100644 (file)
 #include <fstream>
 #include <vector>
 
+
+
+#if defined RESOURCESMANAGER_EXPORTS
+#if defined WIN32
+#define RESOURCESMANAGER_EXPORT __declspec( dllexport )
+#else
+#define RESOURCESMANAGER_EXPORT
+#endif
+#else
+#if defined WNT
+#define RESOURCESMANAGER_EXPORT __declspec( dllimport )
+#else
+#define RESOURCESMANAGER_EXPORT
+#endif
+#endif
+
 //WARNING the call of BuildTempFileToLaunchRemoteContainer and RmTmpFile must be done in a critical section to be sure to be clean.
 //Only one thread should use the SALOME_ResourcesManager class in a SALOME session.
 
-class SALOME_ResourcesManager
+class RESOURCESMANAGER_EXPORT SALOME_ResourcesManager
 {
 public:
   //! standard constructor
index 5a1d7bed46ee04fbc42b4bbd637fbab15093ea05..28be74c37b7fa47b02478effbd7504802e004666 100644 (file)
@@ -227,7 +227,11 @@ SALOME_RessourcesCatalogImpl::_verify_ressources(ListOfParserressources ressourc
           _machine_list.push_back(ressourceslist[ind].Parsername);   
 
   // Parse if a computer name is twice in the list of computers
+#ifndef WNT
   for (unsigned int ind = 0; ind < _machine_list.size(); ind++)
+#else
+  for (ind = 0; ind < _machine_list.size(); ind++)
+#endif
     {
      for (unsigned int ind1 = ind+1 ; ind1 < _machine_list.size(); ind1++)
        {
index 597b218e8355343e2865f7fd63995075712ca648..bd19b33c110d63464f0767e65fcdeca3652b055d 100644 (file)
 #define ABORT_MESS  1   // for traceType field in struct LocalTrace_TraceInfo
 #define NORMAL_MESS 0
 
-struct LocalTrace_TraceInfo
+#if defined SALOMELOCALTRACE_EXPORTS
+#if defined WIN32
+#define SALOMELOCALTRACE_EXPORT __declspec( dllexport )
+#else
+#define SALOMELOCALTRACE_EXPORT
+#endif
+#else
+#if defined WNT
+#define SALOMELOCALTRACE_EXPORT __declspec( dllimport )
+#else
+#define SALOMELOCALTRACE_EXPORT
+#endif
+#endif
+
+
+
+struct SALOMELOCALTRACE_EXPORT LocalTrace_TraceInfo
 {
   char trace[MAX_TRACE_LENGTH];
   pthread_t threadId;
@@ -42,7 +58,7 @@ struct LocalTrace_TraceInfo
   int position;                  // to check sequence
 };
 
-class LocalTraceBufferPool
+class SALOMELOCALTRACE_EXPORT LocalTraceBufferPool
 {
  public:
   static LocalTraceBufferPool* instance();
index e150db6d9b0560c5f5ecf22817cc19919fe54bc6..5ff0874d397ab6064d1b2df730d7e8afc7444af1 100644 (file)
@@ -38,7 +38,7 @@ using namespace std;
 LocalTraceCollector* LocalTraceCollector::_singleton = 0;
 pthread_mutex_t LocalTraceCollector::_singletonMutex;
 int LocalTraceCollector::_threadToClose = 0;
-pthread_t LocalTraceCollector::_threadId = 0; // used to control single run
+pthread_t* LocalTraceCollector::_threadId = 0; // used to control single run
 int LocalTraceCollector::_toFile = 0;
 std::string LocalTraceCollector::_fileName = "";
 
@@ -117,14 +117,21 @@ void* LocalTraceCollector::run(void *bid)
   if (! _threadId)  // only one run
     {
       isOKtoRun = 1;
-      _threadId = pthread_self();
+      if(_threadId == 0) {
+       _threadId = new pthread_t;
+      }
+      *_threadId = pthread_self();
     }
   else cout << "----- Comment est-ce possible de passer la ? -------" <<endl;
   ret = pthread_mutex_unlock(&_singletonMutex); // release lock
 
   if (isOKtoRun)
     { 
-      _threadId = pthread_self();
+      if(_threadId == 0) {
+       _threadId = new pthread_t;
+      }
+
+      *_threadId = pthread_self();
       LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
       LocalTrace_TraceInfo myTrace;
 
@@ -164,16 +171,26 @@ void* LocalTraceCollector::run(void *bid)
              switch (_toFile)
                {
                case 1 :  // --- trace to file
+#ifndef WNT
                  traceFile << "INTERRUPTION from thread " << myTrace.threadId
-                           << " : " <<  myTrace.trace;
+        << " : " <<  myTrace.trace;
+#else
+                 traceFile << "INTERRUPTION from thread " << (void*)(&myTrace.threadId)
+        << " : " <<  myTrace.trace;
+#endif
                  traceFile.close();
                  // no break here !
                case 0 :  // --- trace to standard output
                default : // --- on standard output, too
                  cout << flush ;
+#ifndef WNT
                  cerr << "INTERRUPTION from thread " << myTrace.threadId
                       << " : " <<  myTrace.trace;
-                 cerr << flush ; 
+#else
+                 cerr << "INTERRUPTION from thread " << (void*)(&myTrace.threadId)
+                      << " : " <<  myTrace.trace;
+#endif
+      cerr << flush ; 
                  exit(1);     
                  break;
                }
@@ -183,12 +200,21 @@ void* LocalTraceCollector::run(void *bid)
              switch (_toFile)
                {
                case 1 :  // --- trace to file
-                 traceFile << "th. " << myTrace.threadId
+#ifndef WNT
+      traceFile << "th. " << myTrace.threadId
+                           << " " << myTrace.trace;
+#else
+      traceFile << "th. " << (void*)(&myTrace.threadId)
                            << " " << myTrace.trace;
+#endif
                  break;
                case 0 :  // --- trace to standard output
                default : // --- on standard output, too
+#ifndef WNT
                  cout << "th. " << myTrace.threadId << " " << myTrace.trace;
+#else
+                 cout << "th. " << (void*)(&myTrace.threadId) << " " << myTrace.trace;
+#endif
                  break;
                }
            }
@@ -197,6 +223,7 @@ void* LocalTraceCollector::run(void *bid)
       if (_toFile==1) traceFile.close();
     }
   pthread_exit(NULL);
+  return NULL;
 }
 
 // ============================================================================
@@ -212,7 +239,7 @@ LocalTraceCollector:: ~LocalTraceCollector()
   myTraceBuffer->insert(NORMAL_MESS,"end of trace "); //needed to wake up thread
   if (_threadId)
     {
-      int ret = pthread_join(_threadId, NULL);
+      int ret = pthread_join(*_threadId, NULL);
       if (ret) cout << "error close LocalTraceCollector : "<< ret << endl;
       else cout << "LocalTraceCollector destruction OK" << endl;
     }
index d9ce36f5ffcb08c87e003fb0ac5bc112f07fb4a5..01c5f35e823dc381d54e7a8831ce87cf6c1c7268 100644 (file)
@@ -32,7 +32,7 @@
 
 //! See SALOMETraceCollector instead of LocalTraceCollector for SALOME usage
 
-class LocalTraceCollector
+class SALOMELOCALTRACE_EXPORT LocalTraceCollector
 {
  public:
   static LocalTraceCollector* instance(int typeTrace=0);
@@ -47,7 +47,7 @@ class LocalTraceCollector
   static int _toFile;
   static LocalTraceCollector* _singleton;
   static pthread_mutex_t _singletonMutex;
-  static pthread_t _threadId;
+  static pthread_t* _threadId;
   static std::string _fileName;
 };
 
index d29e35a5b878afedd7a24e2d95c28444a92ab3e9..654f615066cabadb6344341f622b3051dd70d3c8 100644 (file)
 #define INFOS(msg) {MESS_BEGIN("- Trace ") << msg << MESS_END}
 #define PYSCRIPT(msg) {MESS_INIT("---PYSCRIPT--- ") << msg << MESS_END}
 #define INTERRUPTION(msg) {MESS_BEGIN("- INTERRUPTION: ")<< msg << MESS_ABORT}
+#ifdef WNT
+#define IMMEDIATE_ABORT(code) {std::cout <<std::flush; \
+                               std::cerr << "- ABORT " << __FILE__ << " [" <<__LINE__<< "] : " << flush; \
+                               std::cerr << "ABORT return code= "<< code << std::endl; \
+                               /*std::*/exit(code);}
+#else
 #define IMMEDIATE_ABORT(code) {std::cout <<std::flush; \
                                std::cerr << "- ABORT " << __FILE__ << " [" <<__LINE__<< "] : " << flush; \
                                std::cerr << "ABORT return code= "<< code << std::endl; \
                                std::exit(code);}
+#endif
 
 /* --- To print date and time of compilation of current source --- */
 
index 1c070984869bc95190154f320a421a54873c7166..b2f1c1a28fdb0c499a9b0314ec4b005afd485d6e 100644 (file)
@@ -43,7 +43,7 @@ using namespace std;
 SALOMETraceCollector* SALOMETraceCollector::_singleton = 0;
 pthread_mutex_t SALOMETraceCollector::_singletonMutex;
 int SALOMETraceCollector::_threadToClose = 0;
-pthread_t SALOMETraceCollector::_threadId = 0; // used to control single run
+pthread_t* SALOMETraceCollector::_threadId = 0; // used to control single run
 int SALOMETraceCollector::_toFile = 0;
 std::string SALOMETraceCollector::_fileName = "";
 CORBA::ORB_ptr SALOMETraceCollector::_orb = 0;
@@ -125,14 +125,22 @@ void* SALOMETraceCollector::run(void *bid)
   if (! _threadId)  // only one run
     {
       isOKtoRun = 1;
-      _threadId = pthread_self();
+      if(_threadId == 0) {
+       _threadId = new pthread_t;
+      }
+
+      *_threadId = pthread_self();
     }
   else cout << "----- Comment est-ce possible de passer la ? -------" <<endl;
   ret = pthread_mutex_unlock(&_singletonMutex); // release lock
 
   if (isOKtoRun)
     { 
-      _threadId = pthread_self();
+      if(_threadId == 0) {
+       _threadId = new pthread_t;
+      }
+
+      *_threadId = pthread_self();
       LocalTraceBufferPool* myTraceBuffer = LocalTraceBufferPool::instance();
       LocalTrace_TraceInfo myTrace;
 
@@ -193,8 +201,13 @@ void* SALOMETraceCollector::run(void *bid)
                case 2 :  // --- trace collection via CORBA
                  {
                    stringstream abortMessage("");
+#ifndef WNT
                    abortMessage << "INTERRUPTION from thread "
                                 << myTrace.threadId << " : " << myTrace.trace;
+#else
+                   abortMessage << "INTERRUPTION from thread "
+                                << (void*)&myTrace.threadId << " : " << myTrace.trace;
+#endif
                    CORBA::String_var LogMsg =
                      CORBA::string_dup(abortMessage.str().c_str());
                    m_pInterfaceLogger->putMessage(LogMsg);
@@ -202,14 +215,22 @@ void* SALOMETraceCollector::run(void *bid)
                  }
                  break;
                case 1 :  // --- trace to file
+#ifndef WNT
                  traceFile << "INTERRUPTION from thread " << myTrace.threadId
+#else
+                 traceFile << "INTERRUPTION from thread " << (void*)&myTrace.threadId
+#endif
                            << " : " <<  myTrace.trace;
                  traceFile.close();
                  // no break here !
                case 0 :  // --- trace to standard output
                default : // --- on standard output, too
                  cout << flush ;
+#ifndef WNT
                  cerr << "INTERRUPTION from thread " << myTrace.threadId
+#else
+                 cerr << "INTERRUPTION from thread " << (void*)&myTrace.threadId
+#endif
                       << " : " <<  myTrace.trace;
                  cerr << flush ; 
                  exit(1);     
@@ -223,7 +244,11 @@ void* SALOMETraceCollector::run(void *bid)
                case 2 :  // --- trace collection via CORBA
                  {
                    stringstream aMessage("");
+#ifndef WNT
                    aMessage << "th. " << myTrace.threadId
+#else
+                   aMessage << "th. " << (void*)&myTrace.threadId
+#endif
                             << " " << myTrace.trace;
                    CORBA::String_var LogMsg =
                      CORBA::string_dup(aMessage.str().c_str());
@@ -231,12 +256,20 @@ void* SALOMETraceCollector::run(void *bid)
                  }
                  break;
                case 1 :  // --- trace to file
+#ifndef WNT
                  traceFile << "th. " << myTrace.threadId
+#else
+                 traceFile << "th. " << (void*)&myTrace.threadId
+#endif
                            << " " << myTrace.trace;
                  break;
                case 0 :  // --- trace to standard output
                default : // --- on standard output, too
+#ifndef WNT
                  cout << "th. " << myTrace.threadId << " " << myTrace.trace;
+#else
+                 cout << "th. " << &myTrace.threadId << " " << myTrace.trace;
+#endif
                  break;
                }
            }
@@ -245,6 +278,7 @@ void* SALOMETraceCollector::run(void *bid)
       if (_toFile==1) traceFile.close();
     }
   pthread_exit(NULL);
+  return NULL;
 }
 
 // ============================================================================
@@ -260,7 +294,7 @@ SALOMETraceCollector:: ~SALOMETraceCollector()
   myTraceBuffer->insert(NORMAL_MESS,"end of trace "); //needed to wake up thread
   if (_threadId)
     {
-      int ret = pthread_join(_threadId, NULL);
+      int ret = pthread_join(*_threadId, NULL);
       if (ret) cout << "error close SALOMETraceCollector : "<< ret << endl;
       else cout << "SALOMETraceCollector destruction OK" << endl;
     }
index 7d1b4bbb801185abfb14746bc6113540820d80e6..d75806da1c303a6f9b5c658976338c2e15b2ad42 100644 (file)
@@ -48,7 +48,7 @@ class SALOMETraceCollector
   static int _toFile;
   static SALOMETraceCollector* _singleton;
   static pthread_mutex_t _singletonMutex;
-  static pthread_t _threadId;
+  static pthread_t* _threadId;
   static std::string _fileName;
   static CORBA::ORB_ptr _orb;
 };
index 5512ea9267e2ac59f1705d90aa4a42a830e72238..2545cbce53919a6a7798fbcae71c9bd3b968e5ee 100644 (file)
 #include <iostream>
 #include <ctime>
 
+#ifdef WNT
+#include <omnithread/pthread_nt.h>
+#endif
+
 using namespace std;
 
 // ============================================================================
@@ -109,7 +113,11 @@ CORBA::Object_ptr TraceCollector_WaitForServerReadiness(CORBA::ORB_ptr orb,
                  cout << "Caught exception: Naming Service can't found Logger";
                }
            }
+#ifndef WNT
          int a = nanosleep(&ts_req,&ts_rem);
+#else
+         Sleep(TIMESleep / 1000000);
+#endif
          cout << "TraceCollector_WaitForServerReadiness: retry look for"
               << serverName << endl;
        }          
index 086aa00405144aa49fe1b9a327f2de22fe065481..7c3293b7c37e114b70a3619c380537b246a0ac89 100644 (file)
 #ifndef _OPUTIL_HXX
 #define _OPUTIL_HXX
 
+#if defined UTILS_EXPORTS
+#if defined WIN32
+#define UTILS_EXPORT __declspec( dllexport )
+#else
+#define UTILS_EXPORT
+#endif
+#else
+#if defined WNT
+#define UTILS_EXPORT __declspec( dllimport )
+#else
+#define UTILS_EXPORT
+#endif
+#endif
+
 #include <string>
 
-std::string GetHostname();
-const char *duplicate(const char * const);
+UTILS_EXPORT std::string GetHostname();
+UTILS_EXPORT const char *duplicate(const char * const);
 
 #endif
index c559355d4580f3bd24c9add25d3d52465ffb3f9f..388445bfc4cf602cc43e84f49b2b49ae1378b640 100644 (file)
@@ -31,7 +31,7 @@
 
 # include "Utils_SALOME_Exception.hxx"
 
-class CommException : public SALOME_Exception
+class UTILS_EXPORT CommException : public SALOME_Exception
 {
 public :
        CommException( void );
index b600d8ac19b3d4c54a7eb7f231b03c121c5162b5..3296da6d256ee095359b4161a0d8cac0306f5a65 100644 (file)
@@ -50,13 +50,13 @@ std::list<DESTRUCTEUR_GENERIQUE_*> *DESTRUCTEUR_GENERIQUE_::Destructeurs=0 ;
 
 /*! \class ATEXIT_
  *
- * Mécanisme pour faire exécuter une seule fois DESTRUCTEUR_GENERIQUE_::Nettoyage
- * à la fin du traitement : creation d'un singleton statique de l'objet
+ * M\89canisme pour faire ex\89cuter une seule fois DESTRUCTEUR_GENERIQUE_::Nettoyage
+ * \80 la fin du traitement : creation d'un singleton statique de l'objet
  * tres specialise ATEXIT_.
  *
- * La création d'un objet de type ATEXIT_ entraîne l'inscription de la fonction
- * Nettoyage() par atexit(). Il suffit donc de créer un singleton statique du type ATEXIT_
- * pour effectuer cet enregistrement une seule fois indépendament de l'utilisateur.
+ * La cr\89ation d'un objet de type ATEXIT_ entra\8ene l'inscription de la fonction
+ * Nettoyage() par atexit(). Il suffit donc de cr\89er un singleton statique du type ATEXIT_
+ * pour effectuer cet enregistrement une seule fois ind\89pendament de l'utilisateur.
  */
 
 //CCRT
@@ -67,10 +67,10 @@ class ATEXIT_
 {
 public :
        /*!
-        * Allocation dynamique de Destructeurs, une liste chaînée de DESTRUCTEUR_GENERIQUE_* et enregistrement
+        * Allocation dynamique de Destructeurs, une liste cha\8en\89e de DESTRUCTEUR_GENERIQUE_* et enregistrement
         * de la fonction Nettoyage() par atexit().
         *
-        * La liste chaînée Destructeurs est détruite dans la fonction Nettoyage.
+        * La liste cha\8en\89e Destructeurs est d\89truite dans la fonction Nettoyage.
         */
         //CCRT  ATEXIT_( void )
         ATEXIT_( bool Make_ATEXIT )
@@ -81,9 +81,9 @@ public :
                ASSERT (DESTRUCTEUR_GENERIQUE_::Destructeurs==0);
                if(MYDEBUG) MESSAGE("Construction ATEXIT"); // message necessaire pour utiliser logger dans Nettoyage (cf.BUG KERNEL4561)
                DESTRUCTEUR_GENERIQUE_::Destructeurs = 
-                      new std::list<DESTRUCTEUR_GENERIQUE_*> ; // Destructeurs alloué dynamiquement (cf. ci-dessous) ,
-                                                                  // il est utilisé puis détruit par la fonction Nettoyage
-               int cr = atexit( Nettoyage );                      // exécute Nettoyage lors de exit, après la destruction des données statiques !
+                      new std::list<DESTRUCTEUR_GENERIQUE_*> ; // Destructeurs allou\89 dynamiquement (cf. ci-dessous) ,
+                                                                  // il est utilis\89 puis d\89truit par la fonction Nettoyage
+               int cr = atexit( Nettoyage );                      // ex\89cute Nettoyage lors de exit, apr\88s la destruction des donn\89es statiques !
                ASSERT(cr==0) ;
                ATEXIT_Done = true ;
          }
@@ -102,10 +102,10 @@ static ATEXIT_ nettoyage = ATEXIT_( false );      /* singleton statique */
 
 
 /*!
- * traitement effectué :
- * -# exécution de tous les objets de type DESTRUCTEUR_DE_ stockés dans la liste Destructeurs (ce qui détruit les
+ * traitement effectu\89 :
+ * -# ex\89cution de tous les objets de type DESTRUCTEUR_DE_ stock\89s dans la liste Destructeurs (ce qui d\89truit les
  *    singletons correspondant) ;
- * -# puis destruction de tous les objets de type DESTRUCTEUR_DE_ stockés dans la liste Destructeurs;
+ * -# puis destruction de tous les objets de type DESTRUCTEUR_DE_ stock\89s dans la liste Destructeurs;
  * -# destruction de la liste Destructeurs.
  */
 
index f6ae3019f2e8f8ae87c503dbb6b320f255e581f2..daa27b0ee3f5c04386af493f1b178396b8578ffe 100644 (file)
@@ -174,7 +174,7 @@ const char* const Identity::name (void) const
 #ifndef WNT
         const struct utsname &Identity::hostid(void) const
 #else
-        const char* const hostid(void) const
+        const char* const Identity::hostid(void) const
 #endif
 {
     return _hostid ;
index 9f4ca47042d644b2158e4021903247f2e004c23d..9dd4db08025fd23c3b89db2aa4ac6b5a476c65e4 100644 (file)
@@ -41,7 +41,20 @@ extern "C"
 #endif
 }
 
-class Identity
+#if defined UTILS_EXPORTS
+#if defined WIN32
+#define UTILS_EXPORT __declspec( dllexport )
+#else
+#define UTILS_EXPORT
+#endif
+#else
+#if defined WNT
+#define UTILS_EXPORT __declspec( dllimport )
+#else
+#define UTILS_EXPORT
+#endif
+#endif
+class UTILS_EXPORT Identity
 {
 
 protected :
index 0aa3e451411fd527c3447c587f994d7fc878e940..ef58812124beceeadeb2bcb064c8b09ec10d9b9f 100644 (file)
@@ -44,8 +44,12 @@ Utils_Mutex::~Utils_Mutex()
 void Utils_Mutex::lock()
 {
   pthread_mutex_lock( &myHelperMutex );
-  
+
+#ifndef WNT 
   if ( myCount > 0 && myThread == pthread_self() ) {
+#else
+  if ( myCount > 0 && myThread.p == pthread_self().p ) {
+#endif
     myCount++;
   }
   else {
@@ -62,8 +66,12 @@ void Utils_Mutex::lock()
 void Utils_Mutex::unlock()
 {
   pthread_mutex_lock( &myHelperMutex );
-  
+
+#ifndef WNT  
   if ( myThread == pthread_self() ) {
+#else
+  if ( myThread.p == pthread_self().p ) {
+#endif
     if ( myCount && (--myCount) < 1 ) {
       myCount = 0;
       pthread_mutex_unlock( &myMutex );          
index d33df221166a1699dfb866a1653ba1382042d50e..0d692099dfa736c759678c460408bb5e5e6908f2 100644 (file)
 
 #include <pthread.h>
 
-class Utils_Mutex
+#if defined UTILS_EXPORTS
+#if defined WIN32
+#define UTILS_EXPORT __declspec( dllexport )
+#else
+#define UTILS_EXPORT
+#endif
+#else
+#if defined WNT
+#define UTILS_EXPORT __declspec( dllimport )
+#else
+#define UTILS_EXPORT
+#endif
+#endif
+
+class UTILS_EXPORT Utils_Mutex
 {
 public:
   Utils_Mutex();
@@ -46,7 +60,7 @@ private:
   int             myCount;
 };
 
-class Utils_Locker
+class UTILS_EXPORT Utils_Locker
 {
 public:
   Utils_Locker( Utils_Mutex* );
index 1a5c822db23ffbe4e6f2c0dde60ac126352a5325..345e2a2921bdeac141217004e74e768ba87505c1 100644 (file)
 #include "Utils_CommException.hxx"
 
 
+#if defined UTILS_EXPORTS
+#if defined WIN32
+#define UTILS_EXPORT __declspec( dllexport )
+#else
+#define UTILS_EXPORT
+#endif
+#else
+#if defined WNT
+#define UTILS_EXPORT __declspec( dllimport )
+#else
+#define UTILS_EXPORT
+#endif
+#endif
+
 /*!
  * Ce composant prend en charge la connexion et la deconnexion a l'orb
  * Il est souhaitable de l'utiliser dans un SINGLETON.
  */
 
-class ORB_INIT
+class UTILS_EXPORT ORB_INIT
 {
 
 private :
index dcb4ed95c77176730c7fb1510d9af197b20935e5..b8cb4267d777a563295b6f8e5adb06e98a9112f4 100644 (file)
 #include <iostream>
 #include "Utils_SALOME_Exception.hxx"
 #include "utilities.h"
+
+#ifndef WNT
 extern "C"
 {
+#endif
 #include <math.h>
 #include <stdio.h>
 #include <string.h>
+#ifndef WNT
 }
+#endif
 
 
 const char* duplicate( const char *const str ) ;
index 9ab9c9c3c11a0740842ae31200eb2b7e3a04b882..c870618aae1719ef383891205248107c8e7104b1 100644 (file)
 
 # define LOCALIZED(message) #message , __FILE__ , __LINE__
 
+#if defined UTILS_EXPORTS
+#if defined WIN32
+#define UTILS_EXPORT __declspec( dllexport )
+#else
+#define UTILS_EXPORT
+#endif
+#else
+#if defined WNT
+#define UTILS_EXPORT __declspec( dllimport )
+#else
+#define UTILS_EXPORT
+#endif
+#endif
 
-class SALOME_Exception : public std::exception
+class UTILS_EXPORT SALOME_Exception : public std::exception
 {
 
 private :
index 475dcf18eac56e5d94174ecfbbb1ef2245116b72..44228ba879caca483c38703d30368e24b95767b0 100644 (file)
 #define _UTILS_SIGNALSHANDLER_H_
 
 
+#if defined UTILS_EXPORTS
+#if defined WIN32
+#define UTILS_EXPORT __declspec( dllexport )
+#else
+#define UTILS_EXPORT
+#endif
+#else
+#if defined WNT
+#define UTILS_EXPORT __declspec( dllimport )
+#else
+#define UTILS_EXPORT
+#endif
+#endif
+
 #include <map>
 typedef void (*TSigHandler)(int);
 
 
-class Utils_SignalsHandler{
+class UTILS_EXPORT Utils_SignalsHandler{
  public:
   Utils_SignalsHandler();
   ~Utils_SignalsHandler();
@@ -40,7 +54,7 @@ class Utils_SignalsHandler{
 };
 
 
-class Utils_CASSignalsHandler: private Utils_SignalsHandler{
+class UTILS_EXPORT Utils_CASSignalsHandler: private Utils_SignalsHandler{
  public:
   Utils_CASSignalsHandler();
 };
index b1e449ce43cf414ee4fa2cce87ca4f801c6c48f1..b611ba64c7515649fd68b85c82004998c90ef0e6 100644 (file)
@@ -37,6 +37,7 @@ extern "C"
 #include <string.h>
 }
 #include  "utilities.h"
+#include "OpUtil.hxx"
 
 using namespace std;