getLineColumn

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

Описание

пример

[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