#!/usr/bin/env python
import string
from extract_tool_ufunc import *
import sys
pipe = os.popen("gsl-config --prefix")
prefix = pipe.readlines()[0]
prefix = os.path.join(string.strip(prefix), 'include')
p = prototype_collector(prefix)
# Functions to exclude from the whole list.
exclude_list = ['gsl_sf_angle_restrict_pos_e', # use a double * for input and output. not properly recognized.
                # use gsl_sf_angle_restricted_pos_err_e complies to the usual interface
                'gsl_sf_result_smash_e', # the only one to use a const pointer as input. Not recognized by the tool.
                # Complex Functions are wrapped manually.
                'gsl_sf_complex_dilog_e',
                'gsl_sf_lngamma_complex_e',
                'gsl_sf_complex_log_e',
                'gsl_sf_complex_sin_e',
                'gsl_sf_complex_cos_e',
                'gsl_sf_complex_logsin_e',
                #Deprecated functions
                'gsl_sf_coupling_6j_INCORRECT_e',
                'gsl_sf_coupling_INCORRECT_6j',
                # Functions returning arrays are not mapped currently.
                'gsl_sf_coulomb_wave_F_array',
                'gsl_sf_polar_to_rect',
                'gsl_sf_rect_to_polar',
                'gsl_sf_bessel_sequence_Jnu_e',
                'gsl_sf_bessel_Jn_array',
                'gsl_sf_bessel_Yn_array',
                'gsl_sf_bessel_In_array',
                'gsl_sf_bessel_In_scaled_array',
                'gsl_sf_bessel_Kn_array',
                'gsl_sf_bessel_Kn_scaled_array',
                'gsl_sf_bessel_jl_array',
                'gsl_sf_bessel_jl_steed_array',
                'gsl_sf_bessel_yl_array',
                'gsl_sf_bessel_il_scaled_array',
                'gsl_sf_bessel_kl_scaled_array',
                'gsl_sf_coulomb_wave_FG_array',
                'gsl_sf_coulomb_wave_FGp_array',
                'gsl_sf_coulomb_wave_sphF_array',
                'gsl_sf_coulomb_CL_array',
                'gsl_sf_gegenpoly_array',
                'gsl_sf_legendre_Pl_array',
                'gsl_sf_legendre_Pl_deriv_array',
                'gsl_sf_legendre_Plm_array',
                'gsl_sf_legendre_Plm_deriv_array',
                'gsl_sf_legendre_sphPlm_array',
                'gsl_sf_legendre_sphPlm_deriv_array',
                'gsl_sf_legendre_array_size',
                'gsl_sf_legendre_H3d_array'
                ]
p.set_exclude_list(exclude_list)
p.make_wrapper_and_index_file("sf_")
