Files
VisualSapfor/src/_VisualDVM/ProjectData/Messages/Message.java
2024-10-14 15:19:13 +03:00

456 lines
44 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package _VisualDVM.ProjectData.Messages;
import Common.Mode;
import Common.Passes.PassException;
import Common.Utils.Utils_;
import _VisualDVM.Constants;
import _VisualDVM.Current;
import _VisualDVM.Global;
import _VisualDVM.GlobalData.Settings.SettingName;
import _VisualDVM.ProjectData.SapforData.FileObject;
import _VisualDVM.ProjectData.SapforData.FileObjectWithMessages;
import java.util.HashMap;
import java.util.Map;
public class Message extends FileObject {
private static HashMap<String, String> codedMessages;
private static HashMap<String, String> codedMessages2;
public int group;
public String group_s = "#";
public String value;
public Message() {
}
public Message(String file_in, int line_in, String value_in, int group_in
) throws Exception {
file = file_in;
line = line_in;
setGroup(group_in);
if ((group == Constants.parser_group) ||
(group == Constants.compiler_group) ||
(Global.mode != Mode.Normal)) {
value = value_in;
} else {
value = !(Global.mainModule.getDb()).settings.get(SettingName.TRANSLATE_MESSAGES).toBoolean() ? value_in : decodeRussianMessage(value_in);
}
}
// last code - 183
private static String decodeRussianMessage(String coded) throws Exception {
if (codedMessages == null) {
codedMessages = new HashMap<>();
codedMessages2 = new HashMap<>();
codedMessages2.put("RR1_1", "перед");
codedMessages2.put("RR1_2", "объявлением переменных");
codedMessages2.put("RR1_3", "циклом");
codedMessages2.put("RR1_4", "после");
codedMessages2.put("RR1_5", "всех операторов объявления");
codedMessages2.put("RR1_6", "заголовка процедуры");
codedMessages2.put("RR1_7", "единожды");
codedMessages2.put("RR1_8", "только");
codedMessages2.put("RR158_1", "' для этого цикла.");
codedMessages2.put("RR42_1", "как выходной аргумент");
codedMessages2.put("RR42_2", "как массив в функции");
//1001
codedMessages.put("R1", "Неверное расположение директивы: можно располагать только %s %s %s.");
codedMessages.put("R2", "Неверное выражение: слишком много переменных цикла.");
codedMessages.put("R3", "Неверное выражение: возможно только вида a * i + b.");
codedMessages.put("R4", "Неверное расположение директивы: для области '%s' ожидается 'SPF END PARALLEL_REG_DIR', а была получена 'SPF PARALLEL_REG_DIR'.");
codedMessages.put("R5", "Неверное расположение директивы: для области '%s' ожидается 'SPF END PARALLEL_REG_DIR'.");
codedMessages.put("R6", "Неверное расположение директивы: для области '%s' ожидается 'SPF END PARALLEL_REG_DIR'.");
codedMessages.put("R7", "Неверное расположение директивы: ожидается 'SPF PARALLEL_REG_DIR', а была получена 'SPF END PARALLEL_REG_DIR'.");
codedMessages.put("R8", "Неверное расположение директивы: ожидается 'SPF PARALLEL_REG_DIR' в той же области видимости.");
codedMessages.put("R9", "Неверное расположение директивы: ожидается 'SPF PARALLEL_REG_DIR'.");
codedMessages.put("R10", "Неправильная расстановка области распараллеливания: есть несколько входов во фрагмент '%s', вызванные оператором ENTRY.");
codedMessages.put("R11", "Неправильная расстановка области распараллеливания: есть несколько входов во фрагмент '%s', вызванные оператором GOTO.");
codedMessages.put("R12", "Неправильное расположение строк: можно выбирать строки только в исполняемой части кода.");
codedMessages.put("R13", "Неправильное расположение строк: начало не может быть больше конца.");
codedMessages.put("R14", "Неправильное расположение строк: начало и конец при расширении не могут лежать в разных областях.");
codedMessages.put("R15", "Неправильное положение строки: начало и конец не могут быть в неявных фрагментах.");
codedMessages.put("R16", "Неправильное положение строк: начало и конец не могут быть в разных процедурах.");
codedMessages.put("R17", "Неправильное расположение строк: выделенный фрагмент при расширении не должен включать фрагменты разных областей.");
codedMessages.put("R18", "Неправильное расположение строк: начало и конец должны быть в одной области видимости.");
codedMessages.put("R19", "Неправильное расположение строк %d-%d: нельзя объединить фрагменты в разных областях видимости.");
codedMessages.put("R20", "Неправильное расположение строк: начало и конец должны быть в одной области видимости.");
//1002
codedMessages.put("R21", "Переменная '%s' не используется в цикле.");
codedMessages.put("R22", "Переменная '%s' не используется в цикле.");
//1003
codedMessages.put("R23", "Переменная '%s' не изменяется в цикле.");
codedMessages.put("R24", "Переменная '%s' не изменяется в цикле.");
//1004
codedMessages.put("R25", "Размерность массива '%s' %d, а должна быть 1.");
//1005
codedMessages.put("R26", "Тип массива '%s' должен быть INTEGER.");
//1006
codedMessages.put("R27", "Типом переменной '%s' должен быть массив.");
codedMessages.put("R28", "Переменная '%s' не является массивом.");
codedMessages.put("R29", "Переменная '%s' не является массивом.");
//1007
codedMessages.put("R30", "Размер массива не может быть вычислен.");
//1008
codedMessages.put("R31", "Размер массива '%s' %d, а вы вводите %d.");
codedMessages.put("R32", "Размерность массива '%s' %d, а вы вводите %d.");
//1009
codedMessages.put("R33", "Массив '%s' является приватным.");
codedMessages.put("R34", "Массив '%s' является приватным.");
//1010
codedMessages.put("R35", "Разрешены только положительные числа.");
//1011
codedMessages.put("R36", "Нет такого выражения '%s' в цикле.");
//1012
codedMessages.put("R37", "Невозможно определить размеры массива '%s'.");
codedMessages.put("R149", "Невозможно определить размеры цикла '%s'.");
//1013
codedMessages.put("R38", "Отличается количество формальных и фактических параметров для процедуры '%s'."); //Требуется выполнить подстановку процедуры '%s', так как
codedMessages.put("R39", "Отличается тип фактического (%s : %s) и формального (%s : %s) %d-го параметра для процедуры '%s'."); //Требуется выполнить подстановку процедуры '%s', так как
codedMessages.put("R40", "Требуется выполнить подстановку процедуры '%s', так как можно передавать массивы только целиком.");
codedMessages.put("R41", "Требуется выполнить подстановку процедуры '%s' из-за обращения к неприватному массиву '%s' в цикле на строке %d %s.");
codedMessages.put("R42", "Требуется выполнить подстановку процедуры '%s' из-за обращения к неприватному массиву '%s' %s.");
codedMessages.put("R43", "Требуется подставить процедуру '%s' из-за разной размерности массива '%s', передаваемого в качестве параметра: размерность формального параметра = %d, а фактического параметра = %d.");
codedMessages.put("R44", "Для процедуры '%s' обнаружено несоответствие типов формального и фактического параметра для массива '%s'.");
codedMessages.put("R45", "Необходимо подставить процедуру '%s', так как через параметр %d передается итерационная переменная цикла на строке %d и она используется в индексном выражении в обращении к массиву в теле этой процедуры.");
//1014
codedMessages.put("R46", "Была найдена рекурсивная цепочка вызовов: '%s', данная процедура исключена из рассмотрения.");
//1015
codedMessages.put("R47", "Данная процедура не вызывается в данном проекте.");
//1016
codedMessages.put("R48", "Невозможно вычислить количество итераций данного цикла, информация о количестве итераций для всех остальных циклов в области распараллеливания '%s' будет проигнорирована.");
//1017
codedMessages.put("R49", "Невозможно найти определение для символа '%s' в данной области видимости.");
//1018
codedMessages.put("R50", "Данный цикл не в END DO формате.");
codedMessages.put("R51", "Данный цикл не в END DO формате.");
//1019
codedMessages.put("R52", "Включаемый файл '%s' содержит исполняемые операторы, что запрещено к распараллеливанию в системе SAPFOR.");
//1020
codedMessages.put("R53", "Активные DVM-директивы не поддерживаются.");
//1021
codedMessages.put("R54", "Обращение к массиву '%s' содержит более одной индексной переменной циклов.");
codedMessages.put("R55", "Обращение к массиву '%s' по измерению '%d' не содержит итерационных переменных циклов.");
//1022
codedMessages.put("R56", "Обращение к массиву '%s' имеет косвенную адресацию.");
//1023
codedMessages.put("R57", "Невозможно вычислить индексное выражение в обращении к массиву '%s'.");
//1024
codedMessages.put("R58", "Коэффициент A в линейном обращении A*x+B к массиву '%s' не может быть отрицательным, так как инверсное распределение не поддерживается.");
//1025
codedMessages.put("R59", "Невозможно сопоставить обращение к массиву на запись '%s' с данными циклом.");
//1026
codedMessages.put("R60", "Обнаружен оператор записи в нераспределенный массив '%s', связанный с данным циклом.");
codedMessages.put("R61", "Обнаружен оператор записи в нераспределенный массив '%s', связанный с данным циклом.");
//1027
codedMessages.put("R179", "Обнаружен более, чем один оператор в одной и той же строке, попробуйте применить проход 'Коррекция стиля кода'.");
//1028
codedMessages.put("R62", "Описание модуля '%s' должно находиться в данном файле.");
//1029 && 1030
codedMessages.put("R158", "Рекурсия не анализируется для приватных переменных в common-блоке '%s'.");
codedMessages.put("R159", "Анализ приватных переменных невозможен для данного цикла из-за: '%s'.");
codedMessages.put("R160", "Переменная '%s' из списка приватных переменных не может быть классифицирована как приватная.");
codedMessages.put("R161", "Массив '%s' из списка приватных переменных не может быть классифицирована как приватный.");
codedMessages.put("R162", "Добавлена приватная переменная '%s");
codedMessages.put("R163", "Добавлена приватная переменная по массиву '%s");
//1031
codedMessages.put("R63", "Неверное имя области: имя '%s' уже объявлено на строке %d.");
//1032
codedMessages.put("R64", "Неверное имя области: имя '%s' уже объявлено в common-блоке '%s'.");
//1033
codedMessages.put("R65", "Область распараллеливания '%s' включает саму себя в файле '%s'.");
//1034
codedMessages.put("R66", "Неверное расположение области: не существует common-блока в текущей функции '%s' со следующими массивами:%s.");
//1035
//--- TODO
//1036
codedMessages.put("R67", "Невозможно построить дерево выравнивания в данной области распараллеливания, используя пользовательские DVM-директивы.");
//1037
codedMessages.put("R68", "Массив '%s' не может быть распределен из-за ограничений ввода/вывода, накладываемых DVM системой.");
//1038
codedMessages.put("R69", "Оператор PAUSE является запрещенным в параллельной программе.");
codedMessages.put("R70", "Оператор EQUIVALENCE не поддерживается на данный момент.");
//1039
codedMessages.put("R71", "Переменные '%s' и '%s' находятся в одной области ассоциации (common block '%s'), но имеют разные типы (файлы - %s:%d и %s:%d).");
//1040
codedMessages.put("R72", "Первые %d измерений массива '%s' запрещены к распределению из-за передачи к процедуру '%s'.");
codedMessages.put("R73", "Первое измерение массива '%s' запрещено к распределению из-за передачи в процедуру '%s'.");
//1041
codedMessages.put("R74", "Область распараллеливания '%s'содержит строку, которая включена в другую область, необходимо применить проход 'Разрешение конфликтов областей'.");
//1042
codedMessages.put("R75", "Распределенный массив '%s' состоящий в common блоке '%s' должен иметь описание в главной программной единице.");
//1043
codedMessages.put("R76", "Неверное выражение в директиве: ожидается список переменных.");
codedMessages.put("R77", "Неверное выражение в директиве: ожидается %d тесно-вложенных циклов на строке %d, но их всего %d.");
codedMessages.put("R78", "Неверное выражение в директиве: ожидается переменная '%s' на позиции %d.");
//1044
codedMessages.put("R79", "Поддерживаются процедуры только без побочных эффектов.");
codedMessages.put("R80", "Поддерживаются процедуры только без побочных эффектов.");
//1045
codedMessages.put("R81", "Аргумент '%s' процедуры '%s' имеет неизвестные нижнюю и/или верхнюю границы.");
//1046
codedMessages.put("R82", "Количество формальных и фактических параметров не одинаково для вызова данной процедуры '%s'.");
codedMessages.put("R83", "Количество формальных и фактических параметров не одинаково для вызова данной процедуры '%s'.");
codedMessages.put("R84", "Количество формальных и фактических параметров не одинаково для вызова данной процедуры '%s'.");
//1047
codedMessages.put("R85", "%d измерение массива '%s' не может быть распределено из-за различных отображений на циклы в операциях присваиваний.");
codedMessages.put("R86", "Массив '%s' не может быть распределен, так как все его измерения запрещены к распределению.");
codedMessages.put("R87", "Массив '%s' не может быть распределен.");
codedMessages.put("R88", "Массив '%s' не может быть распределен.");
codedMessages.put("R89", "Массив '%s' не может быть распределен.");
codedMessages.put("R90", "Массив '%s' не может быть распределен из-за использования RESHAPE.");
codedMessages.put("R91", "Массив '%s' не может быть распределен.");
codedMessages.put("R164", "Массив '%s' не может быть распределен из-за использования конструктора инициализации");
//1048
codedMessages.put("R92", "Процедура '%s' с одинаковым именем была объявлена в более, чем одном месте: в файле '%s':%d и '%s':%d.");
//1049
codedMessages.put("R93", "Процедура не является чистой (без побочных эффектов) из-за наличия данного оператора.");
//1050
codedMessages.put("R146", "Найдена более, чем одна главная программная единица (PROGRAM).");
codedMessages.put("R147", "Не найдена ни одна главная программная единица (PROGRAM).");
//1051
codedMessages.put("R148", "Обнаружены вызовы MPI-процедур, включен режим специальный режим распараллеливания MPI-программ.");
//1052
codedMessages.put("R150", "Ошибка в расстановке пользовательских интервалов - не удалось найти конец интервала.");
//1053
codedMessages.put("R154", "Ошибка в выражении SHRINK клаузы: переменная должна быть массивом в файле '%s'.");
//1054
codedMessages.put("R155", "Длина маски для массива '%s' должна быть равна %d, но указано только %d измерений в файле '%s'.");
//1055
codedMessages.put("R156", "Ошибка в выражении маски на %d позиции массива '%s': в качестве значения могут быть только 0 и 1 в файле '%s'.");
//1056
codedMessages.put("R157", "Массив '%s' в клаузе SHRINK также должен быть объявлен в клаузе private в файле '%s'.");
//1057
codedMessages.put("R175", "Переменная '%s' должна использоваться в следующем операторе.");
//1058
codedMessages.put("R176", "В левой части клаузы PARAMETER должна быть переменная.");
//1059
codedMessages.put("R182", "Редукционная операция по элементу массива '%s' на данный момент не поддерживается.");
//1060
codedMessages.put("R183", "Расположение операторов FORMAT в области описания типов данных не поддерживается, попробуйте применить проход 'Коррекция стиля кода'.");
//1061
codedMessages.put("R184", "Область объявления массива '%s' конфликтует с предыдущей областью. Возможно, это вызвано использованием include-файлов. Попробуйте применить проход 'Подстановка заголовочных файлов'.");
//2001
codedMessages.put("R94", "Невозможно автоматически преобразовать данное присваивание к циклу.");
codedMessages.put("R95", "Невозможно автоматически преобразовать данное присваивание к циклу.");
//2002
codedMessages.put("R96", "Арифметический IF был преобразован в IF-ENDIF.");
codedMessages.put("R97", "Вычисляемый GOTO был преобразован в IF-ENDIF.");
//2003
codedMessages.put("R98", "Невозможно автоматически преобразовать цикл в END DO формат.");
//2004
codedMessages.put("R99", "Цикл был преобразован в END DO формат.");
//2005
codedMessages.put("R100", "Циклы в строке %d и в строке %d были объединены.");
//2006
codedMessages.put("R101", "Была выполнена подстановка макроса с именем '%s'.");
//2007
codedMessages.put("R102", "Возникла непредвиденная ситуация во время генерации выходного текста.");
codedMessages.put("R103", "Возникла непредвиденная ситуация во время генерации выходного текста.");
//2008
// -- TODO
//2009
codedMessages.put("R104", "Невозможно разделить данный цикл из-за следующей зависимости: %s.");
//2010
codedMessages.put("R105", "Данный цикл содержит косвенные подциклы, поэтому не может быть разделен.");
codedMessages.put("R106", "У данного цикла есть ограничение на разделение в строке %s (наличие операторов goto, print, stop или этот цикл не является DO-ENDDO).");
codedMessages.put("R107", "У данного цикла есть зависимости, которые нельзя проанализировать, поэтому он не может быть разделен в строке %s.");
//2011
codedMessages.put("R177", "Подстановка процедур разрешена только в исполняемой части кода.");
//2012
codedMessages.put("R173", "Операторы SAVE и DATA запрещены в дублируемых процедурах");
//2013
codedMessages.put("R174", "Операторы SAVE и DATA запрещены в дублируемых процедурах: переменная '%s'");
//2014
codedMessages.put("R180", "Невозможно выполнить подстановку процедур '%s': разная размерность формального и фактического параметра '%s'");
//2015
codedMessages.put("R185", "Неправильный синтаксис директивы");
codedMessages.put("R186", "Неправильный синтаксис директивы - выражения в заголовке цикла должны быть вычисляемыми");
codedMessages.put("R187", "Выражения в заголовке цикла должны быть вычисляемыми");
codedMessages.put("R195", "Нельзя выполнить преобразование из-за данного оператора, который имеет construct-name");
//2016
codedMessages.put("R188", "Нельзя удалить приватную переменную '%s' - для неё не найдена маска фиксированных измерений");
//2017
codedMessages.put("R189", "Нельзя удалить приватную переменную '%s' - она имеет рекурсивную зависимость");
codedMessages.put("R190", "Нельзя удалить приватную переменную '%s' - она зависит от неинвариантной переменной цикла '%s'");
//2018
codedMessages.put("R191", "Приватная переменная '%s' была удалена");
codedMessages.put("R201", "Приватная переменная '%s' была частично удалена");
//2019
codedMessages.put("R192", "Удаление приватной переменной '%s' было выполнено в предположении, что выражения '%s' и '%s' различны");
//2020
codedMessages.put("R193", "");
codedMessages.put("R194", "Нельзя удалить приватную переменную '%s' - не удалось найти достигающее определение для оператора");
//2022
codedMessages.put("R196", "Невозможно выполнить преобразование циклов из-за зависимостей между операторами.");
//2023
codedMessages.put("R197", "Преобразование не может быть выполнено - не произошло никаких изменений в коде");
codedMessages.put("R198", "Нельзя удалить приватную переменную '%s' - обращения к ней имеют разное выравнивание с циклом");
codedMessages.put("R199", "Зависимость по скаляру с типом lastprivate препятствует распараллеливанию данного цикла");
codedMessages.put("R200", "Добавлена lastprivate переменная '%s' к циклу на строке %d");
codedMessages.put("R202", "Ссылка '%s' имеет отличный от оригинального массива размер");
//2025
codedMessages.put("R203", "Нельзя удалить приватную переменную '%s' - она используется в вызове функции %s");
//3002
//3001
codedMessages.put("R108", "Добавлена across-зависимость к массиву '%s' в цикле.");
//3002
codedMessages.put("R109", "Добавлена приватная переменная '%s' к циклу на строке %d.");
//3003
codedMessages.put("R110", "Добавлена редукционная переменная '%s' с типом операции '%s' к циклу на строке %d.");
//3004
codedMessages.put("R111", "Неизвестный тип редукционной операции по скаляру '%s'.");
//3005
codedMessages.put("R112", "Неизвестная зависимость по скалярной переменной '%s' (попробуйте вручную специфицировать ее тип).");
//3006
codedMessages.put("R113", "Неизвестная зависимость по массиву препятствует распараллеливанию данного цикла.");
codedMessages.put("R114", "Неизвестная зависимость по скаляру препятствует распараллеливанию данного цикла.");
codedMessages.put("R115", "Внешние или внутренние операторы перехода (GOTO/EXIT) препятствуют распараллеливанию данного цикла.");
codedMessages.put("R116", "Операторы ввода/вывода препятствуют распараллеливанию данного цикла.");
codedMessages.put("R117", "Операторы STOP препятствуют распараллеливанию данного цикла.");
codedMessages.put("R118", "Обнаружены конфликтные присваивания, которые препятствуют распараллеливанию данного цикла.");
codedMessages.put("R119", "Невозможность сопоставить обращение к массиву на запись препятствует распараллеливанию данного цикла.");
codedMessages.put("R120", "Косвенная адресация по распределяемому массиву препятствует распараллеливанию данного цикла.");
codedMessages.put("R121", "Обращение к нераспределенному массиву на запись препятствует распараллеливанию данного цикла.");
codedMessages.put("R122", "Найдены различные правила выравнивания массивов, используемых на запись в данном цикле, препятствует распараллеливанию.");
codedMessages.put("R123", "Процедуры с побочным эффектом препятствуют распараллеливанию данного цикла.");
codedMessages.put("R124", "%s зависимость между %s (строка %d) и %s (строка %d) с неизвестным расстоянием препятствует распараллеливанию цикла на строке %d.");
codedMessages.put("R125", "%s зависимость между %s (строка %d) и %s (строка %d) с неизвестным расстоянием препятствует распараллеливанию.");
codedMessages.put("R144", "Обнаружено непрямоугольное пространство итераций, что препятствует распараллеливанию данного цикла.");
codedMessages.put("R145", "Обнаружены DVM интервалы внутри цикла, что препятствует распараллеливанию данного цикла.");
codedMessages.put("R178", "Данный вид циклов не поддерживается системой.");
//--TODO R124 R125 про неопределенную длину зависимости
//3007
codedMessages.put("R126", "Невозможно создать с шаблоном для массива '%s': размерность массива '%d' и это не соответствует '%d'.");
codedMessages.put("R127", "Невозможно сопоставить выравнивания массивов, передаваемых в процедуру.");
//3008
codedMessages.put("R128", "Внутренняя ошибка анализа, распараллеливание не будет выполнено для данного файла.");
//3009
codedMessages.put("R129", "Добавленный REMOTE_ACCESS для обращения к массиву '%s' может привести к сильному замедлению.");
//3010
codedMessages.put("R130", "Не обнаружены массивы или свободные циклы для распределения в данном проекте.");
codedMessages.put("R131", "Не обнаружены массивы или свободные циклы для распределения в данной области распараллеливания.");
//3011
codedMessages.put("R132", "У массивов '%s' и '%s' разные правила выравнивания согласно обращению на запись в данном цикле.");
//3012
codedMessages.put("R133", "Области распараллеливания %sимеют общую используемую процедуру '%s', необходимо применить проход 'Разрешение конфликтов областей'.");
//3013
codedMessages.put("R134", "Области распараллеливания %sимеют общий используемый локальный массив '%s', необходимо применить проход 'Разрешение конфликтов областей'.");
codedMessages.put("R152", "Области распараллеливания %sимеют общий используемый массив из модуля '%s', необходимо применить проход 'Разрешение конфликтов областей'.");
//3014
codedMessages.put("R135", "Область распараллеливания '%s' содержит common-массив '%s', используемый в области и вне её, необходимо применить проход 'Разрешение конфликтов областей'.");
//3015
codedMessages.put("R136", "Область распараллеливания '%s' не имеет DVM-интервала для фрагмента, необходимо применить проход 'Разрешение конфликтов областей'.");
//3016
codedMessages.put("R137", "Невозможно считать DVM-статистику для получения времен.");
//3017
codedMessages.put("R138", "Область распараллеливания '%s' не содержит копирования массива '%s' в DVM-интервале, необходимо применить проход 'Разрешение конфликтов областей'.");
//3018
codedMessages.put("R139", "Область распараллеливания '%s' не содержит копирования массива '%s' в DVM-интервале, необходимо применить проход 'Разрешение конфликтов областей'.");
//3019
//--- TODO предиктор
//3020
codedMessages.put("R140", "Обнаружен массив '%s', являющийся параметром процедуры, в которую передаются как распределенные, так и нераспределенные массивы. Возможно, стоит запретить к распределению обнаруженные массивы, либо продублировать соответствующую процедуру.");
codedMessages.put("R141", "Обнаружен распределяемый массив '%s', передаваемый в качестве параметра в процедуру.");
codedMessages.put("R153", "Обнаружен не распределяемый массив '%s', передаваемый в качестве параметра в процедуру.");
codedMessages.put("R142", "Для массива '%s' не удается найти единого распределения, внутренняя ошибка системы.");
//3021
codedMessages.put("R151", "Пустые области распараллеливания не допускаются.");
//3022
codedMessages.put("R171", "Невозможно определить правила выравнивания для массива '%s'.");
//3024
codedMessages.put("R204", "Пересечение памяти массивов препятствует распараллеливанию цикла");
//4001
//---TODO ошибки из SAGE
//4002
codedMessages.put("R143", "Неверное объявление PURE процедуры - отсутствуют операторы INTENT.");
//5001
codedMessages.put("R165", "В клаузе 'INTERVAL' первый аргумент должен быть 'TIME' или 'ITER', а второй - типа integer.");
//5002
codedMessages.put("R166", "Директива %s с клаузой '%s' может располагаться только в исполняемой части кода.");
//5003
codedMessages.put("R167", "Директива CHECKPOINT с клаузой 'FILES' должна содержать одно значение типа integer.");
//5004
codedMessages.put("R168", "Переменная '%s' в клаузе '%s' должна быть объявлена в той же области видимости.");
//5005
codedMessages.put("R169", "Недопустимый параметр в клаузе TYPE директивы CHECKPOINT.");
//5006
codedMessages.put("R170", "Клауза '%s' может быть указана только один раз.");
//5007
codedMessages.put("R172", "Переменная '%s' не может быть указана одновременно в клаузах 'VARLIST' и 'EXCEPT'.");
}
int idxOfCode = coded.indexOf(':');
if (idxOfCode == -1)
return coded; // наверно не ошибка, если вдруг передано сообщение без кода
else {
String code = coded.substring(0, idxOfCode);
String message = coded.substring(idxOfCode + 1);
if (codedMessages.containsKey(code)) {
String original = codedMessages.get(code);
if (message == "")
return original;
else {
String[] splited = message.split("#");
int idx = 0;
int sum = 0;
do {
idx = original.indexOf('%', idx);
if (idx != -1) {
sum++;
idx += 2;
}
} while (idx != -1);
if (sum != splited.length && !message.equals("")) {
Utils_.CopyToClipboard(message);
throw new PassException("Ошибка при декодировании сообщений на русском языке\n" +
"message=" + Utils_.Brackets(message));
}
idx = 0;
String result = "";
for (int z = 0; z < sum; ++z) {
int newIdx = original.indexOf('%', idx);
result += original.substring(idx, newIdx) + splited[z];
idx = newIdx + 2;
}
result += original.substring(idx);
for (Map.Entry<String, String> entry : codedMessages2.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
idx = 0;
do {
int newIdx = result.indexOf(key, idx);
if (newIdx != -1)
result = result.substring(idx, newIdx) + value + result.substring(newIdx + key.length() + 1);
else
idx = -1;
} while (idx != -1);
}
return result;
}
} else {
return "Ошибка при декодировании сообщений на русском языке - код <" + code +
"> не найден. Попробуйте использовать английский язык."
;
}
}
}
public void setGroup(int group_in) {
group = group_in;
switch (group) {
case 0:
group_s += "m0000";
break;
case Constants.parser_group: //сообщения от парсера.
group_s += "parser";
break;
case Constants.compiler_group:
group_s += "compiler";
break;
default:
group_s += group;
break;
}
}
@Override
public boolean isVisible() {
if (Global.mainModule.HasFile() && Global.mainModule.getFile().name.equals(file)) {
Object o = Global.mainModule.get(Current.FileGraphElement);
return !(o instanceof FileObjectWithMessages) || ((FileObjectWithMessages) o).HasMessage(this);
} else return false;
}
}