function hLib = Ifx_IntLkUpCur_CRLEntry(hLib)
% Key: lookup1D
% y1: Result
% u1: Xin
% u2: X_array
% u3: Val_array
% u4: N 
    
%% DataType
               % Conceptual datatype       Implementation datatype 
int8datatype =   {'fixdt(1,8,0)',            'int8'};
int16datatype =  {'fixdt(1,16,0)',           'int16'};
uint8datatype =  {'fixdt(0,8,0)',            'uint8'};
uint16datatype = {'fixdt(0,16,0)',           'uint16'};

%% Code Replacement Library Entries  
%% Column-major routines (COLUMN_DIR)
%0x030    
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_u8_u8', uint8datatype, uint8datatype, uint8datatype, uint8datatype, uint8datatype, false) );
%0x031 
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_u8_u16', uint16datatype, uint8datatype, uint8datatype, uint8datatype, uint16datatype, false) );
%0x032
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_u8_s8', int8datatype, uint8datatype, uint8datatype, uint8datatype, int8datatype, false) );
%0x033
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_u8_s16', int16datatype, uint8datatype, uint8datatype, uint8datatype, int16datatype, false) );
%0x034
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_u16_u8', uint8datatype, uint16datatype, uint16datatype, uint16datatype, uint8datatype, false) );
%0x035
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_u16_u16', uint16datatype, uint16datatype, uint16datatype, uint16datatype, uint16datatype, false) );
%0x036
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_u16_s8', int8datatype, uint16datatype, uint16datatype, uint16datatype, int8datatype, false) );
%0x037
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_u16_s16', int16datatype, uint16datatype, uint16datatype, uint16datatype, int16datatype, false) );
%0x038
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_s8_u8', uint8datatype, int8datatype, int8datatype, int8datatype, uint8datatype, false) );
%0x039
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_s8_u16', uint16datatype, int8datatype, int8datatype, int8datatype, uint16datatype, false) );
%0x03A
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_s8_s8', int8datatype, int8datatype, int8datatype, int8datatype, int8datatype, false) ); 
%0x03B
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_s8_s16', int16datatype, int8datatype, int8datatype, int8datatype, int16datatype, false) ); 
%0x03C
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_s16_u8', uint8datatype, int16datatype, int16datatype, int16datatype, uint8datatype, false) );
%0x03D
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_s16_u16', uint16datatype, int16datatype, int16datatype, int16datatype, uint16datatype, false) );
%0x03E
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_s16_s8', int8datatype, int16datatype, int16datatype, int16datatype, int8datatype, false) );
%0x03F
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_s16_s16', int16datatype, int16datatype, int16datatype, int16datatype, int16datatype, false) );

%% Row-major routines (ROW_DIR)
%0x030    
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_u8_u8', uint8datatype, uint8datatype, uint8datatype, uint8datatype, uint8datatype, true) );
%0x031 
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_u8_u16', uint16datatype, uint8datatype, uint8datatype, uint8datatype, uint16datatype, true) );
%0x032
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_u8_s8', int8datatype, uint8datatype, uint8datatype, uint8datatype, int8datatype, true) );
%0x033
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_u8_s16', int16datatype, uint8datatype, uint8datatype, uint8datatype, int16datatype, true) );
%0x034
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_u16_u8', uint8datatype, uint16datatype, uint16datatype, uint16datatype, uint8datatype, true) );
%0x035
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_u16_u16', uint16datatype, uint16datatype, uint16datatype, uint16datatype, uint16datatype, true) );
%0x036
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_u16_s8', int8datatype, uint16datatype, uint16datatype, uint16datatype, int8datatype, true) );
%0x037
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_u16_s16', int16datatype, uint16datatype, uint16datatype, uint16datatype, int16datatype, true) );
%0x038
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_s8_u8', uint8datatype, int8datatype, int8datatype, int8datatype, uint8datatype, true) );
%0x039
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_s8_u16', uint16datatype, int8datatype, int8datatype, int8datatype, uint16datatype, true) );
%0x03A
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_s8_s8', int8datatype, int8datatype, int8datatype, int8datatype, int8datatype, true) ); 
%0x03B
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_s8_s16', int16datatype, int8datatype, int8datatype, int8datatype, int16datatype, true) ); 
%0x03C
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_s16_u8', uint8datatype, int16datatype, int16datatype, int16datatype, uint8datatype, true) );
%0x03D
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_s16_u16', uint16datatype, int16datatype, int16datatype, int16datatype, uint16datatype, true) );
%0x03E
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_s16_s8', int8datatype, int16datatype, int16datatype, int16datatype, int8datatype, true) );
%0x03F
hLib.addEntry( Ifx_addEntry_IntLkUpCur('Ifx_IntLkUpCur_s16_s16', int16datatype, int16datatype, int16datatype, int16datatype, int16datatype, true) );
end

function hEnt = Ifx_addEntry_IntLkUpCur(signature, datatype_y1, datatype_u1,  datatype_N, datatype_u2, datatype_u3, createRowMajorRoutine)

hEnt = coder.Ifx_IntCurCustomEntry;

%% Set Function Entry Parameters
hEnt.setTflCFunctionEntryParameters( ...
    'Key', 'lookup1D', ...
    'Priority', 100, ...
    'SupportSymbolicDimensions', true, ...
    'ImplementationName', signature, ...
    'ImplementationHeaderFile', 'Ifx.h');

%% Add Algorithm Properties
                    % Parameter                                     Value
algPropertyList = {{'InterpMethod',                              'Flat'},...
                   {'ExtrapMethod',                              'Clip'},...
                   {'IndexSearchMethod',                         {'Linear search', 'Binary search'}},...
                   {'UseLastTableValue'                          'on'},...
                   {'RemoveProtectionInput'                      'off'},...
                   {'RndMeth',                                   {'Round', 'Zero'}}};
               
%% Set ArrayLayout and UseRowMajorAlgorithm
[hEnt, algPropertyList] = Ifx_setMapRowMajorAttributes(hEnt, algPropertyList, createRowMajorRoutine);            
               
hEnt = addAlgorithmParameters(hEnt, algPropertyList);

%% Add Conceptual and implementation Arguments 
% Conceptual Arguments
hEnt = Ifx_addIntCurConceptualArguments(hEnt, datatype_y1, datatype_u1, datatype_u2, datatype_u3);

% Implementation Arguments
hEnt = Ifx_addIntCurImplementationArguments(hEnt, datatype_y1, datatype_u1, datatype_u2, datatype_u3, datatype_N);

%% Map and cache argument locations for use in do_match tasks
hEnt.mapAndCacheLabeledArgLocations();

end
