summaryrefslogtreecommitdiff
path: root/callpython/callpython.sci
blob: cc0b5e4e8f3bc392ddd84489b6d5b3606aa5c501 (plain)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// This modue provide three function to interact with a python interpretor:
//
//  - py_write : write a scilab variable in python
//  - py_read : read a python variable in scilab
//  - py_eval : evaluate a python string
//
// A convenience function to call into python is also provided

global GLOB_PY_INIT ;
GLOB_PY_INIT = %F ;

function py_write(pyname, scivar)
// TODO
endfunction

function sci_var = py_read(py_name)
  var_type = py_type(py_name)
  // Call the right function accoring to var_type
  sci_var = call('py_read_int_c', py_name, 1, 'c','out', [1,1], 2, 'i')
endfunction

function ptype = py_type(py_name)
// @param py_name: the name of a python variable
// @return: an integer, 
  ptype = 1
endfunction

function py_eval(eval_str)
  call('py_eval_c',eval_str, 1, 'c','out')
endfunction

function py_initialize()
	global GLOB_PY_INIT
	if GLOB_PY_INIT == %F
		call('py_initialize_c', 'out')
		GLOB_PY_INIT = %T ;
	end
endfunction

function py_finalize()
	call('py_finalize_c', 'out')
endfunction

function call_python(funcname, varargin)
  for i=1:length(varargin)
    arg = varargin(i)
    pywrite(printf("_tmp%i_", arg))
  end
endfunction

intf = [ 'py_initialize_c', 'py_finalize_c','py_eval_c', 'py_read_int_c'] ;

libn = ilib_for_link(intf, 'callpython.c','', 'c' ,'make' , ...
					'loader.sce' ,'callpython.lib','-LIBPATH:C:\Python26\libs', ...
					'-IC:\Python26\include') ;
					
exec('loader.sce') ;
py_initialize()