function hLib = make_iso_cpp_tfl_table
%

% Copyright 2003-2019 The MathWorks, Inc.

% Create an instance of the Target Function Library table in compliance
% with ANSI C (C89/C90) standard.

% $Revision $

hLib = RTW.TflTable;

hLib.registerCPPFunctionEntry(97, 1,'abs', 'single', 'abs', 'single', '<cmath>','','','std');
hLib.registerCPPFunctionEntry(97, 1,'abs', 'double', 'abs', 'double', '<cmath>','','','std');
hLib.registerCPPFunctionEntry(97, 1,'acos', 'single', 'acos', 'single', '<cmath>','','','std');
hLib.registerCPPFunctionEntry(97, 1,'asin', 'single', 'asin', 'single', '<cmath>','','','std');
hLib.registerCPPFunctionEntry(97, 1,'atan', 'single', 'atan', 'single', '<cmath>','','','std');
%atan2 is in make_private_iso_cpp_tfl_table, following the convention of C counterpart
%hLib.registerCPPFunctionEntry(97, 2,'atan2', 'single', 'rt_atan232$N', 'single', 'rt_atan232$N.h','genrtatan232.tlc','rt_atan232$N','std');
hLib.registerCPPFunctionEntry(97, 1,'ceil', 'single', 'ceil', 'single', '<cmath>','','','std');
e=hLib.registerCPPFunctionEntry(97, 1,'cos', 'single', 'cos', 'single', '<cmath>','','','std');
e.EntryInfo.Algorithm = 'RTW_DEFAULT';
hLib.registerCPPFunctionEntry(97, 1,'cosh', 'single', 'cosh', 'single', '<cmath>','','','std');
hLib.registerCPPFunctionEntry(97, 1,'exp', 'single', 'exp', 'single', '<cmath>','','','std');
hLib.registerCPPFunctionEntry(97, 1,'floor','single', 'floor', 'single', '<cmath>','','','std');
hLib.registerCPPFunctionEntry(97, 2,'fmod','single', 'fmod', 'single', '<cmath>','','','std');

% frexp is in make_private_iso_cpp_tfl_table.m, following the convention of the C counterpart 

%
% real32_T ldexp( real32_T, int_T )
%
e = RTW.TflCFunctionEntry;
e.setTflCFunctionEntryParameters('Key', 'ldexp', ...
                                 'Priority', 89, ...
                                 'ImplementationName', 'ldexp', ...
                                 'ImplementationHeaderFile', '<cmath>');
e.enableCPP();
e.setNameSpace('std');

arg = hLib.getTflArgFromString('y1', 'single');
arg.IOType = 'RTW_IO_OUTPUT';
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u1', 'single');
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u2', 'integer');
e.addConceptualArg(arg);

e.copyConceptualArgsToImplementation();
hLib.addEntry( e );


hLib.registerCPPFunctionEntry(97, 1,'log', 'single', 'log', 'single', '<cmath>','','','std');
hLib.registerCPPFunctionEntry(97, 1,'log10', 'single', 'log10', 'single', '<cmath>','','','std');

% Why modf is missing from all of the TFL tables? TODO

e=hLib.registerCPPFunctionEntry(97, 1,'sin', 'single', 'sin', 'single', '<cmath>','','','std');
e.EntryInfo.Algorithm = 'RTW_DEFAULT';
hLib.registerCPPFunctionEntry(97, 1,'sinh', 'single', 'sinh', 'single', '<cmath>','','','std');
hLib.registerCPPFunctionEntry(97, 1,'sqrt', 'single', 'sqrt', 'single', '<cmath>','','','std');
hLib.registerCPPFunctionEntry(97, 1,'tan', 'single', 'tan', 'single', '<cmath>','','','std');
hLib.registerCPPFunctionEntry(97, 1,'tanh', 'single', 'tanh', 'single', '<cmath>','','','std');


%From the ANSI C table. Adapted to force std::fcnname for conformance
hLib.registerCPPFunctionEntry(97, 1,'sqrt', 'double', 'sqrt', 'double', '<cmath>','','','std');

hLib.registerCPPFunctionEntry(97, 1,'floor', 'double', 'floor', 'double', '<cmath>','','','std');

hLib.registerCPPFunctionEntry(97, 1,'ceil', 'double', 'ceil', 'double', '<cmath>','','','std');

hLib.registerCPPFunctionEntry(97, 1,'log', 'double', 'log', 'double', '<cmath>','','','std');

hLib.registerCPPFunctionEntry(97, 1,'log10', 'double', 'log10', 'double', '<cmath>','','','std');

e=hLib.registerCPPFunctionEntry(97, 1,'sin', 'double', 'sin', 'double', '<cmath>','','','std');
e.EntryInfo.Algorithm = 'RTW_DEFAULT';

e=hLib.registerCPPFunctionEntry(97, 1,'cos', 'double', 'cos', 'double', '<cmath>','','','std');
e.EntryInfo.Algorithm = 'RTW_DEFAULT';

hLib.registerCPPFunctionEntry(97, 1,'tan', 'double', 'tan', 'double', '<cmath>','','','std');

hLib.registerCPPFunctionEntry(97, 1,'asin', 'double', 'asin', 'double', '<cmath>','','','std');

hLib.registerCPPFunctionEntry(97, 1,'acos', 'double', 'acos', 'double', '<cmath>','','','std');

hLib.registerCPPFunctionEntry(97, 1,'atan', 'double', 'atan', 'double', '<cmath>','','','std');

hLib.registerCPPFunctionEntry(97, 1,'sinh', 'double', 'sinh', 'double', '<cmath>','','','std');

hLib.registerCPPFunctionEntry(97, 1,'cosh', 'double', 'cosh', 'double', '<cmath>','','','std');

hLib.registerCPPFunctionEntry(97, 1,'tanh', 'double', 'tanh', 'double', '<cmath>','','','std');

hLib.registerCPPFunctionEntry(97, 1,'exp', 'double', 'exp', 'double', '<cmath>','','','std');

hLib.registerCPPFunctionEntry(97, 1,'ln', 'double', 'log', 'double', '<cmath>','','','std');

hLib.registerCPPFunctionEntry(97, 2,'fmod', 'double', 'fmod', 'double', '<cmath>','','','std');

% Add std:: to constant and change to C++ header
hLib.registerCPPConstantEntry(100, 'EPS', 'double', 'DBL_EPSILON', 'double', '<cfloat>','','','');
hLib.registerCPPConstantEntry(100, 'EPSILON', 'double', 'DBL_EPSILON', 'double', '<cfloat>','','','');
hLib.registerCPPConstantEntry(100, 'MAX_VAL', 'double', 'DBL_MAX', 'double', '<cfloat>','','','');
hLib.registerCPPConstantEntry(100, 'MIN_VAL', 'double', 'DBL_MIN', 'double', '<cfloat>','','','');
hLib.registerCPPConstantEntry(100, 'EPS', 'single', 'FLT_EPSILON', 'single', '<cfloat>','','','');
hLib.registerCPPConstantEntry(100, 'EPSILON', 'single', 'FLT_EPSILON', 'single', '<cfloat>','','','');
hLib.registerCPPConstantEntry(100, 'MAX_VAL', 'single', 'FLT_MAX', 'single', '<cfloat>','','','');
hLib.registerCPPConstantEntry(100, 'MIN_VAL', 'single', 'FLT_MIN', 'single', '<cfloat>','','','');

%
% real_T ldexp( real_T, int_T )
%
e = RTW.TflCFunctionEntry;
e.setTflCFunctionEntryParameters('Key', 'ldexp', ...
                                 'Priority', 90, ...
                                 'ImplementationName', 'ldexp', ...
                                 'ImplementationHeaderFile', '<cmath>');
e.enableCPP();
e.setNameSpace('std');

arg = hLib.getTflArgFromString('y1', 'double');
arg.IOType = 'RTW_IO_OUTPUT';
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u1', 'double');
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u2', 'integer');
e.addConceptualArg(arg);

e.copyConceptualArgsToImplementation();
hLib.addEntry( e );

%
% void* memcpy( void*, void*, size_t )
%
e = RTW.TflCFunctionEntry;
e.setTflCFunctionEntryParameters('Key', 'memcpy', ...
                                 'Priority', 90, ...
                                 'ImplementationName', 'memcpy', ...
                                 'ImplementationHeaderFile', '<cstring>');

e.enableCPP();
e.setNameSpace('std');

arg = hLib.getTflArgFromString('y1', 'void*');
arg.IOType = 'RTW_IO_OUTPUT';
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u1', 'void*');
%arg.IOType = 'RTW_IO_INPUT_OUTPUT';
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u2', 'void*');
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u3', 'size_t');
e.addConceptualArg(arg);

e.copyConceptualArgsToImplementation();
hLib.addEntry( e );

%
% void* memset( void*, int, size_t )
%
e = RTW.TflCFunctionEntry;
e.setTflCFunctionEntryParameters('Key', 'memset', ...
                                 'Priority', 90, ...
                                 'ImplementationName', 'memset', ...
                                 'ImplementationHeaderFile', '<cstring>');

e.enableCPP();
e.setNameSpace('std');

arg = hLib.getTflArgFromString('y1', 'void*');
arg.IOType = 'RTW_IO_OUTPUT';
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u1', 'void*');
%arg.IOType = 'RTW_IO_INPUT_OUTPUT';
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u2', 'integer');
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u3', 'size_t');
e.addConceptualArg(arg);

e.copyConceptualArgsToImplementation();
hLib.addEntry( e );

%
% int memcmp( const void*, const void*, size_t )
%
e = RTW.TflCFunctionEntry;
e.setTflCFunctionEntryParameters('Key', 'memcmp', ...
                                 'Priority', 90, ...
                                 'ImplementationName', 'memcmp', ...
                                 'ImplementationHeaderFile', '<cstring>');
e.enableCPP();
e.setNameSpace('std');

arg = hLib.getTflArgFromString('y1', 'integer');
arg.IOType = 'RTW_IO_OUTPUT';
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u1', 'void*');
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u2', 'void*');
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u3', 'size_t');
e.addConceptualArg(arg);

e.copyConceptualArgsToImplementation();
hLib.addEntry( e );

%
% void* memmove( void*, const void*, size_t )
%
e = RTW.TflCFunctionEntry;
e.setTflCFunctionEntryParameters('Key', 'memmove', ...
                                 'Priority', 90, ...
                                 'ImplementationName', 'memmove', ...
                                 'ImplementationHeaderFile', '<cstring>');
e.enableCPP();
e.setNameSpace('std');

arg = hLib.getTflArgFromString('y1', 'void*');
arg.IOType = 'RTW_IO_OUTPUT';
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u1', 'void*');
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u2', 'void*');
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u3', 'size_t');
e.addConceptualArg(arg);

e.copyConceptualArgsToImplementation();
hLib.addEntry( e );

%
% void* malloc( size_t )
%
e = RTW.TflCFunctionEntry;
e.setTflCFunctionEntryParameters('Key', 'malloc', ...
                                 'Priority', 90, ...
                                 'ImplementationName', 'malloc', ...
                                 'ImplementationHeaderFile', '<cstdlib>');
e.enableCPP();
e.setNameSpace('std');

arg = hLib.getTflArgFromString('y1', 'void*');
arg.IOType = 'RTW_IO_OUTPUT';
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u1', 'size_t');
e.addConceptualArg(arg);

e.copyConceptualArgsToImplementation();
hLib.addEntry( e );

%
% void* calloc( size_t, size_t )
%
e = RTW.TflCFunctionEntry;
e.setTflCFunctionEntryParameters('Key', 'calloc', ...
                                 'Priority', 90, ...
                                 'ImplementationName', 'calloc', ...
                                 'ImplementationHeaderFile', '<cstdlib>');
e.enableCPP();
e.setNameSpace('std');

arg = hLib.getTflArgFromString('y1', 'void*');
arg.IOType = 'RTW_IO_OUTPUT';
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u1', 'size_t');
e.addConceptualArg(arg);

arg = hLib.getTflArgFromString('u2', 'size_t');
e.addConceptualArg(arg);

e.copyConceptualArgsToImplementation();
hLib.addEntry( e );

%
% void free( void* )
%
e = RTW.TflCFunctionEntry;
e.setTflCFunctionEntryParameters('Key', 'free', ...
                                 'Priority', 90, ...
                                 'ImplementationName', 'free', ...
                                 'ImplementationHeaderFile', '<cstdlib>', ...
                                 'SideEffects', true);
                             
e.enableCPP();
e.setNameSpace('std');

arg = hLib.getTflArgFromString('y1', 'void');
arg.IOType = 'RTW_IO_OUTPUT';
e.addConceptualArg(arg);
                             
arg = hLib.getTflArgFromString('u1', 'void*');
e.addConceptualArg(arg);

e.copyConceptualArgsToImplementation();
hLib.addEntry( e );


% EOF

% LocalWords:  cmath genrtatan frexp ldexp modf fcnname ln
