История изменений
Исправление
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.
Фича будет в том, что его можно будет использовать в любой ОС.
О многом не сказал