sample.idl:
Module sample; Library "-lm"; Globals { int x,y,z; } Define sin(IN double d, OUT double result[]) " This is test ..." { double sin(); *result = sin(d); } Define mmul(long mode_in int n, mode_in double A[n][n], mode_in double B[n][n], mode_out double C[n][n]) Required "sample.o" Calls "C" mmul(n,A,B,C); Define mmul2(long mode_in int n, mode_in double A[n*n+1-1], mode_in double B[n*n+2-3+1], mode_out double C[n*n]) Required "sample.o" Calls "C" mmul(n,A,B,C); Define FFT(IN int n,IN int m, OUT float x[n][m], float INOUT y[m][n]) Required "sample.o" Calls "Fortran" FFT(n,x,y);
sample.mak:
# This file 'sample.mak' was created by ninf_gen. Don't edit # CompileOptions: # stub sources NINF_STUB_SRC = _stub_sin.c _stub_mmul.c _stub_FFT.c # stub programs NINF_STUB_PROGRAM = _stub_sin _stub_mmul _stub_FFT all: $(NINF_STUB_PROGRAM) _stub_sin: $(CC) $(LDFLAGS) -o _stub_sin _stub_sin.c ninf_stub_lib.a -lm _stub_mmul: $(CC) $(LDFLAGS) -o _stub_mmul _stub_mmul.c ninf_stub_lib.a sample.o -lm _stub_mmul2: $(CC) $(LDFLAGS) -o _stub_mmul2 _stub_mmul2.c ninf_stub_lib.a sample.o -lm _stub_FFT: $(CC) $(LDFLAGS) -o _stub_FFT _stub_FFT.c ninf_stub_lib.a sample.o -lm clean: rm $(NINF_STUB_PROGRAM) # END OF Makefile
_stub_mmul2.c:
/* _stub_mmul2.c : generated by ./ninf_gen, don't edit. */ #include "ninf_stub.h" NINF_STUB_INFO ninf_stub_info = { 0,0,0, "sample","mmul2",4, { { 5, 1, 0,}, { 13, 1, 1,{ { 3, 2, { {2,2,4,1,4,1,4,5,0,0,0,0,0,0,0,0,0,0,0,0,}, {0,0,3,1,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,} }, 0, 0, { {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,} }, 0, 0, { {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,} }, 0, 0, { {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,} }, }, }}, { 13, 1, 1,{ { 3, 1, { {2,2,4,1,4,1,4,1,4,5,0,0,0,0,0,0,0,0,0,0,}, {0,0,3,2,1,3,2,1,1,0,0,0,0,0,0,0,0,0,0,0,} }, 0, 0, { {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,} }, 0, 0, { {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,} }, 0, 0, { {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,} }, }, }}, { 13, 2, 1,{ { 3, 3, { {2,2,4,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, {0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,} }, 0, 0, { {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,} }, 0, 0, { {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,} }, 0, 0, { {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,}, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,} }, }, }}, } }; /* Globals */ int x,y,z; /* Stub Main program */ main(argc,argv){ long n; double *A; double *B; double *C; Ninf_stub_INIT(argc,argv); while(Ninf_stub_REQ()){ Ninf_stub_SET_ARG(&n,0); Ninf_stub_SET_ARG(&A,1); Ninf_stub_SET_ARG(&B,2); Ninf_stub_SET_ARG(&C,3); mmul(n,A,B,C); Ninf_stub_END(); } Ninf_stub_EXIT(); } /* END OF Stub Main */