From: vsr Date: Wed, 2 Nov 2011 10:19:23 +0000 (+0000) Subject: Rename Calcium.c to CalciumC.c (because of bug in cmake it's impossible to have same... X-Git-Tag: V6_4_0b1~6 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=b8bff9515d8fb1128cd4d64cf641e07b795572a4;p=modules%2Fkernel.git Rename Calcium.c to CalciumC.c (because of bug in cmake it's impossible to have same-named files with different extensions in the project, e.g. Calcium.c and Calcium.cxx) --- diff --git a/src/DSC/DSC_User/Datastream/Calcium/Calcium.c b/src/DSC/DSC_User/Datastream/Calcium/Calcium.c deleted file mode 100644 index 2fba4fddf..000000000 --- a/src/DSC/DSC_User/Datastream/Calcium/Calcium.c +++ /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 -#include -#include -#include - -// 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_( , , , - , , ,)*/ - -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 index 000000000..2fba4fddf --- /dev/null +++ b/src/DSC/DSC_User/Datastream/Calcium/CalciumC.c @@ -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 +#include +#include +#include + +// 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_( , , , + , , ,)*/ + +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/Makefile.am b/src/DSC/DSC_User/Datastream/Calcium/Makefile.am index 5df23c0b8..76f7779d9 100644 --- a/src/DSC/DSC_User/Datastream/Calcium/Makefile.am +++ b/src/DSC/DSC_User/Datastream/Calcium/Makefile.am @@ -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) #