xref: /petsc/src/sys/objects/ftn-custom/zinheritf.c (revision c4762a1b19cd2af06abeed90e8f9d34fb975dd94)
1 /*
2   This file contains Fortran stubs for Options routines.
3   These are not generated automatically since they require passing strings
4   between Fortran and C.
5 */
6 
7 #include <petsc/private/fortranimpl.h>
8 
9 #if defined(PETSC_HAVE_FORTRAN_CAPS)
10 #define petscobjectcompose_        PETSCOBJECTCOMPOSE
11 #define petscobjectquery_          PETSCOBJECTQUERY
12 #define petscobjectreference_      PETSCOBJECTREFERENCE
13 #define petscobjectdereference_    PETSCOBJECTDEREFERENCE
14 #define petscobjectgetreference_   PETSCOBJECTGETREFERENCE
15 #define petsccudainitialize_       PETSCCUDAINITIALIZE
16 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
17 #define petscobjectcompose_        petscobjectcompose
18 #define petscobjectquery_          petscobjectquery
19 #define petscobjectreference_      petscobjectreference
20 #define petscobjectdereference_    petscobjectdereference
21 #define petscobjectgetreference_   petscobjectgetreference
22 #define petsccudainitialize_       petsccudainitialize
23 #endif
24 
25 /* ---------------------------------------------------------------------*/
26 
27 #if defined(PETSC_HAVE_CUDA)
28 PETSC_EXTERN void petsccudainitialize_(MPI_Fint *comm, PetscErrorCode *ierr)
29 {
30   *ierr = PetscCUDAInitialize(MPI_Comm_f2c(*(comm)));
31 }
32 #endif
33 
34 PETSC_EXTERN void petscobjectcompose_(PetscObject *obj, char *name, PetscObject *ptr, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
35 {
36   char *n1;
37 
38   FIXCHAR(name,len,n1);
39   *ierr = PetscObjectCompose(*obj, n1, *ptr);if (*ierr) return;
40   FREECHAR(name,n1);
41 }
42 
43 PETSC_EXTERN void petscobjectquery_(PetscObject *obj, char *name, PetscObject *ptr, PetscErrorCode *ierr,PETSC_FORTRAN_CHARLEN_T len)
44 {
45   char *n1;
46 
47   FIXCHAR(name,len,n1);
48   *ierr = PetscObjectQuery(*obj, n1, ptr);if (*ierr) return;
49   FREECHAR(name,n1);
50 }
51 
52 PETSC_EXTERN void  petscobjectreference_(PetscObject *obj,PetscErrorCode *ierr)
53 {
54   *ierr = PetscObjectReference(*obj);
55 }
56 
57 PETSC_EXTERN void  petscobjectdereference_(PetscObject *obj,PetscErrorCode *ierr)
58 {
59   *ierr = PetscObjectDereference(*obj);
60 }
61 
62 PETSC_EXTERN void  petscobjectgetreference_(PetscObject *obj,PetscInt *ref,PetscErrorCode *ierr)
63 {
64   *ierr = PetscObjectGetReference(*obj,ref);
65 }
66