function [methodinfo,structs,enuminfo,ThunkLibName]=bmi_header
%BMI_HEADER Create structures to define interfaces found in 'bmi'.

%This function was generated by loadlibrary.m parser version 1.1.6.36 on Tue Sep 17 15:54:05 2013
%perl options:'bmi.i -outfile=bmi_header.m'
ival={cell(1,0)}; % change 0 to the actual number of functions to preallocate the data.
structs=[];enuminfo=[];fcnNum=1;
fcns=struct('name',ival,'calltype',ival,'LHS',ival,'RHS',ival,'alias',ival);
ThunkLibName=[];
% void initialize ( char * config_file ); 
fcns.name{fcnNum}='initialize'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring'};fcnNum=fcnNum+1;
% void update ( double * dt ); 
fcns.name{fcnNum}='update'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'doublePtr'};fcnNum=fcnNum+1;
% void get_var_rank ( char * var_name , int * rank ); 
fcns.name{fcnNum}='get_var_rank'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'int32Ptr'};fcnNum=fcnNum+1;
% void get_var_type ( char * var_name , char * c_type_name ); 
fcns.name{fcnNum}='get_var_type'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'cstring'};fcnNum=fcnNum+1;
% void get_var_shape ( char * var_name , int shape [ 6 ]); 
fcns.name{fcnNum}='get_var_shape'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'int32Ptr'};fcnNum=fcnNum+1;
% void get_0d_float ( char * var_name , float ** x ); 
fcns.name{fcnNum}='get_0d_float'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'singlePtrPtr'};fcnNum=fcnNum+1;
% void get_1d_double ( char * var_name , double ** x ); 
fcns.name{fcnNum}='get_1d_double'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'doublePtrPtr'};fcnNum=fcnNum+1;
% void get_1d_float ( char * var_name , float ** x ); 
fcns.name{fcnNum}='get_1d_float'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'singlePtrPtr'};fcnNum=fcnNum+1;
% void get_2d_float ( char * var_name , float ** x ); 
fcns.name{fcnNum}='get_2d_float'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'singlePtrPtr'};fcnNum=fcnNum+1;
% void get_2d_double ( char * var_name , double ** x ); 
fcns.name{fcnNum}='get_2d_double'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'doublePtrPtr'};fcnNum=fcnNum+1;
% void get_3d_float ( char * var_name , float ** x ); 
fcns.name{fcnNum}='get_3d_float'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'singlePtrPtr'};fcnNum=fcnNum+1;
% void get_3d_double ( char * var_name , double ** x ); 
fcns.name{fcnNum}='get_3d_double'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'doublePtrPtr'};fcnNum=fcnNum+1;
% void get_1d_int ( char * var_name , int ** x ); 
fcns.name{fcnNum}='get_1d_int'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'int32PtrPtr'};fcnNum=fcnNum+1;
% void get_2d_int ( char * var_name , int ** x ); 
fcns.name{fcnNum}='get_2d_int'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'int32PtrPtr'};fcnNum=fcnNum+1;
% void set_1d_float ( char * var_name , float ** x ); 
fcns.name{fcnNum}='set_1d_float'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'singlePtrPtr'};fcnNum=fcnNum+1;
% void set_2d_float ( char * var_name , float ** x ); 
fcns.name{fcnNum}='set_2d_float'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'singlePtrPtr'};fcnNum=fcnNum+1;
% void set_3d_float ( char * var_name , float ** x ); 
fcns.name{fcnNum}='set_3d_float'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'singlePtrPtr'};fcnNum=fcnNum+1;
% void set_1d_double ( char * var_name , double ** x ); 
fcns.name{fcnNum}='set_1d_double'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'doublePtrPtr'};fcnNum=fcnNum+1;
% void set_2d_double ( char * var_name , double ** x ); 
fcns.name{fcnNum}='set_2d_double'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'doublePtrPtr'};fcnNum=fcnNum+1;
% void set_1d_double_at_index ( char * var_name , int * index , double * value ); 
fcns.name{fcnNum}='set_1d_double_at_index'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'cstring', 'int32Ptr', 'doublePtr'};fcnNum=fcnNum+1;
% void finalize (); 
fcns.name{fcnNum}='finalize'; fcns.calltype{fcnNum}='cdecl'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}=[];fcnNum=fcnNum+1;
methodinfo=fcns;