File: ilib_gen_gateway.sci

package info (click to toggle)
scilab 2.6-4
  • links: PTS
  • area: non-free
  • in suites: woody
  • size: 54,632 kB
  • ctags: 40,267
  • sloc: ansic: 267,851; fortran: 166,549; sh: 10,005; makefile: 4,119; tcl: 1,070; cpp: 233; csh: 143; asm: 135; perl: 130; java: 39
file content (30 lines) | stat: -rw-r--r-- 738 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function ilib_gen_gateway(name,table)
//------------------------------------
// generate an interface gateway named name
// from table table

k=strindex(name,['/','\'])
if k~=[] then
  path=part(name,1:k($))
  name=part(name,k($)+1:length(name))
else
  path=''
end
name=strsubst(name,'.c','')

[mt,nt]=size(table);
if nt<>2 then error('second argument has wrong size ');end 

t=[ '#include <mex.h> ';
    'extern Gatefunc ' + table(:,2) + ';';
    'static GenericTable Tab[]={'
    '  {(Myinterfun)sci_gateway,'+table(:,2)+',""'+table(:,1)+'""},'
    '};'
    ' '
    'int C2F('+name+')()'
    '{'
    '  Rhs = Max(0, Rhs);'
    '  (*(Tab[Fin-1].f))(Tab[Fin-1].name,Tab[Fin-1].F);'
    '  return 0;'
    '}'];
mputl(t,path+name+'.c')