LINUX.ORG.RU

История изменений

Исправление Forum0888, (текущая версия) :

В core Harbour интересный/хороший API для использования code page.
При инициализации core создаются объекты, содержащие кодовые страницы.
При этом для каждой кодовой страницы предусмотрена возможность использования метаданных о символах.
Далее код из моего API для использования кодовых страниц

// --- Данные о кодовой странице
//
typedef struct CODEPAGE__ {

  char            *ID;                                       // ID code page /название/
  char            *Info;                                     // Комментарии о назначении кодовой страницы
  UNITABLE_       *pUnicodeTable;                            // Ссылка к UNICODE table
  BYTE            *FlagsChars;                               // Флаги символов
  BYTE            *FlUpperChar;                              // Upper символы
  BYTE            *FlLowerChar;                              // Lower символы
  BYTE            *Sort;                                     // Sort  символов
  BYTE            *Acc;                                      // 
  int             cntACSort;                                 // 
  int             Type;                                      // 

// --- Функции для работы с TCHAR символами
//
  CDP_GET_FUNC          FuncWcharGet;                        // Адрес функции, производящей получение символа
  CDP_PUT_FUNC          FuncWcharPut;                        // Адрес функции, производящей запись символа
  CDP_LEN_FUNC          FuncWcharLen;                        // Адрес функции, возвращающей размер символа
  CDP_UPPER_FUNC        FuncWcharUpper;                      // Адрес функции для конвертирования символа к upper
  CDP_LOWER_FUNC        FuncWcharLower;                      // Адрес функции для конвертирования символа к lower
  CDP_FLAGS_FUNC        FuncWcharFlags;                      // 
  CDP_CMP_FUNC          FuncWcharCmp;                        // Адрес функции для сравнения символов
  CDP_CMP_FUNC          FuncWcharCmpI;                       // Адрес функции для сравнения символов без использования case

  int                   cntMulti;                            // 
  int                   cntMultiUC;                          // 
  META_MULTIchar_       *pMultiChar;                         // 

  void                  *Buffer;                             // 
  CODEPAGE__            *NextCodePage;                       // Ссылка к следующей code page

} CODEPAGE_;                                                 // typedef struct CODEPAGE__ {

Так вот предусмотрены таблицы FlagsChars, ... которые API весьма эффективно позволяют работать с символами.

А теперь ради интереса посмотрите API ITU.

--------------------------------------------------
Вообщем то давно имеется желание с использованием API для работы с метаданными разработать кроссплатформенное API для locale.
Одна из фич будет в том, что его можно будет использовать в любой ОС.

О многом не сказал

Исправление Forum0888, :

В core Harbour интересный/хороший API для использования code page.
При инициализации core создаются объекты, содержащие кодовые страницы.
При этом для каждой кодовой страницы предусмотрена возможность использования метаданных о символах.
Далее код из моего API для использования кодовых страниц

// --- Данные о кодовой странице
//
typedef struct CODEPAGE__ {

  char            *ID;                                       // ID code page /название/
  char            *Info;                                     // Комментарии о назначении кодовой страницы
  UNITABLE_       *pUnicodeTable;                            // Ссылка к UNICODE table
  BYTE            *FlagsChars;                               // Флаги символов
  BYTE            *FlUpperChar;                              // Upper символы
  BYTE            *FlLowerChar;                              // Lower символы
  BYTE            *Sort;                                     // Sort  символов
  BYTE            *Acc;                                      // 
  int             cntACSort;                                 // 
  int             Type;                                      // 

// --- Функции для работы с TCHAR символами
//
  CDP_GET_FUNC          FuncWcharGet;                        // Адрес функции, производящей получение символа
  CDP_PUT_FUNC          FuncWcharPut;                        // Адрес функции, производящей запись символа
  CDP_LEN_FUNC          FuncWcharLen;                        // Адрес функции, возвращающей размер символа
  CDP_UPPER_FUNC        FuncWcharUpper;                      // Адрес функции для конвертирования символа к upper
  CDP_LOWER_FUNC        FuncWcharLower;                      // Адрес функции для конвертирования символа к lower
  CDP_FLAGS_FUNC        FuncWcharFlags;                      // 
  CDP_CMP_FUNC          FuncWcharCmp;                        // Адрес функции для сравнения символов
  CDP_CMP_FUNC          FuncWcharCmpI;                       // Адрес функции для сравнения символов без использования case

  int                   cntMulti;                            // 
  int                   cntMultiUC;                          // 
  META_MULTIchar_       *pMultiChar;                         // 

  void                  *Buffer;                             // 
  CODEPAGE__            *NextCodePage;                       // Ссылка к следующей code page

} CODEPAGE_;                                                 // typedef struct CODEPAGE__ {

Так вот предусмотрены таблицы FlagsChars, ... которые API весьма эффективно позволяют работать с символами.

А теперь ради интереса посмотрите API ITU.

--------------------------------------------------
Вообщем то давно имеется желание с использованием API для работы с метаданными разработать кроссплатформенное API для locale.
Фича будет в том, что его можно будет использовать в любой ОС.

О многом не сказал

Исправление Forum0888, :

В core Harbour интересный/хороший API для использования code page.
При инициализации core создаются объекты, содержащие кодовые страницы.
При этом для каждой кодовой страницы предусмотрена возможность использования метаданных о символах.
Далее код из моего API для использования кодовых страниц

// --- Данные о кодовой странице
//
typedef struct CODEPAGE__ {

  char            *ID;                                       // ID code page /название/
  char            *Info;                                     // Комментарии об назначении кодовой страницы
  UNITABLE_       *pUnicodeTable;                            // Ссылка к UNICODE table
  BYTE            *FlagsChars;                               // Флаги символов
  BYTE            *FlUpperChar;                              // Upper символы
  BYTE            *FlLowerChar;                              // Lower символы
  BYTE            *Sort;                                     // Sort  символов
  BYTE            *Acc;                                      // 
  int             cntACSort;                                 // 
  int             Type;                                      // 

// --- Функции для работы с TCHAR символами
//
  CDP_GET_FUNC          FuncWcharGet;                        // Адрес функции, производящей получение символа
  CDP_PUT_FUNC          FuncWcharPut;                        // Адрес функции, производящей запись символа
  CDP_LEN_FUNC          FuncWcharLen;                        // Адрес функции, возвращающей размер символа
  CDP_UPPER_FUNC        FuncWcharUpper;                      // Адрес функции для конвертирования символа к upper
  CDP_LOWER_FUNC        FuncWcharLower;                      // Адрес функции для конвертирования символа к lower
  CDP_FLAGS_FUNC        FuncWcharFlags;                      // 
  CDP_CMP_FUNC          FuncWcharCmp;                        // Адрес функции для сравнения символов
  CDP_CMP_FUNC          FuncWcharCmpI;                       // Адрес функции для сравнения символов без использования case

  int                   cntMulti;                            // 
  int                   cntMultiUC;                          // 
  META_MULTIchar_       *pMultiChar;                         // 

  void                  *Buffer;                             // 
  CODEPAGE__            *NextCodePage;                       // Ссылка к следующей code page

} CODEPAGE_;                                                 // typedef struct CODEPAGE__ {

Так вот предусмотрены таблицы FlagsChars, ... которые API весьма эффективно позволяют работать с символами.

А теперь ради интереса посмотрите API ITU.

--------------------------------------------------
Вообщем то давно имеется желание с использованием API для работы с метаданными разработать кроссплатформенное API для locale.
Фича будет в том, что его можно будет использовать в любой ОС.

О многом не сказал

Исправление Forum0888, :

В core Harbour интересный/хороший API для использования code page.
При инициализации core создаются объекты, содержащие кодовые страницы.
При этом для каждой кодовой страницы предусмотрена возможность использования метаданных о символах.
Далее код из моего API для использования кодовых страниц

// --- Данные о кодовой странице
//
typedef struct CODEPAGE__ {

  char            *ID;                                       // ID code page /название/
  char            *Info;                                     // Комментарии об назначении кодовой страницы
  UNITABLE_       *pUnicodeTable;                            // Ссылка к UNICODE table
  BYTE            *FlagsChars;                               // Флаги символов
  BYTE            *FlUpperChar;                              // Upper символы
  BYTE            *FlLowerChar;                              // Lower символы
  BYTE            *Sort;                                     // Sort  символов
  BYTE            *Acc;                                      // 
  int             cntACSort;                                 // 
  int             Type;                                      // 

// --- Функции для работы с TCHAR символами
//
  CDP_GET_FUNC          FuncWcharGet;                        // Адрес функции, производящей получение символа
  CDP_PUT_FUNC          FuncWcharPut;                        // Адрес функции, производящей запись символа
  CDP_LEN_FUNC          FuncWcharLen;                        // Адрес функции, возвращающей размер символа
  CDP_UPPER_FUNC        FuncWcharUpper;                      // Адрес функции для конвертирования символа к upper
  CDP_LOWER_FUNC        FuncWcharLower;                      // Адрес функции для конвертирования символа к lower
  CDP_FLAGS_FUNC        FuncWcharFlags;                      // 
  CDP_CMP_FUNC          FuncWcharCmp;                        // Адрес функции для сравнения символов
  CDP_CMP_FUNC          FuncWcharCmpI;                       // Адрес функции для сравнения символов без использования case

  int                   cntMulti;                            // 
  int                   cntMultiUC;                          // 
  META_MULTIchar_       *pMultiChar;                         // 

  void                  *Buffer;                             // 
  CODEPAGE__            *NextCodePage;                       // Ссылка к следующей code page

} CODEPAGE_;                                            // typedef struct CODEPAGE__ {

Так вот предусмотрены таблицы FlagsChars, ... которые API весьма эффективно позволяют работать с символами.

А теперь ради интереса посмотрите API ITU.

--------------------------------------------------
Вообщем то давно имеется желание с использованием API для работы с метаданными разработать кроссплатформенное API для locale.
Фича будет в том, что его можно будет использовать в любой ОС.

О многом не сказал

Исходная версия Forum0888, :

В core Harbour интересный/хороший API для использования code page.
При инициализации core создаются объекты, содержащие кодовые страницы.
При этом для каждой кодовой страницы предусмотрена возможность использования метаданных о символах.
Далее код из моего API для использования кодовых страниц

// --- Данные о кодовой странице
//
typedef struct CODEPAGE__ {

  char            *ID;                                       // ID code page /название/
  char            *Info;                                     // Комментарии об назначении кодовой страницы
  UNITABLE_       *pUnicodeTable;                            // Ссылка к UNICODE table
  BYTE            *FlagsChars;                               // Флаги символов
  BYTE            *FlUpperChar;                              // Upper символы
  BYTE            *FlLowerChar;                              // Lower символы
  BYTE            *Sort;                                     // Sort  символов
  BYTE            *Acc;                                      // 
  int             cntACSort;                                 // 
  int             Type;                                      // 

// --- Функции для работы с TCHAR символами
//
  CDP_GET_FUNC          FuncWcharGet;                        // Адрес функции, производящей получение символа
  CDP_PUT_FUNC          FuncWcharPut;                        // Адрес функции, производящей запись символа
  CDP_LEN_FUNC          FuncWcharLen;                        // Адрес функции, возвращающей размер символа
  CDP_UPPER_FUNC        FuncWcharUpper;                      // Адрес функции для конвертирования символа к upper
  CDP_LOWER_FUNC        FuncWcharLower;                      // Адрес функции для конвертирования символа к lower
  CDP_FLAGS_FUNC        FuncWcharFlags;                      // 
  CDP_CMP_FUNC          FuncWcharCmp;                        // Адрес функции для сравнения символов
  CDP_CMP_FUNC          FuncWcharCmpI;                       // Адрес функции для сравнения символов без использования case

  int                   cntMulti;                            // 
  int                   cntMultiUC;                          // 
  META_MULTIchar_       *pMultiChar;                         // 

  void                  *Buffer;                             // 
  CODEPAGE__            *NextCodePage;                       // Ссылка к следующей code page

} META_CODEPAGE_;                                            // typedef struct CODEPAGE__ {

Так вот предусмотрены таблицы FlagsChars, ... которые API весьма эффективно позволяют работать с символами.

А теперь ради интереса посмотрите API ITU.

--------------------------------------------------
Вообщем то давно имеется желание с использованием API для работы с метаданными разработать кроссплатформенное API для locale.
Фича будет в том, что его можно будет использовать в любой ОС.

О многом не сказал