File: med_common.i

package info (click to toggle)
med-fichier 4.0.0%2Brepack-7
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 55,660 kB
  • sloc: cpp: 679,525; ansic: 72,977; python: 37,983; fortran: 12,925; sh: 6,821; f90: 5,531; makefile: 5,136; tcl: 216; xml: 173
file content (115 lines) | stat: -rw-r--r-- 3,265 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# -*- coding:utf-8 -*-
%include "typemaps.i"
%include "exception.i"
%include "cstring.i"

//TODO: Cf MEDerreur.hxx
//TODO: Est-il utile d'avoir une classe d'exception mère MED
//      à toutes les exceptions spécifiques des fonctions ?
%define %MedException(funcname)
%exception funcname {
  $action
    if ( result < 0 ) {
      /* fprintf(stderr,"Code erreur MED : %2d\n",result); */
      /* SWIG_exception(SWIG_RuntimeError,"Error returned from MEDfichier API (funcname)."); */
      PyObject* exobj = PyTuple_New(2);
      PyTuple_SetItem(exobj,0,PyString_FromString("Error returned from MEDfichier API (funcname)."));
      PyTuple_SetItem(exobj,1,PyInt_FromLong((long) result));
      SWIG_Python_SetErrorObj(PyExc_RuntimeError,exobj);
      /* PyErr_SetString(PyExc_Exception, str(result));  */
      return NULL;
    }
}
%enddef


%{
#include "med.h"
%}

//Ce fichier est généré : H5public_extract.h
%include "H5public_extract.h"

%include "med_config.h"
%include "medC_win_dll.h"
%include "med.h"

/*Il faut avoir inclu med_config.h pour définir HAVE_SDTINT_H */
#ifdef HAVE_STDINT_H
%include "stdint.i"
#endif

%import "medenum_module.i"

/* Inclusion du std_vector.i pour éviter le message : */
/* error: 'SWIGPY_SLICE_ARG' was not declared in this scope */
/* cf #881 Multiple modules leads to unhandled exeption */
/* import sys,ctypes */
/* sys.setdlopenflags(sys.getdlopenflags() | ctypes.RTLD_LOCAL) */
/* %include "std_vector.i" */
/* %{ */
/* /\* #include <vector> *\/ */
/* /\**\/ */
/* class MED_MESH_TYPE; */
/* %} */
/* %import  "medenumtest_module.i" */

%include "med_bool_typemap.i"
%include "med_array_typemap.i"
%include "med_char_typemap.i"

// Par défaut demande à swig de considérer les types C med_float * et med_int *
// comme des MEDARRAY, chacun des modules devra définir spécifiquement ses types scalaires.
// A définir avant les définitions d'un typemap med_float * scalaire
%med_array_typemaps(med_float,MEDFLOAT, \  )
// A définir avant les définitions d'un typemap med_float32 * scalaire
%pythoncode{
MEDFLOAT64=MEDFLOAT
MEDDOUBLE=MEDFLOAT
}

// A définir avant les définitions d'un typemap med_float32 * scalaire
%med_array_typemaps(med_float32,MEDFLOAT32, \  )

// A définir avant les définitions d'un typemap med_int * scalaire
%med_array_typemaps(med_int,MEDINT, \   )
#if defined(HAVE_F77INT64)
%pythoncode{
MEDINT64=MEDINT
}
%med_array_typemaps(med_int32,MEDINT32, \   )
#else
%pythoncode{
MEDINT32=MEDINT
}
#if defined(MED_SWIG_INT64)
%med_array_typemaps(med_int64,MEDINT64, \   )
#else
%pythoncode{
MEDINT64=None
}
#endif
#endif
// A définir avant les définitions d'un typemap med_int * scalaire

// Définir les MEDCHAR avant les définitions d'un typemap char *
// STRING ARRAY OUT :
%med_array_typemaps(char,MEDCHAR,name)
%med_array_typemaps(char,MEDCHAR,elementname)
%med_array_typemaps(char,MEDCHAR,nodename)

//Désactive toutes les sorties d'erreur
//les erreurs sont gérées par les exceptions
%typemap(out) med_err {
  Py_INCREF(Py_None);
  $result=Py_None;
}

//Ajoute la fonctionnalité de passage d'arguments par mot clés
//sur toutes les fonctions MED
%feature ("kwargs");
//Autodocumente les fonctions MED.
%feature("autodoc", "2");
%typemap(doc) med_err "Runtime Exception";