]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
Rename Calcium.c to CalciumC.c (because of bug in cmake it's impossible to have same...
authorvsr <vsr@opencascade.com>
Wed, 2 Nov 2011 10:19:23 +0000 (10:19 +0000)
committervsr <vsr@opencascade.com>
Wed, 2 Nov 2011 10:19:23 +0000 (10:19 +0000)
src/DSC/DSC_User/Datastream/Calcium/Calcium.c [deleted file]
src/DSC/DSC_User/Datastream/Calcium/CalciumC.c [new file with mode: 0644]
src/DSC/DSC_User/Datastream/Calcium/Makefile.am

diff --git a/src/DSC/DSC_User/Datastream/Calcium/Calcium.c b/src/DSC/DSC_User/Datastream/Calcium/Calcium.c
deleted file mode 100644 (file)
index 2fba4fd..0000000
+++ /dev/null
@@ -1,357 +0,0 @@
-// Copyright (C) 2007-2011  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-//  File   : Calcium.c
-//  Author : Eric Fayolle (EDF)
-//  Module : KERNEL
-//
-#include "calcium.h"
-#include "calciumf.h"
-#include "CalciumFortranInt.h"
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <stddef.h>
-
-// Interface C de SalomeCalcium
-
-typedef int InfoType;
-typedef char bool;
-
-//TODO: ajouter les prototypes pour eviter les pbs de passage par valeur
-InfoType ecp_fint_ (void * component, char* nomVar, float t);
-InfoType ecp_fini_ (void * component, char* nomVar, int i);
-InfoType ecp_efft_ (void * component, char* nomVar, float t);
-InfoType ecp_effi_ (void * component, char* nomVar, int i);
-
-/************************************/
-/* INTERFACES DE LECTURE EN 0 COPIE */
-/************************************/
-
-/* Definition des méthodes calcium étendues en 0 copie */
-/* Le buffer est alloué par le port pas par l'utilisateur */
-/* Remarquer le type ** de data */
-/* L'utilisateur devra appeler ecp_..._free pour désallouer le buffer interne */
-/* Attention en cas de lectures multiples : le buffer retourné est le même */
-/* Attention si les niveaux sont actifs le buffer peut être supprimé automatiquement par calcium. */
-
-#define CALCIUM_EXT_LECT_INTERFACE_C_(_name,_timeType,_type,_typeName,_qual) \
-  InfoType ecp_##_name (void * component, int mode,                     \
-                        _timeType * ti, _timeType * tf, int * i,        \
-                        char * nomvar, int bufferLength,                \
-                        int * nRead, _type _qual ** data ) {            \
-    size_t _nRead;                                                      \
-    long   _i=*i;                                                       \
-    fflush(stdout);                                                     \
-    fflush(stderr);                                                     \
-                                                                        \
-    InfoType info =  ecp_lecture_##_typeName (component, mode, ti, tf, &_i, \
-                                              nomvar, bufferLength, &_nRead, \
-                                              data );                   \
-    /*    std::cout << "-------- CalciumInterface(C Part), Valeur de data : " << std::endl; */ \
-    /*    std::cout << "Ptr :" << *data << std::endl;                           */ \
-    /*    for (int j=0; j<_nRead;++j)                                           */ \
-    /*      printf("--- Valeur de data[%d] : %d \n",j,(*data)[j]);              */ \
-    /*    std::cout << "Ptr :" << *data << std::endl;                           */ \
-    /*                                                                  */ \
-    /*    std::cerr << "-------- CalciumInterface(C Part) MARK 2 ------------------" << std::endl; */ \
-    if(mode == CP_SEQUENTIEL)   \
-      *i = _i;                                                          \
-    *nRead=_nRead;                                                      \
-    /*    std::cerr << "-------- CalciumInterface(C Part) MARK 3 ------------------" << std::endl; */ \
-                                                                        \
-    return info;                                                        \
-  };                                                                    \
-  void ecp_##_name##_free ( _type _qual * data) {                       \
-    ecp_lecture_##_typeName##_free(data);                               \
-  };
-
-
-/* L'interface de cette routine diffère de celle obtenue par la macro :
-   CALCIUM_LECT_INTERFACE_C_.
-   Le paramètre supplémentaire strSize indique la taille fixe et identique
-   des chaînes stockées dans data (les ports CALCIUM n'en n'ont pas besoin)
-*/
-InfoType ecp_lch(void * component, int mode, float * ti,        float * tf, int * i,
-                char  * nomvar, int bufferLength, int * nRead,
-                char *** data, int strSize) {
-
-  size_t _nRead;
-  long   _i=*i;
-  fflush(stdout);fflush(stderr);
-
-  InfoType info =  ecp_lecture_str (component, mode, ti, tf, &_i,
-                                    nomvar, bufferLength, &_nRead,
-                                    data);/*, strSize );
-                                             strSize est  inutile pour les ports CALCIUM
-                                             qui gèrent des tailles quelconques de chaines. */
-  if(mode == CP_SEQUENTIEL)
-    *i = _i;
-  *nRead=_nRead;
-  fflush(stdout);fflush(stderr);
-  return info;
-};
-
-void ecp_lch_free (char* * data) {                              \
-  ecp_lecture_str_free(data);                                   \
-};
-
-
-#define STAR *
-/*REVERIFIER MAINTENANT 0 COPY avec int2integer*/
-CALCIUM_EXT_LECT_INTERFACE_C_(len,float,int,int2integer,);
-CALCIUM_EXT_LECT_INTERFACE_C_(lre,float,float,float,);
-CALCIUM_EXT_LECT_INTERFACE_C_(ldb,double,double,double,);
-CALCIUM_EXT_LECT_INTERFACE_C_(llo,float,int,bool,);
-CALCIUM_EXT_LECT_INTERFACE_C_(lcp,float,float,cplx,);
-/* CALCIUM_EXT_LECT_INTERFACE_C_(lch,float,char,STAR[]);  */
-
-
-/**************************************/
-/* INTERFACES DE LECTURE AVEC RECOPIE */
-/**************************************/
-
-#define CALCIUM_LECT_INTERFACE_C_(_name,_timeType,_calInt,_type,_typeName,_qual,lastarg) \
-  _calInt cp_##_name (void * component, _calInt mode,                   \
-                       _timeType * ti, _timeType * tf, _calInt * i,     \
-                       char * nomvar, _calInt bufferLength,             \
-                       _calInt * nRead, _type _qual * data              \
-                       lastarg ) {                                      \
-                                                                        \
-    int    _mode         = (int) mode;                                  \
-    size_t _bufferLength = bufferLength;                                \
-    size_t _nRead;                                                      \
-    long   _i            =*i;                                           \
-    fflush(stdout);                                                     \
-    fflush(stderr);                                                     \
-                                                                        \
-    if ( (data == NULL) || (_bufferLength < 1) ) return CPNTNULL;       \
-                                                                        \
-    _calInt info =  ecp_lecture_##_typeName (component, _mode, ti, tf, &_i, \
-                                              nomvar, _bufferLength, &_nRead, \
-                                              &data );                  \
-    if(mode == CP_SEQUENTIEL)                                           \
-      *i = _i;                                                          \
-    *nRead=_nRead;                                                      \
-    fflush(stdout);                                                     \
-    fflush(stderr);                                                     \
-                                                                        \
-    return info;                                                        \
-  };                                                                    \
-  void cp_##_name##_free ( _type _qual * data) {                        \
-    ecp_lecture_##_typeName##_free(data);                               \
-  };
-
-
-/* L'interface de cette routine diffère de celle obtenue par la macro :
-   CALCIUM_LECT_INTERFACE_C_.
-   Le paramètre supplémentaire strSize indique la taille fixe et identique
-   des chaînes stockées dans data (les ports CALCIUM n'en n'ont pas besoin)
-*/
-
-/* InfoType cp_lch(void * component, int mode, float * ti,      float * tf, int * i, */
-/*              char  * nomvar, int bufferLength, int * nRead, */
-/*              char ** data, int strSize) { */
-
-/*   size_t _nRead;                                                      */
-/*   long   _i=*i;                                                       */
-/*   fflush(stdout);fflush(stderr);                                                      */
-/*   fprintf(stderr,"Beginning of cp_lch: %s %d %f\n",nomvar,*i,*ti);    */
-/*   if ( (data == NULL) || (bufferLength < 1) ) return CPNTNULL;        */
-/*   InfoType info =  ecp_lecture_str (component, mode, ti, tf, &_i,  */
-/*                                  nomvar, bufferLength, &_nRead,  */
-/*                                  &data);*/
-/*, strSize );  */
-/*                                           strSize est  inutile pour les ports CALCIUM */
-/*                                           qui gèrent des tailles quelconques de chaines.  */
-/*   if(mode == CP_SEQUENTIEL)                                           */
-/*     *i = _i;                                                          */
-/*   *nRead=_nRead;                                                      */
-/*   fprintf(stderr,"End of cp_lch: %s %d \n",nomvar,*i);                        */
-/*   fflush(stdout);fflush(stderr);                                                      */
-/*   return info;                                                        */
-/* };                                                                    */
-
-
-/* Definition des méthodes calcium standard  */
-/* CALCIUM_LECT_INTERFACE_C_( <suffixe du nom de l'interface à générer>, <type du paramètre temporel>, <type d'entier à utiliser pour les paramètres de type entier>,
-                              <type de données>, <nom de l'interface C2CPP à utiliser>, <qualificateur de type optionnel des données>,<paramètres supplémentaire ignoré>)*/
-
-CALCIUM_LECT_INTERFACE_C_(len,float ,int,int    ,int2integer,,);
-/*llg ne fonctionnera pas toujours correctement (port calcium_integer) si sizeof(long) == 64 bits && cal_int==int (32 bits)
-  sinon problème de conversion de 64bits vers 32bits */
-CALCIUM_LECT_INTERFACE_C_(llg,float ,int,long   ,long2integer,,);
-
-CALCIUM_LECT_INTERFACE_C_(lln,float ,int,long   ,long,,);
-
-CALCIUM_LECT_INTERFACE_C_(lre,float ,int,float  ,float,,);
-CALCIUM_LECT_INTERFACE_C_(ldb,double,int,double ,double,,);
-CALCIUM_LECT_INTERFACE_C_(llo,float ,int,int    ,bool,,);
-CALCIUM_LECT_INTERFACE_C_(lcp,float ,int,float  ,cplx,,);
-#define STAR *
-#define LCH_LAST_PARAM ,int strsize
-CALCIUM_LECT_INTERFACE_C_(lch,float ,int,char   ,str,STAR, LCH_LAST_PARAM );
-
-
-/* Definition des méthodes calcium destinées à l'interfaçage fortran
-   avec une taille des INTEGER fortran paramétrés à la configuration du KERNEL  */
-
-CALCIUM_LECT_INTERFACE_C_(len_fort_,float ,cal_int,cal_int ,integer,,);
-CALCIUM_LECT_INTERFACE_C_(lin_fort_,float ,cal_int,int     ,int2integer,,);
-/*llg_fort_ ne fonctionnera pas toujours correctement (port calcium_integer) si sizeof(long) == 64 bits && cal_int==int (32 bits)
-  sinon problème de conversion de 64bits vers 32bits */
-CALCIUM_LECT_INTERFACE_C_(llg_fort_,float ,cal_int,long    ,long2integer,,);
-
-CALCIUM_LECT_INTERFACE_C_(lre_fort_,float ,cal_int,float   ,float,,);
-CALCIUM_LECT_INTERFACE_C_(ldb_fort_,double,cal_int,double  ,double,,);
-CALCIUM_LECT_INTERFACE_C_(llo_fort_,float ,cal_int,int     ,bool,,);   /*int pour bool ou cal_int */
-CALCIUM_LECT_INTERFACE_C_(lcp_fort_,float ,cal_int,float   ,cplx,,);
-CALCIUM_LECT_INTERFACE_C_(lch_fort_,float ,cal_int,char    ,str,STAR, LCH_LAST_PARAM );
-
-CALCIUM_LECT_INTERFACE_C_(lln_fort_,float ,cal_int,long    ,long,,);
-
-/**********************************************/
-/*  INTERFACES DE DÉBUT ET DE FIN DE COUPLAGE */
-/**********************************************/
-
-InfoType cp_cd (void * component, char * instanceName) {
-  InfoType info =  ecp_cd_(component,instanceName);
-  return info;
-}
-
-InfoType cp_fin (void * component, int code) {
-  /* TODO : gérer avec les callbacks des ports DSC */
-
-  InfoType info =  ecp_fin_(component,code);
-
-  return info;
-}
-
-
-/***************************/
-/*  INTERFACES D'ECRITURE  */
-/***************************/
-
-#define CALCIUM_ECR_INTERFACE_C_(_name,_timeType,_calInt,_type,_typeName,_qual,lastarg) \
-  _calInt cp_##_name (void * component, _calInt mode,                   \
-                       _timeType t, _calInt i,                          \
-                       char * nomvar, _calInt nbelem,                   \
-                       _type _qual * data                               \
-                       lastarg ) {                                      \
-                                                                        \
-    int     _mode         =  mode;                                      \
-    long    _i            =  i;                                         \
-    size_t  _nbelem       =  nbelem;                                    \
-    _timeType _t          =  t;                                         \
-    fflush(stdout);                                                     \
-    fflush(stderr);                                                     \
-    if ( (data == NULL) || (nbelem < 1) ) return CPNTNULL;              \
-                                                                        \
-    _calInt info =  ecp_ecriture_##_typeName (component, _mode, &_t, _i, \
-                                               nomvar, _nbelem,         \
-                                               data );                  \
-    fflush(stdout);                                                     \
-    fflush(stderr);                                                     \
-                                                                        \
-    return info;                                                        \
-  };                                                                    \
-
-
-
-
-/* InfoType cp_ech(void * component, int mode, float t, int i, */
-/*              char  * nomvar,  int nbelem, */
-/*              char ** data, int strSize) { */
-
-/*long   _i=i;*/
-/*   fflush(stdout);fflush(stderr);                                                      */
-/*   fprintf(stderr,"Beginning of cp_ech: %s %d %f\n",nomvar,i,t);       */
-/*   if ( (data == NULL) || (nbelem < 1) ) return CPNTNULL;              */
-
-/*   InfoType info =  ecp_ecriture_str (component, mode, &t, i,  */
-/*                                   nomvar, nbelem,             */
-/*                                   data); */
-/*, strSize );*/
-/*   fprintf(stderr,"End of cp_ech: %s %d \n",nomvar,i);                         */
-/*   fflush(stdout);                                                     */
-/*   fflush(stderr);                                                     */
-
-/*   return info;                                                        */
-/* };                                                                    */
-
-/*  Definition des méthodes calcium standard  */
-/*  CALCIUM_ECR_INTERFACE_C_(_name,_timeType,_calInt,type,_typeName,_qual) */
-CALCIUM_ECR_INTERFACE_C_(een,float ,int,int   ,int2integer,,);
-/*elg ne fonctionnera pas toujours correctement (port calcium_integer) si sizeof(long) == 64 bits && cal_int==int (32 bits)
-  sinon problème de conversion de 64bits vers 32bits */
-CALCIUM_ECR_INTERFACE_C_(elg,float ,int,long  ,long2integer,,);
-CALCIUM_ECR_INTERFACE_C_(ere,float ,int,float ,float,,);
-CALCIUM_ECR_INTERFACE_C_(edb,double,int,double,double,,);
-CALCIUM_ECR_INTERFACE_C_(elo,float ,int,int   ,bool,,);
-CALCIUM_ECR_INTERFACE_C_(ecp,float ,int,float ,cplx,,);
-CALCIUM_ECR_INTERFACE_C_(ech,float ,int,char  ,str,STAR,LCH_LAST_PARAM );
-
-CALCIUM_ECR_INTERFACE_C_(eln,float ,int,long  ,long,,);
-
-/* Definition des méthodes calcium destinées à l'interfaçage fortran
-   avec une taille des INTEGER fortran paramétrés à la configuration du KERNEL  */
-
-CALCIUM_ECR_INTERFACE_C_(een_fort_,float ,cal_int,cal_int,integer,,);
-/*elg_fort_ ne fonctionnera pas toujours correctement (port calcium_integer) si sizeof(long) == 64 bits && cal_int==int (32 bits)
-  sinon problème de conversion de 64bits vers 32bits */
-CALCIUM_ECR_INTERFACE_C_(elg_fort_,float ,cal_int,long   ,long2integer,,);
-CALCIUM_ECR_INTERFACE_C_(ein_fort_,float ,cal_int,int    ,int2integer,,);
-CALCIUM_ECR_INTERFACE_C_(ere_fort_,float ,cal_int,float ,float,,);
-CALCIUM_ECR_INTERFACE_C_(edb_fort_,double,cal_int,double,double,,);
-CALCIUM_ECR_INTERFACE_C_(elo_fort_,float ,cal_int,int   ,bool,,);
-CALCIUM_ECR_INTERFACE_C_(ecp_fort_,float ,cal_int,float ,cplx,,);
-CALCIUM_ECR_INTERFACE_C_(ech_fort_,float ,cal_int,char  ,str,STAR,LCH_LAST_PARAM );
-
-CALCIUM_ECR_INTERFACE_C_(eln_fort_,float ,cal_int,long   ,long,,);
-
-/***************************/
-/*  Interface for cleaning */
-/***************************/
-
-InfoType cp_fini (void * component, char * nomvar, int i)
-{
-  InfoType info =  ecp_fini_(component,nomvar,i);
-  return info;
-}
-
-InfoType cp_fint (void * component, char * nomvar, float t)
-{
-  InfoType info =  ecp_fint_(component,nomvar,t);
-  return info;
-}
-
-InfoType cp_effi (void * component, char * nomvar, int i)
-{
-  InfoType info =  ecp_effi_(component,nomvar,i);
-  return info;
-}
-
-InfoType cp_efft (void * component, char * nomvar, float t)
-{
-  InfoType info =  ecp_efft_(component,nomvar,t);
-  return info;
-}
diff --git a/src/DSC/DSC_User/Datastream/Calcium/CalciumC.c b/src/DSC/DSC_User/Datastream/Calcium/CalciumC.c
new file mode 100644 (file)
index 0000000..2fba4fd
--- /dev/null
@@ -0,0 +1,357 @@
+// Copyright (C) 2007-2011  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+//  File   : Calcium.c
+//  Author : Eric Fayolle (EDF)
+//  Module : KERNEL
+//
+#include "calcium.h"
+#include "calciumf.h"
+#include "CalciumFortranInt.h"
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <stddef.h>
+
+// Interface C de SalomeCalcium
+
+typedef int InfoType;
+typedef char bool;
+
+//TODO: ajouter les prototypes pour eviter les pbs de passage par valeur
+InfoType ecp_fint_ (void * component, char* nomVar, float t);
+InfoType ecp_fini_ (void * component, char* nomVar, int i);
+InfoType ecp_efft_ (void * component, char* nomVar, float t);
+InfoType ecp_effi_ (void * component, char* nomVar, int i);
+
+/************************************/
+/* INTERFACES DE LECTURE EN 0 COPIE */
+/************************************/
+
+/* Definition des méthodes calcium étendues en 0 copie */
+/* Le buffer est alloué par le port pas par l'utilisateur */
+/* Remarquer le type ** de data */
+/* L'utilisateur devra appeler ecp_..._free pour désallouer le buffer interne */
+/* Attention en cas de lectures multiples : le buffer retourné est le même */
+/* Attention si les niveaux sont actifs le buffer peut être supprimé automatiquement par calcium. */
+
+#define CALCIUM_EXT_LECT_INTERFACE_C_(_name,_timeType,_type,_typeName,_qual) \
+  InfoType ecp_##_name (void * component, int mode,                     \
+                        _timeType * ti, _timeType * tf, int * i,        \
+                        char * nomvar, int bufferLength,                \
+                        int * nRead, _type _qual ** data ) {            \
+    size_t _nRead;                                                      \
+    long   _i=*i;                                                       \
+    fflush(stdout);                                                     \
+    fflush(stderr);                                                     \
+                                                                        \
+    InfoType info =  ecp_lecture_##_typeName (component, mode, ti, tf, &_i, \
+                                              nomvar, bufferLength, &_nRead, \
+                                              data );                   \
+    /*    std::cout << "-------- CalciumInterface(C Part), Valeur de data : " << std::endl; */ \
+    /*    std::cout << "Ptr :" << *data << std::endl;                           */ \
+    /*    for (int j=0; j<_nRead;++j)                                           */ \
+    /*      printf("--- Valeur de data[%d] : %d \n",j,(*data)[j]);              */ \
+    /*    std::cout << "Ptr :" << *data << std::endl;                           */ \
+    /*                                                                  */ \
+    /*    std::cerr << "-------- CalciumInterface(C Part) MARK 2 ------------------" << std::endl; */ \
+    if(mode == CP_SEQUENTIEL)   \
+      *i = _i;                                                          \
+    *nRead=_nRead;                                                      \
+    /*    std::cerr << "-------- CalciumInterface(C Part) MARK 3 ------------------" << std::endl; */ \
+                                                                        \
+    return info;                                                        \
+  };                                                                    \
+  void ecp_##_name##_free ( _type _qual * data) {                       \
+    ecp_lecture_##_typeName##_free(data);                               \
+  };
+
+
+/* L'interface de cette routine diffère de celle obtenue par la macro :
+   CALCIUM_LECT_INTERFACE_C_.
+   Le paramètre supplémentaire strSize indique la taille fixe et identique
+   des chaînes stockées dans data (les ports CALCIUM n'en n'ont pas besoin)
+*/
+InfoType ecp_lch(void * component, int mode, float * ti,        float * tf, int * i,
+                char  * nomvar, int bufferLength, int * nRead,
+                char *** data, int strSize) {
+
+  size_t _nRead;
+  long   _i=*i;
+  fflush(stdout);fflush(stderr);
+
+  InfoType info =  ecp_lecture_str (component, mode, ti, tf, &_i,
+                                    nomvar, bufferLength, &_nRead,
+                                    data);/*, strSize );
+                                             strSize est  inutile pour les ports CALCIUM
+                                             qui gèrent des tailles quelconques de chaines. */
+  if(mode == CP_SEQUENTIEL)
+    *i = _i;
+  *nRead=_nRead;
+  fflush(stdout);fflush(stderr);
+  return info;
+};
+
+void ecp_lch_free (char* * data) {                              \
+  ecp_lecture_str_free(data);                                   \
+};
+
+
+#define STAR *
+/*REVERIFIER MAINTENANT 0 COPY avec int2integer*/
+CALCIUM_EXT_LECT_INTERFACE_C_(len,float,int,int2integer,);
+CALCIUM_EXT_LECT_INTERFACE_C_(lre,float,float,float,);
+CALCIUM_EXT_LECT_INTERFACE_C_(ldb,double,double,double,);
+CALCIUM_EXT_LECT_INTERFACE_C_(llo,float,int,bool,);
+CALCIUM_EXT_LECT_INTERFACE_C_(lcp,float,float,cplx,);
+/* CALCIUM_EXT_LECT_INTERFACE_C_(lch,float,char,STAR[]);  */
+
+
+/**************************************/
+/* INTERFACES DE LECTURE AVEC RECOPIE */
+/**************************************/
+
+#define CALCIUM_LECT_INTERFACE_C_(_name,_timeType,_calInt,_type,_typeName,_qual,lastarg) \
+  _calInt cp_##_name (void * component, _calInt mode,                   \
+                       _timeType * ti, _timeType * tf, _calInt * i,     \
+                       char * nomvar, _calInt bufferLength,             \
+                       _calInt * nRead, _type _qual * data              \
+                       lastarg ) {                                      \
+                                                                        \
+    int    _mode         = (int) mode;                                  \
+    size_t _bufferLength = bufferLength;                                \
+    size_t _nRead;                                                      \
+    long   _i            =*i;                                           \
+    fflush(stdout);                                                     \
+    fflush(stderr);                                                     \
+                                                                        \
+    if ( (data == NULL) || (_bufferLength < 1) ) return CPNTNULL;       \
+                                                                        \
+    _calInt info =  ecp_lecture_##_typeName (component, _mode, ti, tf, &_i, \
+                                              nomvar, _bufferLength, &_nRead, \
+                                              &data );                  \
+    if(mode == CP_SEQUENTIEL)                                           \
+      *i = _i;                                                          \
+    *nRead=_nRead;                                                      \
+    fflush(stdout);                                                     \
+    fflush(stderr);                                                     \
+                                                                        \
+    return info;                                                        \
+  };                                                                    \
+  void cp_##_name##_free ( _type _qual * data) {                        \
+    ecp_lecture_##_typeName##_free(data);                               \
+  };
+
+
+/* L'interface de cette routine diffère de celle obtenue par la macro :
+   CALCIUM_LECT_INTERFACE_C_.
+   Le paramètre supplémentaire strSize indique la taille fixe et identique
+   des chaînes stockées dans data (les ports CALCIUM n'en n'ont pas besoin)
+*/
+
+/* InfoType cp_lch(void * component, int mode, float * ti,      float * tf, int * i, */
+/*              char  * nomvar, int bufferLength, int * nRead, */
+/*              char ** data, int strSize) { */
+
+/*   size_t _nRead;                                                      */
+/*   long   _i=*i;                                                       */
+/*   fflush(stdout);fflush(stderr);                                                      */
+/*   fprintf(stderr,"Beginning of cp_lch: %s %d %f\n",nomvar,*i,*ti);    */
+/*   if ( (data == NULL) || (bufferLength < 1) ) return CPNTNULL;        */
+/*   InfoType info =  ecp_lecture_str (component, mode, ti, tf, &_i,  */
+/*                                  nomvar, bufferLength, &_nRead,  */
+/*                                  &data);*/
+/*, strSize );  */
+/*                                           strSize est  inutile pour les ports CALCIUM */
+/*                                           qui gèrent des tailles quelconques de chaines.  */
+/*   if(mode == CP_SEQUENTIEL)                                           */
+/*     *i = _i;                                                          */
+/*   *nRead=_nRead;                                                      */
+/*   fprintf(stderr,"End of cp_lch: %s %d \n",nomvar,*i);                        */
+/*   fflush(stdout);fflush(stderr);                                                      */
+/*   return info;                                                        */
+/* };                                                                    */
+
+
+/* Definition des méthodes calcium standard  */
+/* CALCIUM_LECT_INTERFACE_C_( <suffixe du nom de l'interface à générer>, <type du paramètre temporel>, <type d'entier à utiliser pour les paramètres de type entier>,
+                              <type de données>, <nom de l'interface C2CPP à utiliser>, <qualificateur de type optionnel des données>,<paramètres supplémentaire ignoré>)*/
+
+CALCIUM_LECT_INTERFACE_C_(len,float ,int,int    ,int2integer,,);
+/*llg ne fonctionnera pas toujours correctement (port calcium_integer) si sizeof(long) == 64 bits && cal_int==int (32 bits)
+  sinon problème de conversion de 64bits vers 32bits */
+CALCIUM_LECT_INTERFACE_C_(llg,float ,int,long   ,long2integer,,);
+
+CALCIUM_LECT_INTERFACE_C_(lln,float ,int,long   ,long,,);
+
+CALCIUM_LECT_INTERFACE_C_(lre,float ,int,float  ,float,,);
+CALCIUM_LECT_INTERFACE_C_(ldb,double,int,double ,double,,);
+CALCIUM_LECT_INTERFACE_C_(llo,float ,int,int    ,bool,,);
+CALCIUM_LECT_INTERFACE_C_(lcp,float ,int,float  ,cplx,,);
+#define STAR *
+#define LCH_LAST_PARAM ,int strsize
+CALCIUM_LECT_INTERFACE_C_(lch,float ,int,char   ,str,STAR, LCH_LAST_PARAM );
+
+
+/* Definition des méthodes calcium destinées à l'interfaçage fortran
+   avec une taille des INTEGER fortran paramétrés à la configuration du KERNEL  */
+
+CALCIUM_LECT_INTERFACE_C_(len_fort_,float ,cal_int,cal_int ,integer,,);
+CALCIUM_LECT_INTERFACE_C_(lin_fort_,float ,cal_int,int     ,int2integer,,);
+/*llg_fort_ ne fonctionnera pas toujours correctement (port calcium_integer) si sizeof(long) == 64 bits && cal_int==int (32 bits)
+  sinon problème de conversion de 64bits vers 32bits */
+CALCIUM_LECT_INTERFACE_C_(llg_fort_,float ,cal_int,long    ,long2integer,,);
+
+CALCIUM_LECT_INTERFACE_C_(lre_fort_,float ,cal_int,float   ,float,,);
+CALCIUM_LECT_INTERFACE_C_(ldb_fort_,double,cal_int,double  ,double,,);
+CALCIUM_LECT_INTERFACE_C_(llo_fort_,float ,cal_int,int     ,bool,,);   /*int pour bool ou cal_int */
+CALCIUM_LECT_INTERFACE_C_(lcp_fort_,float ,cal_int,float   ,cplx,,);
+CALCIUM_LECT_INTERFACE_C_(lch_fort_,float ,cal_int,char    ,str,STAR, LCH_LAST_PARAM );
+
+CALCIUM_LECT_INTERFACE_C_(lln_fort_,float ,cal_int,long    ,long,,);
+
+/**********************************************/
+/*  INTERFACES DE DÉBUT ET DE FIN DE COUPLAGE */
+/**********************************************/
+
+InfoType cp_cd (void * component, char * instanceName) {
+  InfoType info =  ecp_cd_(component,instanceName);
+  return info;
+}
+
+InfoType cp_fin (void * component, int code) {
+  /* TODO : gérer avec les callbacks des ports DSC */
+
+  InfoType info =  ecp_fin_(component,code);
+
+  return info;
+}
+
+
+/***************************/
+/*  INTERFACES D'ECRITURE  */
+/***************************/
+
+#define CALCIUM_ECR_INTERFACE_C_(_name,_timeType,_calInt,_type,_typeName,_qual,lastarg) \
+  _calInt cp_##_name (void * component, _calInt mode,                   \
+                       _timeType t, _calInt i,                          \
+                       char * nomvar, _calInt nbelem,                   \
+                       _type _qual * data                               \
+                       lastarg ) {                                      \
+                                                                        \
+    int     _mode         =  mode;                                      \
+    long    _i            =  i;                                         \
+    size_t  _nbelem       =  nbelem;                                    \
+    _timeType _t          =  t;                                         \
+    fflush(stdout);                                                     \
+    fflush(stderr);                                                     \
+    if ( (data == NULL) || (nbelem < 1) ) return CPNTNULL;              \
+                                                                        \
+    _calInt info =  ecp_ecriture_##_typeName (component, _mode, &_t, _i, \
+                                               nomvar, _nbelem,         \
+                                               data );                  \
+    fflush(stdout);                                                     \
+    fflush(stderr);                                                     \
+                                                                        \
+    return info;                                                        \
+  };                                                                    \
+
+
+
+
+/* InfoType cp_ech(void * component, int mode, float t, int i, */
+/*              char  * nomvar,  int nbelem, */
+/*              char ** data, int strSize) { */
+
+/*long   _i=i;*/
+/*   fflush(stdout);fflush(stderr);                                                      */
+/*   fprintf(stderr,"Beginning of cp_ech: %s %d %f\n",nomvar,i,t);       */
+/*   if ( (data == NULL) || (nbelem < 1) ) return CPNTNULL;              */
+
+/*   InfoType info =  ecp_ecriture_str (component, mode, &t, i,  */
+/*                                   nomvar, nbelem,             */
+/*                                   data); */
+/*, strSize );*/
+/*   fprintf(stderr,"End of cp_ech: %s %d \n",nomvar,i);                         */
+/*   fflush(stdout);                                                     */
+/*   fflush(stderr);                                                     */
+
+/*   return info;                                                        */
+/* };                                                                    */
+
+/*  Definition des méthodes calcium standard  */
+/*  CALCIUM_ECR_INTERFACE_C_(_name,_timeType,_calInt,type,_typeName,_qual) */
+CALCIUM_ECR_INTERFACE_C_(een,float ,int,int   ,int2integer,,);
+/*elg ne fonctionnera pas toujours correctement (port calcium_integer) si sizeof(long) == 64 bits && cal_int==int (32 bits)
+  sinon problème de conversion de 64bits vers 32bits */
+CALCIUM_ECR_INTERFACE_C_(elg,float ,int,long  ,long2integer,,);
+CALCIUM_ECR_INTERFACE_C_(ere,float ,int,float ,float,,);
+CALCIUM_ECR_INTERFACE_C_(edb,double,int,double,double,,);
+CALCIUM_ECR_INTERFACE_C_(elo,float ,int,int   ,bool,,);
+CALCIUM_ECR_INTERFACE_C_(ecp,float ,int,float ,cplx,,);
+CALCIUM_ECR_INTERFACE_C_(ech,float ,int,char  ,str,STAR,LCH_LAST_PARAM );
+
+CALCIUM_ECR_INTERFACE_C_(eln,float ,int,long  ,long,,);
+
+/* Definition des méthodes calcium destinées à l'interfaçage fortran
+   avec une taille des INTEGER fortran paramétrés à la configuration du KERNEL  */
+
+CALCIUM_ECR_INTERFACE_C_(een_fort_,float ,cal_int,cal_int,integer,,);
+/*elg_fort_ ne fonctionnera pas toujours correctement (port calcium_integer) si sizeof(long) == 64 bits && cal_int==int (32 bits)
+  sinon problème de conversion de 64bits vers 32bits */
+CALCIUM_ECR_INTERFACE_C_(elg_fort_,float ,cal_int,long   ,long2integer,,);
+CALCIUM_ECR_INTERFACE_C_(ein_fort_,float ,cal_int,int    ,int2integer,,);
+CALCIUM_ECR_INTERFACE_C_(ere_fort_,float ,cal_int,float ,float,,);
+CALCIUM_ECR_INTERFACE_C_(edb_fort_,double,cal_int,double,double,,);
+CALCIUM_ECR_INTERFACE_C_(elo_fort_,float ,cal_int,int   ,bool,,);
+CALCIUM_ECR_INTERFACE_C_(ecp_fort_,float ,cal_int,float ,cplx,,);
+CALCIUM_ECR_INTERFACE_C_(ech_fort_,float ,cal_int,char  ,str,STAR,LCH_LAST_PARAM );
+
+CALCIUM_ECR_INTERFACE_C_(eln_fort_,float ,cal_int,long   ,long,,);
+
+/***************************/
+/*  Interface for cleaning */
+/***************************/
+
+InfoType cp_fini (void * component, char * nomvar, int i)
+{
+  InfoType info =  ecp_fini_(component,nomvar,i);
+  return info;
+}
+
+InfoType cp_fint (void * component, char * nomvar, float t)
+{
+  InfoType info =  ecp_fint_(component,nomvar,t);
+  return info;
+}
+
+InfoType cp_effi (void * component, char * nomvar, int i)
+{
+  InfoType info =  ecp_effi_(component,nomvar,i);
+  return info;
+}
+
+InfoType cp_efft (void * component, char * nomvar, float t)
+{
+  InfoType info =  ecp_efft_(component,nomvar,t);
+  return info;
+}
index 5df23c0b8dff62d0ec30361ec598b022cff46904..76f7779d97c8ad933f53752a4f704a55b61ad004 100644 (file)
@@ -124,7 +124,7 @@ libSalomeCalcium_la_LDFLAGS  = -no-undefined -version-info=0:0:0
 
 AM_CFLAGS         = -fexceptions
 lib_LTLIBRARIES = libCalciumC.la
-libCalciumC_la_SOURCES = Calcium.c Calcium.cxx calciumf.c
+libCalciumC_la_SOURCES = CalciumC.c Calcium.cxx calciumf.c
 libCalciumC_la_CXXFLAGS = $(COMMON_CPPFLAGS)
 
 #