Пятница, 03.05.2024, 08:04


Главная
Регистрация
Вход
Dota Allstars ✪ World of WarCraft Приветствую Вас Гость | RSS  
Меню сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Dota Allstars » Полезные статьи

Native функции: Часть 2: Пишем что-то полезное
Native функции: Часть 2: Пишем что-то полезное                                                 
 
Теперь перед вами раскрываются достаточно широкие горизонты. Вот лишь несколько примеров:
  1. Быстрая конвертация строки типа "A001" в целое число и обратно:

jInt jNATIVE String2RawCode(jString input) 
{
 const char *str = jStrGet(input);
 if (strlen(str) == 1) 
 return str[0];
 else if (strlen(str) == 4) 
 {
 char newstr[4];
 newstr[0] = str[3];
 newstr[1] = str[2];
 newstr[2] = str[1];
 newstr[3] = str[0];
 return *((jInt*)newstr);
 }
 return 0;
}

jString jNATIVE RawCode2String(jInt input) 
{
 char *str = (char*)&input;
 char newstr[5];
 if (input < 255) 
 {
 newstr[0] = str[0];
 newstr[1] = '\0';
 } 
 else 
 {
 newstr[0] = str[3];
 newstr[1] = str[2];
 newstr[2] = str[1];
 newstr[3] = str[0];
 newstr[4] = '\0';
 }
 return jStrMap(newstr);
}
  1. Динамически аллоцируемый массив

jInt jNATIVE ArrayAlloc(jInt len)
{
 return (jInt)malloc(sizeof(jInt)*len);
}

jInt jNATIVE ArraySet(jInt array,jInt index,jInt val)
{
 int *p = (int *)array;
 p[index] = val;
 return p[index];
}

jInt jNATIVE ArrayGet(jInt array, jInt index) 
{
 int *p = (int *) array;
 return p[index];
}

jInt jNATIVE ArrayFree(jInt array) 
{
 int *p = (int *)array;
 free(p);
 return 0;
}
И так далее.
В дальнейшем поможет лишь анализ japi.dll и личные опыты. 

Категория: Полезные статьи | Добавил: TRACTOR (27.05.2012)
Просмотров: 466 | Рейтинг: 0.0/0
Вход на сайт

Поиск

Copyright MyCorp © 2024Сделать бесплатный сайт с uCoz