Библиотека поддержки UnicodeUnicode - один из стандартов представления текстовых данных в вычислительных системах. Основным его отличием от других аналогичных стандартов является то, что он определяет не только способы представления информации, но и способы, и форматы обмена, базовые алгоритмы обработки, способы классификации символов и т.д. Надо отметить, что на сегодняшний день существует несколько реализаций библиотек с названием Unicode на языке Ada. Однако на мой субъективный взгляд они имеют не много общего со стандартом и идеологией Unicode. Фактически ни одна из них не предоставляет реализаций стандартных алгоритмов, определяемых стандартом, а некоторые ещё и очень сложны в использовании. Основной задачей при разработке данной библиотеки было предоставить программисту максимально широкий набор готовых алгоритмов, определенных стандартом Unicode, обеспечив при этом максимальную простоту использования и согласованность со "стереотипом", накладываемым стандартной библиотекой языка на средства работы с символами и строками. К сожалению особенности представления данных Unicode не позволили организовать структуру иерархической библиотеки подобно стандартной библиотеки языка. Пакеты, составляющие библиотеку, разделяются по функциональному назначению содержащихся в них алгоритмов. Пакет Unicode. Пакет определяет типы данных для представления символа (Universal_Character) и строки символов (Universal_String). Типы определены таким образом, что позволяют присваивать значения символьных и строковых литералов языка объектам указанных типов без использования подпрограмм преобразования типов. Смысловая нагрузка символов и строк Unicode делает неопределенной стандартные операции сравнения: вместо этого вводятся понятия "двоичного" сравнения и "весового" сравнения. Для устранения неоднозначности толкования стандартных знаков операторов сравнения, они объявлены как неопределенные. Дополнительно пакет определяет тип для представления скалярного значения символов Unicode и последовательностей скалярных значений. Пакет Unicode.Characters. Пакет содержит определения перечислимых типов и разнообразных констант, используемых для классификации символов. Пакет Unicode.Characters.Properties. Пакет предоставляет доступ к базе данных свойств символов. Пакет Unicode.Characters.Surrogates. Пакет содержит типы данных и подпрограммы для работы с суррогатными парами символов. Суррогатной парой является особая двухсимвольная последовательность, первый символ которой принадлежит множеству верхних суррогатных символов, а второй - множеству нижних суррогатных символов. Такая пара трактуется как одно скалярное значение, позволяя представлять символы со скалярными значениями более 65535. Пакет Unicode.Characters.Surrogates.Properties. Состав и назначение пакета аналогичны пакету Unicode.Characters.Properties. Исключение составляет то, что вместо типа Universal_Character используется тип Surrogate_Pair. Пакет Unicode.Strings. Пустой пакет. Предназначен для использования в качестве родительского пакета для построения иерархической библиотеки алгоритмов работы со строками. Пакет Unicode.Strings.Case_Mappings. Пакет предоставляет подпрограммы классификации и преобразования регистров знаков. Пакет Unicode.Strings.Normalization. Пакет предоставляет алгоритмы построения различных нормальных форм строк. Пакет Unicode.Support.String_Iterators. Пакет упрощает построение итерационных циклов, предназначенных для обработки строк с учетом суррогатных символов. Находящиеся в нем подпрограммы автоматически преобразуют корректные суррогатные пары в одно скалярное значение и инкрементируют/декрементируют значение индексной переменной. Текущая версия библиотеки находится здесь. Вадим Годунко. Май 2003г. | ||