В этом примере показано, как задать заменяющее отображение кода для функции памяти. Пример задает отображение для memcpy
функционируйте программно. В качестве альтернативы можно использовать Code Replacement Tool, чтобы задать то же отображение.
Создайте табличный файл определения, который содержит функциональное определение. Например:
function hTable = crl_table_memcpy()
В теле функции составьте таблицу путем вызова функционального RTW.TflTable
.
hTable = RTW.TflTable;
Создайте запись для отображения функции с вызовом RTW.TflCFunctionEntry
функция.
% Create entry for void* memcpy(void*, void*, size_t)
fcn_entry = RTW.TflCFunctionEntry;
Параметры записи функции множества с вызовом setTflCFunctionEntryParameters
функция.
% Set SideEffects to 'true' for function returning void to prevent it from % being optimized away. setTflCFunctionEntryParameters(fcn_entry, ... 'Key', 'memcpy', ... 'Priority', 90, ... 'ImplementationName', 'memcpy_int', ... 'ImplementationHeaderFile', 'memcpy_int.h',... 'SideEffects', true);
Создайте концептуальные аргументы y1
, u1
, u2
, и u3
. Существует несколько способов настроить концептуальные аргументы. Этот пример использует вызовы getTflArgFromString
и addConceptualArg
функции, чтобы создать и добавить аргументы.
arg = getTflArgFromString(hTable, 'y1', 'void*'); arg.IOType = 'RTW_IO_OUTPUT'; addConceptualArg(fcn_entry, arg); arg = getTflArgFromString(hTable, 'u1', 'void*'); addConceptualArg(fcn_entry, arg); arg = getTflArgFromString(hTable, 'u2', 'void*'); addConceptualArg(fcn_entry, arg); arg = getTflArgFromString(hTable, 'u3', 'size_t'); addConceptualArg(fcn_entry, arg);
Скопируйте концептуальные аргументы в аргументы реализации. Существует несколько способов настроить аргументы реализации. Этот пример использует вызов copyConceptualArgsToImplementation
функция, чтобы создать и добавить аргументы реализации в запись путем копирования соответствия с концептуальными аргументами.
copyConceptualArgsToImplementation(fcn_entry);
Добавьте запись в заменяющую таблицу кода с вызовом addEntry
функция.
addEntry(hTable, fcn_entry);
Сохраните табличный файл определения. Используйте имя табличной функции определения, чтобы назвать файл.