1cdef extern from * nogil: 2 3 ctypedef double PetscLogDouble 4 ctypedef struct PetscEventPerfInfo: 5 int count 6 PetscLogDouble flops, time 7 PetscLogDouble numMessages 8 PetscLogDouble messageLength 9 PetscLogDouble numReductions 10 11 PetscErrorCode PetscLogDefaultBegin() 12 PetscErrorCode PetscLogView(PetscViewer) 13 PetscErrorCode PetscLogIsActive(PetscBool*) 14 15 PetscErrorCode PetscLogFlops(PetscLogDouble) 16 PetscErrorCode PetscGetFlops(PetscLogDouble*) 17 PetscErrorCode PetscGetCPUTime(PetscLogDouble*) 18 PetscErrorCode PetscMallocGetCurrentUsage(PetscLogDouble*) 19 PetscErrorCode PetscMemoryGetCurrentUsage(PetscLogDouble*) 20 21 PetscErrorCode PetscTime(PetscLogDouble*) 22 PetscErrorCode PetscTimeSubtract(PetscLogDouble*) 23 PetscErrorCode PetscTimeAdd(PetscLogDouble*) 24 25 ctypedef int PetscLogStage 26 PetscErrorCode PetscLogStageRegister(char[], PetscLogStage*) 27 PetscErrorCode PetscLogStagePush(PetscLogStage) 28 PetscErrorCode PetscLogStagePop() 29 PetscErrorCode PetscLogStageSetActive(PetscLogStage, PetscBool) 30 PetscErrorCode PetscLogStageGetActive(PetscLogStage, PetscBool*) 31 PetscErrorCode PetscLogStageSetVisible(PetscLogStage, PetscBool) 32 PetscErrorCode PetscLogStageGetVisible(PetscLogStage, PetscBool*) 33 PetscErrorCode PetscLogStageGetId(char[], PetscLogStage*) 34 35 ctypedef int PetscLogClass "PetscClassId" 36 PetscErrorCode PetscLogClassRegister"PetscClassIdRegister"(char[], PetscLogClass*) 37 PetscErrorCode PetscLogClassActivate"PetscLogEventActivateClass"(PetscLogClass) 38 PetscErrorCode PetscLogClassDeactivate"PetscLogEventDeactivateClass"(PetscLogClass) 39 40 ctypedef int PetscLogEvent 41 PetscErrorCode PetscLogEventRegister(char[], PetscLogClass, PetscLogEvent*) 42 PetscErrorCode PetscLogEventBegin(PetscLogEvent, PetscObject, PetscObject, PetscObject, PetscObject) 43 PetscErrorCode PetscLogEventEnd(PetscLogEvent, PetscObject, PetscObject, PetscObject, PetscObject) 44 45 PetscErrorCode PetscLogEventActivate(PetscLogEvent) 46 PetscErrorCode PetscLogEventDeactivate(PetscLogEvent) 47 PetscErrorCode PetscLogEventSetActiveAll(PetscLogEvent, PetscBool) 48 PetscErrorCode PetscLogEventGetPerfInfo(PetscLogStage, PetscLogEvent, PetscEventPerfInfo*) 49 50cdef extern from * nogil: # custom.h 51 PetscErrorCode PetscLogStageFindId(char[], PetscLogStage*) 52 PetscErrorCode PetscLogClassFindId(char[], PetscLogClass*) 53 PetscErrorCode PetscLogEventFindId(char[], PetscLogEvent*) 54 PetscErrorCode PetscLogStageFindName(PetscLogStage, char*[]) 55 PetscErrorCode PetscLogClassFindName(PetscLogClass, char*[]) 56 PetscErrorCode PetscLogEventFindName(PetscLogEvent, char*[]) 57 58 59cdef inline int event_args2objs(object args, PetscObject o[4]) except -1: 60 o[0] = o[1] = o[2] = o[3] = NULL 61 cdef Py_ssize_t i=0, n = len(args) 62 cdef Object tmp = None 63 if n > 4: n = 4 64 for 0 <= i < n: 65 tmp = args[i] 66 if tmp is not None: 67 o[i] = tmp.obj[0] 68 return 0 69