У меня есть система с конфигурационным файлом, который читается в тестовой среде.Файл конфигурации создается другой группой, и теперь у него есть значения конфигурации, которые больше не используются, но которые они не хотят удалять.В тестовом стенде я прочитал в файле конфигурации и применил значения в нем к члену класса с множественными вложениями, который представляет карту регистров устройства.
До этого момента у меня было большое, нопростая инструкция case, которая проанализировала ключ конфигурации, а затем просто применила соответствующее значение к полю регистра, которое было связано с ключом конфигурации.Например,
while(!$feof(cfg_file)) begin
cfg_r = $fgets(cfg_line, cfg_file);
cfg_r = $sscanf(cfg_line,"%s = %s", cfg_name_str, cfg_value_str);
case (cfg_name_str)
"gpe" : begin
ewd_regs.op.gpe.coef = cfg_field_value;
end
// Other configuration keywords and a default:
endcase
end
В этом примере ключевое слово и поле регистра оба являются "gpe", но для некоторых полей ключевое слово файла конфигурации и поле регистра отличаются.
Теперьс беспорядком в файле конфигурации у меня есть некоторые ключевые слова, которые перечислены в файле конфигурации и которые соответствуют одному из случаев, но которые больше не определяются отдельным кодом, который определяет и строит карту регистров / полей.Итак, в приведенном выше примере ewd_regs.op существует, а ewd_regs.op.gpe - нет.
Итак, мой вопрос: как я могу проверить, существует ли ewd_regs.op.gpe перед выполнением назначения?Если он не существует, я хочу записать условие и продолжить анализ файла конфигурации.