'''
module gls_setup, file gsl_setup.py
load the gsl shared libraries and ctypes
consider gsl_set_error_handler_off();
(gsl errors cause core dumps which I choose to live with for now)
'''
import sys
if sys.version_info[0] != 3:
raise Exception('This code has been tried in python version 3')
from ctypes import *
from array import array
# probably add some OS specific code here to encompass more than linux
# load dependencies first, making the symbols available.
gslcblas = CDLL('libgslcblas.so',mode=RTLD_GLOBAL)
gsl = CDLL('libgsl.so')
def setup(f,argument_types_list,result_type=c_long):
f.argtypes = argument_types_list
f.restype = result_type
return f
def as_array(a,typecode='d'):
return (
a if (isinstance(a,array) and a.typecode == typecode)
else array(typecode,a)
)
def ADDRESS(a):
return a.buffer_info()[0]