Генератор
Проектов

Проект ctypes

Проект демонстрирует символьные типы и их значения. Дано описание типов в разных кодировках.

Тип t_char7, выведенный из базового типа char7 с заданием длины предполагает, что строки этого типа содержат символы с кодами от 1 до 127 (ASCII-символы). Длина задается без учета завершающего нулевого символа, т.е. в сгенерированной Си-программе будет массив с длиной, на единицу большей заданного.

Тип t_char8, выведенный из базового типа char8 с заданием длины предполагает, что строки этого типа содержат последовательность байтов в кодировке UTF-8. Эта кодировка в настоящее время является стандартом для передачи текстов в файлах, в сетевых протоколах и т.п. Преимущество кодировки - возможность в одном тексте смешивать произвольные национальные символы. Недостаток - один символ может быть представлен несколькими байтами, что усложняет обработку.

Тип t_chara, выведенный из базового типа chara с заданием длины предполагает, что строки этого типа содержат последовательность символов в кодировке WINDOWS-1251. Эта кодировка используется в русскоязычных MS Windows-программах, не использующих UNICODE. Преимущество перед UTF-8 - символ тождественен байту. Недостаток - невозможность совмещать разные национальные символы. Не рекомендуется использовать в новых проектах. Предназначена для совместимости со старыми разработками.

Тип t_char16, выведенный из базового типа char16 с заданием длины предполагает, что строки этого типа содержат последовательность двухбайтовых беззнаковых слов в кодировке UTF-16. Эта кодировка используется в MS Windows в UNICODE-программах и внутри OS MS Windows. Преимущество - для подавляющего большинства национальных кодировок каждый символ строго соответсвует одному слову. Исключение (продукт деятельности комитета UNICODE) наличие так называемых суррогатных симолов, как в UTF-8, когда некоторым символам соответсвует не одно, а два слова. Но это только для очень экзотических языков.

Тип t_charw, выведенный из базового типа charw с заданием длины предполагает, что строки этого типа содержат последовательность чисел, представляющих символы UNICODE в чистом виде. Преимущество - строго одно число, это один символ для всех языков. Недостаток - разная реализация в разных платформах. В MS Windows Си-тип wchar_t - это unsigned short (два байта), в Linux - int (четыре байта).

Мир несовершенен. Все кодировки имеют преимущества и недостатки.

В MS Windows выдача на консоль работает не для всех кодировок.

Файл ctypes.gen:

project ctypes
  /version="01.001"
  /firm="УСТ"
  /http="http://www.ustech.ru"
  /email="managers@ustech.ru"

utility ctypes

Файл ctypes.utility:

utility ctypes:"CHAR Types"

type t_char7 : char7[100];
type t_char8 : char8[100];
type t_chara : chara[100];
type t_char16 : char16[100];
type t_charw : charw[100];

main
{ var
    t_char7 c7 := "7-bit char litaral",
    t_char8 c8 := U"Алфавит - alphabet - αλφάβητο UTF-8",
    t_chara ca := A"Кириллица",
    t_char16 c16 := H"Алфавит - alphabet - αλφάβητο UTF-16",
    t_charw cw := W"Алфавит - alphabet - αλφάβητο UNICODE";

  dprint("c7: ",c7,"\n");
  dprint("c8: ",c8,"\n");
  dprint("ca: ",ca,"\n");
  dprint("c16: ",c16,"\n");
  dprint("cw: ",cw,"\n");
}
Скачать проект ctypes