Version: 9.16.0
CalciumCInterface.hxx
Go to the documentation of this file.
1// Copyright (C) 2007-2026 CEA, EDF, OPEN CASCADE
2//
3// This library is free software; you can redistribute it and/or
4// modify it under the terms of the GNU Lesser General Public
5// License as published by the Free Software Foundation; either
6// version 2.1 of the License, or (at your option) any later version.
7//
8// This library is distributed in the hope that it will be useful,
9// but WITHOUT ANY WARRANTY; without even the implied warranty of
10// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11// Lesser General Public License for more details.
12//
13// You should have received a copy of the GNU Lesser General Public
14// License along with this library; if not, write to the Free Software
15// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16//
17// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18//
19
20/*
21 File : CalciumInterface.hxx
22 Author : Eric Fayolle (EDF)
23 Module : KERNEL
24 Modified by : $LastChangedBy$
25 Date : $LastChangedDate: 2007-03-01 13:27:58 +0100 (jeu, 01 mar 2007) $
26 Id : $Id$
27*/
28#ifndef _CALCIUM_C_INTERFACE_H_
29#define _CALCIUM_C_INTERFACE_H_
30
32#include "CalciumTypes.hxx"
33#include "CalciumFortranInt.h"
34#include <cstdlib>
35
36/* Déclaration de l'Interface entre l'API C et l'API C++
37 L'utilisateur CALCIUM n'a normalement pas a utliser cette interface
38 En C/C++ il utilisera celle définie dans Calcium.c (calcium.h)
392 En C++/CORBA directement celle de CalciumCxxInterface.hxx
40*/
41
42/* En CALCIUM l'utilisation de données de type double
43 implique des dates de type double, pour les autres
44 types de données les dates sont de type float
45*/
46template <class T> struct CalTimeType {
47 typedef float TimeType;
48};
49
50template <> struct CalTimeType<double> {
51 typedef double TimeType;
52};
53
54/* Déclaration de ecp_lecture_... , ecp_ecriture_..., ecp_free_... */
55
56/* Le premier argument est utilisé :
57 - comme suffixe dans la définition des noms ecp_lecture_ , ecp_ecriture_ et ecp_free_
58 Le second argument est utilisé :
59 - comme argument template à l'appel de la méthode C++ correspondante
60 ( le type CORBA de port correspondant est alors obtenu par un trait)
61 Le troisième argument est utilisée :
62 - pour typer le paramètre data de la procédure générée
63 - pour déduire le type des paramètres t, ti tf via un trait
64 - comme premier paramètre template à l'appel de la méthode C++ correspondante
65 (pour typer les données passées en paramètre )
66 Notons que dans le cas CALCIUM_C2CPP_INTERFACE_(int,int,), le type int n'existe pas
67 en CORBA, le port CALCIUM correspondant utilise une séquence de long. La méthode
68 C++ CALCIUM de lecture repère cette différence de type et charge
69 le manipulateur de données d'effectuer une recopie (qui fonctionne si les types sont compatibles).
70 Notons qu'en CORBA CORBA:Long est mappé sur long uniquement si celui-ci est 32bits sinon
71 il sera mappé sur le type int (si il est 32bits). Le type CORBA:LongLong est mappé sur le type long
72 s'il est 64 bits sinon celà peut être un long long (s'il existe).
73*/
75CALCIUM_C2CPP_INTERFACE_HXX_(long,long,long,)
76
79CALCIUM_C2CPP_INTERFACE_HXX_(long2integer,integer, long,)
80
81CALCIUM_C2CPP_INTERFACE_HXX_(float,float,float, )
82CALCIUM_C2CPP_INTERFACE_HXX_(double,double,double,)
83
84CALCIUM_C2CPP_INTERFACE_HXX_(float2double,double,float, )
85
86/* Fonctionne mais essai suivant pour simplification de Calcium.c CALCIUM_C2CPP_INTERFACE_(bool,bool,);*/
87CALCIUM_C2CPP_INTERFACE_HXX_(bool,bool,int,)
90
91/* Déclaration de ecp_fin */
92extern "C" CalciumTypes::InfoType ecp_fin_ (void * component, int code);
93extern "C" CalciumTypes::InfoType ecp_cd_ (void * component, char* instanceName);
94extern "C" CalciumTypes::InfoType ecp_fini_ (void * component, char* nomVar, int i);
95extern "C" CalciumTypes::InfoType ecp_fint_ (void * component, char* nomVar, float t);
96extern "C" CalciumTypes::InfoType ecp_effi_ (void * component, char* nomVar, int i);
97extern "C" CalciumTypes::InfoType ecp_efft_ (void * component, char* nomVar, float t);
98
99#endif
CalciumTypes::InfoType ecp_fini_(void *component, char *nomVar, int i)
Definition: CalciumCInterface.cxx:104
CalciumTypes::InfoType ecp_fint_(void *component, char *nomVar, float t)
Definition: CalciumCInterface.cxx:121
CalciumTypes::InfoType ecp_efft_(void *component, char *nomVar, float t)
Definition: CalciumCInterface.cxx:154
CalciumTypes::InfoType ecp_effi_(void *component, char *nomVar, int i)
Definition: CalciumCInterface.cxx:137
CalciumTypes::InfoType ecp_fin_(void *component, int code)
Definition: CalciumCInterface.cxx:76
CalciumTypes::InfoType ecp_cd_(void *component, char *instanceName)
Definition: CalciumCInterface.cxx:94
int InfoType
Definition: CalciumC.c:37
#define CALCIUM_C2CPP_INTERFACE_HXX_(_name, _porttype, _type, _qual)
Definition: CalciumMacroCInterface.hxx:37
Definition: CalciumTypes.hxx:33
C
Definition: TestModuleCatalog.py:54
double TimeType
Definition: CalciumCInterface.hxx:51
Definition: CalciumCInterface.hxx:46
float TimeType
Definition: CalciumCInterface.hxx:47
Definition: CalciumPortTraits.hxx:63
Definition: CalciumPortTraits.hxx:75
Definition: CalciumPortTraits.hxx:42
Definition: CalciumPortTraits.hxx:69