xref: /petsc/src/sys/objects/ftn-custom/zinheritf.c (revision fbf9dbe564678ed6eff1806adbc4c4f01b9743f4)
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 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
16   #define petscobjectcompose_      petscobjectcompose
17   #define petscobjectquery_        petscobjectquery
18   #define petscobjectreference_    petscobjectreference
19   #define petscobjectdereference_  petscobjectdereference
20   #define petscobjectgetreference_ petscobjectgetreference
21 #endif
22 
23 /* ---------------------------------------------------------------------*/
24 
25 PETSC_EXTERN void petscobjectcompose_(PetscObject *obj, char *name, PetscObject *ptr, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
26 {
27   char *n1;
28 
29   FIXCHAR(name, len, n1);
30   *ierr = PetscObjectCompose(*obj, n1, *ptr);
31   if (*ierr) return;
32   FREECHAR(name, n1);
33 }
34 
35 PETSC_EXTERN void petscobjectquery_(PetscObject *obj, char *name, PetscObject *ptr, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len)
36 {
37   char *n1;
38 
39   FIXCHAR(name, len, n1);
40   *ierr = PetscObjectQuery(*obj, n1, ptr);
41   if (*ierr) return;
42   FREECHAR(name, n1);
43 }
44 
45 PETSC_EXTERN void petscobjectreference_(PetscObject *obj, PetscErrorCode *ierr)
46 {
47   *ierr = PetscObjectReference(*obj);
48 }
49 
50 PETSC_EXTERN void petscobjectdereference_(PetscObject *obj, PetscErrorCode *ierr)
51 {
52   *ierr = PetscObjectDereference(*obj);
53 }
54 
55 PETSC_EXTERN void petscobjectgetreference_(PetscObject *obj, PetscInt *ref, PetscErrorCode *ierr)
56 {
57   *ierr = PetscObjectGetReference(*obj, ref);
58 }
59