getLineColumn

Найдите местоположения начала и конец кода MATLAB привлеченными в генерацию кода

Синтаксис

[startLoc,endLoc] = getLineColumn(obj)
[startLoc,endLoc] = getLineColumn(obj_message)

Описание

пример

[startLoc,endLoc] = getLineColumn(obj) возвращает строку и индексы столбца первого и последнего символа кода MATLAB®, описанного obj в тексте файла, содержащего код. Кодом, описанным obj, является функция MATLAB или метод, который привлечен в генерацию кода.

пример

[startLoc,endLoc] = getLineColumn(obj_message) возвращает строку и индексы столбца первого и последнего символа кода MATLAB, который вызвал сообщение генерации кода, описанное obj_message.

Примеры

свернуть все

Создайте информационный объект отчета для процесса генерации кода. Вы затем определяете местоположение функции MATLAB, привлеченной в генерацию кода в файле, содержащем эту функцию.

Задайте функцию MATLAB foo:

function [b,c] = foo(a)
b = svd(a,0);
c = bar(a);
end

function c = bar(a)
c = inv(a);
end

Сгенерируйте статическую библиотеку C для foo. Задайте вход как скаляр строки. Экспорт генерация кода сообщает информацию переменной info в вашем основном рабочем пространстве MATLAB.

codegen -config:lib foo -args {"A string scalar"} -reportinfo info

Генерация кода перестала работать, потому что скаляр строки не является допустимым входом для функций MATLAB svd и inv. Генератор кода создает информационный объект отчета info в основном рабочем пространстве MATLAB.

Свойство info.Functions является двумерным массивом. info.Functions(1) содержит описание функции MATLAB foo. info.Functions(2) содержит описание функции MATLAB bar.

Чтобы вручную осмотреть функциональный bar, сначала отобразите текст файла, содержащего bar.

info.Functions(2).File.Text
    'function [b,c] = foo(a)
     b = svd(a,0);
     c = bar(a);
     end
     
     function c = bar(a)
     c = inv(a);
     end
     '

Используйте getLineColumn, чтобы определить местоположение начала и конца функционального bar в этом тексте. Вывод startLoc содержит строку и индексы столбца первого символа bar. Вывод endLoc содержит строку и индексы столбца последнего знака bar.

[startLoc,endLoc]=getLineColumn(info.Functions(2))
startLoc = 

  struct with fields:

      Line: 6
    Column: 1


endLoc = 

  struct with fields:

      Line: 8
    Column: 3

Создайте информационный объект отчета для процесса генерации кода, который перестал работать. Вы затем определяете местоположение части кода MATLAB, который вызвал сообщение об ошибке.

Задайте функцию MATLAB foo:

function b = foo(a)
b = svd(a,0);
end

Сгенерируйте статическую библиотеку C для foo. Задайте вход как скаляр строки. Экспорт генерация кода сообщает информацию переменной info в вашем основном рабочем пространстве MATLAB.

codegen -config:lib foo -args {"A string scalar"} -reportinfo info

Генерация кода перестала работать, потому что скаляр строки не является допустимым входом для функции MATLAB svd. Генератор кода создает информационный объект отчета info в основном рабочем пространстве MATLAB.

Свойство info.Messages является двумерным массивом, содержащим описания двух сообщений генерации кода. Осмотрите описание первого сообщения.

info.Messages(1)
  Message with properties:

    Identifier: 'Coder:toolbox:unsupportedClass'
          Type: 'Error'
          Text: 'Function 'svd' is not defined for values of class 'string'.'
          File: [1×1 coder.CodeFile]
    StartIndex: 26
      EndIndex: 33

Чтобы вручную осмотреть сегмент, код MATLAB, который вызвал это сообщение об ошибке, сначала отобразите текст файла, сопоставленного с этим сообщением об ошибке.

info.Messages(1).File.Text
'function b = foo(a)
 b = svd(a,0);
 end
 '

Используйте getLineColumn, чтобы определить местоположение начала и конца части кода, который вызвал сообщение об ошибке. Вывод startLoc содержит строку и индексы столбца первого символа сегмента кода. Вывод endLoc содержит строку и индексы столбца последнего знака сегмента кода.

[startLoc,endLoc] = getLineColumn(info.messages(1))
startLoc = 

  struct with fields:

      Line: 2
    Column: 5


endLoc = 

  struct with fields:

      Line: 2
    Column: 12
Эти местоположения соответствуют началу и концу вызова функции 'svd(a,0)' в тексте foo.m.

Входные параметры

свернуть все

Объект, описывающий функцию MATLAB или метод в классе MATLAB, который привлечен в генерацию кода, задал как одно из следующего:

Объект coder.Message, описывающий ошибку, предупреждение или информационное сообщение, производится во время генерации кода из кода MATLAB. Смотрите кодер. Передайте Свойства.

Выходные аргументы

свернуть все

Массив структур с двумя полями: Line и Column.

  • startLoc.Line является индексом строки первого символа кода MATLAB в тексте файла, содержащего код.

  • startLoc.Column является индексом столбца первого символа кода MATLAB в тексте файла, содержащего код.

Массив структур с двумя полями: Line и Column.

  • endLoc.Line является индексом строки последнего знака кода MATLAB в тексте файла, содержащего код.

  • endLoc.Column является индексом столбца последнего знака кода MATLAB в тексте файла, содержащего код.

Введенный в R2019a