C Gateway routine
subroutine mexFunction(nlhs, plhs, nrhs, prhs)
C Declarations
implicit none
C mexFunction arguments:
mwPointer plhs(*), prhs(*)
integer nlhs, nrhs
C Pointers to input/output mxArrays:
mwPointer a, b
mwPointer c
C Function Declerations
mwPointer mxGetData
integer*4, external :: mxClassIDFromClassName
integer*4, external :: mxIsInt64
mwPointer, external :: mxGetNumberOfElements
mwPointer, external :: mxCreateNumericMatrix
mwSize :: one = 1
integer*4 :: mxREAL = 0
integer*4 classid
if( nrhs /= 2 .or. nlhs > 1 ) then
call mexErrMsgTxt("Need 2 inputs and at most 1 output")
endif
if( mxIsInt64(prhs(1))==0 .or. mxIsInt64(prhs(2))==0 ) then
call mexErrMsgTxt("Inputs must be int64 class")
endif
if( mxGetNumberOfElements(prhs(1)) /= 1 .or.
& mxGetNumberOfElements(prhs(2)) /= 1 ) then
call mexErrMsgTxt("Inputs must be scalar")
endif
classid = mxClassIDFromClassName("int64")
plhs(1) = mxCreateNumericMatrix(one,one,classid,mxREAL)
a = mxGetData(prhs(1))
b = mxGetData(prhs(2))
c = mxGetData(plhs(1))
C Call the computational subroutine.
call add(
return
end
C-----------------------------------------------------------------------
C Computational subroutine
subroutine add(a, b, c)
integer*8 a, b, c
c = a + b
return
end
Best Answer