Version: 8.3.0
Main Page
Related Pages
Packages
Data Structures
Files
File List
Globals
CalciumCInterface.hxx
Go to the documentation of this file.
1
// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, 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
31
#include "
CalciumMacroCInterface.hxx
"
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)
39
2 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
*/
46
template
<
class
T>
struct
CalTimeType
{
47
typedef
float
TimeType
;
48
};
49
50
template
<>
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
*/
74
CALCIUM_C2CPP_INTERFACE_HXX_
(
intc
,
int
,
int
,);
75
CALCIUM_C2CPP_INTERFACE_HXX_
(
long
,
long
,
long
,);
76
77
CALCIUM_C2CPP_INTERFACE_HXX_
(
integer
,
integer
,cal_int,);
78
CALCIUM_C2CPP_INTERFACE_HXX_
(int2integer,
integer
,
int
,);
79
CALCIUM_C2CPP_INTERFACE_HXX_
(long2integer,
integer
,
long
,);
80
81
CALCIUM_C2CPP_INTERFACE_HXX_
(
float
,
float
,
float
, );
82
CALCIUM_C2CPP_INTERFACE_HXX_
(
double
,
double
,
double
,);
83
84
CALCIUM_C2CPP_INTERFACE_HXX_
(float2double,
double
,
float
, );
85
86
/* Fonctionne mais essai suivant pour simplification de Calcium.c CALCIUM_C2CPP_INTERFACE_(bool,bool,);*/
87
CALCIUM_C2CPP_INTERFACE_HXX_
(
bool
,
bool
,
int
,);
88
CALCIUM_C2CPP_INTERFACE_HXX_
(
cplx
,
cplx
,
float
,);
89
CALCIUM_C2CPP_INTERFACE_HXX_
(
str
,
str
,
char
*,);
90
91
/* Déclaration de ecp_fin */
92
extern
"C"
CalciumTypes::InfoType
ecp_fin_
(
void
* component,
int
code);
93
extern
"C"
CalciumTypes::InfoType
ecp_cd_
(
void
* component,
char
* instanceName);
94
extern
"C"
CalciumTypes::InfoType
ecp_fini_
(
void
* component,
char
* nomVar,
int
i);
95
extern
"C"
CalciumTypes::InfoType
ecp_fint_
(
void
* component,
char
* nomVar,
float
t);
96
extern
"C"
CalciumTypes::InfoType
ecp_effi_
(
void
* component,
char
* nomVar,
int
i);
97
extern
"C"
CalciumTypes::InfoType
ecp_efft_
(
void
* component,
char
* nomVar,
float
t);
98
99
#endif
src
DSC
DSC_User
Datastream
Calcium
CalciumCInterface.hxx
Copyright © 2007-2017 CEA/DEN, EDF R&D, OPEN CASCADE
Copyright © 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS