1: #pragma once 2: /* 3: This is the definition of the Mathematica viewer structure. 4: */ 6: #include <petsc/private/viewerimpl.h> 7: #if defined(PETSC_HAVE_MATHEMATICA) 8: #include <mathlink.h> 9: #endif 11: typedef enum { 12: MATHEMATICA_LINK_CREATE, 13: MATHEMATICA_LINK_CONNECT, 14: MATHEMATICA_LINK_LAUNCH 15: } LinkMode; 17: typedef struct { 18: #if defined(PETSC_HAVE_MATHEMATICA) 19: MLINK link; /* The link to Mathematica */ 20: #endif 21: char *linkname; /* The name to link to Mathematica on (usually a port) */ 22: char *linkhost; /* The host to link to Mathematica on */ 23: LinkMode linkmode; /* The link mode */ 24: const char *objName; /* The name for the next object passed to Mathematica */ 25: } PetscViewer_Mathematica; 27: PETSC_EXTERN PetscErrorCode PetscViewerMathematicaSetFromOptions(PetscViewer); 28: PETSC_EXTERN PetscErrorCode PetscViewerMathematicaSetLinkName(PetscViewer, const char *); 29: PETSC_EXTERN PetscErrorCode PetscViewerMathematicaSetLinkPort(PetscViewer, int); 30: PETSC_EXTERN PetscErrorCode PetscViewerMathematicaSetLinkHost(PetscViewer, const char *); 31: PETSC_EXTERN PetscErrorCode PetscViewerMathematicaSetLinkMode(PetscViewer, LinkMode);