function [methodinfo,structs,enuminfo,ThunkLibName]=gen_proto
%GEN_PROTO Create structures to define interfaces found in 'h2_mod_matlab'.

%This function was generated by loadlibrary.m parser version  on Tue Jun 16 20:57:21 2026
%perl options:'h2_mod_matlab.i -outfile=gen_proto.m -thunkfile=genSignalWave_thunk_pcwin64.c -header=h2_mod_matlab.h'
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,'thunkname', ival);
MfilePath=fileparts(mfilename('fullpath'));
ThunkLibName=fullfile(MfilePath,'genSignalWave_thunk_pcwin64');
% int mod_open ( void ** device , char version_o [ 50 ]); 
fcns.thunkname{fcnNum}='int32voidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_open'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='int32'; fcns.RHS{fcnNum}={'voidPtrPtr', 'int8Ptr'};fcnNum=fcnNum+1;
% int mod_close ( void ** device ); 
fcns.thunkname{fcnNum}='int32voidPtrThunk';fcns.name{fcnNum}='mod_close'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='int32'; fcns.RHS{fcnNum}={'voidPtrPtr'};fcnNum=fcnNum+1;
% void mod_init_digitalmod ( void ** device , digitalmod_profile * digitalmod_profile_o ); 
fcns.thunkname{fcnNum}='voidvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_init_digitalmod'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'voidPtrPtr', 'digitalmod_profilePtr'};fcnNum=fcnNum+1;
% void mod_init_am ( void ** device , am_profile * am_profile_o ); 
fcns.thunkname{fcnNum}='voidvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_init_am'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'voidPtrPtr', 'am_profilePtr'};fcnNum=fcnNum+1;
% void mod_init_fm ( void ** device , fm_profile * fm_profile_o ); 
fcns.thunkname{fcnNum}='voidvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_init_fm'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'voidPtrPtr', 'fm_profilePtr'};fcnNum=fcnNum+1;
% void mod_init_dsss ( void ** device , dsss_profile * dsss_profile_o ); 
fcns.thunkname{fcnNum}='voidvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_init_dsss'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'voidPtrPtr', 'dsss_profilePtr'};fcnNum=fcnNum+1;
% void mod_init_pulse ( void ** device , pulse_profile * pulse_profile_o ); 
fcns.thunkname{fcnNum}='voidvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_init_pulse'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'voidPtrPtr', 'pulse_profilePtr'};fcnNum=fcnNum+1;
% void mod_init_multitone ( void ** device , multitone_profile * multitone_profile_o ); 
fcns.thunkname{fcnNum}='voidvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_init_multitone'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'voidPtrPtr', 'multitone_profilePtr'};fcnNum=fcnNum+1;
% void mod_init_stepsweep ( void ** device , stepsweep_profile * stepsweep_profile_o ); 
fcns.thunkname{fcnNum}='voidvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_init_stepsweep'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'voidPtrPtr', 'stepsweep_profilePtr'};fcnNum=fcnNum+1;
% void mod_init_rampsweep ( void ** device , rampsweep_profile * rampsweep_profile_o ); 
fcns.thunkname{fcnNum}='voidvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_init_rampsweep'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'voidPtrPtr', 'rampsweep_profilePtr'};fcnNum=fcnNum+1;
% void mod_init_ofdm ( void ** device , ofdm_profile * ofdm_profile_o ); 
fcns.thunkname{fcnNum}='voidvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_init_ofdm'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'voidPtrPtr', 'ofdm_profilePtr'};fcnNum=fcnNum+1;
% void mod_init_awgn ( void ** device , awgn_profile * awgn_profile_o ); 
fcns.thunkname{fcnNum}='voidvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_init_awgn'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}=[]; fcns.RHS{fcnNum}={'voidPtrPtr', 'awgn_profilePtr'};fcnNum=fcnNum+1;
% int mod_config_digitalmod ( void ** device , const digitalmod_profile * digitalmod_profile_in , digitalmod_profile * digitalmod_profile_o ); 
fcns.thunkname{fcnNum}='int32voidPtrvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_config_digitalmod'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='int32'; fcns.RHS{fcnNum}={'voidPtrPtr', 'digitalmod_profilePtr', 'digitalmod_profilePtr'};fcnNum=fcnNum+1;
% int mod_config_am ( void ** device , const am_profile * am_profile_in , am_profile * am_profile_o ); 
fcns.thunkname{fcnNum}='int32voidPtrvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_config_am'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='int32'; fcns.RHS{fcnNum}={'voidPtrPtr', 'am_profilePtr', 'am_profilePtr'};fcnNum=fcnNum+1;
% int mod_config_fm ( void ** device , const fm_profile * fm_profile_in , fm_profile * fm_profile_o ); 
fcns.thunkname{fcnNum}='int32voidPtrvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_config_fm'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='int32'; fcns.RHS{fcnNum}={'voidPtrPtr', 'fm_profilePtr', 'fm_profilePtr'};fcnNum=fcnNum+1;
% int mod_config_dsss ( void ** device , const dsss_profile * dsss_profile_in , dsss_profile * dsss_profile_o ); 
fcns.thunkname{fcnNum}='int32voidPtrvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_config_dsss'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='int32'; fcns.RHS{fcnNum}={'voidPtrPtr', 'dsss_profilePtr', 'dsss_profilePtr'};fcnNum=fcnNum+1;
% int mod_config_pulse ( void ** device , const pulse_profile * pulse_profile_in , pulse_profile * pulse_profile_o ); 
fcns.thunkname{fcnNum}='int32voidPtrvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_config_pulse'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='int32'; fcns.RHS{fcnNum}={'voidPtrPtr', 'pulse_profilePtr', 'pulse_profilePtr'};fcnNum=fcnNum+1;
% int mod_config_multitone ( void ** device , const multitone_profile * multitone_profile_in , multitone_profile * multitone_profile_o ); 
fcns.thunkname{fcnNum}='int32voidPtrvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_config_multitone'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='int32'; fcns.RHS{fcnNum}={'voidPtrPtr', 'multitone_profilePtr', 'multitone_profilePtr'};fcnNum=fcnNum+1;
% int mod_config_stepsweep ( void ** device , const stepsweep_profile * stepsweep_profile_in , stepsweep_profile * stepsweep_profile_o ); 
fcns.thunkname{fcnNum}='int32voidPtrvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_config_stepsweep'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='int32'; fcns.RHS{fcnNum}={'voidPtrPtr', 'stepsweep_profilePtr', 'stepsweep_profilePtr'};fcnNum=fcnNum+1;
% int mod_config_rampsweep ( void ** device , const rampsweep_profile * rampsweep_profile_in , rampsweep_profile * rampsweep_profile_o ); 
fcns.thunkname{fcnNum}='int32voidPtrvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_config_rampsweep'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='int32'; fcns.RHS{fcnNum}={'voidPtrPtr', 'rampsweep_profilePtr', 'rampsweep_profilePtr'};fcnNum=fcnNum+1;
% int mod_config_ofdm ( void ** device , const ofdm_profile * ofdm_profile_in , ofdm_profile * ofdm_profile_o ); 
fcns.thunkname{fcnNum}='int32voidPtrvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_config_ofdm'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='int32'; fcns.RHS{fcnNum}={'voidPtrPtr', 'ofdm_profilePtr', 'ofdm_profilePtr'};fcnNum=fcnNum+1;
% int mod_config_awgn ( void ** device , const awgn_profile * awgn_profile_in , awgn_profile * awgn_profile_o ); 
fcns.thunkname{fcnNum}='int32voidPtrvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_config_awgn'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='int32'; fcns.RHS{fcnNum}={'voidPtrPtr', 'awgn_profilePtr', 'awgn_profilePtr'};fcnNum=fcnNum+1;
% int mod_generate_stream ( void ** device , int32_t symbol_length , int16_t ** iq_o , int32_t * length_o , double * sample_rate_o ); 
fcns.thunkname{fcnNum}='int32voidPtrint32voidPtrvoidPtrvoidPtrThunk';fcns.name{fcnNum}='mod_generate_stream'; fcns.calltype{fcnNum}='Thunk'; fcns.LHS{fcnNum}='int32'; fcns.RHS{fcnNum}={'voidPtrPtr', 'int32', 'int16PtrPtr', 'int32Ptr', 'doublePtr'};fcnNum=fcnNum+1;
structs.digitalmod_profile.members=struct('digitalmod_type', 'mod_digitalmod_type', 'symbolrate', 'double', 'fskdeviation', 'double', 'pn', 'int32', 'sequenceseed', 'int32', 'filter_type', 'mod_filter_type', 'filter_symbols', 'int32', 'sps', 'int32', 'alpha', 'double');
structs.am_profile.members=struct('rate', 'double', 'depth', 'double', 'shape', 'mod_shape_type');
structs.fm_profile.members=struct('rate', 'double', 'deviation', 'double', 'shape', 'mod_shape_type');
structs.dsss_profile.members=struct('symbolrate', 'double', 'digitalmod_type', 'mod_digitalmod_type', 'code', 'int32', 'filter_symbols', 'int32', 'sps', 'int32', 'alpha', 'double', 'sequenceseed', 'int32', 'filter_type', 'mod_filter_type');
structs.ofdm_profile.members=struct('idleinterval', 'double', 'fftsize', 'int32', 'symbolcount', 'int32', 'guardbandcarriers_left', 'int32', 'guardbandcarriers_right', 'int32', 'guardinterval', 'int32', 'window_length', 'int32', 'windowed', 'uint8', 'digitalmod_type', 'mod_digitalmod_type', 'nulldc', 'uint8', 'samplerate', 'double');
structs.pulse_profile.members=struct('width', 'double', 'period', 'double');
structs.multitone_profile.members=struct('tonephase', 'double', 'tonecount', 'int32', 'freqspacing', 'double');
structs.stepsweep_profile.members=struct('center', 'double', 'span', 'double', 'points', 'int32', 'dwelltime', 'double');
structs.rampsweep_profile.members=struct('span', 'double', 'sweeptime', 'double', 'period', 'double');
structs.awgn_profile.members=struct('bandwidth', 'double', 'length', 'double');
enuminfo.mod_filter_type=struct('FilterType_Rectangular',1,'FilterType_RaisedCosine',2,'FilterType_RootRaisedCosine',3,'FilterType_Gaussian',4,'FilterType_HalfSine',5);
enuminfo.mod_shape_type=struct('ModShape_Sine',1,'ModShape_Square',2,'ModShape_Triangle',3,'ModShape_Ramp',4);
enuminfo.mod_digitalmod_type=struct('DigitalModType_BPSK',1,'DigitalModType_DBPSK',2,'DigitalModType_QPSK',3,'DigitalModType_DQPSK',4,'DigitalModType_OQPSK',5,'DigitalModType_Pi4DQPSK',6,'DigitalModType_PSK8',7,'DigitalModType_D8PSK',8,'DigitalModType_PSK16',9,'DigitalModType_QAM16',10,'DigitalModType_QAM64',11,'DigitalModType_QAM256',12,'DigitalModType_QAM1024',13,'DigitalModType_ASK2',14,'DigitalModType_FSK2',15,'DigitalModType_FSK4',16,'DigitalModType_FSK8',17,'DigitalModType_FSK16',18,'DigitalModType_ASK4',19,'DigitalModType_ASK8',20,'DigitalModType_APSK16',21,'DigitalModType_QAM8',22);
methodinfo=fcns;